2012-04-27 134 views
0

我正在使用看起來並未保存的$_SESSION['loggedIn']= true。 我在保存前使用session_start()。我可以直接在後面回顯變量並進行設置,但是,只要我更改頁面,該變量就消失了。我也用session_start()之前,我在其他頁面閱讀...

現在,我有一個.htaccess文件是這樣的:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-d 

RewriteCond %{REQUEST_FILENAME} !-f 

RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule ^(.+)$ index.php?v=$1 [QSA,L] 

確定..所以這是的index.php

@session_start(); 

define("x_app", "1"); 

define('X_BASE', dirname(__FILE__)); 

require_once X_BASE.'/config/config.php'; 

include "classes/browser.php"; 

$browser = new Browser(); 

$browser->setBrowserCookie(); 

$_SESSION['browser'] = $browser; 

$_SESSION['language'] = "english"; 

//Getting View 

$v = explode('/', $_GET['v']); 

$view = $v[0]; 



After this I load the view.. 
In this case Login, which is loaded by a require function 




defined('x_app') or die; 

require('helper.php'); 

$email = $_POST['email']; 

$password = $_POST['password']; 



if(isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] == true){ 

    //Redirect to my portfolio landing page 

} 

else{ //Not Logged In 


    //Process Form 
    if(isset($_POST['email']) && isset($_POST['password'])){ 

     $xLogin = new X_Login(); 

     if($xLogin->login($email, $password) == true){ 

      echo 'User is logged In'; 

      //@session_start() ---> should I put this here again? Don't think so... 
      // ! This is the variable that I can't save 
      $_SESSION['loggedIn'] = true; 

        // ! I have an echo here but if change the page, it gets lost 
      echo 'session->'.$_SESSION['loggedIn']; 

     }else{ 

      echo 'User is not logged in'; 

     } 

    } 
    //Error in Form 

    elseif(!isset($_POST['email']) || !isset($_POST['password'])){ 

     $error = "Login Error"; 

     include('views/default.php'); 

    } 


} 

這是該Cookie功能

公共函數setBrowserCookie(){

if(empty($_COOKIE['verifyUser'])){ 

$ip = $_SERVER['REMOTE_ADDR']; 

$ub = $this->getBrowser(); 

@setcookie("verifyUser", $ip.$ub, time()+31536000); 

} 

}

這是否會影響保存會話變量的路徑?如果是這樣,我該如何解決它?

在此先感謝...

+2

是否設置了會話Cookie? – 2012-04-27 16:28:59

+0

你能不能發佈你的測試代碼 – Ing 2012-04-27 16:45:22

回答

0

你重寫規則不會影響其中的變量保存的,因爲保存路徑那些不是由Web服務器處理的路徑,而是由操作系統。很難說你的問題的原因是什麼,因爲你沒有提供關於程序代碼的很多信息。我的猜測是,會話ID是如何從一個請求傳遞到下一個請求的(實際上會有很多方法會丟失會話ID,包括混合cookie和基於URL的會話ID的情況,或者在表單中混合使用POST和GET變量,並與SID參數混合 - 這些參數甚至可以是特定於瀏覽器的)。

發佈有關您傳遞會話ID的方式的更多信息,因此我們可能會在此處找到問題。

+1

我現在覺得自己很白癡...... 坦都,你解決了這個問題! 基本上,我檢查了cookie是否被保存,如你所說,我意識到它沒有被保存。因爲我打電話給@setCookie(...),之前我看不到這個... 未被保存的原因是在index.php文件的第一行。有一個評論,但沒有//(PHP評論)我的工作同事使用(html),所以標題被髮送之前...:-S 非常感謝您的幫助球員。 這個問題讓我瘋狂了2個小時......但現在不見了:D – brunofitas 2012-04-27 17:21:34

-1

檢查網站的磁盤空間。自從我建立了他的網站以來,我的客戶就一直在上傳照片,而當主機空間耗盡時他無法再登錄。原來這個會話無法存儲。

+0

爲什麼這會降低投票率?它可能實際上幫助用戶。 – 2013-10-02 11:56:36