2014-11-04 69 views
0

所以我刚刚上传我的PHP到godaddy,除了重定向正在工作,现在已经停止。在活动服务器上代码的工作方式与脱机方式之间应该没有区别,所以我不明白发生了什么变化。PHP重定向,或饼干,不在Godaddy上工作,但在localhost工作

下面是代码的样本未工作

与注销该超链接,据我可以告诉充当超级链接应该

<div id="header"> 
      <div> 
      <a href="index.php">Home</a> 
       <div id="loginreglink"> 
       <a href="Logout.php">Log Out</a> 
       </div> 
      </div> 
      </div> 

实际的注销页面的标题链接(logout.php)

<?php 

require_once ('Connection.php'); 

header('Refresh: 0;'); 

      if (!isset($_COOKIE['Username'])){ 
       require ('LoginFunctions.inc.php'); 
       redirect_user(); 
      } else { 
       setcookie('Username', '', time()-60*60*24*90, '/', '', 0, 0); 
       require ('RedirectPage.php'); 
       redirect_user(); 
      } 


?> 

RedirectPage.php(下页应该链接到的注销页面的访问之后,立即)

<?php 
      require ('index.php'); 
      redirect_user(); 
?> 

然后立即链接回索引,但用户应该注销。这没有发生。

会发生什么页面重定向到索引(因为它应该)可能会使用以下序列,这导致我认为重定向正在工作,但用户没有注销。该cookie不会被删除。我不明白为什么它不是,因为它通过本地主机上的netbeans工作。

+0

'redirect_user()'声明在哪里? – 2014-11-04 18:54:20

+0

“在活动服务器上代码的工作方式与离线方式应该没有区别”。我无法开始告诉你这是多么的错误。 – 2014-11-04 18:57:05

+0

@MikeBrant那么,为什么不开始解释或将我联系到一些有用的东西呢?而不是试图让我感到愚蠢。我是新来的,我知道,我的老师们毫无用处,所以我正在自学,据我所知,直到现在,我写的所有代码在线上和线下都是一样的,我还没有看到(因为我没有)任何代码工作的例子,直到现在。 – Spratters53 2014-11-04 19:47:55

回答

1

很简单。取消设置Cookie。

if (!isset($_COOKIE['Username'])){ 
    require ('LoginFunctions.inc.php'); 
    redirect_user(); 
} else { 
    setcookie('Username', '', time()-60*60*24*90, '/', '', 0, 0); 
    require ('RedirectPage.php'); 
    //add this 
    unset($_COOKIE['Username']; 
    //or use setcookie and make the time to expire in the past and just put an empty value like 
    $cookie_name = "Username"; 
    $cookie_value = ""; 
    $time = -3600; 
    setcookie($cookie_name, $cookie_value, $time, "/"); 
    redirect_user(); 
} 
+0

这很简单,任何想法为什么在托管时需要取消设置cookie? – Spratters53 2014-11-04 19:55:58

+0

'unset($ _ COOKIE ['foo'])'不会从浏览器客户端删除cookie,而只是从PHP内存中删除变量。您必须发送一个标题以在浏览器客户端上过期cookie(通常通过'setcookie()'完成)。我认为这是一个很好的做法,尽管如果你想让执行脚本在执行的其余部分中保持这个变量不受这个变量的影响,那么可以同时做两个。 – 2014-11-04 19:57:01

+0

是的。 U是正确的麦克 – 2014-11-04 20:21:29

相关问题