2015-04-03 48 views
2

因此,更多的細節..

我創建通過一系列的頁面去一個網站,每個後續頁面使用從其之前的頁面發佈的信息設置不同的$_SESSION變量。第一個頁面在第一個頁面之後設置了一個不同的$ _SESSION變量,該變量在該頁面上用於查詢數據庫以瞭解要呈現的信息。然後,在3個左右的頁面之後,所有這些不同的$ _SESSION變量一起使用來查詢數據庫以獲取匹配的記錄。

我的問題是,每個後續頁面上,在$ _SESSION變量將設置完全正常,但是當我進入下一個頁面,從之前的同一$ _SESSION變量,將被設置爲null ..

事情讓我非常困惑的是,這隻發生在我使用的託管服務器上。該網站按預期在我的本地主機上運行(如果有問題,我使用wampserver),並且代碼在兩者上都完全相同。

Page 1

這是在頁面頂部。我把「unset()」放在那裏以清空網站開始處的數據。

<?php 
    session_start(); 
    unset($_SESSION['brand']); 
    unset($_SESSION['model']); 
    unset($_SESSION['carrier']); 
    unset($_SESSION['size']); 
?> 

郵政是頁面的中間附近

<div id="select"> 
    <a href="models/page2.php?brand=a" onclick="post"><img src="images/a.png" id="a"/></a> 
    <a href="models/page2.php?brand=b" onclick="post"><img src="images/b.png" id="b"/></a> 
</div> 

第2頁

這是在頁面

<?php 

    session_start(); 
    if(isset($_SESSION['brand'])) 
    { 
     $brand = $_SESSION['brand']; 
    } 
    else 
    { 
     $_SESSION['brand'] = $_GET['brand']; 
     $brand = $_SESSION['brand']; 
    } 


    include('../connection/localconnection.php'); 

    $query = "SELECT DISTINCT Model FROM models WHERE brand = '$brand'"; 
    $result = $dbc->query($query); 

    if(!$result){ 
     echo "DB error. Could not query database\n"; 
     echo 'MySQL error: ' . mysql_error(); 
     exit; 
    } 
?> 

這篇文章的頂部向中部這一頁。我也echo $_SESSION['brand'],以確保它仍然設置。

<form action="../options/page3.php" method="post"> 
    <?php 
     if (mysqli_num_rows($result) > 0) { 
      while ($row = mysqli_fetch_assoc($result)) 
      { 
       echo "<input type=\"submit\" id=\"c\" name=\"model\" value=\"{$row['Model']}\"/>"; 
      } 
     } else { 

      echo "Query didn't return any result"; 

     }    
    echo $_SESSION['brand']; 
    ?> 
</form> 

這工作完全正常的服務器上,我可以看到$ _SESSION [「品牌」]設置完全按照它應該是。

但是,在page3.php的底部我再次echo $_SESSION['brand'],它被設置爲空,所以我知道$_SESSION變量仍然存在,它只是空的權利?

這種情況發生在每一頁上,我不明白爲什麼。我不是最大的PHP,但我理解一個體面的金額,並完全難住爲什麼這隻會發生在我的託管服務器上,而不是我的本地主機。任何幫助將不勝感激。

+1

它可能是在託管服務器上的php.ini。您可能需要在代碼中使用'SID'才能使其工作。檢查這裏的文檔:http://php.net/manual/en/session.constants.php – nomistic 2015-04-04 00:19:04

+0

它可以在第2頁break_ session到session_statt嗎? – 2015-04-04 00:25:26

回答

1

只是一個建議。根據MVC模式,會話應在Controller中處理。你在View中處理它,你的View包含了太多的PHP代碼。

0

因爲您在瀏覽器中打開的URL不唯一,您的頁面可能會出現會話問題。例如,如果說您正在爲您的網站創建登錄頁面,並且您已成功創建會話。現在,如果您通過網址登錄,例如http://example.com,那麼您的會話僅限於此網址。如果您再次打開上述網址,例如http://www.example.com(請在這兩個網址中註明www。),那麼您將看到您未登錄。請確保您的網頁始終以單一類型的URL打開。雖然這兩個URL都將重定向到相同的目的地,但請使用帶有www的URL。或沒有www。還要確保包括

<?php 
    session_start(); 
?> 

在每個PHP頁面的第一條語句。更多檢查post

+0

只要確保您用來訪問網頁的URL具有唯一的前綴。 – Choxx 2015-04-04 04:23:15

相關問題