2012-04-27 124 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