您的位置:首页 > 编程语言 > PHP开发

在登录页面login.php设置的session,然后在跳转后的页面就接收不到值

2017-07-08 14:01 393 查看
最近在给正在完善的一个小项目做后台管理系统,然后在做好登录页面的各项验证后,就要弄一个session值来验证禁止非管理员登录,如下:

在login.php页面:

<?php
header('content-type:text/html; charset=utf-8');
session_start();
include "../include/init.php";

if($_POST){
$username=trim($_POST['username']);
$password=md5($_POST['password']);
$sql="SELECT * FROM box_admin WHERE admin_title='{$username}' AND  admin_password='{$password}'";
$user=$mysql->getOne($sql);
// print_r($user);exit;
if(isset($user['admin_title']) && !empty($user['admin_title'])){
if($password==$user['admin_password']){
$_SESSION['log'] = '1';
// echo $_SESSION['log'];exit;
// $_SESSION['uid'] = $user['admin_id'];
// $_SESSION['username'] = $username;
// $_SESSION['password'] = $password;

alert("恭喜您,登录成功!","index.php");

}else {
alert("请输入密码","login.php");
}
}else {
alert("请输入用户名","login.php");
}

}

?>


在index.php页面(也就是i跳转后的页面):

<?php
header('content-type:text/html; charset=utf-8');
session_start();
include "../include/init.php";
echo $_SESSION['log'];exit;
if(!isset($_SESSION['log']) || empty($_SESSION['log'])|| $_SESSION['log']!=1){
alert("请先登录","login.php");
}
$uid=$_SESSION['uid'];

$sql="SELECT * FROM box_admin WHERE admin_id='{$uid}'";
// $sql="SELECT * FROM box_admin WHERE admin_id=1";
$admin=$mysql->getOne($sql);

?>


然后测试是否能从index.php拿到session值的时候,出错了:如下:

Notice:Undefined index:log............./index.php


然后检查了好几遍,愣是没发现错误,然后我就打开了php的配置文件php.ini,然后查找session.save_path

发现并没有去掉分号,然后我去掉分号,然后改成了

session.save_path = "D:/wamp/php/tmp"


并在php目录下建了tmp文件夹。

然后重启apache。

再次验证登录,终于能在另一个页面拿到session值了。

当你打开tmp文件夹的时候,发现里面已经有了你刚才设置的session了。

提醒:设置session一定要加

session_start();


或者在php.ini中将

session.auto_start = 0


,改为

session.auto_start = 1


,然后细心细心再细心。

扩展:

一些重要的会话配置

php.ini配置文件中有一组会话配置选项,可以对其进行设置:

session.save_handler = files ; 如何存储session信息
session.save_path = /tmp; save_handler 设为文件时, session文件保存的路径
session.use_cookies = 1 ; 是否使用cookies
session.name = PHPSESSID;  用在cookie里的session的名字
session.auto_start = 0 ; 是否自动启动session
session.cookie_lifetime = 0 ; 设置会话cookie的有效期,以秒为单位,为0时表示直到浏览器被重启
session.cookie_path = / ; cookie的有效路径
session.cookie_domain = ; cookie的有效域
session.cache_expire = 180 ; 设置缓存中的会话文档在 n 分钟后过时
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: