-3

私の問題はこれです:

 <?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';
}
}
?>

空白のページが表示され、ユーザーが存在するというメッセージが表示される理由がわかりません。

4

3 に答える 3

1

クエリのばかげたタイプミスは別として、mysql API の使用方法は実にひどいものです。
注意すべきいくつかの重大な欠陥

  • クエリの作成に使用される「サニタイズ」関数は、戻り値を引用符で囲む必要があります。そうしないと効果がなく、注射につながります。
  • あなたはmysqlエラーをチェックしていません
  • コードを 1 行で書いているため、非常に読みにくくなっています。

最低限どうあるべきか

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';
}
于 2013-03-30T12:51:03.403 に答える
1

これは、発火できなかった構文エラーである可能性があります

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

mysql エラーが発生するため、アンダースコア「_」SELECT COUNT削除します。

于 2013-03-30T12:40:51.327 に答える