var $ username需要检查匹配项。我怎么能这样做?
进度:
if (isset($_GET["username"]) && !empty($_GET["username"]))
{
$username = $_GET['username'];
$usercheck = mysql_query("SELECT * FROM wp_users WHERE user_login=".$username."",$con);
closeCursor($usercheck);
答案 0 :(得分:2)
这样做:
1)使用mysql_real_escape_string
转义变量以防止SQL注入
2)在where子句中使用变量周围的引号,因为它是一个字符串
3)使用mysql_num_rows
检查是否返回了超过0行。
$username = mysql_real_escape_string($_GET['username']);
$usercheck = mysql_query("SELECT * FROM wp_users WHERE user_login='".$username."'",$con);
if(mysql_num_rows($usercheck)>0)
echo 'USER FOUND';
else
echo 'NOT FOUND';
答案 1 :(得分:1)
嘿我建议出于安全原因使用sprintf。
$query = sprintf("SELECT * FROM friends WHERE user='%s' AND password='%s'",
mysql_real_escape_string($_GET['username']),
mysql_real_escape_string($_GET['password']);
// Perform Query
$result = mysql_query($query);
// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
答案 2 :(得分:0)
mysql_num_rows()会告诉您是否有任何用户与提供的用户名相匹配。您还应该使用mysql_real_escape_string
来确保安全地转义您的用户名值,以便在查询中使用。另外 - 确保你的字符串是mysql查询中的引号(使用单引号)。
这样的事情会让你指向正确的方向:
$username = mysql_real_escape_string($_GET['username'], $con);
$usercheck = mysql_query("SELECT * FROM wp_users WHERE user_login='".$username."'",$con);
if( mysql_num_rows($usercheck) <= 0 ) {
// error: no such user was found
} else {
// found one or more matching users
}