新手求助:我又出错了,谁能告诉我错在那儿?

新手求助:我又出错了,谁能告诉我错在那儿?

我是参照下载的教程里做的,第十二部分:学会session的使用

我的数据库用户表是:user   用户名列:user  密码列:pass

登陆文件代码 <login.php>:

[复制到剪切板]
CODE:
<table width="100%" height="100%" border="0" align="center" cellpadding="0" cellspacing="0">
  <
tr>
  <
form action="checklogin.PHP" method="post"><td align="center" valign="middle"><table width="400" border="0" cellpadding="5" cellspacing="1" class="tablebg">
  <
tr class="tdbg">
  <
td colspan="2"><div align="center">Administrators Login</div></td>
  </
tr>
  <
tr class="tdbg">
  <
td><div align="center">Username</div></td>
  <
td><div align="center">
  <
input name="username" type="text" id="username">
  </
div></td>
  </
tr>
  <
tr class="tdbg">
  <
td><div align="center">assword</div></td>
  <
td><div align="center">
  <
input name="password" type="password" id="password">
  </
div></td>
  </
tr>
  <?
  require_once(
'ccc.PHP');
  
session_start();
  
$username=$_POST['username'];
  
$password=$_POST['password'];
  
$exec="select * from user where user='".$username."'";
  if(
$result=MySQL_query($exec))
  {
  if(
$rs=MySQL_fetch_object($result))
  {
    if(
$rs->pass==$password)
    {
      
$_session['adminname']=$username;
      
header("location:index.PHP");
    }
    else
    {
      echo 
"<script>alert('Password Check Error!');location.href='login.PHP';<\/script>";
    }
  }
  else
  {
  echo 
"<script>alert('Username Check Error!');location.href='login.PHP';<\/script>";
  }
  }
  else
  {
echo 
"<script>alert('Database Connection Error!');location.href='login.PHP';<\/script>";


  ?>
  <
tr class="tdbg">
  <
td colspan="2"><div align="center">
  <
input type="submit" name="Submit" value="Submit">
  <
input type="reset" name="Submit2" value="Clear">
  </
div></td>
</
tr>
  </
table></td></form>
  </
tr>
  </
table> ;

被限权登陆才能访问的而面代码:

[复制到剪切板]
CODE:
<?php require_once('checkadmin.php'); ?>
<
title>测试</title>
<?
php
$exec
="select * from user";
$result=mysql_query($exec);
while(
$rs=mysql_fetch_object($result))
{
echo 
$rs->user;
}
?>

checkadmin.php文件代码:
  
<?
  
session_start();
  if(
$_session['username']=='')
  {
  echo 
"<script>alert('Please Login 

First');location.href='login.PHP';</scr

ipt>"
;
  }
  ?> ;


但不知道为什么,老是无法访问啊......老是说密码错,或用户名错,而且弹出对话一直来个不停,老有,点了确定又出现。。。。

最好是高亮显示,放在一起乱看的不是很明白。

貌似我看到了一个死循环
我的Blog

引用:
[quote]

[复制到剪切板]
CODE:
<?php require_once('checkadmin.php'); ?>
<
title>测试</title>
<?
php
$exec
="select * from user";
$result=mysql_query($exec);
while(
$rs=mysql_fetch_object($result))
{
echo 
$rs->user;
}
?>

checkadmin.php文件代码:
  
<?
  
session_start();
  if(
$_session['username']=='')
  {
  echo 
"<script>alert('Please Login 

First');location.href='login.PHP';</scr

ipt>"
;
  }
  ?>    ... ;


while($rs=mysql_fetch_object($result))
{
echo $rs->user;
}
不是很明白為什麽要循環.
[/quote]

[ 本帖最后由 fangkejie 于 2008-5-8 16:22 编辑 ]

<?php
$exec="select * from user";
$result=mysql_query($exec);
while($rs=mysql_fetch_object($result))
{
echo $rs->user;
}
?>

我把这段代码给去掉了,效果还是跟以前一样,我看应该是我的 login.php 或 checkadmin.php 出了问题。。。

好像看到了点错误!!!!!

测试的时候,直接打开index.php或login.php,都会直接转到index.php

而且都会一直提示:“Please Login First”

点了确定又来,点了又来,老是没完没了的

想一下,会不会是我的checkadmin.php的问题啊,我想应该是这里吧

这样试试:
checkadmin.php文件代码:

[复制到剪切板]
CODE:
<?
  
session_start();
  if(empty(
$_SESSION['username']))//请楼主一定要注意这里的$_session的大小写。
  
{
  echo 
"<script>alert('Please Login 

First');location.href='login.PHP';</scr

ipt>"
;
  } ;


?>
我的Blog

再次去看教程,又改了几个地方,但又出现了另一种情况:(

跟最后 yafeikf 的帮助回复后,我又去看了看教程,思考了一阵子,但又出现了以下问题:

1.index.PHP 在没有经过 login.php 登陆也能直接进入,相当于没要权限 -但还可以正常访问-

2.当打开 login.php 时,直接会转到 index.php ,登陆这个任务跟本就相当于没有了

相关代码如下:

..index.php..

<? require_once('ccc.PHP'); ?>
<?php require_once('checkadmin.php'); ?>
<title>测试</title>
<?php
$exec="select * from user";
$result=mysql_query($exec);
while($rs=mysql_fetch_object($result))
{
echo $rs->user;
}
?>

..login.php..

<? require_once('ccc.PHP'); ?>
<?
  session_start();
  $username=$_POST['user'];
  $password=$_POST['pass'];
  $exec="select * from user where user='".$username."'";
  if($result=MySQL_query($exec))
  {
  if($rs=MySQL_fetch_object($result))
  {
    if($rs->pass==$password)
    {
      $_session['adminname']=$username;
      header("location:index.PHP");
    }
    else
    {
      echo "<script>alert('密码错误!');location.href='login.PHP';</script>";
    }
  }
  else
  {
  echo "<script>alert('帐号错误!');location.href='login.PHP';</script>";
  }
  }
  else
  {
echo "<script>alert('数据链接错误!');location.href='login.PHP';</script>";
}


  ?>
  <table width="100%" height="100%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
  <form action="index.PHP" method="post"><td align="center" valign="middle"><table width="400" border="0" cellpadding="5" cellspacing="1" class="tablebg">
  <tr class="tdbg">
  <td colspan="2"><div align="center">Administrators Login</div></td>
  </tr>
  <tr class="tdbg">
  <td><div align="center">Username</div></td>
  <td><div align="center">
  <input name="username" type="text" id="username">
  </div></td>
  </tr>
  <tr class="tdbg">
  <td><div align="center">Password</div></td>
  <td><div align="center">
  <input name="password" type="password" id="password">
  </div></td>
  </tr>
  <tr class="tdbg">
  <td colspan="2"><div align="center">
  <input type="submit" name="Submit" value="Submit">
  <input type="reset" name="Submit2" value="Clear">
  </div></td>
</tr>
  </table></td></form>
  </tr>
  </table>

..checkadmin.php..

<?
  session_start();
  if(empty($_SESSION['username']))
  {
  echo "<script>alert('Please Login

First');location.href='login.PHP';</script>";
  }
?>

我自己猜想,肯定是 session 的设置出了问题,而且login.php,肯定是红色代码出了问题。。。

你把sql给echo出来试试,看能不能显示出密码,或者用===三个等号判断密码是否相符。
我的Blog

引用:
原帖由 yafeikf 于 2008-5-12 18:00 发表
你把sql给echo出来试试,看能不能显示出密码,或者用===三个等号判断密码是否相符。
把sql给echo出来,这句我不太懂,不知道怎么echo出来:(