长沙发上的对话(三)
市场游戏
现在你已经知道了基本的东西,再来点复杂的吧,演示一个现实生活中的session 应用。让我们假设一下,你有一个金融门户,它允许它的用户选择四支股票,然后显示每支股票的当前市场价格,并且在每一页上显示用户在这个站点上的过程。
在下面的例子中,我们假定用户已经被验证过身份并且登录到站点上来了。我们使用了MySQL 数据库,里面有一个名为user_info的表,用于存储用户的四支股票和唯一用户名。一旦一个session被初始化了,我们注册变量保存用户名和四支股票,然后同数据库进行连接,取回值并显示在页面上。
代码如下:
$#@60;?php
//初始化一个session session_start();
//注册session变量
//用户名
session_register(username);
//选择的股票变量
session_register(stock1);
session_register(stock2);
session_register(stock3);
session_register(stock4);
//连接MySQL
$db = mysql_connect("someserver.com", "tom", "jones");
//选择数据库
mysql_select_db("stock_db", $db);
//使用SQL查询数据库
$query = "select stock_pref1,stock_pref2,stock_pref3,stock_pref4
from user_info where username=$username";
$result = mysql_query($query,$db);
//从数据库中取股票代码,并赋值给session变量
list($stock1,$stock2,$stock3,$stock4) = mysql_fetch_row($result);
echo "Hi $username!$#@60;br$#@62;";
echo "Your selected stocks are:$#@60;br$#@62;";
echo "$stock1$#@60;br$#@62;";
echo "$stock2$#@60;br$#@62;";
echo "$stock3$#@60;br$#@62;";
echo "$stock4$#@60;br$#@62;";
// code to generate rest of page
?$#@62;
PHP4有许多与session相关的函数 -- 大部分都不需要解释,把他们列在下面。
session_destroy(): 释放所有的session数据(当一个用户从一个站点注销时非常有用,你需要释放掉在他访问期间的所创建的所有变量)。
session_name():设置或读取当前session的名字。
session_id():设置或读取当前session的id值。
session_unregister(session_variable_name):从一个特别的session注销一个变量。
session_is_registered():检查是否一个session变量已经注册了。
例如:
$#@60;?php
session_start();
if(session_is_registered(username))
{
echo "A session variable by the name "username"
already exists";
}
else
{
echo "No variable named "username" registered yet.
Registering...";
session_register(username);
}
?$#@62;
session_encode() and session_decode():将session数据编码成字符串或将字符串解码成session数据。
在这里你可能使用他们:
$#@60;?php
session_start();
session_register(someString);
$someString="I hate cats!";
//将所有的session变量编成一个字符串
$sessStr = session_encode();
//可以在这里看到
echo $sessStr;
echo "$#@60;br$#@62;$#@60;br$#@62;";
//在出现cats的地方用dogs进行替换
$sessStr = ereg_replace("cats","dogs",$sessStr);
//解码后更新了session变量
session_decode($sessStr);
//再显示一次$sessstr
echo $someString;
?$#@62;
最后,在开始PHPLIB之前,有一个技术性问题你应该知道的 -- 上面所有的例子都使用了cookies在客户端来保存session id值。但是如果用户的浏览器被设成拒绝cookies会怎么样呢?
如果发生这种情况,那就需要将一个session id通过嵌在url中从一页传递到另一页上去。例如: $#@60;a href="http://www.someserver.com/admin/preferences.php3?PHPSESSID=$#@60;? echo "$PHPSESSID"; ?$#@62;"$#@62;Edit Your Portfolio! $#@60;/a$#@62;
这个就可以保证在后面的页面中session变量是有效的。

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

Zend Studio 13.0.1
Powerful PHP integrated development environment

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

SublimeText3 Chinese version
Chinese version, very easy to use

Atom editor mac version download
The most popular open source editor
