从外部PHP文件获取$ _SESSION值到源文件中

时间:2014-02-02 00:26:11

标签: php

我有两个文件:

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

我的错误日志中没有出现任何错误!

1 个答案:

答案 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网站:

和语言操作员: