0
我想验证表单字段(用于名字)的字母和破折号,但无论我如何实现代码,$ player_name的值仍然是被设置。为什么这个PHP验证仍然设置值
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["player_name"])) {
$nameErr = "Name is required";
} else {
$player_name = test_input($_POST["player_name"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z -]+$/",$player_name)) {
$nameErr = "Only letters and white space allowed";
}
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
形式已经使用下面的代码来实现:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Registration Date: <input type="text" name="date_captured" id="date_captured" value="<?php echo $current_date; ?>">
<br><br>
Name: <input type="text" name="player_name" id="player_name">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit">
</form>
<?php
echo "<h2>Your Input:</h2>";
echo $date_captured;
echo $player_name;
echo "<br>";
?>
即使错误设置和显示“只允许字母和空格”,$ PLAYER_NAME的值仍设置。
值以前分配,然后将其正在validated.You应该验证'test_input($ _ POST [ “PLAYER_NAME”])代替'。 – vks
@ user2696851请提出答案并向上投票。它会帮助别人。谢谢。 –