php session应用实例 登录验证

代码如下:

<html>
<head>
<title>Login</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
<form name="form1" method="post" action="login.php">
<table width="300" border="0" align="center" cellpadding="2" cellspacing="2">
<tr>
<td width="150"><div align="right">用户名:</div></td>
<td width="150"><input type="text" name="username"></td>
</tr>
<tr>
<td><div align="right">密码:</div></td>
<td><input type="password" name="passcode"></td>
</tr>
<tr>
<td><div align="right">Cookie保存时间:</div></td>
<td><select name="cookie" id="cookie">
<option value="0" selected>浏览器进程</option>
<option value="1">保存1天</option>
<option value="2">保存30天</option>
<option value="3">保存365天</option>
</select></td>
</tr>
</table>
<p align="center">
<input type="submit" name="Submit" value="Submit">
<input type="reset" name="Reset" value="Reset">
</p>
</form>
</body>
</html>

代码如下:

<?php
@mysql_connect("localhost", "root","1981427") //选择数据库之前需要先连接数据库服务器
or die("数据库服务器连接失败");
@mysql_select_db("test") //选择数据库mydb
or die("数据库不存在或不可用");
//获取用户输入
$username = $_POST['username'];
$passcode = $_POST['passcode'];
//执行SQL语句获得Session的值
$query = @mysql_query("select username, userflag from users "
."where username = '$username' and passcode = '$passcode'")
or die("SQL语句执行失败");
//判断用户是否存在,密码是否正确
if($row = mysql_fetch_array($query))
{
session_start(); //标志Session的开始
//判断用户的权限信息是否有效,如果为1或0则说明有效
if($row['userflag'] == 1 or $row['userflag'] == 0)
{
$_SESSION['username'] = $row['username'];
$_SESSION['userflag'] = $row['userflag'];
echo "<a href="main.php" href="main.php">欢迎登录,点击此处进入欢迎界面</a>";
}
else //如果权限信息无效输出错误信息
{
echo "用户权限信息不正确";
}
}
else //如果用户名和密码不正确,则输出错误
{
echo "用户名或密码错误";
}
?>

代码如下:

<?php
unset($_SESSION['username']);
unset($_SESSION['passcode']);
unset($_SESSION['userflag']);
echo "注销成功";
?>

代码如下:

<?php
session_start();
if(isset($_SESSION['username']))
{
@mysql_connect("localhost", "root","1981427") //选择数据库之前需要先连接数据库服务器
or die("数据库服务器连接失败");
@mysql_select_db("test") //选择数据库mydb
or die("数据库不存在或不可用");
//获取Session
$username = $_SESSION['username'];
//执行SQL语句获得userflag的值
$query = @mysql_query("select userflag from users "
."where username = '$username'")
or die("SQL语句执行失败");
$row = mysql_fetch_array($query);
//判断当前数据库中的权限信息与Session中的信息比较,如果不同则更新Session的信息
if($row['userflag'] != $_SESSION['userflag'])
{
$_SESSION['userflag'] = $row['userflag'];
}
//根据Session的值输出不同的欢迎信息
if($_SESSION['userflag'] == 1)
echo "欢迎管理员".$_SESSION['username']."登录系统";
if($_SESSION['userflag'] == 0)
echo "欢迎用户".$_SESSION['username']."登录系统";
echo "<a href="logout.php" href="logout.php">注销</a>";
}
else
{
echo "您没有权限访问本页面";
}
?>

(0)

