2011-10-03 110 views
-2

我什麼嘗試做的是使用$_SESSION['user_id']檢查'user_id'是=到「數字」,說56例如,如果是負載頁面,如果不重定向用戶到"billing/".$_SESSION['user_id'].".php";PHP會話ID重定向

到目前爲止,我有這

<?php 
    if ($_SESSION['user_id']) === 56) { 
     //do nothing 
    } else { 
      header("Location: billing/".$_SESSION['user_id'].".php"); 
      exit(); 
    } 
?> 

我知道這段代碼是錯誤的,但希望它傳達了我想要完成的。 預先感謝您的幫助和代碼片段。

+0

在'header'行之後加'exit;'。 – hakre

+1

除了'Location'需要一個完整的url,''exit'''在'header'之後,'''user_id']'在'if'之後的錯誤括號。這是怎麼回事? –

+0

我想知道這個目標.. –

回答

0

你是相當接近,但你可以使用PHP函數http_redirect,而不是對重定向,更簡潔(需要PECL庫):

<?php 
    if ($_SESSION['user_id'] == 56) { 
     //do nothing 
    } else { 
     http_redirect("billing/".$_SESSION['user_id'].".php", array(), true, HTTP_REDIRECT_PERM); 
    } 
?> 
+0

無效的PHP atm並且需要一個PECL我能看到的圖書館。 –

+0

什麼是PHP無效? – Jez

+0

'if($ _SESSION ['user_id'])=== 56){' –

0

爲什麼不檢查相反?爲了可讀性,使用{}不是「明智的」。「 (只要您編輯凸顯了這款)

<?php 
if($_SESSION["user_id"] != 56) { 
    header("location: billing/{$_SESSION['user_id']}.php"); 
    die(); 
} 
?> 
+0

誰低估,謹慎解釋?我打算提出這個建議。測試true是沒有意義的,然後只運行代碼爲false。爲了便於閱讀,這是更好的方法。 – Anonymous

+0

我沒有downvote,但我不能讓重定向工作?無論如何,如果user_id不正確,代碼仍然會加載頁面。謝謝你的幫助 :) –

0

PHP Doc for header()給出了很多有關如何使用頭功能信息的。最重要的是:

  • 確保沒有HTML或文本一直迴盪或打電話header()之前發送給瀏覽器。
  • 由於您完成了渲染頁面並且一些瀏覽器更喜歡它,因此您需要header()之後的exit();
  • HTTP/1.1需要一個絕對URI作爲»位置的參數:位置:包括方案,主機名和絕對路徑,因此您需要在'位置:'之後放置完整的URL。例如,請參閱php文檔。
1
  1. 基礎上,答案不在你的問題編輯代碼。你正在讓你無法理解你在說什麼。
    如果您想添加內容 - 將其添加到原始文本下方。

  2. 問清楚,有問題。描述你面臨的問題以及你需要什麼樣的解決方案。

  3. 分開的事項。事實上,會話與重定向無關。如果你想知道如何使用會話,請詢問如何使用會話。如果您已經擁有有效並經過驗證的會話變量,但不知道重定向 - 請詢問重定向。如果你不知道如何比較價值 - 問問。如果你知道一切,但不知道代碼風格的一些花招和哨聲 - 問這個問題。

現在,你的問題是什麼?