[解決済み] Uncaught Error: 未定義の関数 mysql_escape_string() の呼び出し。
2022-01-26 06:06:18
質問
<ブロッククオート致命的なエラーです。Uncaught Error: Call to undefined function mysql_escape_string() in C:\xampphtdocsphoenixprojectregister.php:16 Stack trace: #0 {main} thrown in C:╱xampp↩htdocs╱phoenixproject╱register.php on line 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 mixingに関しては、Stackの以下の記事も読んでみてください。
- PHP で MySQL API を混在させることはできますか?
-
できません。
mysql_
とmysqli_
やPDOなどを混在させないでください。接続からクエリまで、同じものを使用しなければなりません。
脚注です。
パスワード
また、パスワードを平文で保存している可能性があることにも気づきました。これはお勧めできません。もし、いつかこの方法でライブを行うつもりなら、パスワードをプレーンテキストとしてデータベースに保存しないでください。
以下を参考にしてください。
- CRYPT_BLOWFISH
-
crypt()
-
bcrypt()
-
scrypt()
- OPENWALLについて
- PBKDF2
- PHP.netにおけるPBKDF2
-
PHP 5.5 の
password_hash()
関数を使用します。 - 互換パック (PHP < 5.5 の場合) https://github.com/ircmaxell/password_compat/
その他のリンク
関連
-
[解決済み】PHPで空の値からデフォルトオブジェクトを作成する?
-
[解決済み】++と*+の意味は何ですか?
-
[解決済み】「セッションキャッシュリミッターを送信できません - ヘッダーはすでに送信されています」【重複】。
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] メソッドと関数の違いは何ですか?
-
[解決済み] "お知らせ 未定義変数"、"Notice: Notice: 未定義のインデックス", "Notice:未定義のインデックス", "Notice."。PHPを使用した「未定義のオフセット
-
[解決済み] Bash関数にパラメータを渡す
-
[解決済み] 関数名を文字列として取得するには?
-
[解決済み】JavaScriptの関数にデフォルトのパラメータ値を設定する
-
[解決済み】関数の前のエクスクラメーションマークは何をするのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】XAMPPポート80をPID 4の「Unable to open process」が使用中 [重複] XAMPPポート80をPID 4の「Unable to open process」が使用中。]
-
[解決済み】mysqli_result クラスのオブジェクトを文字列に変換できない
-
[解決済み】Apache + PHPで「ヘッダの前にスクリプトの出力が終了する」件
-
[解決済み】警告:mysql_fetch_array()はパラメータ1がリソースであることを期待、ブール値は[重複]で与えられる]
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み] * vchiqインスタンスを開くのに失敗しました。
-
[解決済み] [Solved] Fatal error: 非オブジェクトのメンバ関数fetch_assoc()の呼び出し [重複]。
-
[解決済み] 入力ファイルが指定されていない
-
[解決済み] Uncaught SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み] PHP product.php?id=1 のような URL を作成する方法