我有两个文件project_status_discount_approval.php和project_status_disc_app.php。在project_status_discount_approval.php中:我有以下几行:
project_status_discount_approval.php
echo '<p>APPROVAL FOR DISCOUNT</p>';
include('project_status_disc_app.php');
if (isset($_SESSION['formValidationErr'])) {
_alert($errors);
unset($_SESSION['formValidationErr']);
}我已经将表单和表单验证放在project_status_disc_app.php中,如果有任何空字段,它将填充$_SESSION‘’formValidationErr‘并将其重定向回project_status_discount_approval.php。这是在project_status_disc_app.php中这样做的代码:
$errors[] = 'Please fill up all fields before submitting';
$_SESSION['formValidationErr'] = $errors;
header("Location: project_status.php?id=".$pid);目的是执行这两行:
_alert($errors);
unset($_SESSION['formValidationErr']);仅当分配了project_status_discount_approval.php中的$_SESSION时,才在$_SESSION块中。但是,即使第一次加载页面,它也会被执行。有人能告诉我是什么原因造成的吗?提前谢谢你。
发布于 2020-08-19 11:44:44
在检查是否设置了session_start()类型的变量之前,必须先进行$_SESSION。
您可以阅读有关php中的会话管理的所有内容:
https://www.php.net/manual/en/reserved.variables.session.php
发布于 2020-08-19 11:45:23
我认为这取决于您的会话如何在您的文件"project_status_disc_app.php“中处理。如果将其设置为null,则isset将返回true。如果你真的想限制某物的存在,你应该这样做:
if(isset($_SESSION["my_var"]) && !empty($_SESSION["my_var"])){
// your code here
}https://stackoverflow.com/questions/63486171
复制相似问题