我想重定向到某个页面,然后显示一条消息:
我拥有的是:
if (mysqli_affected_rows($link) == 1)
{
//succes
$message = 'succes';
redirect_to('index.php');
}
在索引页面上我有:
if (!empty($message)) {
echo '<p class="message"> '.$message.'</p>';
}
重定向功能正常运行:
function redirect_to( $location = NULL ) {
if ($location != NULL) {
header("Location: {$location}");
exit;
}
}
但它不会显示我的信息。它是空的。
答案 0 :(得分:19)
当重定向发生并执行$location
描述的PHP脚本时,$message
变量早就不存在了。
要解决此问题,您需要使用GET
变量在您的位置标头中传递消息:
header("Location: $location?message=success");
并且
if(!empty($_GET['message'])) {
$message = $_GET['message'];
// rest of your code
您还可以查看sessions
session_start();
$_SESSION['message'] = 'success';
header("Location: $location");
然后在目标脚本中:
session_start();
if(!empty($_SESSION['message'])) {
$message = $_SESSION['message'];
// rest of your code
答案 1 :(得分:3)
脚本结束后,变量不再存在。每个单独的请求,每个单独的PHP脚本调用都是一个全新的上下文,没有来自任何其他调用的数据。
使用sessions来保存数据。
答案 2 :(得分:3)
你可以使用会话
if (mysqli_affected_rows($link) == 1)
{
//succes
$_SESSION['message'] = 'succes';
redirect_to('index.php');
}
和索引
if (!empty($_SESSION['message'])) {
echo '<p class="message"> '.$_SESSION['message'].'</p>';
unset($_SESSION['message']);
}
答案 3 :(得分:2)
由于您正在运行header("Location: {$location}");
,因此在加载index.php时,$location
(在第一个文件中设置)的值将丢失。
答案 4 :(得分:1)
使用以下代码....
header("Location: index.php?message=success");
index.php中的
$msg=$_GET['message'];
echo $msg;
答案 5 :(得分:0)
您可以避免重定向功能并在页面中使用此代码
header("Location: $locationpage?message=success")
的index.php
if(!empty($_GET['message'])) {
$message = $_GET['message'];
echo '<p class="message"> '.$message.'</p>';
}