Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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
如何在php中将页面重定向到同一页面_Php_Session_Header_Redirect - Fatal编程技术网

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

如何在php中将页面重定向到同一页面,php,session,header,redirect,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...';

我有两个档案;逻辑是这样的,如果会话启动,我必须运行一段代码,如果没有设置,那么我必须运行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");
}
?>
<?php
function sessStart()
{
    session_start();

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


第二个文件(file2.php)

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

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

您无法在回显任何内容后执行
标题
重定向

如果在重定向之前不回显“未设置”,则示例将起作用。如果在此消息之后立即重定向,您希望在什么时候看到此消息


就个人而言,我不会将会话启动功能放在函数中,我会在每个脚本中包含一个运行
session\u start()
的文件

kjy112的答案除了使页面不断刷新之外,完全没有任何作用

您不需要检查
\u会话
,只需确保在使用
$\u会话
或发送任何内容之前调用
会话\u 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
}

这基本上就是您需要做的所有事情。

我试图做一些类似于以下代码的事情,但在我的示例中使用session会让你们觉得我搞乱了会话初始化:)这更像是一个标题问题。下面的代码是不可能的

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

if($x == 'y')
    echo 'entered top';
else
{
    $x = 'y';
    header('1.php');
}
?>
//文件名[1.php]

不能使用
标题()将页面重定向到自身;它将不断被重定向。

请稍候,您正在尝试重定向到file1.php,它本身就是。所以没有任何东西是重定向的,那么我必须做什么才能完成呢?为什么不把
session_start()
在file1.php之上,忘记重定向问题是“如何在php中将页面重定向到同一页面”或“如何使会话工作”?脚本中是否有ob_start ob_flush?出于测试目的,我禁用了所有echo,但它仍然不工作。是的,它在chrome.uff php ya it cache中得到了“此网页有重定向循环”,它现在正在刷新:/i会尝试其他方法。是的,它基本上是不断刷新。请在我的屏幕上重新解释你所说的uff php ya it cache的错误部分重新启动了IIS,它的行为与您所说的完全相同。我知道您现在要做什么…使用socket进行聊天应用程序。