$ Recruitcheck / $ badgecheck на самом деле работает, и он возвращается правильно, и он обеспечивает проверенное эхо, но я предполагаю, что я делаю что-то не так с вещами store / bind / close, так как у меня возникли проблемы с выяснением, как именно это работает ,
Проблема возникает с $ emailcheck / $ namecheck, потому что он не точно возвращает запрос, и он как бы обходит этап $ register, где он возвращает эхо ошибки, поэтому $ 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;}
Проверка рекрута на самом деле работает, так как она изменяется с неверным вводом по сравнению с правильным, но код не переходит должным образом к следующим проверкам.
Ты звонишь mysqli_close()
за $emailcheck
а также $namecheck
запросы, прежде чем позвонить mysqli_num_rows()
на них.
Других решений пока нет …