问一个关于HTML表单与PHP里isset函数的问题

<?php$userName=$_POST['userName'];$passWord=$_POST['passWord'];if($userName==null&&$p... <?php
$userName = $_POST['userName'];
$passWord = $_POST['passWord'];

if($userName == null && $passWord == null) {
echo "asfasf";
}

if(isset($userName) || isset($passWord)) {
echo "哈哈哈!!";
@ $mysqli = new mysqli("localhost", "root", "123", "airsystem");
if($mysqli->connect_error) {
echo "$mysqli->connect_error 数据库连接错误";
exit;
}

$sql = "select pass from security2 where user = '" . $userName . "'";
$result = $mysqli->query($sql);
$num = $result->num_rows;
if($num == 0) {
echo "go away";
exit;
}

for($i = 0; $i < $num; $i++) {
$row = $result->fetch_row();
if($row[0] == $passWord) {
echo "you win";
exit;
}
}
}

?>

<html>
<body>
<h2>Please log in</h2>
this page is secret <br>
<form action="secretdb.php" method="post">
<table border="1">
<tr>
<td>Username</td>
<td><input type="text" name="userName"/></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="passWord"/></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Log in"/></td>
</tr>
</table>
</form>
</body>
</html>
问题:isset函数的参数如果为 null 返回值为false,这是对的。但是在表单被点击提交后,isset函数的参数依旧为 null 但返回值为true ,即可以输出 ”哈哈哈!!!“,可以连接数据库了,但这不是我想要的。
求解释。。。
展开
 我来答
windblast
2012-03-30 · 知道合伙人软件行家
windblast
知道合伙人软件行家
采纳数:5633 获赞数:13623
毕业于空军第一航空学院电子专业,1991年开始接触电脑,从事多年计算机编程,具有较丰富的经验。

向TA提问 私信TA
展开全部
isset 函数的功能是检测变量是否设置。如果 var 存在则返回 TRUE,否则返回 FALSE。

若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节("\0")并不等同于 PHP 的 NULL 常数。

我觉得你可以用is_null()函数来测试一下,isset($userName) || isset($passWord) 里的变量是不是null。
更多追问追答
追问
大侠,我用is_null()函数测试了一下,发现is_null($userName) 和 is_null($passWord)都返回false
可是,在表单被点击提交后(输入框都没有输入值),程序里 if($userName == null && $passWord == null) 返回的是true,但是if(is_null($userName) || is_null($passWord))却返回false
。。。。是不是前面一个if语句里的判断(用null判断)有问题
追答
那你用if($userName === null && $passWord === null) 试试
匿名用户
2012-04-02
展开全部
因为在isset($userName)前你给$userName定义过赋过值了,所以isset($userName)永远是真真的,所以输出"哈哈哈"
在提交后应该用

if(!empty($userName) && !empty($passWord))
{

}
判断输入的用户名和密码不能为空
我想这才是你的本来意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式