用SESSION做的页面权限验证问题,正常情况下只有登录页面输入用户和密码正确,才显示登录成功。直接登录就显示“请通过正确的路径登录本系统!”
可我递交用户和密码以后,页面还是显示“请通过正确的路径登录本系统!”是不是条件语句做错了,请大虾高手看看 谢谢了
用户和密码调用数据库里的。
<?php
session_start();
$_SESSION[user]=$_POST[user];
$_SESSION[pwd]=$_POST[pwd];
?>
<?php
if($_SESSION[user]==""){
echo"<script language='javascript'>alert('请通过正确的路径登录本系统!');history.back();</script>";
}
?>
<?php //$username=111;//因没有表单提交,这里直接赋值,可以改动其值,以验证程序 
//$password=111;//因没有表单提交,这里直接赋值,可以改动其值,以验证程序 
$connection=mysql_connect("localhost","root","root"); 
$db="xingcan"; 
mysql_select_db($db,$connection) or die ("Could not open $db."); 
$query="select * from staff where username='$_SESSION[user]' and password='$_SESSION[pwd]'"; 
$result=mysql_query($query,$connection); 
$res=mysql_fetch_array($result);//如果查到有该username 
if($_SESSION[user]=$res[username] && $_SESSION[pwd]=$res[password])//如果密码对 
{echo "<script>alert('Welcome!');window.location.href='search_affiche.php';</script>";} 
else if($_SESSION[user]!=$res[username])//如果密码错 
{echo "<script>alert('密码错误!');window.location.href='index.php';</script>";} ?>
<?php
session_start();
if($_POST["Submit"]!=""){
$checks=$_POST["checks"];
if($checks==""){
echo"<script>alert('验证码不能为空');window.location.href='index.php';</script>";
}
if($username=$res[username] and $checks==$_SESSION[check_checks]){
echo"<script>alert('用户登录成功!');window.location.href='search_affiche.php';</script>";
}else{
echo"<script>alert('您输入不正确!');window.location.href='index.php';</script>";

}
}
?>
//下面是表单
<form name="form1" method="post" action="check_search_affiche.php">
  <p>起始日期
    :
    <input name="txt_keyword2" type="text" id="txt_keyword2" size="20" />
  结束日期
    :
    <input name="txt_keyword3" type="text" id="txt_keyword3" size="20" />
</p>
  <p>查询用户:&nbsp;
    <input name="txt_keyword" type="text" id="txt_keyword" size="20" />
    <input type="submit" name="Submit" value="搜索" onclick="return check(form)">
    </p>
</form>
<script language="javascript">
function check(form){
if(form.txt_keyword.value==""){
alert("请输入用户名!");form.txt_keyword.focus();return false;
}
else if(form.txt_keyword2.value==""){
alert("请输入起始日期!");form.txt_keyword2.focus();return false; }
else if(form.txt_keyword3.value==""){
alert("请输入结束日期!");form.txt_keyword3.focus();return false; }
form.submit();
}
</script>

解决方案 »

  1.   

    是不是有session值在当前页不起效这一说,记不清了,请楼下给出正确答案。
      

  2.   

    <?php 
    session_start(); 
    $_SESSION[user]=$_POST[user]; 
    $_SESSION[pwd]=$_POST[pwd]; 
    ?> 
    <?php 
    if($_SESSION[user]==""){ 
    echo" <script language='javascript'>alert('请通过正确的路径登录本系统!');history.back(); </script>"; 

    ?>这一段有些问题,如果你的表单提交到本页,那么:
      $_SESSION[user]=$_POST[user]; 
      $_SESSION[pwd]=$_POST[pwd];
    这两句话应该用一条限制语句限制,不然,根据网页从上倒下运行的原则,你还没输入账户密码的时候就已经把值赋给session了,这时的session肯定为空啊,自然都会跳出“alert('请通过正确的路径登录本系统!')”这句,可以加工一下这句:  if($_POST['submit'])              //假设你的提交按钮的name=‘submit’
       {
       $_SESSION[user]=$_POST[user]; 
       $_SESSION[pwd]=$_POST[pwd];
       }
    ……………………
    ………………………