CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  PHP

php+apache用户认证问题

楼主global_boy(闲人)2002-12-06 22:51:37 在 Web 开发 / PHP 提问

PHP以模块方式跑在apache下,想以MySQL数据库储存用户帐户信息;  
  用PHP调用apache作用户认证,在网上搜索了一篇文章(http://www.5xsoft.com/data/200107/2609201001.htm);  
  按照他说的作,总是不成功,不知问题出在哪里,请大家帮忙;  
   
   
  :) 问题点数:120、回复次数:16Top

1 楼shuixin13(犬犬(心帆))回复于 2002-12-06 23:16:52 得分 20

能见见你的代码吗,  
  是你的PHP不能登录服务器还是其它的什么原因?  
  出错提示呢  
   
   
   
  那篇文章已拜读  
  有这样一个想法  
   
  用于验证的SQL  
  $query   =   "SELECT   username,password   FROM   users   WHERE   username='$uname'   and   password=password('$pwd')";  
   
   
  如果我这样写入用户名与密码呢  
    $uname   =     123'   Or   'a'='a  
    $pwd   =   123  
   
  $query   =   "SELECT   username,password   FROM   users   WHERE   username='123'   Or   'a'='a'   and   password=password('123')";  
   
  ???  
  我想返回值应该有很多吧  
  Top

2 楼realyfly(^_^)回复于 2002-12-07 12:06:40 得分 10

<?php  
  function   authenticate()   {  
  Header('WWW-authenticate:   basic   realm="会员区"');  
  Header('HTTP/1.0   401   Unauthorized');  
  echo   "你必须输入正确的用户名和口令。\n";  
  exit;  
  }  
  function   CheckUser($uname,   $pwd)   {  
  if   ($uname   ==   ""   ||   $pwd   ==   "")   return   0;  
  $query   =   "SELECT   username,password   FROM   users   WHERE   username='$uname'   and   password=password('$pwd')";  
  $db_id   =   mysql_connect('localhost',   'root',   'mypwd');  
  mysql_select_db('member',$db_id);  
  $result   =   mysql_query($query,   $db_id);  
  $num=mysql_num_rows($result);  
  mysql_close($db_id);  
  if   ($num>0)   {  
  return   1;   //   有效登录  
  }   else   {  
  return   0;   //   无效登录  
  }  
  }  
  while($PHP_AUTH_USER==""||$PHP_AUTH_PW=="")  
  {  
    authenticate();  
    while(!CheckUser($PHP_AUTH_USER,$PHP_AUTH_PW))  
    authenticate();  
  }  
  echo   "username".$PHP_AUTH_USER."     password".$PHP_AUTH_PW;  
  ?>  
  这样才行Top

3 楼global_boy(闲人)回复于 2002-12-07 12:59:14 得分 0

现在是浏览器能谈“验证框”,但无论如何也验证不通过。Top

4 楼realyfly(^_^)回复于 2002-12-07 13:13:18 得分 10

先看看php.ini文件里面register_global=on/off  
  这一项,改成register_global=on  
  然后重新启动apache  
  如果还不行检查CheckUser($uname,   $pwd)这个函数写的对不对Top

5 楼phpteam(phpsalon.com)回复于 2002-12-07 13:52:59 得分 10

同意楼上的,先看看register_globals吧Top

6 楼adz(日全食)回复于 2002-12-07 15:36:54 得分 5

还是不要改register_globals的好,以$_SERVER['PHP_AUTH_USER']及$_SERVER['PHP_AUTH_PW']来获取输入用户名及密码.Top

7 楼tntxhy(落日使者)回复于 2002-12-07 17:02:24 得分 5

同意,安全起见还是用$_SERVERTop

8 楼global_boy(闲人)回复于 2002-12-07 19:26:32 得分 0

我建立的MySQL数据库结构:  
   
  mysql>   describe   users;  
  +----------+-------------+------+-----+---------+-------+  
  |   Field         |   Type                 |   Null   |   Key   |   Default   |   Extra   |  
  +----------+-------------+------+-----+---------+-------+  
  |   username   |   varchar(20)   |   YES     |           |   NULL         |               |  
  |   password   |   varchar(20)   |   YES     |           |   1234         |               |  
  +----------+-------------+------+-----+---------+-------+  
  2   rows   in   set   (0.07   sec)Top

9 楼global_boy(闲人)回复于 2002-12-07 19:27:16 得分 0