相关推荐

  • PHP session文件独占锁引起阻塞问题解决方法

    PHP默认的会话处理器是session.save_handler = files(即文件).如果同一个客户端同时并发发送多个请求(如ajax在页面同时发送多个请求),且脚本执行时间较长,就会导致session文件阻塞,影响性能.因为对于每个请求,PHP执行session_start(),就会取得文件独占锁,只有在该请求处理结束后,才会释放独占锁.这样,同时多个请求就会引起阻塞.解决方案如下: (1)修改会话变量后,立即使用session_write_close()来保存会话数据并释放文件锁. s

  • php session的锁和并发

    本文分享PHP的session在使用过程中的锁和并发的问题,与之相关的现象有请求阻塞.session数据丢失.session数据读不到. 我登录不了了 某天,我准备登录我们一个后台系统,前去解决一个bug,在账户密码验证码都准确输入的情况下,我登录不上,经过多次实验发现主要有两个错误信息: csrf验证失败 验证码错误[我对码神起誓我用半角输入了我看到的验证码,且顺序一致,无多加字符] 我们的系统 我们的系统是基于phalcon 2.0.8 开发的,如你所见,我们在表单域加入了防止csrf攻击的

  • php基于session锁防止阻塞请求的方法分析

    本文实例讲述了php基于session锁防止阻塞请求的方法.分享给大家供大家参考,具体如下: 说明: 这是一篇参考国外网站http://konrness.com/php5/how-to-prevent-blocking-php-requests/ 的译文,前面一篇文章PHP编程中的Session阻塞问题与解决方法简单分析了php session阻塞的解决方法,这里给出另一种解决方法. 正文: 现代浏览器限制到一个host并发连接的数量一般为4或6.这意味着,如果您的web页面加载几十个来自同一个

  • php中session_id()函数详细介绍,会话id生成过程及session id长度

    php中session_id()函数原型及说明session_id()函数说明:stringsession_id([string$id])session_id() 可以用来获取/设置 当前会话 ID.为了能够将会话 ID 很方便的附加到 URL 之后, 你可以使用常量 SID 获取以字符串格... php中session_id()函数原型及说明 session_id()函数说明: string session_id ([ string $id ] ) session_id() 可以用来获取/设置

  • PHP中session使用方法详解第1/2页

    由于 Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改 Session 内容.实际上在服务器端的 Session 文件,PHP 自动修改 session 文件的权限,只保留了系统读和写权限,而且不能通过 ftp 修改,所以安全得多.PHPChina 开源社区门户 对于 Cookie 来说,假设我们要验证用户是否登陆,就必须在 Cookie 中保存用户名和密码(可能是 md5 加密后字符串),并在每次请求页面的时候进行验证.如果用户名和密码存储在数据库,每次都要执行一次数据库查

  • PHP中Session引起的脚本阻塞问题解决办法

    解决session阻塞问题的办法:在session操作完成后调用session_write_close()即可避免此问题; 案例一: 使用session过程中,在开启session后,同一浏览器,执行同一程序,不同页面会被锁.不同浏览器不会出现这种情况. 疑问:是不是session_start导致了阻塞? 于是,我写了几个页面测试了一下,发现是session导致了阻塞,而其他两种情况不会造成阻塞. 查了下PHP的Bug列表,发现有人提出了这个问题: 复制代码 代码如下: Description:

  • PHP中怎样保持SESSION不过期 原理及方案介绍

    PHP中如何保持SESSION以及由此引发的一些思考  最近的一个项目,里面有一个比较大的表单,用户完成它需要很多时间,很多用户花了千辛万苦完成之后,一提交发现SESSION过期,系统退出了,所以引起了研究如何设置SESSION以及保持SESSION在线的需要,下面是一些心得体会. 什么是SESSION?按照WIKI的解释,SESSION是存在于两个通信设备间的交互信息,在某一时间建立,经过一定的时间后失效.常见的SESSION有:TCP SESSION.WEB SESSION(HTTP SES

  • PHP编程中的Session阻塞问题与解决方法分析

    本文实例讲述了PHP编程中的Session阻塞问题与解决方法.分享给大家供大家参考,具体如下: 使用session过程中,在开启session后,同一浏览器,执行同一程序,不同页面会被锁.不同浏览器不会出现这种情况. 疑问:是不是session_start导致了阻塞? 于是,我写了几个页面测试了一下,发现是session导致了阻塞,而其他两种情况不会造成阻塞. 查了下PHP的Bug列表,发现有人提出了这个问题: Description: ------------ Calling session_

  • PHP 解决session死锁的方法

    今天在开发碰到个棘手的问题 .当异步请求后台处理一个大数据量操作时  请求其他控制器都没返回信息了..起初以为是Ext 框架设置了ajax同步造成的.后来发现时session 死锁造成其他控制器在等待session 完成后才能操作.(主要是用户登录判断需要更新session)当PHP 处理大数据量操作时 不能及时操作完成 这时候又有访问其他控制器或者异步请求时候会造成session 死锁现象和同事探讨了下 可使用 session_write_close() 解决此问题 复制代码 代码如下: De

  • php中实现精确设置session过期时间的方法

    大多数据情况下我们对于session过期时间使用的是默认设置的时间,而对于一些有特殊要求的情况下我们可以设置一下session过期时间. 对此,可以在PHP中,设置php.ini,找到session.gc_maxlifetime = 1440 #(PHP5默认24分钟) 这里你可以随便设置一下过期时间.但是有人说设置以后,好象不起作用! 其实不是不起作用,而是因为系统默认: session.gc_probability = 1 session.gc_divisor = 1000 garbage

  • PHP中session变量的销毁

    1.何为session?相当于一个客户端(可以是浏览器.app.ftp等其他,而且同一个浏览器多开几个又算是不同的客户端)对服务器的一个访问,这个期间服务器为此建立一个唯一的标示(session_id session_name),其实也就是一个数组Array(),Session的开始和结束并不以业务上的输入用户名密码开始,也不以关闭浏览器和网页刷新而结束 2.session变量的销毁程序代码<?phpsession_unset();session_destroy();?> session_un

  • PHP会话控制:Session与Cookie详解

    本文介绍了PHP会话控制,主要阐述以下几点内容: • 会话控制的产生背景/概念 • cookie的维护与生命周期(有效时间) • session的维护与生命周期(回收机制) • cookie与session之间的区别与联系 • 问题1:禁用cookie后session为什么会失效? • 问题2:IE浏览器下丢失session,每次刷新页面,都会生成新的sessionID(Firefox浏览器正常) • session.cookie简单实例 理解会话控制的概念 理解一个概念就需要理解他的背景及产生

随机推荐