导航:首页 > 编程语言 > php登录验证session

php登录验证session

发布时间:2024-11-24 13:01:38

php中使用session防止用户非法登录后台的方法

本文实例讲述了php中使用session防止用户非法登录后台的方法。分享给大家供大家参考。具体如下:
一般来说,我们登录网站后台时,服务器会把登录信息保存到session文件里,并通过读取session文件来判断是否可以进行后台操作。
以下面为例,假如admin.php是我们的后台操作页面,如果没有启用
session,那么,即便是没有登录,用户照样能访问到该页面,这时候,就需要用到
session
来防止用户非法登录到这个页面了。下面是三个文件的代码
登录页面:login.php
复制代码
代码如下:<h2>用户登录页面</h2>
<form
action="loginProcess.php"
method="post">
用户名:<input
type="text"
name="username"><br
/>
密 码:<input
type="password"
name="pwd"><br
/>
<input
type="submit"
name="sub"
value="登录后台">
</form>
<?php
if(!empty($_GET['errno'])){
if($_GET['errno']==1){

echo
"用户名或密码错误";
}else
if($_GET['errno']==2){

echo
"请输入用户名密码";
}else
if($_GET['errno']==3){

echo
"非法访问,请输入用户名和密码";
}
}
?>
登录信息处理页面:loginProcess.php
复制代码
代码如下:<?php
//这里主要讲session,关于登录信息验证,就不涉及到数据库了
//接收登录信息,保存session
if(!empty($_POST['sub'])){
if($_POST['username']=="admin"
&&
$_POST['pwd']=="admin"){

echo
"登录成功";

session_start();//开启session

$_SESSION['username']
=
$_POST['username'];//将登录名保存到session中

header("Location:
admin.php");

exit();
}else{

header("Location:
login.php?errno=1");

exit();
}
}else{
header("Location:
login.php?errno=2");
exit();
}
?>
后台文件:admin.php
复制代码
代码如下:<?php
session_start();
if(empty($_SESSION['username'])){
header("Location:
login.php?errno=3");
exit();
}
echo
"你是管理员,你现在拥有后台管理权限";
?>
希望本文所述对大家的php程序设计有所帮助。

② PHP会话验证问题,怎么解决

会话控制的思想就是指能够在网站中根据一个会话跟踪用户。这里整理了详细的代码,有需要的小伙伴可以参考下。

概述

http 协议是无状态的,对于每个请求,服务端无法区分用户。PHP 会话控制就是给了用户一把钥匙(一个加密session字符串),同时这也是用户身份的一个证明,服务端存放了这把钥匙能打开的箱子(数据库,内存数据库或者使用文件做的),箱子里面装的就是用户的各个变量信息。

传统的php session 使用

<?php
//page1.php 启动一个会话并注册一个变量
session_start();
$_SESSION['user_var'] = "hello,codekissyoung!";
//这里的可以将$_SESSION理解为用户的箱子,实际的实现是php在服务器端生成的小文件
?>
<?php
//page2.php
session_start();
echo $_SESSION['user_var'];//通过钥匙访问自己的箱子内的变量
$_SESSION['user_var'] = "bey,codekissyoung!";
?>
<?php
//page3.php 销毁钥匙,一般在用户注销时,访问page3.php文件
session_start();
session_destroy();
?>

提一个问题,钥匙呢?没看见给用户钥匙的操作啊?

这个操作是php背后帮我们做了的,自从你访问page1.php 程序运行,session_start();这句时,php 会根据此刻的一些条件(用户ip,浏览器号,时间等)生成一个PHPSESSID变量,http response 回客户端后,这个PHPSESSID就已经存在你的浏览器cookie里了,每次你再次访问这个域名时,该PHPSESSID都会发送到服务端。这个PHPSESSID 就是我这里说的用户钥匙了。

再一个问题,这个PHPSESSID的安全性,它是否容易被窃取,是否容易被伪造,是否容易被篡改?

使用 Https 可以防止被篡改。不使用PHPSESSID,而是自己生成一把秘钥给用户可以防止被伪造。至于是否容易被窃取,还真没怎么研究过。比如如果你电脑连着网,黑客入侵你电脑。

将生成的秘钥存入浏览器cookie中

③ php登录验证问题session

你可以在数据库中创建一个session表,里面存放已登录用户的
用户名、登陆IP、随机码
重要提示:用户每成功登陆一次,那么就更新IP和随机码,随机码会存在$_SESSION['code']里
假设A在机器01上登陆过,那么seesion表存 A、127.0.0.1、123456
情况(1):
1、当A在另外一个机器02从登陆页面登陆,那么按“重要提示”的操作方法,session的数据会被更新成 A、127.0.0.2、456789.
2、然后A在第一台机器01上刷新网页,程序发现数据库中A最新的登陆IP有变动,那么在机器01上将A踢下线。
情况(2):
1、A在同一机器上的另外一个浏览器从登陆页面登陆,那么按“重要提示”的操作方法,session的数据会被更新成 A、127.0.0.1、987545.
2、然后A在第一台机器01上的第一个浏览器刷新网页,程序发现该浏览器与服务器的SESSION中保存的$_SESSION['code']与数据库中A最新的登陆随机码不同,那么在第一个浏览器上将A踢下线。

补充一点:同一台机器上所有利用IE内核的浏览器,其实session是通用的,不管你用纯正的IE、还是各大浏览器的兼容模式,或者是IETester的各个浏览器版本

④ php网站验证登录后怎么跳向用户管理页面

PHP登陆后跳转到用户管理页面,利用$_SERVER全局变量可以实现这个功能。
具体实现方法为:在提示用户登录的同时,在session或者cookie中记录下请求页面的URL;登录验证成功后在跳转回该URL。
1、checklogin.php代码:
session_start();
if (!isset ($_SESSION['login_ok']))
{
echo "<script language=javascript>alert ('要访问的页面需要先登录。');</script>";
$_SESSION['userurl'] = $_SERVER['REQUEST_URI'];
echo '<script language=javascript>window.location.href="login.php"</script>';
}
2、login.php代码
session_start();

//此处省略了账号密码验证代码,验证OK再执行下面代码

if (isset ($_SESSION['userurl']))
{
//会话中有要跳转的页面
$url = $_SESSION['userurl'];
}
else
{
//没有要跳转的页面,则转到首页
$url = "userManager.php";
}
//0.5s后跳转
echo "<meta http-equiv=\"refresh\" content=\"0.5;url=$url\">";

阅读全文

与php登录验证session相关的资料

热点内容
python修改文件夹名称 浏览:65
奇幻咔咔app怎么用 浏览:153
单片机atm 浏览:336
青岛福莱软件加密锁挂失 浏览:817
如何搭载一台局域网服务器 浏览:517
r2如何设置共享文件夹 浏览:514
鹏程万里加密播放器怎么录屏 浏览:110
安卓拍照的时候怎么打开闪光灯 浏览:861
学了python做了少儿编程讲师 浏览:677
画论pdf 浏览:946
清洁鼻子解压 浏览:233
pdf去签名 浏览:283
php正则表达式链接 浏览:577
linux找到文件命令 浏览:962
安卓机忘记设置密码怎么办 浏览:86
下载未解压文件 浏览:871
方舟占领服务器有什么用 浏览:540
linux复制隐藏文件 浏览:993
清硬盘命令 浏览:860
战地五私人服务器怎么设置 浏览:597