我刚刚开始学习PHP并且已经遇到了我的第一个恼人的障碍。
我只是创建一个简单的注册表单,但是当字段为空时,验证似乎没有通知错误,并重定向到下一页。 我用die检查了验证码;只是为了确保它能够运行,而且确实如此,但由于某种原因,它没有采取任何措施。
我确定可能会有更多关于此问题的问题,我无法找到适合我案例的答案。
感谢您阅读和/或回答的时间! (:
index.php:
<html>
<?php require 'validation.php'; ?>
<div class="container" >
<form class="reg-table" method="post" action="<?php echo htmlspecialchars('welcome.php');?>">
<div class="form-group">
<label for="firstName"> First Name : </label>
<input type="text" class="form-control" name="firstName">
<span class="error"><?php echo $firstNameErr;?></span>
</div>
validation.php:
<?php
$firstNameErr = "";
$firstName = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["firstName"])) {
$firstNameErr = "Name is required";
} else {
$firstName = $_POST["firstName"];
}
welcome.php:
<html>
<?php require 'validation.php';
$firstNameErr = "";
$firstName = "";?>
<body>
Welcome <?php echo $_POST["firstName"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?>
</body>
</html>
答案 0 :(得分:0)
您正在welcome.php中立即覆盖值:
<?php require 'validation.php';
$firstNameErr = "";
$firstName = "";?>
这相当于:
<?php
require 'validation.php';
$firstNameErr = "";
$firstName = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["firstName"])) {
$firstNameErr = "Name is required";
} else {
$firstName = $_POST["firstName"];
}
}
$firstNameErr = "";
$firstName = "";?>
此外,welcome.php
中没有特殊字符,因此您不需要该功能。
答案 1 :(得分:0)
问题在于welcome.php
。您正在require
之后清除变量。
<html>
<?php require 'validation.php'; ?>
<body>
Welcome <?php echo $_POST["firstName"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?>
</body>
</html>
会做的伎俩。
答案 2 :(得分:0)
首先,我认为
htmlspecialchars('welcome.php')
这可能会导致问题。如果验证代码与表单所在的地址相同,则可以将此参数留空(action =&#39;&#39;)。
更重要的是,我认为你做了一件非常简单的事情。将表单的操作属性更改为空后,您只需在表单所在的同一页面上处理该表单即可。例如:
if(isset($_POST['YOUR-SUBMIT-NAME-HERE']))
require 'validation.php';
else
require 'your-form.php';
但为了使它在未来更加美观且易于更新,您可以阅读一些关于PHP中良好实践处理表单的教程,并对AJAX感兴趣。祝你好运和欢呼!
答案 3 :(得分:-1)
问题是,在welcome.php
验证表单之前,您要重定向到index.php
。
由于您希望在index.php
页面中显示错误,因此在验证成功之前,您不应允许表单离开当前页面。因此,表单操作应指向当前页面(index.php
)。您可以通过设置action="."
来完成此操作。然后,如果没有验证问题,请在index.php
文件中提供一些验证并重定向到welcome.php
页面。
// ... Other index.php logic ...
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (empty($_POST["firstName"])) {
$firstNameErr = "Name is required";
} else {
// Redirect to the welcome page.
header('location: welcome.php?firstName='.$_POST['firstName']);
}
}
// ... Other index.php logic ...