2

こんにちは、私はこのチュートリアルをphp academyからphpとmysqlのログインおよび登録フォームで行っています。それは順調に進んでいた..彼は、それを言う正しい方法を特定する方法を示していたが、エラーをエコーする関数を作成する方法を示していた..そうだね。したがって、最初のいくつかのエラーは正しくエコーされましたが、user_id と whatknot を実際に検証するエラーは機能していません。正しい情報を送信しても、ユーザー名とパスワードの組み合わせが正しくない場合に作成したエラーが表示されます。ダミーのユーザーを何人か作成しましたが、誰も通過できません。

これは私のコードです..

include 'core/init.php';
include 'includes/overall/header.php';

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

if (empty($username) === true || empty($password) === true) {
$errors[] = 'Uh oh! You forgot to enter your username and password';

} else if (user_exists($username) === false) {
$errors[] = 'Who is that? Have you registered?';

} else if (user_active($username) === false) {
$errors[] = 'Account is not activated.';

} else {

$login = login($username, $password);
if ($login === false) {
$errors[] = 'That username and password combination is incorrect';

} else {
    $_SESSION['user_id'] = $login;
    header('Location:index.php');
    exit();
    }
}
print_r($errors);
}

include 'includes/overall/footer.php';

function logged_in() {
return (isset($_SESSION['user_id'])) ? true : false;
}

function user_exists($username) {
$username = sanitize($username);
$query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username'");
return (mysql_result($query, 0) == 1) ? true : false;
}


function user_active($username) {
$username = sanitize($username);
$query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `active` = 1");
return  (mysql_result($query, 0) == 1) ? true : false;
}

function user_id_from_username($username) {
$username = sanitize($username);
return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id');
}

function login($username, $password) {
$user_id = user_id_from_username($username);

$username = sanitize($username);
$password = md5($password);

$query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'");
return (mysql_result($query, 0) == 1) ? $user_id : false;
}

誰かが私が間違っていることを知っていますか? 私はいくつかのことを試しましたが、何も機能しません。たとえば、ビデオでは、彼は少し違った方法でクエリを並べていますが、エラーが発生していたので、彼が最初に持っていた方法でそれを行い、クエリ変数を作成しました (私は自分が何をしているのか少ししかわかりません実際には笑と言っています..しかし、それはエラーを修正しました。私は他の関数(表示されていません)に対してそれを試みましたが、それは多くのエラーを引き起こしました:(

それは本当に愚かなことですか?以前にも同様の問題がありましたが、セミコロンがないことが原因であることがわかりましたが、この愚かなコードを長い間見つめていて、何も見つかりませんでした..すべてを説明するチュートリアルシリーズのビデオをもう一度見ました.これはそれぞれ10回くらい..私の目は出血したり爆発したりするように感じます. コメントのいくつかは、他の人が同様の問題を抱えていることを示しています..ヘルプ?

私はこのphp mysqlのすべてに慣れていないので..子供のように私に話しかけても気分を害することはありません..実際、感謝しています。

ありがとう。

4

2 に答える 2

0

これは私のコードです:

function user_exists($username) {
  $username = sanitize($username); 
  return (mysql_result(mysql_query("SELECT * FROM `users` WHERE `username` = '$username' "),0) ==1) ? true : false; 
}
于 2014-01-09T07:38:48.487 に答える