我是PHP编码的新手,我正在尝试创建一个登录页面,但是我收到了一个我不理解的错误。
的login.php
<html>
<body>
<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form name="form1" method="post" action="login_dash.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3"><strong>User Login </strong></td>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"><input name="myusername" type="text" id="myusername"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input name="mypassword" type="text" id="mypassword"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="Submit" value="Login"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
</body>
</html>
login_dash.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
//var_dump($_POST);
// Grab User submitted information
$user = $_POST["myusername"];
$pass = $_POST["mypassword"];
// Connect to the database
$con = mysql_connect("localhost","root","","jj");
// Make sure we connected succesfully
if(! $con)
{
die('Connection Failed'.mysql_error());
}
// Select the database to use
mysql_select_db("jj",$con);
$result = mysql_query("SELECT myusername, mypassword FROM login WHERE myusername = $user");
var_dump($result);
$row = mysql_fetch_array($result,$con);
if($row["myusername"]==$user && $row["mypassword"]==$pass)
echo"You are a validated user.";
else
echo"Sorry, your credentials are not valid, Please try again.";
?>
</body>
</html>
我得到了以下错误,我无法理解
错误:
警告:mysql_fetch_array()要求参数1为资源,第27行的C:\ xampp \ htdocs \ SRK \ login_dash.php中给出布尔值
答案 0 :(得分:1)
这是因为您的查询无法执行,因为用户名未包含在引号内。
$result = mysql_query("SELECT myusername, mypassword FROM login WHERE myusername = '$user'");
此mysql_*
)扩展程序自PHP 5.5.0
起已弃用,将来会被删除。相反,应使用MySQLi
或PDO_MySQL
扩展程序的准备好的语句来抵御SQL Injection attacks !
答案 1 :(得分:1)
此错误是因为查询返回false,因此出错。 试试
$result = mysql_query("SELECT myusername, mypassword FROM login WHERE myusername = '$user'");
在PHP 5.5中不推荐使用mysql函数,你应该使用PDO或mysqli
答案 2 :(得分:0)
无论如何你必须检查
if (null != $rseult && 0 != count(result)) {
$row = mysql_fetch_array($result,$con);
}
答案 3 :(得分:0)
这样做怎么样?
$query = "SELECT myusername, mypassword FROM login WHERE myusername = '$user' AND mypassword = '$pass' ";
$result_set = mysql_query($query);
if (mysql_num_rows($result_set) == 1) {
// your code here - basically LOGGED IN
}
else {
// NOT logged in
}
干杯, 马丁