Sam Vorst Ответов: 1

Ошибка входа в систему PHP SQL


Привет,

Я создаю систему входа PHP через учебник, но у меня есть ошибка, которую я не знаю, как ее решить..
В моем url-адресе я получаю sqlerror.
У меня есть dbhandler в другом файле, но я уверен, что это не проблема, потому что он работает в другом файле.
Я проверил синтаксические ошибки, и это не проблема..
Кто-нибудь может мне помочь?
Это мой код.:
<pre><?php
if (isset($_POST['signup-submit'])) {

  require 'dbh.inc.php';

  $username = $_POST['uid'];
  $email = $_POST['mail'];
  $password = $_POST['pwd'];
  $passwordrepeat = $_POST['pwd-repeat'];

if (empty($username) || empty($email) || empty($password) || empty($passwordrepeat)) {
    header("Location: ../signup.php?error=emptyfields&uid=".$username."&mail=".$email);
    exit();
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL) && !preg_match("/^[a-zA-Z0-9]*$/", $username)) {
    header("Location: ../signup.php?error=invalidmailuid=");
    exit();
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    header("Location: ../signup.php?error=invalidmail&uid=".$username);
    exit();
} elseif (!preg_match("/^[a-zA-Z0-9]*$/", $username)) {
    header("Location: ../signup.php?error=invaliduid&mail=".$email);
    exit();
} elseif ($password !== $passwordrepeat) {
    header("Location: ../signup.php?error=passwordcheck&uid=".$username."&mail=".$email);
    exit();
} else {

  $sql = "SELECT uidUsers FROM users uidUsers=?";
  $stmt = mysqli_stmt_init($conn);
  if (!mysqli_stmt_prepare($stmt, $sql)) {
    header("Location: ../signup.php?error=sqlerror");
    exit();
} else {
  mysqli_stmt_bind_param($stmt, "s", $username);
  mysqli_stmt_execute($stmt);
  mysqli_stmt_store_result($stmt);
  $resultCheck = mysqli_stmt_num_rows($stmt);
  if ($resultCheck > 0) {
    header("Location: ../signup.php?error=usertaken&mail=".$email);
    exit();
} else {

  $sql = "INSERT INTO users (uidUsers, mailusers, pwdUsers) VALUES (?, ?, ?)";
  $stmt = mysqli_stmt_init($conn);
  if (!mysqli_stmt_prepare($stmt, $sql)) {
    header("Location: ../signup.php?error=sqlerror");
    exit();
} else {
  $hashedPwd = password_hash($password, PASSWORD_DEFAULT);

  mysqli_stmt_bind_param($stmt, "sss", $username, $email, $hashedPwd);
  mysqli_stmt_execute($stmt);
  header("Location: ../signup.php?signup=success");
  exit();
}

}

}

}
 mysqli_stmt_close($stmt);
 mysqli_close($conn);

} else {
  header("Location: ../signup.php");
  exit();
}


Спасибо Сэм

Что я уже пробовал:

Я попытался следовать учебнику для простой системы входа в систему от mmtuts на yt.

Richard MacCutchan

В чем же ошибка? При предположении, что в вашем операторе SELECT отсутствует слово "WHERE" перед конечным условием. Как предлагает OriginalGriff, вы должны выбросить этот код в мусорное ведро и изучить несколько правильных учебников. Те, кто в W3Schools Online Web Tutorials[^] все очень легко следовать.

1 Ответов

Рейтинг:
1

OriginalGriff

Цитата:
Я попытался следовать учебнику для простой системы входа в систему от mmtuts на yt.

Так что возвращайтесь туда и спросите его - он будет знать о своем коде больше, чем мы.

Но, честно говоря, если таково качество его кода в лучшем случае, я бы выбросил его в мусорное ведро и пошел дальше ...


Sam Vorst

Но, может быть, вы видите ошибку, я не могу спросить его об этом, потому что он не собирается мне отвечать.

Sam Vorst

Ладно, почему код такой плохой?