php表单无法识别sql db中的用户名

时间:2013-03-30 12:36:59

标签: php mysql sql forms login

我的问题是:

 <?php
 function user_exists($username) {
$username = sanitize($username);
return (mysql_result(mysql_query("SELECT_COUNT('user_id') FROM `user` WHERE `username` = '$username'"), 0) == 1) ? true : false;
 }
 ?>

正如您所看到的,我已经包含了我的数据库名称,该名称是正确的,用户是否存在,这就是我从sql中调用它的地方:

<?php
include 'core/init.php';

if (user_exists('dan') === true) {
echo 'exists';
} 

 die();

if (empty($_POST) === false) {
$username = $_POST['username'];
$password = $_POST['password'];

if(empty($username) === true || empty($password) === true {

    $errors[] = 'You need to enter a username and password';
} else if (user_exists($username) === false) {
    $errors[] = 'Sorry this user does not exist';
}
}
?>

我不知道为什么我会得到一个空白页面而且它没有显示说该用户存在的消息?

3 个答案:

答案 0 :(得分:1)

这里可能是您的语法错误,无法解决

(mysql_result(mysql_query("SELECT_COUNT('user_id') FROM `user` WHERE `username` = '$username'"), 0) == 1) ? true : false;

SELECT COUNT删除下划线“_”之间留出空格,因为它会给你mysql错误

答案 1 :(得分:1)

除了你查询中的那个愚蠢的拼写错误之外,你使用mysql API的方式确实很糟糕。
需要注意的一些关键缺陷

  • 用于构建查询的“sanitize”函数应该在返回值周围添加引号。否则它将没有任何好处并导致你注射。
  • 您没有检查mysql错误
  • 你正在用一行编写代码,这使得它非常难以阅读。

至少应该是什么

function user_exists($username) {
    $username = sanitize($username); // remember it should add the quotes
    $sql = "SELECT COUNT(1) FROM `user` WHERE `username` = $username";
    $res = mysql_query($sql) or trigger_error(mysql_error().$sql);
    $row = mysql_fetch_row($res);
    return !empty($row[0]);
 }
  

我不确定为什么我会得到一个空白页。

最有可能是由于某些PHP错误引起的 告诉PHP在屏幕上显示它们或查看服务器错误日志以阅读错误消息

或者数据库中没有这样的用户。

所以,让你的代码像这样

<?php
ini_set('display_errors',1);
error_reporting(E_ALL);

echo "testing<br>";

include 'core/init.php';

if (user_exists('dan')) {
   echo 'exists';
} else {
   echo 'not found';
}

答案 2 :(得分:0)

问题出在这里

 SELECT_COUNT('user_id')
       ^ 

应该是

 SELECT COUNT('user_id')