问一个关于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 ,即可以输出 ”哈哈哈!!!“,可以连接数据库了,但这不是我想要的。
求解释。。。 展开
$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 ,即可以输出 ”哈哈哈!!!“,可以连接数据库了,但这不是我想要的。
求解释。。。 展开
2个回答
2012-03-30 · 知道合伙人软件行家
关注
展开全部
isset 函数的功能是检测变量是否设置。如果 var 存在则返回 TRUE,否则返回 FALSE。
若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节("\0")并不等同于 PHP 的 NULL 常数。
我觉得你可以用is_null()函数来测试一下,isset($userName) || isset($passWord) 里的变量是不是null。
若使用 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))
{
}
判断输入的用户名和密码不能为空
我想这才是你的本来意思
在提交后应该用
if(!empty($userName) && !empty($passWord))
{
}
判断输入的用户名和密码不能为空
我想这才是你的本来意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询