A レベルのプログラミング コースワークを行っていますが、問題が発生しています。あなたの一人が私を助けてくれることを願っています。
私はメンバーシステムをセットアップしています。現在、私は電子メールの有効化段階にあります。接続されたデータベースで php と mysqli コーディングを使用して、電子メール アクティベーション リンクを機能するように設定できました。これにより、ユーザーがアクティベーション リンクをクリックすると、「アクティブ」データベース フィールドが「0」から設定されて、ユーザーのアカウントがアクティベートされます。 「1」に。
私が抱えている唯一の問題は、ユーザーが電子メールでアクティブ化リンクを再度クリックした場合、ユーザーが既にアクティブであるため、「このアカウントは既にアクティブ化されています」というメッセージを表示することです。これは、ユーザーがアカウントを再度アクティブ化できないようにするためです。
しかし、このメッセージを表示することはできません。ユーザーがすでにアカウントを有効にしているにもかかわらず、「アカウントが有効になっています」というメッセージが表示され続けます。私が間違っていることを誰かが知っていますか?
以下は私のコードです:
<?php
$user_to_be_activated = $_GET['user'];
$code_to_be_matched = $_GET['code'];
$code_activated = 1;
// don't use $mysqli->prepare here
$query = "SELECT TeacherUsername, Active, Code FROM Teacher WHERE TeacherUsername = ? AND Code = ? ";
// prepare query
$stmt=$mysqli->prepare($query);
// You only need to call bind_param once
$stmt->bind_param("ss",$user_to_be_activated, $code_to_be_matched);
// execute query
$stmt->execute();
// get result and assign variables (prefix with db)
$stmt->bind_result($dbTeacherUsername, $dbActive, $dbCode);
//get number of rows
$stmt->store_result();
$counting = $stmt->num_rows();
if($counting == '1')
{
if($dbActive == '1')
{
echo "This Account has already been Activated";
}
else{
$updatesql = "UPDATE Teacher SET Active = ? WHERE TeacherUsername = ? AND Code = ?";
$update = $mysqli->prepare($updatesql);
$update->bind_param("sss", $code_activated, $user_to_be_activated, $code_to_be_matched);
$update->execute();
$update->close();
echo "Account is Activated";
}
}
else
{
echo "The Code and Username doesn't match! Account is not Activated.";
}
?>