客户端数据存储机制cookie
公司主营业务:做网站、成都做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出大名免费做网站回馈大家。
在实际的Web应用中经常需要在客户端存储一些客户信息 一方面是为了改善用户体验(如存储访问密码 历史表单信息) 另一方面有效地减轻了服务器数据读取压力 访问者在第一次访问页面时设置cookie变量是存储在客户端计算机中 当下次浏览器请求某个页面时 就可以读取cookie中存储的值 从而实现客户端数据存取
下面将通过一个例子展示一个客户端数据存储的实际应用 执行流程如下
( )创建一个存储访问者名字的cookie;
( )当访问者首次访问网站时 访问者会被要求填写姓名信息 该姓名信息会存储于cookie中
( )当访问者再次访问网站时浏览器会显示欢迎词信息
在JavaScript创建cookie
创建一个可在cookie变量中存储访问者姓名的函数 代码如下
function setCookie(c_name value expiredays)
{
var exdate=new Date() //实例化日期变量
exdate setDate(exdate getDate()+expiredays) //设置日期变量
document cookie=c_name+ = +escape(value)+
((expiredays==null) ? : ;expires= +exdate toGMTString())
}
【代码解读】
setCookie()函数的功能是设置cookie的名称 值及失效时间 首先将获取当前的日期转换为有效的日期 然后设置cookie名称 值及失效时间 并将该值存入document cookie对象
从JavaScript取回cookie的值
从JavaScript取回cookie的值 创建读取客户端cookie值的函数 同时判断当前cookie的状态 代码如下
function getCookie(c_name)
{
if (document cookie length ) //判断当前cookie是否为空
{
c_start=document cookie indexOf(c_name + = )
if (c_start!= )
{
c_startc_start=c_start + c_name length+
c_end=document cookie indexOf( ; c_start)
if (c_end== ) c_end=document cookie length
return unescape(document cookie substring(c_start c_end))
//返回客户端cookie的值
}
}
return
}
【代码解读】
getCookie()函数首先会判断document cookie对象中是否存有cookie 如果document cookie对象存有某些cookie值 那么会继续检查指定的cookie是否已储存 如果满足判断条件就返回cookie存储值 否则返回空字符串
JavaScript流程控制
当完成了cookie的创建和读取之后 需要创建一个流程控制函数 这个函数的作用是 如果cookie已设置 则显示欢迎词 否则显示提示框要求用户输入名字
function checkCookie() {
username=getCookie( username ) //获得cookie中的用户名变量
if (username != null username != ) {
alert( Wele again +username+ ! ) //弹出欢迎信息
} else {
username=prompt( Please enter your name: )
if (username != null username != ) {
setCookie( username username ) //设置cookie
}
}
}
客户端数据存储示例的完整代码如下
lishixinzhi/Article/program/PHP/201311/21526
//第一种
?php
$conn = mysql_connect("主机名","用户名","密码");
mysql_select_db("数据库名",$conn);
$sql = "select * from user";
$result = mysql_query($sql);
$data="";
while($row = mysql_fetch_row($result)){
foreach($row as $v){
$data .=$v."|"; //加个树线隔开字段
}
nl2br($data); //读完一行回车
}
file_put_contents("abc.txt",$data);
//第二种
?php
$filename = "abc.txt";
$res = fopen($filename,"r");
while(!feof($res)){
$buffer = fgets($res);
$buffer = str_replace(' ', '|', $buffer);
$array = explode('|', $buffer);
foreach($array as $v){
if(strlen($v)0){
$arr[] = $v;
}
}
}
fclose($res);
//组装数组插入数据库就可以了
可以的。
先用serialize序列化数组,再存入COOKIE,读出来时用unserialize得到原来的数组
代码:
//存入
$arr = array(1,2,3);
$arr_str = serialize($arr);
setcookie("a",$arr_str);
//取出
$arr_str = $_COOKIE['a'];
$arr = unserialize($arr_str);
2. 设定多键值cookie,注意必须给键值
$arr = array(1,2,3);
setcookie("a[0]", $arr[0]);
setcookie("a[1]", $arr[1]);
setcookie("a[2]", $arr[2]); 结果:数组所有元素都存到了。
数组长度 :3
Array ( [0] = 1 [1] = 2 [2] = 3 )
PHP有自带的高性能函数 var_export
conn.php
?php
$dbconfig = array (
'host'='127.0.0.1',
'name'='root',
'password'='123456',
?
b.php
?php
// 读取配置
include 'conn.php';
echo $dbconfig['host'];
// 修改配置
$dbconfig['host'] = 'xxx.xxx.xxx.xxx';
file_put_contents('conn.php', "?php\n$dbconfig = " . var_export($dbconfig) . "\n?");
// 再读取配置
include 'conn.php';
echo $dbconfig['host'];
?
参考连接: