$ recruitcheck/$ badgecheck實際上可以正常工作,並且它可以正確返回,並且它提供了已驗證的回顯,但是我認爲我在存儲/綁定/關閉方面做了一些不正確的事情,因爲我在準確計算有用。我錯過了什麼導致:命令不同步;你現在不能運行這個命令?
問題出現在$ emailcheck/$ namecheck中,因爲它不能準確地返回查詢,而且它有點繞過$ register階段,它返回錯誤echo,所以$ emailcheck/$ namecheck總是假/ 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的調試技巧:剪切一些代碼直到它工作,然後逐行放回去。這不是唯一的技術,並不總是最好的,但對於初學者來說可能是非常有用的,有時也可以快速找出問題的根源。 –
我插入了一個fetch,但它仍然不運行$ emailcheck/$ namecheck。 –
@BaileyF:請向我們展示'$ passcheck','$ recruitpass'和'$ badgecheck'的內容。 –