我正在使用似乎没有保存的$_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功能
public function setBrowserCookie(){
if(empty($_COOKIE['verifyUser'])){
$ip = $_SERVER['REMOTE_ADDR'];
$ub = $this->getBrowser();
@setcookie("verifyUser", $ip.$ub, time()+31536000);
}
}
这会影响保存会话变量的路径吗?如果是这样,我该如何解决?
提前致谢...
答案 0 :(得分:0)
您的重写规则不会影响保存变量的路径,因为保存变量的路径不是由Web服务器处理,而是由操作系统处理。很难说出问题的原因是什么,因为您没有提供有关程序代码的大量信息。我的猜测是,会话ID从一个请求传递到下一个请求有一个问题(实际上有很多方法会丢失会话ID,包括涉及混合cookie和基于URL的会话ID的情况,或在表单中混合POST和GET变量,与SID参数混合 - 甚至可以是特定于浏览器的。)
发布有关您传递会话ID的方式的更多信息,以便我们可以在那里找到问题。
答案 1 :(得分:-1)
检查网站的磁盘空间。自从我为他建立了自己的网站以来,我的客户一直在上传照片,当托管空间用尽时,他无法再登录了。因此而无法存储会话。