我的网站上有一个使用$ _SESSION变量的PHP身份验证系统。
表单向文件“ login.php”提交用户名和密码。它是这样处理的:
<?php include '../includes/sessionstart.inc.php'; ?>
<?php ob_start(); ?>
if($_POST){
$q = mysql_query("SELECT id, company FROM users WHERE username = '".mysql_real_escape_string($_POST['username'])."' AND password = '".md5($_POST['password'])."'");
if(mysql_num_rows($q) >= 1){
$f = mysql_fetch_Array($q);
$_SESSION['company'] = $f['company'];
$_SESSION['id'] = $f['id'];
$_SESSION['logedin'] = true;
session_write_close();
ob_clean();
header("Location: index.php");
}
之后,将加载index.php并检查'loginin'是否为true。
<?php include '../includes/sessionstart.inc.php'; ?>
<?php if(!isset($_SESSION['logedin'])) header('Location: login.php'); ?>
在我的生产服务器上,它继续,但是在我的Wampserver上,它恢复为login.php。我注意到Wampserver的页面加载速度非常慢,这可能与其有关。这就是为什么我包含session_write_close的原因,以确保在切换页面之前保存会话数据,但这无济于事。
session_start.inc.php的内容很简单:
<?php
session_start();
?>
我以前在那里有更多代码,但目前仅此而已。在开始使用包含文件之前,该问题也存在。
有人知道我在做什么错吗? Wampserver为什么不将我的SESSION数据传输到下一个PHP文件?
参考方案
WAMP服务器2-默认情况下未设置$_SESSION
变量的设置。
PHP.ini
需要以下设置
C:\wamp\bin\apache\apache2.4.2\bin\php.ini
session.cookie_domain =
session.use_cookies = 1
session.save_path = "c:\wamp\tmp" ;ensure the \ is used not /
会话测试-
load.php-加载$_SESSION
var。
<?PHP
session_start();
$_SESSION['SESS_MEMBER_ID'] = 'stored variable';
session_write_close();
header("location:print.php");
?>
print.php-打印$ _SESSION变量
<?PHP
session_start();
var_dump($_SESSION);
?>
在浏览器var_dump()
中运行脚本应产生结果
转到c:\wamp\tmp
包含会话数据的文件将显示在此处。
这是我第一次尝试创建会话。另外,成功登录后,我使用header()函数重定向页面,但是在重定向的页面上,我不再有会话。有代码:建立工作阶段:function userLogin($user){ session_start(); $_SESSION['username'] = $user; header("Location: /~…
PHP Memcached会话突然失效 - phpsession.save_handler = memcached session.save_path = "127.0.0.1:11211" session.gc_maxlifetime = 86400 其余的标准。我希望自上次用户访问该页面以来,该会话至少可以保留86400秒,即,如果我在5分钟后启动了一个会话并访问了该页面,则该会话应…
PHP-全局变量的性能和内存问题 - php假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…
PHP strtotime困境 - php有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00…
php-casperjs获取内部文本 - php我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…