【问题标题】:How to redirect a page to the same page in php如何将页面重定向到php中的同一页面
【发布时间】:2011-06-26 14:47:48
【问题描述】:

我有两个文件;逻辑是这样的,如果会话开始,我必须运行一段代码,如果它没有设置,那么我必须运行 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 部分,而应该进入 else 部分。

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

我做错了什么?

【问题讨论】:

  • 等待您尝试重定向到 file1.php 本身。所以没有任何东西被重定向
  • 嗯,我必须做什么才能完成这项工作?
  • 为什么不把 session_start(); 放在 file1.php 的顶部而忘记重定向
  • 问题是“如何将页面重定向到 php 中的同一页面”还是“如何使会话正常工作”?
  • 脚本中有 ob_start ob_flush 吗?

标签: php session header redirect


【解决方案1】:

我试图做类似下面的代码,但在我的示例中使用会话让你们认为我搞砸了会话初始化:) 这更多的是一个标题问题。下面的代码是不可能

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

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

您不能使用header() 将页面重定向到自身;它会不断地被重定向。

【讨论】:

    【解决方案2】:

    好吧,首先你的所作所为毫无意义。

    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
    }
    

    这就是你需要做的所有事情。

    【讨论】:

    • uff php ya 它缓存了一些东西,现在它令人耳目一新:/ 我会尝试其他方法。
    • 是的,它基本上是不断刷新。
    • 请重新解释你的意思 uff php ya it cache'd
    • 我的错误重新启动了 IIS,它开始表现得和你说的完全一样
    • 我知道你现在想做什么...使用套接字进行聊天应用程序。
    【解决方案3】:

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

    如果您在重定向之前没有回显“未设置”,则您的示例将起作用。如果在此消息之后立即进行重定向,您预计何时会看到此消息。

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

    【讨论】:

    • 出于测试目的,我禁用了所有回声仍然无法正常工作。
    • 是的,它在 chrome 中得到“此网页有重定向循环”。
    猜你喜欢
    • 2011-12-29
    • 1970-01-01
    • 2015-10-22
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 2011-03-20
    相关资源
    最近更新 更多