很多站长朋友们都不太清楚php怎么免密登录,今天小编就来给大家整理php怎么免密登录,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 如何在超链接中加入网站账户密码信息以可以免密码直接登录,而且别人也可以免密码登陆,像图片中的 2、 我写了一个php的网站后台,用来简单的更改数据库的内容,现在想给这些后台文件加一个登录密码,避免访 3、 typecho免密码登陆怎么实现呢? 4、 phpcookie怎么做一个免登陆 5、 易信的免密登录是怎样的? 如何在超链接中加入网站账户密码信息以可以免密码直接登录,而且别人也可以免密码登陆,像图片中的你好,以前的sid网站就可以,比如asp网页后面有串sid加密字符。把网址和他复制起来,然后加入超链接就可以直接使用此帐号登录了。
但现在网页都是php,甚至有些都是伪静态的。安全措施很强,根本做不到这点!希望可以帮到你。
我写了一个php的网站后台,用来简单的更改数据库的内容,现在想给这些后台文件加一个登录密码,避免访在首页加个登录链接,链接地址为,1.php,或者把登录页面作为首页,加入权限控制
typecho免密码登陆怎么实现呢?没用过typecho,不过一般免密登录的原理是:
用户第一次访问网站登录后,生成session,关闭后session失效,再打开浏览器还是会需要登录,想避免这种情况的发生你需要把用户的账号和加密后密码放到cookie里,时间设置成用户选择的天数或者给一个默认的,当用户关闭浏览器后cookie还是存在的,再次打开后去获取cookie里面的用户名和加密后的密码,通过PHP把密码解密,再一次去数据库里验证,成功就再次生成session,这样就默认是登录的了,失败验证失败就是未登录状态。
phpcms里有个经典的加密函数(也可以解密)
/**
* 字符串加密、解密函数
*
* @param string $txt 字符串
* @param string $operation ENCODE为加密,DECODE为解密,可选参数,默认为ENCODE,
* @param string $key 密钥:数字、字母、下划线
* @param string $expiry 过期时间
* @return string
*/
function sys_auth($string, $operation = 'ENCODE', $key = '', $expiry = 0) {
$ckey_length = 4;
$key = md5($key != '' ? $key : C('COOKIE_AUTH_KEY'));
$keya = md5(substr($key, 0, 16));
$keyb = md5(substr($key, 16, 16));
$keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';
$cryptkey = $keya.md5($keya.$keyc);
$key_length = strlen($cryptkey);
$string = $operation == 'DECODE' ? base64_decode(strtr(substr($string, $ckey_length), '-_', '+/')) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
$string_length = strlen($string);
$result = '';
$box = range(0, 255);
$rndkey = array();
for($i = 0; $i <= 255; $i++) {
$rndkey[$i] = ord($cryptkey[$i % $key_length]);
}
for($j = $i = 0; $i < 256; $i++) {
$j = ($j + $box[$i] + $rndkey[$i]) % 256;
$tmp = $box[$i];
$box[$i] = $box[$j];
$box[$j] = $tmp;
}
for($a = $j = $i = 0; $i < $string_length; $i++) {
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;
$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $tmp;
$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
}
if($operation == 'DECODE') {
if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
return substr($result, 26);
}else{
return '';
}
}else{
return $keyc.rtrim(strtr(base64_encode($result), '+/', '-_'), '=');
}
}
phpcookie怎么做一个免登陆其实你说的是7天(或者30天)免登录吧?这个的整个过程就是用户在登录的时候,如果选择了记住密码或者一周内免登录等这个选项的时候,则在用户成功登录操作完成之后,存储一个实现自动登录的cookie的数据到数据库的用户表里面,作为下次自动登录时验证用。验证通过则自动登录,否则需要输入用户名,密码进行登录。保存的这个cookie值则可以取一个随机码。具体示例代码如下:
$username=trim($_POST['username']);
$password=md5(trim($_POST['password']));
$ref_url=$_GET['req_url'];
$remember=$_POST['remember'];//是否自动登录标示
$err_msg='';
if($username==''||$password==''){
$err_msg="用户名和密码都不能为空";
}else{
$row=getUserInfo($username,$password);
if(empty($row)){
$err_msg="用户名和密码都不正确";
}else{
$_SESSION['user_info']=$row;
if(!empty($remember)){//如果用户选择了,记录登录状态就把用户名和加了密的密码放到cookie里面
setcookie("username",$username,time()+3600*24*365);
setcookie("password",$password,time()+3600*24*365);
}
if(strpos($ref_url,"login.php")===false){
header("location:".$ref_url);
}else{
header("location:main_user.php");
}
}
}
另外在访问网站的每个页面时,都要先进行一遍如下函数的检查。代码如下:
//检查用户是否登录
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']);//转到登录页面,记录请求的url,登录后跳转过去,用户体验好。
}else{//用户选择了记住登录状态
$user=getUserInfo($_COOKIE['username'],$_COOKIE['password']);//去取用户的个人资料
if(empty($user)){//用户名密码不对没到取到信息,转到登录页面
header("location:login.php?req_url=".$_SERVER['REQUEST_URI']);
}else{
$_SESSION['user_info']=$user;//用户名和密码对了,把用户的个人资料放到session里面
}
}
}
}
希望对你有所帮助,望采纳!
易信的免密登录是怎样的?您好,易信的免密登录是指在数据网络状态下,用户无需输入手机号和密码直接免密一键登录,回答仅供参考,更多安徽电信套餐,业务资讯可以关注安徽电信公众号。
关于php怎么免密登录的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php怎么免密登录 php七天免登录的详细内容...