データベースの検証が正常に動作しています。既に登録されているユーザーがいる場合、「ユーザー」テーブルは更新されません。しかし、$ error_message変数はエラーメッセージ文字列を表示しません。ここに私のコードは次のとおりです。error_message変数がフォーム送信時に文字列値を表示しない
HTML/PHP:フォームが送信された後
// Collect and validate user inputs
if($_SERVER["REQUEST_METHOD"] == "POST") {
session_start();
$forename = trim(filter_input(INPUT_POST,"user_forename",FILTER_SANITIZE_STRING));
$surname = trim(filter_input(INPUT_POST,"user_surname",FILTER_SANITIZE_STRING));
$gender = trim(filter_input(INPUT_POST,"user_gender",FILTER_SANITIZE_STRING));
$email = trim(filter_input(INPUT_POST,"user_email",FILTER_SANITIZE_EMAIL));
$password = trim(filter_input(INPUT_POST,"user_password"));
$city = trim(filter_input(INPUT_POST,"user_city"));
$team = trim(filter_input(INPUT_POST,"user_team",FILTER_SANITIZE_STRING));
$bio = trim(filter_input(INPUT_POST,"user_bio",FILTER_SANITIZE_SPECIAL_CHARS));
$human = trim(filter_input(INPUT_POST,"user_human",FILTER_SANITIZE_STRING));
$userExist = mysql_query("SELECT * FROM User WHERE U_Email='$email'");
if($forename == "" || $surname == "" || $email == "" || $password == ""
|| $city == "" || $team == "" || $bio == "" || $human == "") {
$error_message = "Please fill in all form fields";
}
if (!isset($error_message) && !filter_var($email, FILTER_VALIDATE_EMAIL)) {
$error_message = "$email is a not a valid email address";
}
if (!isset($error_message) && (mysql_num_rows($userExist) > 0)) {
$error_message = "$email is already taken!";
}
if(!isset($error_message)) {
$sql = $db->query("INSERT INTO User (U_Forename, U_Surname, U_Gender, U_Email, U_Password, U_City, U_Team, U_Biography)
VALUES('{$forename}', '{$surname}', '{$gender}', '{$email}', '{$password}', '{$city}', '{$team}', '{$bio}')");
// header('Location: index.php');
}
}
<div class="wrapper">
<h1>Register, it's free!</h1>
<div>
<?php
if (isset($error_message)) {
echo "<h2>".$error_message."</h2>";
}
?>
</div>
エラーメッセージは表示されません。さらに、私はPHPのエラーを受け取っていないので、私は何が問題なのかよく分かりません。
どのような提案も素晴らしいでしょう。
ありがとう、ジェームズ。
mysqlの代わりにmysqliを使用してください。しかし、これは理由ではありません。 –
すべての変数を表示するだけです。 –
[Little Bobby](http://bobby-tables.com/)は、[あなたのスクリプトはSQLインジェクション攻撃の危険にさらされていると言います。](http://stackoverflow.com/questions/60174/how-can-i-prevent -sql-injection-in-php)を実行します。 –