触摸艺术和时尚的音弦 ---- happydog's art secret garden ~~~

PHP笔记五

上一篇 / 下一篇  2008-04-07 19:13:56

php 的 cookie & session

 由于html是stateless的,网站运用cookie和Database来记录用户信息。

cookie

 setcookie.php 
 <?
setcookie('test', '', time()-86400, "/");
  ?>

  setcookie()必须是在给浏览器发任何其他内容之前,否则会出现"Can't send additional information, header already sent"的错误

 显示是 $_COOKIE

 displaycookie.php
 <?php
foreach ($_COOKIE as $cookie_name => $cookie_value) {
 print "$cookie_name = $cookie_value<br>";
 }
 ?>

  在setcookie的时候,cookie被用户浏览器接收,但是用户只能在下一个HTTP request的时候才可以extract这个value。
 
 删除cookie就是设定expire时间为过去时间即可


php 三种变量
 local variable   {} 里面的生命域
 global variable  脚本运行全过程中都有效
 session variable  除非显式删除,否则一直存留内存中。

 如何能够保持用户信息而又不常常设定多个cookie和调用数据库呢? 就是用session
 session就是一个保存所有变量和值的东西
 没有session对象有一个标识字符串,比如227594c63a0faca01a423d7a28b1f5b0
 session初始化的时候这个值做为cookie发给用户浏览器,做为$_COOKIE[PHPSESSID],而在服务器端用这个标识字符串会建立一个文件保存所有信息。
 用户端访问 $_SESSION[..]的时候,php 引擎得到$_COOKIE[PHPSESSID],通过它找到保存的文件,寻找具体的变量值。

 <?php
session_start();
session_register('visits');
$_SESSION['visits']++;
print 'You have visited here '.$_SESSION['visits'].' times.';
?>

 开始session, 然后注册session变量。

 session1.php

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<TITLE>My Display Preferences</TITLE>
<style. type="text/css">
BODY, P, A {font-family:<? echo "$_SESSION[font_family]"; ?>;font-size:<? echo
"$_SESSION[font_size]"; ?>pt;font-weight:normal;}
H1 {font-family:<? echo "$_SESSION[font_family]"; ?>;font-size:<? echo $_SESSION[font_size] + 4; ?>pt;font-weight:normal;}
</style>
</HEAD>
<BODY>
<H1>Set Your Display Preferences</h1>
<FORM. METHOD="POST" ACTION="session2.php">
<P>Pick a Font Family:<br>
<input type="radio" name="sel_font_family" value="serif" checked> serif
<input type="radio" name="sel_font_family" value="sans-serif"> sans-serif
<input type="radio" name="sel_font_family" value="Courier"> Courier
<input type="radio" name="sel_font_family" value="Wingdings"> Wingdings
<P>Pick a Font Size:<br>
<input type="radio" name="sel_font_size" value="8" checked> 8pt
<input type="radio" name="sel_font_size" value="10"> 10pt
<input type="radio" name="sel_font_size" value="12"> 12pt
<input type="radio" name="sel_font_size" value="14"> 14pt

<P><input type="submit" name="submit" value="Set Display Preferences"></p>
</FORM>
</BODY>
</HTML>

 Notes: 设置session变量

 session2.php
 
 <?php
session_start();
//查看session变量,或使用默认值
if (($_POST[sel_font_family]) || ($_POST[sel_font_size])) {
             $font_family = $_POST[sel_font_family];
             $font_size = $_POST[sel_font_size];
             $_SESSION[font_family] = $font_family;
             $_SESSION[font_size] = $font_size;
} else if (((!$_POST[sel_font_family]) && (!$_POST[sel_font_size])) &&
(($_SESSION[font_family]) && ($_SESSION[font_size]))) {
             $font_family = $_SESSION[font_family];
             $font_size = $_SESSION[font_size];
             $_SESSION[font_family] = $font_family;
             $_SESSION[font_size] = $font_size;
} else {
             $font_family = "sans-serif";
             $font_size = "10";
             $_SESSION[font_family] = $font_family;
             $_SESSION[font_size] = $font_size;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<TITLE>My Display Preferences</TITLE>
<style. type="text/css">
BODY, P, A (font-family:<? echo "$_SESSION[font_family]"; ?>;font-size:<? echo
"$_SESSION[font_size]"; ?>pt;font-weight:normal;}
H1 {font-family:<? echo "$_SESSION[font_family]"; ?>;font-size:<? echo $_SESSION[font_size] + 4; ?>pt;font-weight:normal;}
</style>
</HEAD>
<BODY>
<H1>Your Preferences Have Been Set</h1>
<P>As you can see, your selected font family is <strong><? echo
"$_SESSION[font_family]"; ?></strong> and your font size is <strong><? echo
"$_SESSION[font_size]"; ?></strong>.</p>
<P>Please feel free to <a href="session1.php">change your preferences</a>
again.</p>
</BODY>
</HTML>

 Notes: 显示效果


TAG:

 

評分:0

我來說兩句

顯示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar