扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
thinkphp中通过操作cookie来保存用户登录信息到本地。
目前累计服务客户近1000家,积累了丰富的产品开发及服务经验。以网站设计水平和技术实力,树立企业形象,为客户提供成都网站设计、成都网站制作、网站策划、网页设计、网络营销、VI设计、网站改版、漏洞修补等服务。创新互联始终以务实、诚信为根本,不断创新和提高建站品质,通过对领先技术的掌握、对创意设计的研究、对客户形象的视觉传递、对应用系统的结合,为客户提供更好的一站式互联网解决方案,携手广大客户,共同发展进步。
cookie方法是ThinkPHP内置的函数,用于完成cookie的设置、获取和删除操作。
设置cookie:
cookie('name','value'); //设置cookie
cookie('name','value',3600); // 指定cookie保存时间为1小时
高级设置:
cookie('name','value',array('expire'=3600,'prefix'='think_')); // 指定有效期和前缀
// 下面的代码和上面等效
cookie('name','value','expire=3600prefix=think_')
获取cookie:
$value = cookie('name');
头部加上超时控制,但对于很多服务器无效,因为服务器输出超时很多在服务器控制,所以建议用cmd脚本方式运行此程序:
?php
set_time_limit(0); //禁用脚本超时
// Create the socket and connect
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$connection = socket_connect($socket,'116。236。128。220', 14580);
// Write some test data to our socket
if(!socket_write($socket, "user NoCall pass -1 vers test 1.0 filter b/B* \r\n"))
{
echo("pWrite failed/p");
}
if(!file_exists('socket_log.html')){
file_put_contents('socket_log.html', 'script
var xx = setInterval(function(){ //每5秒刷新一次页面
window.location.reload();
}, 5000);
/script');
}
// Read any response from the socket
while($buffer = socket_read($socket, 64, PHP_NORMAL_READ))
{
echo json_encode($buffer); //转换为json数据输出
//记入文件
file_put_contents('socket_log.html', json_encode($buffer), FILE_APPEND);
}
echo("pDone Reading from Socket/p");
使用方法:用命令行方式运行此脚本
php script.php
脚本会一直运行到接收数据结束,并持续将收到的数据写入socket_log.html文件。
在浏览器打开socket_log.html页面,此页面会自动每5秒刷新一次,来显示最新的数据。
确保程序有权限创建及写入socket_log.html文件
1、将php安装目录下的php_mysql.dll和MySQL安装目录下的libmysql.dll文件拷贝至c:/windows/system32中;
2、配置php.ini
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
把上面四个。dll的最前面的;去掉
二、php表单提交至数据库的实现过程
1、login.php页面
SPAN style="FONT-SIZE: 14px"html
FORM method=post action=add.php
Name: INPUT name=usernameBR
Email: INPUT name=emailBR
INPUT value=提交 type=submit name=submit
/FORM
/SPAN
2、add.php页面
SPAN style="FONT-SIZE: 14px"?php
include("conn.php");
?
?php
if(isset($_POST["submit"]))
{
$sql = "insert into users(username, email) values('$_POST[username]', '$_POST[email]')";
mysqli_query($conn, $sql);
echo "添加成功";
}
?/SPAN
3、conn.php页面
SPAN style="FONT-SIZE: 14px"?php
$conn = new mysqli("localhost", "root", "159357");
$conn-select_db("db_test");
//mysql_query("set name 'gb2312'");
$conn-set_charset("utf8");
?/SPAN
首先可以采用的是Jquery的Ajax技术进行操作。
思路是这样的,首先现在前端判断JS并提交给后台,代码如下:
$(function(){
$.ajax({
type:post,
dataType:json,
url: save.php,
data:$("input[name=x]").val(),
success:function(data){
}
});
});
这样后端接收到Ajax请求后进行连接数据库并且插入数据
其它操作类似进行操作即可。
客户端数据存储机制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.ini
中设置的
SESSION
保存方式是
files(session.save_handler
=
files),即使用读写文件的方式保存
SESSION
数据,而
SESSION
文件保存的目录由
session.save_path
指定,文件名以
sess_
为前缀,后跟
SESSION
ID,如:sess_c72665af28a8b14c0fe11afe3b59b51b。文件中的数据即是序列化之后的
SESSION
数据了。
如果访问量大,可能产生的
SESSION
文件会比较多,这时可以设置分级目录进行
SESSION
文件的保存,效率会提高很多,设置方法
为:session.save_path="N;/save_path",N
为分级的级数,save_path
为开始目录。
当写入
SESSION
数据的时候,PHP
会获取到客户端的
SESSION_ID,然后根据这个
SESSION
ID
到指定的
SESSION
文件保存目录中找到相应的
SESSION
文件,不存在则创建之,最后将数据序列化之后写入文件。读取
SESSION
数据是也是类似的操作流程,对读出来的数据需要进行解序列化,生成相应的
SESSION
变量。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流