PHP实现自动登陆的思路分析

经常在做网站的时候需要用到一周内免登陆,一个月内免登陆这种需求。要实现只能通过cookie来实现了。那具体的实现过程是怎样的呢?

1.首先在用户第一次登陆的时候,如果勾选了一周内免登陆,则在登陆操作完成之后,存储一个自动登录的cookie,这个cookie可以是“$value是用户的”id”加一个”随机码”组成的字符串加密处理后的数据”这个随机码是存放在数据库里的用户表里面,作为用户下次自动登陆时验证。也可以是更加高端的数据,大家尽情发挥。

Read More

php记住密码自动登录

当我们登录网站管理后台的时候,会有提示说记住登录状态,记住我等这样的提示,这个选项有什么用呢?如果选中了记登录状态后,下次在浏览这个网站后台时就不用在填写用户名和密码了,在去登录了。下面写了一小代码,简单说明一下,自动登录的思想。方法不止一个,下面说一下我的想法。

一,用户登录的check

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//检查用户是否登录  
function checklogin()
{
if (empty($_SESSION['user_info'])) {
//检查一下session是不是为空
if (empty($_COOKIE['username']) || empty($_COOKIE['password'])) {
//如果session为空,并且用户没有选择记录登录状
header('location:login.php?req_url=' . $_SERVER['REQUEST_URI']);
} else {
//用户选择了记住登录状态
$user = getUserInfo($_COOKIE['username'], $_COOKIE['password']);
//去取用户的个人资料
if (empty($user)) {
//用户名密码不对没到取到信息,转到登录页面
header('location:login.php?req_url=' . $_SERVER['REQUEST_URI']);
} else {
$_SESSION['user_info'] = $user;
}
}
}
}

在访问后台的每个页面时,都要先进行上面的检查

Read More

CI使用注意事项

开启session

session_start();放在require_once BASEPATH.'core/CodeIgniter.php';之前。

index是CI保留字,不能作为控制器类名。

控制器的方法名不能和类名相同

1
2
3
4
5
6
7
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');  

class Login extends CI_Controller {
public function login() {
echo 'succ';//无法输出此行,显示404 Page Not Found
}
}

Read More

php ob_flush() flush() 函数不起作用的原因

1
2
3
4
5
6
7
8
9
<?php  
for($i = 1; $i <= 300; $i++) print(" ");
// 这一句话非常关键,cache的结构使得它的内容只有达到一定的大小才能从浏览器里,输出针对ie // 换言之,如果cache的内容不达到一定的大小,它是不会在程序执行完毕前输出的。经 过测试,我发现这个大小的底限是256个字符长。这意味着cache以后接收的内容都会源源不断的被发送出去。
for($j = 1; $j <= 5; $j++) {
echo $j . "<br>";
//ob_flush();
flush(); //这一部会使cache新增的内容被挤出去,显示到浏览器上
sleep(1); //让程序"睡"一秒钟,会让你把效果看得更清楚
}

我估计大家观察到的现象会各有不同,有的人是等待了5秒,一下输出了 5 个数字,有的人是每隔一秒输出一个数字。

Read More

利用Ajax实现长连接(模拟推送,半长连接)

很多程序都可以通过socket来实现长连接,实现消息的即时推送。但由于http请求一般都是短连接,一次请求结束,就会断开与服务器的连接,服务器不能主动推送数据到客户端,而只能由客户端发起请求,但有些时候,需要在web上实现即时的消息传输,比如即时聊天、股票动态信息等。
在Ajax技术被发掘以前,在网页上实现无刷新的即时聊天,似乎是很困难的事情,但由于Ajax技术的兴起,人们可以进一步来挖掘它的潜力了,象gmail、google gtalk的网页版,都是Ajax长连接的重要应用,目前很多网站可能都已经在使用长连接技术了,比如SNS网站的即时聊天。

1.Ajax短连接方式实现网页聊天

自己画了一个模型图:

Read More