我有两个文件:
第一个是名为index.php的php文件 - 用户可以看到并包含HTML表单。
<?php
ob_start();
session_start();
?>
<form method="post" action="create_profile.php">
....
<input id="personal_email" name="personal_email" tabindex="auto" type="text" />
....
<input name="submit" type="submit" value="Submit">
</form>
<?php
//Get value from create_profile.php
if(empty($_POST) === false) {
$invalidEmail = $_SESSION['invalidEmail'];
echo $invalidEmail;
}
?>
第二个文件create_profile.php处理上面的文件index.php,基本上它检查表单并查看是否有任何错误 - 如果有任何错误,则假设在index.php中显示错误
<?php
....
if (filter_var($personal_email, FILTER_VALIDATE_EMAIL)) {
$invalidEmail = 'The email address is invalid or missing' . '<br/>';
}
...
//Send errors to index.php
$_SESSION['invalidEmail'] = $invalidEmail;
header('Location: create_profile.php');
..
?>
问题是当我将表单从index.php提交到create_profile.php时 - 来自create_profile.php的错误没有显示在index.php中
我的错误日志中没有出现任何错误!
答案 0 :(得分:1)
尝试这个逻辑,它会在返回index.php
时显示无效的电子邮件,我认为这是预期的目标。
<强>的index.php 强>
<?php
ob_start();
session_start();
if(isset($_SESSION['invalidEmail'])) {
$invalidEmail = $_SESSION['invalidEmail'];
echo $invalidEmail;
}
?>
<form method="post" action="create_profile.php">
<input id="personal_email" name="personal_email" tabindex="auto" type="text" />
<input name="submit" type="submit" value="Submit">
</form>
<强> create_profile.php 强>
<?php
// ob_start(); // uncomment if needed
session_start();
$personal_email = $_POST['personal_email'];
$_SESSION['invalidEmail'] = $personal_email;
if (!filter_var($personal_email, FILTER_VALIDATE_EMAIL)) {
$invalidEmail = 'The email address is invalid or missing' . '<br/>';
echo $personal_email;
echo "<hr>";
}
//Send errors to index.php
echo "";
// header('Location: create_profile.php');
?>
为什么“INVALID”没有出现
由于以下行,下一页上的错误消息未显示:
if ( filter_var($personal_email, FILTER_VALIDATE_EMAIL))
---^
应该是:
if (!filter_var($personal_email, FILTER_VALIDATE_EMAIL))
!
应该位于f
filter_var
前!filter_var
N.B。:我注意到session_start();
文件未显示index.php
。 必须包含在其中,如果您还没有,并且在所有文件中使用会话。
关于 FILTER_VALIDATE_EMAIL
过滤器:
!
检查if NOT
是否有效,而本方法检查it IS
是否有效。
!
是否定一元运算符
有关逻辑运算符的列表,请访问PHP.net网站:
和语言操作员: