PHP用户名和密码验证问题,简单

<?php
function sqlesc($x) {
return "'".mysql_real_escape_string($x)."'";
}
$coon=mysql_connect("localhost","root","root");
if(!$coon)
{
die('数据库连接失败!'.mysql_error());
}
mysql_select_db("db_rita",$coon);
echo "运行到这里了";

while ($row = mysql_fetch_array($mysql))
{

$name=$row['name'];
$password=$row['password'];

}
if($_POST['name']==$name && $_POST['password']==$password)
{
echo "登录成功!";
}
else
{
echo "登录失败!不存在此用户名!";
}
mysql_close($coon);
?>

本人PHP新手,请问上面的代码为什么不能验证。SQL没问题,在数据库里能运行出想要的结果。
...全文
435 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
谢谢大家
heyli 2010-11-05
  • 打赏
  • 举报
回复
echo $mysql; 是一个资源标识符 输出没用的

换成下面的
$row = mysql_fetch_array($mysql);
if(is_array($row))
{
echo "登录成功!";
}
else
{
echo "登录失败!用户名或密码错误!";
}
  • 打赏
  • 举报
回复
是的不好意思,我掉了select 语句。

<?php
function sqlesc($x) {
return "'".mysql_real_escape_string($x)."'";
}
$coon=mysql_connect("localhost","root","root");
if(!$coon)
{
die('数据库连接失败!'.mysql_error());
}
mysql_select_db("db_rita",$coon);

echo "运行到这里了"."<br/>";

$mysql = mysql_query("SELECT name,password FROM user WHERE name='".$_POST['name']."' AND password='".$_POST['password']."'");

echo $mysql; //打印$mysql结果

if($row = mysql_fetch_array($mysql))
{
echo "登录成功!";
}
else
{
echo "登录失败!用户名或密码错误!";
}

mysql_close($coon);
?>

得到的结果是这样的:

“运行到这里了
Resource id #3登录失败!用户名或密码错误!”

(Resource id #3)是什么意思?我用 "echo $mysql; //打印$mysql结果"得到的.我用的是数据库里正确的“name”和"password".

在-云端 2010-11-05
  • 打赏
  • 举报
回复
你是没把你的代码发全呢?还是压根就少了数据库查询获得结果这步?
只见你有选择了连接数据库名称之后没有查询,直接fetch_array。

如果没发全,步骤都有,那么请参考3楼!
沪php攻城师 2010-11-05
  • 打赏
  • 举报
回复
$mysql = mysql_query("SELECT * FROM table WHERE name='".$_POST['name']."' AND password='".$_POST['password']."'");
不好意思少了分号
沪php攻城师 2010-11-05
  • 打赏
  • 举报
回复
$mysql = mysql_query("SELECT * FROM table WHERE name=".$_POST['name']." AND password=".$_POST['password']);
if($row = mysql_fetch_array($mysql))
{
echo "登录成功!";
}
else
{
echo "登录失败!用户名或密码错误!";
}
zhongqixing1104 2010-11-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ajaxoo 的回复:]

while ($row = mysql_fetch_array($mysql))
{

$name=$row['name'];
$password=$row['password'];

}

这里怎么改。。不是取的最后一条,是全取出来了.
[/Quote]
全取出来,每次都把上一个覆盖掉,最后不就是最后那条?一般的做法是通过密码和用户名去数据库中查找,有就通过,没有就失败。
  • 打赏
  • 举报
回复
while ($row = mysql_fetch_array($mysql))
{

$name=$row['name'];
$password=$row['password'];

}

这里怎么改。。不是取的最后一条,是全取出来了.
zhongqixing1104 2010-11-05
  • 打赏
  • 举报
回复
while ($row = mysql_fetch_array($mysql))
{

$name=$row['name'];
$password=$row['password'];

}
你在这里后面验证,取的是数据库最后一条,当然验证有问题了。

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