$ recruitcheck/$ badgecheckは実際に動作し、正しく返され、エコーが確認されますが、ストア/バインド/クローズのもので間違ったことをしていると思います。できます。私は何が欠けている原因です:コマンドが同期していない;今すぐこのコマンドを実行することはできませんか?
$ emailcheck/$ namecheckはクエリを正確に返さないので、エラーエコーを返す$ registerフェーズに迂回するので、$ emailcheck/$ namecheckは常にfalse/0。
セキュリティ機能を実装しようとしていますので、準備された文を追加しました。追加する前に自分のしていることをほとんど知らなかったので、この質問が適切でない場合は謝ります。十分な情報ではありません。あなたがコメントしている場合は、より関連性の高い投稿を編集します。私にチャンスを与えてください。
$recruitcheck = mysqli_prepare($maindb, "SELECT aurapass, recruitbadge FROM auras WHERE auraname = ?");
mysqli_stmt_bind_param($recruitcheck, "s", $recruitername);
mysqli_stmt_execute($recruitcheck);
mysqli_stmt_bind_result($recruitcheck, $passcheck, $badgecheck);
mysqli_stmt_fetch($recruitcheck);
if($passcheck == $recruitpass){
if($badgecheck == "valid"){
mysqli_close($recruitcheck);
echo "<script>alert('Recruiter badge verified.')</script>";
$emailcheck = mysqli_prepare($maindb, "SELECT * FROM auras WHERE email = ?");
mysqli_stmt_bind_param($emailcheck, "s", $email);
mysqli_stmt_execute($emailcheck);
mysqli_stmt_fetch($emailcheck);
$namecheck = mysqli_prepare($maindb, "SELECT * FROM auras WHERE auraname = ?");
mysqli_stmt_bind_param($namecheck, "s", $auraname);
mysqli_stmt_execute($namecheck);
mysqli_stmt_fetch($namecheck);
if(mysqli_num_rows($emailcheck)>0 || mysqli_num_rows($namecheck)>0){
die("<script>alert('New auraname/email is already taken.')</script>");
}
else{
mysqli_close($emailcheck);
mysqli_close($namecheck);
if($email == $emailconfirm){
$register = mysqli_prepare($maindb, "INSERT INTO auras (recruitername, recruitmethod, email, birthday, country, gender, auraname) VALUES (?, ?, ?, ?, ?, ?, ?)");
mysqli_stmt_bind_param($register, "sssisss", $recruitername, $recruitmethod, $email, $birthday, $country, $gender, $auraname);
mysqli_stmt_execute($register);
mysqli_close($register);
if(!$register) {
echo mysqli_error($maindb);
die("<script>alert('Error returned during registration: See bottom of page.')</script>");
}
else{
die("<script>alert('New aura registered successfully!')</script>");
$ passcheck/$ badgecheckは単にバインド変数であり、呼び出される場所はここでそれらを参照する場所です。それ以外の場合:それは正しい入力に対して間違ったと変わるよう
$recruitpass = cleaninput($_POST["recruitpass"]);
と
function cleaninput($info) {
$info = trim($info);
$info = stripslashes($info);
$info = htmlspecialchars($info);
return $info;}
recruitcheckは、実際には動作しますが、コードが適切に次のチェックに移動しません。
まさに私が言っていたことです。 @BaileyF私は101のデバッグ手法を追加したい:それが動作するまでいくつかのコードをカットし、それを1行ずつ戻す。これは唯一のテクニックではなく、必ずしも最高のものではありませんが、初心者にとっては本当に便利なことがあります。 –
フェッチを挿入しましたが、それでも$ emailcheck/$ namecheckは実行されません。 –
@BaileyF: '$ passcheck'、' $ recruitpass'、 '$ badgecheck'の内容を表示してください。 –