关于一个PHP的身份认证问题?
PHP源码:<?php
function auth()
{
header("WWW-Authenticate: Basic realm=www.fish.com");
header("HTTP/1.1 401 Unauthorized");
echo "<h2>您需要进行身份认证!</h2>";
echo "<br>请重新选择刷新,重新加载!";
exit;
}
//显示欢迎信息
function showWelcome($msg="祝贺您,您已经通过了身份认证!")
{
echo "<table border='0'>";
echo "<tr><td align = 'center'><h4>";
echo "<font color=#ff0000>$msg</font>";
echo "</h4></td></tr>";
echo "<table>";
}
//检查变量$PHP_AUTH_USER
if(!isset($PHP_AUTH_USER))
{
//身份认证信息发送
auth();
}
else {
//用户信息设定,则连接数据库进行检查
mysql_connect("localhost","root","******")
or die("Unable to connect to database!");
mysql_select_db("web_db")
or die("Unable to selectdatabase!");
//设置查询语句,语句中使用PASSWORD函数
$query="select usr_id
from http_auth
where uname='$PHP_AUTH_USER'
and userpass='PASSWORD('$PHP_AUTH_pw')";
//数据库查询
$result=mysql_query($query);
$numRows=mysql_num_rows($result);
//判断结果
if($numRows==0){
// 用户不存在,身份不合法
//重新发送认证信息
auth();
}
else {
//用户身份合法,显示欢迎信息
showWelcome();
}
}
?>
-------------------------------------------------------------------------------------------
浏览器返回的错误信息:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/html/fish/PHP操作MYSQL/php身份认证.php on line 43
Warning: Cannot add header information - headers already sent by (output started at /var/www/html/fish/PHP操作MYSQL/php身份认证.php:43) in /var/www/html/fish/PHP操作MYSQL/php身份认证.php on line 4
Warning: Cannot add header information - headers already sent by (output started at /var/www/html/fish/PHP操作MYSQL/php身份认证.php:43) in /var/www/html/fish/PHP操作MYSQL/php身份认证.php on line 5
您需要进行身份认证!
请重新选择刷新,重新加载!
请问各路高手是什么问题!???
谢谢~~~~~
Warning: Cannot add header information - headers already sent by (output started at /var/www/html/fish/PHP操作MYSQL/php身份认证.php:43) in /var/www/html/fish/PHP操作MYSQL/php身份认证.php on line 4
Warning: Cannot add header information - headers already sent by (output started at /var/www/html/fish/PHP操作MYSQL/php身份认证.php:43) in /var/www/html/fish/PHP操作MYSQL/php身份认证.php on line 5
PHP 在执行 Header() 之前已经有了输出(前面连回车、空格都不许有)
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/html/fish/PHP操作MYSQL/php身份认证.php on line 43
可能你的 SQL 语句有问题 那请问版主:
我的那个Header()是包在一个自定义函数auth()里面的!
要怎样改才能使其能执行??
我是个PHP菜鸟!!
请版主大人,教下我要怎样做好吗?谢谢!
如查Header()不包在auth()里面,可以没有回车和空格,但后面就调用不了呀!
要怎么办才好~~~~?? :oops: 还有你说SQL语句有错!我找了很久都看不出错在哪里,能不能帮我点出来,好吗?谢谢先! 那请问版主:
我的那个Header()是包在一个自定义函数auth()里面的!
要怎样改才能使其能执行??
我是个PHP菜鸟!!
请版主大人,教下我要怎样做好吗?谢谢!
如查Header()不包在auth()里面,可以没有回车和空格,但后面就调用不了呀!
要怎么办才好~~~~?? :oops:
这就看你的代码怎么写了,使用 Header() 要保证之前没有执行过 echo,也没有 HTML 语句,而且 <? 也要在文件的头部就出现。
如果实在找不到哪里有输出,可以输出个 JavaScript:
echo "<script language='javascript'>document.location = '此处放入你要的页面'</script>";
(不知道这个的兼容性怎么样)
或者使用 HTML 的刷新语句。
<meta http-equiv="refresh" content="时间;URL=地址"> 还有你说SQL语句有错!我找了很久都看不出错在哪里,能不能帮我点出来,好吗?谢谢先!
你在执行
mysql_query($query);
之前先
echo $query;
把输出的 SQL 语句粘贴到 MySQL 的命令解释器里执行一下,看看有什么错误输出没有。
(我经常这么干) 身份认证我觉得用session比较好
页:
[1]