如何解决登录页面中的错误

时间:2014-04-07 11:26:42

标签: php mysql database

我是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>&nbsp;</td>
<td>&nbsp;</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中给出布尔值

4 个答案:

答案 0 :(得分:1)

这是因为您的查询无法执行,因为用户名未包含在引号内。

$result = mysql_query("SELECT myusername, mypassword FROM login WHERE myusername = '$user'");

mysql_*)扩展程序自PHP 5.5.0起已弃用,将来会被删除。相反,应使用MySQLiPDO_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
}

干杯, 马丁