致命的なエラー:不明なエラー:C:\ xampp\htdocs\phoenixproject\register.php:16の未定義関数mysql_escape_string()の呼び出し:16スタックトレース:#0 {main}がC:\ xampp\htdocs\phoenixproject\register.phpでスローされました16行目
これを修正する方法は?
<?php
require("config.php");
?>
<?php
if(isset($_POST['submit'])){
$email1 = $_POST['email1'];
$email2 = $_POST['email2'];
$pass1 = $_POST['pass1'];
$pass2 = $_POST['pass2'];
if($email1 == $email2) {
if($pass1 == $pass2) {
//All good. Nastavi broo.
$name = mysql_escape_string($_POST['name']);
$lname = mysql_escape_string($_POST['lname']);
$uname = mysql_escape_string($_POST['uname']);
$email1 = mysql_escape_string($email1);
$email2 = mysql_escape_string($email2);
$pass1 = mysql_escape_string($pass1);
$pass2 = mysql_escape_string($pass2);
mysql_query("INSERT INTO `users` (`id`, `name`, `lname`, `uname`, `email`, `pass`) VALUES (NULL, '$name', '$lname', '$uname', '$email1', '$pass1')") or die (mysql_error());
}else{
echo "Sorry, your password is not corrext.";
exit();
}
}else{
echo "Sorry!";
}
} // brace for submit conditional
$form = <<<EOT
<form action="register.php" method="POST">
First Name: <input type="text" name="name" /></br>
Last Name: <input type="text" name="lname" /></br>
Username: <input type="text" name="uname" /></br>
Email: <input type="text" name="email1" /></br>
Confirm Email: <input type="text" name="email2" /></br>
Password: <input type="password" name="pass1" /></br>
Confirm Password: <input type="password" name="pass2" /></br>
<input type="submit" value="Register" name="submit" />
</form>
EOT;
echo $form;
?>
私はmysqlとmysqliを混在させようとしていたことを知っています...
ここであなたを助けるために...(コメントが長すぎます)
require("config.php");
には次が含まれている必要があります。
サイドノート:ホストに適切な設定を使用します。
_$link = mysqli_connect("localhost", "username", "mpassword", "database") or die($link);
_
次に、エスケープ関数を変更して_mysqli_
_バージョンを使用し、接続パラメーターを渡します。
_$name = mysqli_real_escape_string($link, $_POST['name']);
$lname = mysqli_real_escape_string($link, $_POST['lname']);
$uname = mysqli_real_escape_string($link, $_POST['uname']);
$email1 = mysqli_real_escape_string($link, $email1);
$email2 = mysqli_real_escape_string($link, $email2);
$pass1 = mysqli_real_escape_string($link, $pass1);
$pass2 = mysqli_real_escape_string($link, $pass2);
_
繰り返しますが、クエリについても同じことです。 i
バージョンを使用し、最初のパラメーターとしてそれに接続を渡します。
_mysqli_query($link, "INSERT INTO ...
_
mysqli_error($link);
を使用してクエリのエラーを確認します
したがって、クエリを次のように変更できます。
_$query = mysqli_query($link, "INSERT INTO ...
_
そしてやっている
_if(!$query){
echo "Error: " . mysqli_error($link);
}
_
APIのミキシングに関するStackの次の記事もお読みください。
mysql_
_と_mysqli_
_またはPDOなどは一緒に混在しないでください。接続からクエリまで同じものを使用する必要があります。脚注。
パスワード
また、パスワードをプレーンテキストで保存している可能性があることにも気付きました。これは推奨されません。ある時点でこれを使用してライブを行う場合は、データベースにパスワードをプレーンテキストとして保存しないでください。
以下を参照してください。
crypt()
bcrypt()
scrypt()
password_hash()
関数。その他のリンク:
PHPバージョンを5.6にダウングレードすると、すべてが設定されます。エラーは100%除去されます。
お役に立てれば!
PHP=バージョンをPHP 5.6に戻すと、正常に動作します。