session是保存在服务器端的,通过php.ini文件中的session.save_path保存session
cookie是保存在客户端的(ie浏览器中)
设置了session和cookie后用户信息就会保存在上面,登陆后,都会有一个标示,带着这个标示就可以访问每个页面,不用一个一个的发送请求
1、db.class.php
//封装数据库类
<?php
class db{
private $host;
private $user;
private $pass;
private $db_name;
public function __construct($host,$user,$pass,$db_name){
//初始化对象的属性
$this->host=$host;
$this->user=$user;
$this->pass=$pass;
$this->db_name=$db_name;
$this->connect();
}
public function connect(){
mysql_connect($this->host,$this->user,$this->pass);
mysql_select_db($this->db_name);
mysql_query("set names utf8");
}
}
?>
2、a.php
<?php
//var_dump($_POST);
//没有选复选框时,array(2) { ["username"]=> string(5) "admin" ["password"]=>
string(5) "admin" }
//选了复选框后多了个remember=>1,array(3) { ["username"]=> string(5) "admin" ["password"]=>
string(5) "admin" ["remember"]=> string(1) "1" }
session_start();//开启session
//初始化act参数
$_GET['act']=isset($_GET['act'])?$_GET['act']:'login';//因为get获得地址栏中信息。isset()判断变量是否存在,$_GET['act']:'login'默认act的值是login
//验证用户名和密码
if($_GET['act']=='signin'){
$username=$_POST['username'];//获得它的信息,获得他的用户名
$password=$_POST['password'];
//连接数据库进行查询
include 'db.class.php';
$db=new db('localhost','root','123','ecshop_test');
$sql="select * from admin_user where username='$username' and
password='$password'";
$res=mysql_query($sql);
$row=mysql_fetch_array($res);//以数关联或索引组形式返回一条结果
if($row){
//现在用户名和密码正确,登录
if($_POST['remember']==1){//保留这次登录的信息.
setcookie('admin_id',$row['id'],time()+24*60*60);
setcookie('admin_pass',$row['password'],time()+24*60*60);
}
$_SESSION['is_login']=true;//设置session,
header('Location:index.php');
}else{
echo '用户名密码错误';
header('Location:a.php');
}
}
?>
<form action="a.php?act=signin" method="post">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="password" ><br>
<input type="checkbox" value="1" name="remember" id="remember" /><label for="remember">请保
存我这次的登录信息</label><br>
<input type="submit" value="进入管理中心" class="button" />
</form>
3、index.php
<?php
session_start();
include 'db.class.php';
$db=new db('localhost','root','123','ecshop_test');
//验证用户名密码,看看你身上有没有那个记号
if(!isset($_SESSION['is_login'])){
//判断是否有cookie,设置cookie是通过setcookie函数,获得cookie通过$_COOKIE[]
if(isset($_COOKIE['admin_id'])){
//去数据库查询用户名和密码
$sql="select password from admin_user where id='{$_COOKIE['admin_id']}'";
$res=mysql_query($sql);
$pass=mysql_fetch_array($res);
if($pass[0] !=$_COOKIE['admin_pass']){//$_COOKIE['admin_pass']是a.php中设置
的cookie
//既没有session也没有正确的cookie
header('Location:a.php');
}
}
}else{
echo 'welcome';
}
?>