6

電子メール アドレスで mysqli_real_escape_string() を使用していますが、空の文字列が返されます。これは、任意の電子メール アドレスで行われます。

<?php
//from previous page - submitted by user.
$_POST['email']="aehmlo@aehmlo.com";
$_POST['password']='mypass1234';




//Link, I can verify it works.
$mysql_info=array(
     "url"=>"url",
     "username"=>"username",
     "password"=>"password",
     "database"=>"database"
);
$link=mysqli_connect($mysql_info['url'],$mysql_info['username'],$mysql_info['password'],$mysql_info['database']);


//Now I attempt to sanitize the user input.
$email=mysqli_real_escape_string($link,$_POST['email']);
$password=sha1(mysqli_real_escape_string($link,$_POST['password']));
var_dump($email);
var_dump($password);?>

私のテーブルの照合は「latin1_swedish_ci」です。

4

2 に答える 2

9

接続が空 ( $link) の場合、空の文字列が返されます。これをテストしたところ、うまくいきました。接続にエラー処理を追加し、エラー レポートを有効にすることをお勧めします。

<?php
$link = mysqli_connect("localhost", "root", "root", "test");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$_POST['email'] = "aehmlo@aehmlo.com";

$email = mysqli_real_escape_string($link, $_POST['email']);

var_dump($email);

mysqli_close($link);
?>

結果

文字列(17) "aehmlo@aehmlo.com"
于 2013-03-04T03:24:49.517 に答える
-1

この問題があり、文字セットがラテン語に設定されていることがわかりました。置くことで解決

$con->set_charset("utf8");

real_escape_string の前。手続き型の mysqli_set_charset になります。

于 2017-07-25T20:30:32.767 に答える