如何将页面重定向到php中的同一页面

时间:2011-02-13 22:21:13

标签: php session header redirect

我有两个文件;逻辑是这样的,如果会话开始我将运行一段代码,如果没有设置,那么我必须运行else部分。无论如何,我需要把页面扔到自己身上。这是我的第一个文件


第一个文件(file1.php)

<?php
require_once('file2.php');
if(isset($_SESSION))
        echo '<br>Session set!';
else
{
    //echo '<br>Session NOT set...';
    sessStart();
    header("Location:file1.php");
}
?>


第二个文件(file2.php)

<?php
function sessStart()
{
    session_start();

    //some other code here but nothing that echo's
}
?>

我在这里做的是调用sessStart()方法在第一次运行时初始化else部分中的会话。下一次它不应该进入if部分而是其他部分。

不知何故,代码不会将文件重定向到同一文件,并且未初始化会话所在的部分。如果我在第二个文件的会话中存储了一些内容,我可以在第一个文件中检索它,以便会话成功启动,但如何重定向?

我在做什么错?

3 个答案:

答案 0 :(得分:3)

首先,你的工作毫无意义。

除了导致页面不断刷新之外,kjy112的答案绝对没有。

您永远不需要对_session进行检查,只需要确保在使用$_SESSION或发出任何内容之前,请致电session_start()

我建议你将当前的代码重组为更像这样的东西。

require_once "includes/startup.php";

并在startup.php

//Load primary includes
require_once "libraries/session.php";
require_once "libraries/input.php";
require_once "libraries/output.php";
//etc

if(!session_id())
{ 
    session_start();
    session_regenerate_id();

    //Other session bits
}

这基本上就是你所需要做的一切。

答案 1 :(得分:1)

我试图做类似下面代码的事情但在我的例子中使用会话让你们认为搞乱会话初始化:)这更像是一个标题问题。以下代码为 NOT POSSIBLE

//filename [1.php]
<?php
$x = 'n';

if($x == 'y')
    echo 'entered top';
else
{
    $x = 'y';
    header('1.php');
}
?>

您无法使用header()将网页重定向到自己;它将不断被重定向。

答案 2 :(得分:0)

在回复任何内容后,您无法执行header重定向。

如果在重定向之前没有回显“未设置”,那么您的示例将起作用。如果在它之后立即重定向,您希望何时看到此消息。

我个人不会将会话启动功能放在一个函数中,我会在你需要的每个脚本中包含一个运行session_start()的文件。