代码无法引用我之前设置的会话 (PHP 7.2)
code can't refer to Sessions I set before (PHP 7.2)
我正在使用会话向下一个站点发送成功或错误消息,我在下一个站点使用包含 php 文件来显示该消息。
由于某种原因,message.php 文件无法引用我之前设置的会话。
例如:登录脚本根据登录成功与否设置session。然后它会将您重定向到下一页,我在其中使用 message.php
作为我拥有的每个站点的包含。当之前设置会话时,这应该会在每个站点上显示一条消息。
<?php
session_start();
if (isset($_SESSION['msgType']) AND isset($_SESSION['msgMessage'])) {
if ($_SESSION['msgType'] != "" AND $_SESSION['msgMessage'] != "") {
if ($_SESSION['msgType'] == "error") {
?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
<strong>Fehler!</strong> <?php echo $_SESSION['msgMessage']; ?>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<?php
} elseif ($_SESSION['msgType'] == "warning") {
?>
<div class="alert alert-warning alert-dismissible fade show" role="alert">
<strong>Warnung!</strong> <?php echo $_SESSION['msgMessage']; ?>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<?php
} elseif ($_SESSION['msgType'] == "success") {
?>
<div class="alert alert-success alert-dismissible fade show" role="alert">
<strong>Erfolg!</strong> <?php echo $_SESSION['msgMessage']; ?>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<?php
}
}
}
$_SESSION['msgType'] = "";
$_SESSION['msgMessage'] = "";
?>
<?php
session_start();
$_SESSION['msgType'] = "success";
$_SESSION['msgMessage'] = "some message";
?> <script> window.location = "some URL"; </script> <?php
exit;
第一个代码是 message.php 文件,其中会话在消息中被翻译。
第二个代码是一段登录脚本。设置会话并重定向的位置。
由于任何原因,根本没有显示任何消息。你能看出我的代码有什么问题吗?
此外,如果有人能告诉我,为什么我不能使用 header('Location: URL')
进行重定向而不得不使用 <script> window.location = "some URL"; </script>
,请告诉我。
可以,使用 header('location : your_url')
<?php
ini_set('session.save_path',realpath(dirname($_SERVER['DOCUMENT_ROOT']) . '/../session')); //PUT THIS ON THE TOP
session_start();
试试看
默认 PHP session 处理是通过 header 使用 cookie。尝试设置 Location
header 时出现错误这一事实表明输出已经完成。
确保您的脚本在第一个字符处以 <?php
开头且之前没有任何空格。还要确保您的编辑器没有在文件开头存储 BOM
(字节顺序标记)。
我正在使用会话向下一个站点发送成功或错误消息,我在下一个站点使用包含 php 文件来显示该消息。
由于某种原因,message.php 文件无法引用我之前设置的会话。
例如:登录脚本根据登录成功与否设置session。然后它会将您重定向到下一页,我在其中使用 message.php
作为我拥有的每个站点的包含。当之前设置会话时,这应该会在每个站点上显示一条消息。
<?php
session_start();
if (isset($_SESSION['msgType']) AND isset($_SESSION['msgMessage'])) {
if ($_SESSION['msgType'] != "" AND $_SESSION['msgMessage'] != "") {
if ($_SESSION['msgType'] == "error") {
?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
<strong>Fehler!</strong> <?php echo $_SESSION['msgMessage']; ?>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<?php
} elseif ($_SESSION['msgType'] == "warning") {
?>
<div class="alert alert-warning alert-dismissible fade show" role="alert">
<strong>Warnung!</strong> <?php echo $_SESSION['msgMessage']; ?>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<?php
} elseif ($_SESSION['msgType'] == "success") {
?>
<div class="alert alert-success alert-dismissible fade show" role="alert">
<strong>Erfolg!</strong> <?php echo $_SESSION['msgMessage']; ?>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<?php
}
}
}
$_SESSION['msgType'] = "";
$_SESSION['msgMessage'] = "";
?>
<?php
session_start();
$_SESSION['msgType'] = "success";
$_SESSION['msgMessage'] = "some message";
?> <script> window.location = "some URL"; </script> <?php
exit;
第一个代码是 message.php 文件,其中会话在消息中被翻译。 第二个代码是一段登录脚本。设置会话并重定向的位置。
由于任何原因,根本没有显示任何消息。你能看出我的代码有什么问题吗?
此外,如果有人能告诉我,为什么我不能使用 header('Location: URL')
进行重定向而不得不使用 <script> window.location = "some URL"; </script>
,请告诉我。
可以,使用 header('location : your_url')
<?php
ini_set('session.save_path',realpath(dirname($_SERVER['DOCUMENT_ROOT']) . '/../session')); //PUT THIS ON THE TOP
session_start();
试试看
默认 PHP session 处理是通过 header 使用 cookie。尝试设置 Location
header 时出现错误这一事实表明输出已经完成。
确保您的脚本在第一个字符处以 <?php
开头且之前没有任何空格。还要确保您的编辑器没有在文件开头存储 BOM
(字节顺序标记)。