Прежде всего, session_start()
вызывается 2 раза.
Удалить повторный вызов внутри if ($password == $password2) {
В вашем коде также отсутствует ;
и некоторые }
(для правильного закрытия if
условия)
Теперь решение:
Прежде чем вы сможете обработать результат запроса к базе данных, вам необходимо подключиться к БД и выполнить соответствующую команду SQL, только тогда вы сможетеполучить результат, который вы хотите.В вашем коде отсутствует этот процесс.
Проверьте мои комментарии в своем коде ниже ↓, а затем проверьте снова в исправленном коде
if ($password == $password2) {
session_start(); // remove this repeated call
$password = ($password);
$sql="select * from account_info where (username='$username' or email='$email')";
if (mysqli_num_rows($res) > 0) { // $res isn't defined
$row = mysqli_fetch_assoc($res);
if ($username==$row['username'])
{
$_SESSION['message'] = "Username je vec registrovan";
}
else($email==$row['email']){ // `else` doesn't work this way, use `elseif`
$_SESSION['message'] = "Email je vec registrovan" // ; missing
}
Исправленный код :
if (isset($_POST['register_btn'])) {
$name = mysqli_real_escape_string($db, $_POST['name']);
$lastname = mysqli_real_escape_string($db, $_POST['lastname']);
$username = mysqli_real_escape_string($db, $_POST['username']);
$email = mysqli_real_escape_string($db, $_POST['email']);
$password = mysqli_real_escape_string($db, $_POST['password']);
$password2 = mysqli_real_escape_string($db, $_POST['password2']);
if ($password == $password2) {
$password = ($password);
$sql = "SELECT * FROM users WHERE (username='$username' OR email='$email')";
$res = mysqli_query($db, $sql); // you were calling $res but it wasn't defined; this connects to the DB and executes SQL and then assigns the result
if (mysqli_num_rows($res) > 0) {
$row = mysqli_fetch_assoc($res);
if ($username == $row['username']) {
$_SESSION['message'] = "Username je vec registrovan";
} elseif ($email == $row['email']) { // changed `else` to `elseif` to include the condition, `else` doesn't accept conditional checks
$_SESSION['message'] = "Email je vec registrovan"; // added ;
}
} else {
$sql = "INSERT INTO users (name, lastname, username, email, password) VALUES ('$name', '$lastname', '$username', '$email', '$password')";
if (mysqli_query($db, $sql)) {
// New record inserted
$_SESSION['message'] = "Sada si ulogovan";
$_SESSION['message'] = $username;
header("location: login.php");
} else {
echo("Error: " . mysqli_error($db));
}
}
} // required to close the password checking condition
else {
$_SESSION['message'] = "Ne podudaraju se lozinke!";
}
}
Предложения:
- Используйте подготовленный оператор вместо прямой передачи предоставленного пользователем ввода в SQL
(важно, ваш текущий код уязвим для внедрения SQL)) - Используйте IDE, которая поддерживает PHP и предлагает подсветку синтаксиса (Atom, код Visual Studio, PhpStorm и т. Д.)