php如何验证过滤用户是否登录

在java中有过滤器这么一说,当访问一个目录的时候首先判断session中是否有该用户的登录信息,如果有则放行,如果没有则返回到登录页面在php中是怎么做到一个目录下所有... 在java中有过滤器这么一说,当访问一个目录的时候首先判断session中是否有该用户的登录信息,如果有则放行,如果没有则返回到登录页面

在php中是怎么做到一个目录下所有的资源都是否有权限访问呢
首先感谢各位,我可能表达的有点偏离本意,我是希望了解,如果我没有登陆访问一个目录下的某一个页面,php是怎样把我退回到登陆页面去,是不是每一个页面都加判断,还有有像过滤器那样的,可以过滤个别请求,还请各位补充一下,之后再送50分
展开
 我来答
一骑当后
2015-07-04 · 知道合伙人数码行家
一骑当后
知道合伙人数码行家
采纳数:40298 获赞数:306428
网络、设备维护、电路、弱电检测。

向TA提问 私信TA
展开全部

  一、php可以通过Session,实现用户登录验证。

  session习惯上被译为会话,它的设计是为了在一个访问期间在不同的页面间传输数据,以解决http协议无状态的问题。

  session_register()函数的作用是注册新的变量,它会在全局变量中增加1个变量到目前的session之中,以后其他页面可以通过session_is_registered()函数检测该session变量是否已经注册。

  二、通过session来检测用户登录信息,由两个文件组成,login.php为用户登录页面,checklogin.php用于检测账号、密码和是否登录成功。

  具体参考代码如下:

login.php的代码如下:
<?php
session_start();//初始化session
if (isset($_SESSION['shili']))
{
 header("Location:shili.php"); //重新定向到其他页面
 exit();
}
?>
<script language="javascript">
function checklogin(){
 if((login.username.value!="")&&(login.password.value!=""))
 {
  return true;//判断用户名和密码不为空,返回TRUE
 }
 else
 {
  alert ("昵称或密码不能为空!")
 }
}
</script>
<style type="text/css">
.style1 { font-size: 13px;  font-family: "黑体";  font-weight: normal;   color: #0099FF; }
</style>
<div align="center">
<form name="login" method="post" action="checklogin.php" onSubmit="return checklogin()">
<table width="260" border="1" bgcolor="#D8EFFA">
<tr align="center">
<td height="30" colspan="2"><span class="style1">管理系统登录</span></td>
</tr>
<tr>
<td width="90" align="center" class="style1">管理员: </td>
<td width="170" height="20" align="left" valign="middle"><input name="username" type="text" id="username" size="20"></td>
</tr>
<tr>
<td align="center" class="style1">密码: </td>
<td height="20" align="left" valign="middle"><input name="password" type="password" id="password" size="20"></td>
</tr>
<tr>
<td align="center" class="style1"></td>
<td height="20" align="center"><input type="submit" name="Submit" value="登 录"></td>
</tr>
</table>
</form>
</div>
checklogin.php的代码如下:
<?php 
session_start () ;                   //初始session
if (isset ($_SESSION['shili']))
{
header ("Location:shili.php") ;    //重新定向到其他页面
exit ;
}                       //登录过的话立即结束
$shili_name=$_POST['username'] ;    //获取参数
$password=$_POST['password'] ;
//验证管理员名称和密码是否正确,这里采用直接验证,没有连接数据库
if ($shili_name=="mr" and $password=="mrsoft")
{
session_register ("shili") ;        //注册新的变量,保存当前会话的昵称
$shili = $shili_name ;
echo "<font color=red>登录成功!</font>" ;
header ("Location:shili.php") ;    //登录成功重定向到管理页面
}
else
{
echo "<table width='100%' align=center><tr><td align=center>" ;
echo "账号或密码错误,或者不是管理员账号<br>" ;
echo "<font color=red>登录失败!</font><br><a href='login.php'>请重新输入</a>";
echo "</td></tr></table>" ;
}
?>
shili.php的代码如下:(实验简单验证)
<?php
   echo "Welcome to My World!";
?>
//如果想要对某个页面限制浏览的用户,可以使用同样的方式,只要把如下的代码放在该页面的开头即可:
<?php 
session_start () ;
if (!isset ($_SESSION['shili'])){
echo "<p align=center>" ;
echo "<font color=#ff0000 size=5><strong><big>" ;
echo "你没有登录,请<a href='denglu.php'>登录</a>!" ;
echo "</big></strong></font></p>" ;
exit () ; 
 } 
?>

  

阳光上的桥
2009-02-24 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21424 获赞数:65798
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
一样的使用session,例如下面的例子程序:

例 1. A session example: page1.php

<?php
// page1.php

session_start();

echo 'Welcome to page #1';

$_SESSION['favcolor'] = 'green';
$_SESSION['animal'] = 'cat';
$_SESSION['time'] = time();

// Works if session cookie was accepted
echo '<br /><a href="page2.php">page 2</a>';

// Or maybe pass along the session id, if needed
echo '<br /><a href="page2.php?' . SID . '">page 2</a>';
?>

After viewing page1.php, the second page page2.php will magically contain the session data. Read the session reference for information on propagating session ids as it, for example, explains what the constant SID is all about.

例 2. A session example: page2.php

<?php
// page2.php

session_start();

echo 'Welcome to page #2<br />';

echo $_SESSION['favcolor']; // green
echo $_SESSION['animal']; // cat
echo date('Y m d H:i:s', $_SESSION['time']);

// You may want to use SID here, like we did in page1.php
echo '<br /><a href="page1.php">page 1</a>';
?>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rickysilk
2009-02-24 · TA获得超过691个赞
知道小有建树答主
回答量:509
采纳率:0%
帮助的人:530万
展开全部
session
cookie
双管齐下

利用session_id()作为cookie的其中一些值,使关掉浏览器后就会失效,过了时间也会失效

例如

setcookie("username","abcd",time()+86400*30);
setcookie("md5_username",md5(session_id()."abcd"),time()+86400*30);

要判断登陆,必须同时有$_COOKIE['username']和$_COOKIE['md5_username']
而且$_COOKIE['md5_username']要等于md5(session_id()."abcd");

当浏览器关闭后再打开,session_id就会不同,所以就会失效了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leiyu465
2009-02-25 · TA获得超过202个赞
知道答主
回答量:81
采纳率:0%
帮助的人:79.5万
展开全部
PHP同样也是可以用SESSION或者COOKIE来判断的,不过不能一下子判断所有的页面,你只能手动的在每个页面上都做判断。或者是单独写一个判断的页面然后用require()或者include()引入到其他页面。

补充一下
每个页都要加判断

session_start();
if($_SESSION["abc"]==""){
echo "<script>alert('请先登录');window.location.replace('登陆页面')</script>";
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
荷花菊6071
2009-02-25 · 超过21用户采纳过TA的回答
知道答主
回答量:84
采纳率:0%
帮助的人:57.8万
展开全部
php也是判断session。每个页面都要判断。用一个include(),不麻烦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式