auth.inc   内容:  
   
   
  <?php  
  function   authenticate()   {  
  Header('WWW-authenticate:   basic   realm="会员区"');  
  Header('HTTP/1.0   401   Unauthorized');  
  echo   "你必须输入正确的用户名和口令。\n";  
  exit;  
  }  
  function   CheckUser($uname,   $pwd)   {  
  if   ($uname   ==   ""   ||   $pwd   ==   "")   return   0;  
  $query   =   "SELECT   username,password   FROM   users   WHERE   username='$uname'   and   password=password('$pwd')";  
  $db_id   =   mysql_connect('localhost',   'root');  
  mysql_select_db('member',$db_id);  
  $result   =   mysql_query($query,   $db_id);  
  $num=mysql_num_rows($result);  
  mysql_close($db_id);  
  if   ($num>0)   {  
  return   1;   //   有效登录  
  }   else   {  
  return   0;   //   无效登录  
  }  
  }  
  ?>Top

10 楼global_boy(闲人)回复于 2002-12-07 19:29:57 得分 0

要验证的页内容:  
   
   
  <?php  
  require('auth.inc');  
  if   (CheckUser($PHP_AUTH_USER,$PHP_AUTH_PW)==0)   {  
  authenticate();  
  }   else   {  
  echo   "这是合法用户要访问的网页。";   //将此行改为向合法用户输出的网页  
  }  
  ?>Top

11 楼bombshell(水中鱼)回复于 2002-12-08 10:11:23 得分 10

<?  
  if(!isset($PHP_AUTH_USER))  
  {  
    header("WWW-Authenticate:Basic   realm=\"穿越时光\"");  
    header("HTTP/1.0   401   Unauthorized");  
    echo   "身份验证失败,您无权登录本站!";  
    exit;  
  }  
  if(!mysql_pconnect("myhost","webuser","password"))  
  {  
    echo   "无法连接数据库";  
    exit;  
  }  
  $sql   =   "select   name,password,class   from   access   where   name='$PHP_AUTH_USER'   and   password='$PHP_AUTH_PW'";  
  $result   =   mysql_db_query("myweb",$sql);  
  $row   =   mysql_fetch_array($result);  
  if(!$row)  
  {  
    header(("WWW-Authenticate:Basic   realm=\"穿越时光\"");  
    header("HTTP/1.0   401   Unauthorized");  
    echo   "身份验证失败,您无权登录本站!";  
    exit;  
  }  
   
  数据库为myweb  
  数据表是:access  
  create   table   access(  
                                          id   int(9)   not   null   auto_increment,  
                                          name   varchar(20)   not   null,  
                                          password   varchar(10)   not   null,  
                                          class   char(2)   default'0'   not   null,  
                                          primary   key(id)  
                                        );  
     
  Top

12 楼bombshell(水中鱼)回复于 2002-12-08 13:55:03 得分 5

提示什么错误呀Top

13 楼global_boy(闲人)回复于 2002-12-08 15:44:29 得分 0

没有任何错误消息;  
  能出现“验证框”;  
  但,无论如何也验证不通过;  
   
  :)  
   
  Top

14 楼realyfly(^_^)回复于 2002-12-08 16:23:23 得分 10

我觉得可能有两个原因:  
  1、数据库连接问题,可能你的数据库连接不成功,单独编写一个数据库连接的程序测试一下,看看能不能从数据库里面取出数据并显示出来  
  2、变量传递问题Top

15 楼shuixin13(犬犬(心帆))回复于 2002-12-08 18:35:50 得分 25

没有任何错误消息;??  
   
  有设置使Apache返回错误信息吗Top

16 楼phpteam(phpsalon.com)回复于 2002-12-11 19:56:50 得分 10

if(!isset($PHP_AUTH_USER))  
  ==>  
  if(empty($PHP_AUTH_USER))  
  试试看Top

相关问题

  • 在windows2000+apache+php下实现认证框要怎么做?分必给!!!
  • 哪有用户认证系统源码?(php+mysql越精简越好!)
  • 用ADO.NET写用户认证
  • apache,tomcat,php,resin
  • 关于用户认证问题:
  • web service如何认证用户?
  • 用户注册信息认证
  • 初学Apache和php
  • 请问在Apache上如何配置服务器认证证书?
  • 如何配置Apache的http认证?在线急等!!!

关键词

  • 验证
  • 用户
  • php
  • mysql
  • apache
  • db
  • auth
  • uname
  • checkuser
  • pwd

得分解答快速导航

  • 帖主:global_boy
  • shuixin13
  • realyfly
  • realyfly
  • phpteam
  • adz
  • tntxhy
  • bombshell
  • bombshell
  • realyfly
  • shuixin13
  • phpteam

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo