PHP перенаправление после неверного входа

Итак, этот скрипт взят из учебника, который я честно прочитал, поэтому я не понимаю каждую его часть, так как я новичок в PHP, и это не весь мой код! (некоторые есть, а некоторые нет)

Таким образом, в основном это скрипт входа в систему, после входа он перенаправляет пользователя на страницу аккаунта, и это здорово. Однако, если они введут неправильные данные для входа, они все равно перенаправят их на эту страницу. Это, очевидно, плохо, так как отображает страницу учетной записи пользователя за вычетом всех битов, которые заполняются через соединение с базой данных их данными, поскольку это не было установлено.

Вот мой код, который отправляет HTML-форма (я скопировал весь файл, но я считаю, что основной код находится внизу от «// сохранить статус входа в сеанс», но я, конечно, могу ошибаться:

<?php
include 'user.php';
include 'index.php';
$user = new User();
if(isset($_POST['signupSubmit'])){
//check whether user details are empty
if(!empty($_POST['first_name']) && !empty($_POST['last_name']) && !empty($_POST['email']) && !empty($_POST['phone']) && !empty($_POST['password']) && !empty($_POST['confirm_password'])){
//password and confirm password comparison
if($_POST['password'] !== $_POST['confirm_password']){
$sessData['status']['type'] = 'error';
$sessData['status']['msg'] = 'Confirm password must match with the password.';
}else{
//check whether user exists in the database
$prevCon['where'] = array('email'=>$_POST['email']);
$prevCon['return_type'] = 'count';
$prevUser = $user->getRows($prevCon);
if($prevUser > 0){
$sessData['status']['type'] = 'error';
$sessData['status']['msg'] = 'Email already exists, please use another email.';
}else{
//insert user data in the database
$userData = array(
'first_name' => $_POST['first_name'],
'last_name' => $_POST['last_name'],
'email' => $_POST['email'],
'password' => md5($_POST['password']),
'phone' => $_POST['phone'],
'postcode' => $_POST['postcode'],
'travel' => $_POST['travel'],
'driver' => $_POST['driver'],
'main' => $_POST['main'],
'prop' => $_POST['prop'],
'hooker' => $_POST['hooker'],
'second_row' => $_POST['second_row'],
'flanker' => $_POST['flanker'],
'eight' => $_POST['eight'],
'scrum_half' => $_POST['scrum_half'],
'fly_half' => $_POST['fly_half'],
'centre' => $_POST['centre'],
'winger' => $_POST['winger'],
'full_back' => $_POST['full_back'],
'available' => $_POST['available'],

);
$insert = $user->insert($userData);
//set status based on data insert
if($insert){
$sessData['status']['type'] = 'success';
$sessData['status']['msg'] = 'You have registered successfully, log in with your credentials.';
}else{
$sessData['status']['type'] = 'error';
$sessData['status']['msg'] = 'Some problem occurred, please try again.';
}
}
}
}else{
$sessData['status']['type'] = 'error';
$sessData['status']['msg'] = 'All fields are mandatory, please fill all the fields.';
}
//store signup status into the session
$_SESSION['sessData'] = $sessData;
$redirectURL = ($sessData['status']['type'] == 'success')?'index.php':'registration.php';
//redirect to the home/registration page
header("Location:".$redirectURL);
}elseif(isset($_POST['loginSubmit'])){
//check whether login details are empty
if(!empty($_POST['email']) && !empty($_POST['password'])){
//get user data from user class
$conditions['where'] = array(
'email' => $_POST['email'],
'password' => md5($_POST['password']),
'status' => '1'
);
$conditions['return_type'] = 'single';
$userData = $user->getRows($conditions);
//set user data and status based on login credentials
if($userData){
$sessData['userLoggedIn'] = TRUE;
$sessData['userID'] = $userData['id'];
$sessData['status']['type'] = 'success';
$sessData['status']['msg'] = 'Welcome '.$userData['first_name'].'!';
}else{
$sessData['status']['type'] = 'error';
$sessData['status']['msg'] = 'Wrong email or password, please try again.';
}
}else{
$sessData['status']['type'] = 'error';
$sessData['status']['msg'] = 'Enter email and password.';
}
//store login status into the session
$_SESSION['sessData'] = $sessData;
//redirect to the home page
header("Location:http://www.example.com/successful_login.php");
}elseif(!empty($_REQUEST['logoutSubmit'])){
//remove session data
unset($_SESSION['sessData']);
session_destroy();
//store logout status into the ession
$sessData['status']['type'] = 'success';
$sessData['status']['msg'] = 'You have logout successfully from your account.';
$_SESSION['sessData'] = $sessData;
//redirect to the home page
header("Location:http://www.example.com");
}else{
//redirect to the home page
header("Location:index.php");
}
?>

Я пытался изменить:

 $sessData['status']['type'] = 'error';
$sessData['status']['msg'] = 'Wrong email or password, please try again.';

Для того, чтобы:

 $sessData['status']['type'] = 'error';
$sessData['status']['msg'] = 'Wrong email or password, please try again.';
header("Location:www.loginpage.com");

Но это не имеет никакого значения

-2

Решение

Вы должны двигаться header("Location:http://www.example.com/successful_login.php"); Чтобы просто под: if($userData){ Так что это выглядит так:

if($userData){
$sessData['userLoggedIn'] = TRUE;
$sessData['userID'] = $userData['id'];
$sessData['status']['type'] = 'success';
$sessData['status']['msg'] = 'Welcome '.$userData['first_name'].'!';
header("Location:http://www.example.com/successful_login.php");
}

Причина, по которой вы всегда перенаправляетесь на домашнюю страницу, состоит в том, что код перенаправления должен быть в некоторой логике, которая в основном говорит (псевдокод):

if(user is logged in){
redirectToHomePage;
} else {
showMessage('Incorrect password');
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector