PHP基础 COOKIE & SESSION 第29天

2012-11-15 15:54:46 0  category: 第二阶段php

   会话控制

   

   Cookie来进行会话控制。让用户身上带个标示牌,走到哪个页面,哪个页面去认用户带的标示牌,就知道用户是谁了。

   

   Setcookie来设置cookie信息  

   Setcookie(名字,,有效期,路径,域名)

   

   有效期是在未来什么时间过期,是传一个未来的unix时间戳

   路径,在哪个目录下有效,如果需要在整个站点下有效,就写上/

   域名,在哪个域名下准许访问

   安全设置,默认为false 是指是否启用安全套接字层。https协议,启用了https协议就将这一项值改为true

   

   注意:

   不要在cookie前放任何输出,因为是通过header头告诉浏览器,浏览器来进行操作的生成cookie文件,所以说,不能在前加上空格,空车等任意输出字符。

   

   SESSION

   是在用户本地保存一个编号,在服务器端也有一个对应的编号。用户访问对应页面的时候,信息是存在服务器端的session文件当中。文件直接去找,session控制器要用户的相信。

   禁掉COOKIE后无法使用session,我们可以采用urlSESSION  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>';
?>