我在下面创建了一个示例表单和代码来说明。我知道我可以在PHP中关闭通知,但宁愿修复问题而不是忽略它。
当我创建表单时,我确实喜欢我在下面发布的内容,显然这只是一个没有清理等的示例。
我知道为什么我会得到通知:未定义的变量,我知道这听起来很愚蠢,但不确定解决它的最简单和最正确的方法。
你们其中一位出色的人能告诉我如何阻止这种通知出现吗?
现在才知道我没有在WAMP中报告所有错误并且我创建了大量的表单,我真的不想做大量的重新编辑代码来修复它,因此我正在寻找一个好的,简单的解决方案,以解决它,所以我可以进入我的所有形式,并一劳永逸地进行排序。
<?php
// check if form has been submitted
if(isset($_POST['submit'])){
// fetch form data
$name = $_POST['name'];
$username = $_POST['username'];
$email = $_POST['email'];
// check form fields
if(empty($name)){
$error .= 'Enter name <br />';
}
if(empty($username)){
$error .= 'Enter username <br />';
}
if(empty($email)){
$error .= 'Enter email <br />';
}
// check if errors exist
if(isset($error)){
echo $error;
} else {
// process form as normal
}
}
?>
<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
<label for="name">Name:</label>
<input type="text" name="name" value="<?php if(isset($name)) echo $name; ?>" />
<label for="name">Username:</label>
<input type="text" name="username" value="<?php if(isset($username)) echo $username; ?>" />
<label for="email">Email:</label>
<input type="text" name="email" value="<?php if(isset($email)) echo $email; ?>" />
<input type="submit" name="submit" value="Send" />
</form>
答案 0 :(得分:2)
你是对的,问题是第一个字符串连接$error .= "something"
,因为之前不存在$error
。
轻松修复:使用空字符串初始化$error
并使用!empty($error)
代替isset($empty)
。
答案 1 :(得分:1)
也许你可以简化一些事情:
if(isset($_POST['submit'])){
$error = "";
if(isset($_POST['name'])){
$name = $_POST['name'];
} else {
$error .= 'Enter name <br />';
}
echo $error;
}
为每个var重复一次isset()部分。
答案 2 :(得分:-1)
这段代码可以解决问题:
if (isset($_POST['submit'])) {
$username=$_POST['name'];
$password=$_POST['password'];
}