私はPHPを初めて使いました。私は次のコードを持っています:PHPフォームの検証とPOSTの変数
フォームを提出し、検証に合格するとSQL文にデータを送信します。フォームが有効な場合は、外部の成功ページにリダイレクトされます。
私が行うことはできませんが、成功のページに元の投稿変数を取得します。どうすればいいですか?私のコードは以下の通りです:
PHP:
<body>
<?php
$firstnameErr = $emailErr = $lastnameErr = $gradeErr = $roleErr = "";
$firstname = $email = $lastname = $grade = $role = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["firstname"])) {
$firstnameErr = "First name is required";
} else {
$firstname = user_input($_POST["firstname"]);
}
if (empty($_POST["lastname"])) {
$lastnameErr = "Last mame is required";
} else {
$lastname = user_input($_POST["lastname"]);
}
if (empty($_POST["email"])) {
$emailErr = "Email is required";
} else {
$email = user_input($_POST["email"]);
}
if (empty($_POST["grade"])) {
$gradeErr = "Grade is required";
} else {
$grade = user_input($_POST["grade"]);
}
if (empty($_POST["role"])) {
$roleErr = "Role is required";
} else {
$role = user_input($_POST["role"]);
}
if($firstnameErr == '' && $emailErr == '' && $lastnameErr == '' && $gradeErr == '' && $roleErr == ''){
$stmt = $conn->prepare("INSERT INTO `Tom`.`staff_details` (`first_name`, `surname`, `role`, `grade`,`email`) VALUES ('$firstname', '$lastname','$role', '$grade','$email');");
$stmt->execute();
header('Location: staff_added.php');
exit();
};
}
function user_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
HTML:私は、私はそれらを印刷することができるようにバックstaff_added.phpページに渡って移動するためにこれらの変数を希望
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
<fieldset>
<p><span class="error">* required field</span></p>
<label>First name:</label><input type="text" name="firstname" />
<span class="error">* <?php echo $firstnameErr;?></span><br>
<label>Last name:</label><input type="text" name="lastname" />
<span class="error">* <?php echo $lastnameErr;?></span><br>
<label>Role:</label><input type="text" name="role" />
<span class="error">* <?php echo $roleErr;?></span><br>
<label>Grade:</label><input type="text" name="grade" />
<span class="error">* <?php echo $gradeErr;?></span><br>
<label>Email:</label><input type="text" name="email" />
<span class="error">* <?php echo $emailErr;?></span><br><br>
<input class="standard_submit" type="submit" value="Save" id="submit_search_button">
</fieldset>
</form>
ユーザー。私はこれ以上の読書をしてきましたが、それほど意味がありません。
ご協力いただければ幸いです。
は、あなたがこのようなアプローチを見て、おそらく直接ではなく、SQLの変数を埋め込むべきであるprepared statements
を使用して、あなたに
あなたはセッション中の情報の一部を保存したり、ユーザーのIDを格納するためのいずれかの必要があります成功のページであなたのデータベースからデータを読み込みます。 - それを行うには複数の方法がありますが、これらはほんの数例です。 – Epodax
変数をバインドするプレースホルダを使用するのではなく、sql文に変数を直接埋め込むことで 'prepared statements'のポイントが完全に失われています – RamRaider
これらの' user_input() '関数は多くの場所で使用されていますここでは、やや誤解され誤用されています。 – Qirel