【发布时间】:2017-10-12 14:40:00
【问题描述】:
我刚开始学习 PHP,在用户单击表单中的提交后使用 $_SERVER["PHP_SELF"] 重定向到同一页面时遇到了这个问题。问题是我在页面的 PHP 脚本中使用的 $_POST[] 变量,我需要在用户单击提交并重新加载页面后访问它。但是在第一次运行时,当用户没有单击提交时,$_POST 变量是空的,并且我在页面本身上显示错误。当然,用户点击提交并重新加载页面后不会出现错误。提交后我不想重定向到另一个页面。第一次运行时如何规避这些错误?
对于我正在尝试做的事情有更好的方法吗?
我的页面的代码在这里:
<!DOCTYPE html>
<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h3> Welcome!</h3>
</br></br>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" >
First Name: <input type="text" name="fname"> </br></br>
Last Name: <input type="text" name="lname"> </br></br>
Age: <input type="number" name="sage"> </br></br>
<input type="submit" value="Submit"></br></br>
</form>
<?php
$servername = "localhost";
$username = "user1";
$password = "abcd123";
$dbname = "myDbFromPhp";
$fname = $_POST["fname"]; /*Lines responsible for the errors, I think*/
$lname = $_POST["lname"];
$sage = $_POST["sage"];
if($fname != "" and $lname != "") /*Checking for empty vars*/
{
$conn = new mysqli($servername, $username, $password, $dbname);
if($conn->connect_error)
{
die("Connection failed: ".$conn->connect_error);
}
echo "<h4>Connected successfully</h4>";
$sql = "INSERT INTO Students
(fname, lname, sage)
VALUES
('".$fname."','".$lname."',".(string)$sage.");" ;
if($conn->query($sql) === TRUE)
{
echo "<h4>Value entered successfully</h4>";
}
else
{
echo "</br>Error creating record</br>".$conn->error;
}
$conn->close();
}
?>
</body>
</html>
页面只是从用户那里获取一些输入(学生:名字、姓氏、年龄),当用户点击提交时,重新加载并将它们保存到数据库中。
【问题讨论】: