2014-11-04 109 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

相關問題