Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将$\u会话值从外部PHP文件获取到源文件中_Php - Fatal编程技术网

将$\u会话值从外部PHP文件获取到源文件中

将$\u会话值从外部PHP文件获取到源文件中,php,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" /> .... &l

我有两个文件:

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

<?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
时显示无效的电子邮件,我认为这是预期的目标

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>
<?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))
哪里有
应该在
filter\u var
中的
f
前面!筛选变量

N.B.:我注意到
session_start()不会为您的
index.php
文件显示。如果您还没有这样做,则必须将其包含在它中,并包含在使用会话的所有文件中

关于
筛选\u验证\u电子邮件
筛选:

检查
是否有效,而当前方法检查
是否有效

是一个否定一元运算符

有关逻辑运算符的列表,请访问PHP.net网站:

和语言操作员:


您的
create\u profile.php
文件顶部是否有
session\u start()
?什么不起作用-重定向或显示错误?您是否调试过这个,检查是否设置了invalidEmail,是否执行过头重定向,以及是否触发了第一个代码中的
if
条件?我更新了-我相信这就是您希望实现的目标@user3173207@Fred-谢谢你,成功了