Php 如何修复空$u POST[';name';]的错误
我想用php创建一个表单。但在很多小时里,我都遇到了一个错误,错误发生在$\u POST=['name']希望检查是否为空时。 当我检查数据库时,该行是白色的,没有任何内容。 为了检查$_POST是否为空,我打印单词“empty”,以确定它为空,并将打印为“empty”; 我的错误在哪里?它与数据库mysql有关还是仅仅在代码上? 请帮帮我,我感到困惑和无聊。 这是我的全部代码:Php 如何修复空$u POST[';name';]的错误,php,Php,我想用php创建一个表单。但在很多小时里,我都遇到了一个错误,错误发生在$\u POST=['name']希望检查是否为空时。 当我检查数据库时,该行是白色的,没有任何内容。 为了检查$_POST是否为空,我打印单词“empty”,以确定它为空,并将打印为“empty”; 我的错误在哪里?它与数据库mysql有关还是仅仅在代码上? 请帮帮我,我感到困惑和无聊。 这是我的全部代码: <!doctype html> <html lang="fa"> <head>
<!doctype html>
<html lang="fa">
<head>
<meta charset="utf-8">
<title>form</title>
<link href="addContact.css" rel="stylesheet"/>
<link href="main.css" rel="stylesheet"/>
<link href="table.css" rel="stylesheet"/>
</head>
<body>
<?php
$name = "";
$nameErr = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
echo 'empty';
$nameErr = "Name is required";
} else {
echo 'full';
$name = test_input($_POST["name"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/", $name)) {
$nameErr = "Only letters and white space allowed";
}
}
$servername = "localhost";
$username = "abc";
$password = "abc";
$dbname = "abc";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username,
$password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO abc (firstname)
VALUES ('$name')";
// use exec() because no results are returned
$conn->exec($sql);
$last_id = $conn->lastInsertId();
echo "New record created successfully. Last inserted ID is: " . $last_id;
} catch (PDOException $e) {
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
}
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"]);?>">
Name: <input type="text" name="name" value="<?php echo $name;?>">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
形式
问题在于使用empty()
您可以在变量上使用它,而不是在值上使用它
请看这里
要检查此项,请先将其保存在另一个变量中,然后检查:
$tempVal = $_POST["name"];
if (empty($tempVal))
您可以使用这个简单的示例
<?php
if(isset($_POST['submit']))
{
$name = $_POST['name'];
echo "User Has submitted the form and entered this name : <b> $name </b>";
echo "<br>You can use the following form again to enter a new name.";
}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="name"><br>
<input type="submit" name="submit" value="Submit Form"><br>
</form>
我不太明白,但是如果($\u POST['name']='')尝试执行,
?您使用的PHP版本是什么?您的代码似乎没有任何语法错误,但即使name
为空,它仍会尝试创建数据库记录-我假设这在逻辑上不是您想要做的。在任何情况下,我都会确保您启用了错误检查-将
添加到文件顶部。@cse php版本为5.6.25。还可以吗?请注意,“插入abc(firstname)值(“$name”)”
易受SQL注入攻击。您使用的是PDO,它允许您使用编写安全的SQL语句。请注意,这是PHP版本123的情况。感谢您的快速响应,但单击submit后我理解if的条件不为true,因为它不会打印“用户已提交表单并输入此名称”。问题出在哪里?@AmirGh-由于表单正在发回同一URL,因此可以完全删除操作
属性。