从外部PHP文件中获取$ _Session值,进入源文件



我有两个文件:

第一个是一个称为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

中显示

我没有在错误日志中遇到任何错误!

尝试此逻辑,它将在返回到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');
?>

为什么"无效"不出现

由于此行,下一页上的错误消息未出现:

if ( filter_var($personal_email, FILTER_VALIDATE_EMAIL))
 ---^

应该是:

if (!filter_var($personal_email, FILTER_VALIDATE_EMAIL))

!应该在filter_var中的f的前面是!filter_var

n.b。:我注意到您的index.php文件未显示session_start();。它必须包括在其中,如果您还没有这样做,并且内部 ass> assesions。

关于 FILTER_VALIDATE_EMAIL滤镜:

  • http://php.net/manual/filter.filter.filters.validate.php

!检查if NOT有效的检查,而当前方法正在检查it IS是否有效。

!否定的单操作员

有关逻辑运营商列表,请访问php.net网站:

  • http://www.php.net/manual/en/language.operators.logical.php

和语言操作员:

  • http://www.php.net/manual/en/en/language.operators.php

最新更新