Cookie来进行会话控制。让用户身上带个标示牌,走到哪个页面,哪个页面去认用户带的标示牌,就知道用户是谁了。
Setcookie来设置cookie信息
Setcookie(名字,值,有效期,路径,域名)
有效期是在未来什么时间过期,是传一个未来的unix时间戳
路径,在哪个目录下有效,如果需要在整个站点下有效,就写上/
域名,在哪个域名下准许访问
安全设置,默认为false 是指是否启用安全套接字层。https协议,启用了https协议就将这一项值改为true
注意:
不要在cookie前放任何输出,因为是通过header头告诉浏览器,浏览器来进行操作的生成cookie文件,所以说,不能在前加上空格,空车等任意输出字符。
SESSION
是在用户本地保存一个编号,在服务器端也有一个对应的编号。用户访问对应页面的时候,信息是存在服务器端的session文件当中。文件直接去找,session控制器要用户的相信。
禁掉COOKIE后无法使用session,我们可以采用url传SESSION ID方式来解决。
第一种解决方案:
session.use_trans_sid = 1
第二种解决方案:
在URL处,接上一个常量SID
如果浏览器,第一件,php.ini当中的 session.user_trans_id=1
在超链接处加上? SID
/*
bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )
*/
change_password.php
<?php
if(empty($_COOKIE['username'])){
exit('用户没有登陆');
}
echo '欢迎来到修改密码页'.$_COOKIE['username'].'<a href="logout.php">退出</a>';
?>
logout.php
<?php
setcookie('username','',time()-1);
echo '退出成功';
?>
form.html
<form action="check.php" method="post">
<input type="text" name="username" />
<input type="password" name="password" />
<input type="submit" value="登陆" />
</form>
check.php
<?php
//就是检查用户名和密码是否一致
$username=$_POST['username'];
$password=md5(trim($_POST['password']));
$conn=mysql_connect('localhost','root','phphaha');
if(mysql_errno()){
exit(mysql_error());
}
mysql_set_charset('utf8');
mysql_select_db('37demo');
$sql="select username,id from user where username='{$username}' and password='{$password}'";
$result=mysql_query($sql);
if($result&&mysql_affected_rows()){
$row=mysql_fetch_assoc($result);
setcookie('username',$row['username'],time()+60*60*3);
setcookie('id',$row['id'],time()+60*60*3);
echo '登陆成功<a href="center.php">用户中心</a>';
}else{
echo '用户名或密码不正确';
}
?>
center.php
<?php
if(empty($_COOKIE['username'])){
echo '您没有登陆';
exit;
}
echo '欢迎您进入用户中心'.$_COOKIE['username'].'<a href="xg.php">修改密码</a>';
?>
cache.php
<?php
if(file_exists('phpwc.php')){
$fileds=include 'phpwc.php';
echo '存在文件,读取缓存';
}else{
echo '不存在文件直接缓存';
$conn=mysql_connect('localhost','root','phphaha');
if(mysql_errno()){
exit(mysql_error());
}
mysql_set_charset('utf8');
mysql_select_db('phpemo');
$sql='desc 3wc';
$result=mysql_query($sql);
while($row=mysql_fetch_assoc($result)){
/*
echo '<pre>';
var_dump($row);
echo '-----------------------<br>';
echo '</pre>';
*/
$fields[]=$row['Field'];
if($row['Extra']=='auto_increment'){
$fields['_auto']=$row['Field'];
}
if($row['Key']=='PRI'){
$fields['_pk']=$row['Field'];
}
}
$string="<?php \n return ".var_export($fields,true)."\n ?>";
file_put_contents('phpwc.php',$string);
}
?>
phpwc.php
<?php
return array (
0 => 'id',
'_auto' => 'id',
'_pk' => 'id',
1 => 'name',
2 => 'price',
3 => 'img',
)
?>
SESSION
form.html
<form action="check.php" method="post">
<input type="text" name="username" />
<input type="password" name="password" />
<input type="submit" value="登陆" />
</form>
check.php
<?php
session_start();
$username=$_POST['username'];
$password=md5(trim($_POST['password']));
$conn=mysql_connect('localhost','root','phphaha');
if(mysql_errno()){
exit(mysql_error());
}
mysql_set_charset('utf8');
mysql_select_db('phpemo');
$sql="select id,username from 3ser where username='{$username}' and password='{$password}'";
$result=mysql_query($sql);
if($result&&mysql_affected_rows()){
$row=mysql_fetch_assoc($result);
$_SESSION['username']=$row['username'];
$_SESSION['id']=$row['id'];
echo '登陆成功<a href="center.php">用户中心</a>';
}else{
echo '用户名或密码错误';
}
mysql_close($conn);
?>
center.php
<?php
session_start();
if(empty($_SESSION['username'])){
exit('你没有登陆');
}
echo '欢迎访问用户中心'.$_SESSION['username'].'<a href="xg.php">修改密码</a>';
?>
logout.php
<?php
session_start();
$_SESSION['username']=null;
session_destroy();
?>
changepaww.php
<?php
session_start();
if(empty($_SESSION['username'])){
exit('用户你没有登陆');
}
echo '欢迎进入修改密码页'.$_SESSION['username'].'<a href="logout.php">退出</a>';
?>