Логин и сеанс PHP получают данные из базы данных

Это мой код для входа в систему. После входа в систему я хочу использовать идентификатор пользователя в качестве первичного ключа для перехода на другую страницу. Я пробую много кода, но все еще не работаю. пожалуйста, помогите мне

if (isset($_POST['login']))
    {
        $email=$_POST['email'];
        $password=md5($_POST['password']);
        $sql  = "SELECT * FROM tbluser WHERE EmailAddress=:email and uPassword=:password";
        $query= $dbh -> prepare($sql);
        $query-> bindParam(':email', $email, PDO::PARAM_STR);
        $query-> bindParam(':password', $password, PDO::PARAM_STR);
        $query-> execute();
        $results=$query->fetchAll(PDO::FETCH_OBJ);
        if ($query->rowCount() > 0)
        {
            $_SESSION['login']=$_POST['email'];
            $_SESSION['fname']=$results->FullName;
            $_SESSION['uid']=$results['UserID'];
            $currentpage=$_SERVER['REQUEST_URI'];
            echo "<script type='text/javascript'> document.location = '$currentpage'; </script>";
        } else{

            echo "<script>alert('Invalid Details');</script>";

        }

    }

И как вызвать идентификатор пользователя на другой странице.

md5() устарел для хеширования паролей и должен не использоваться. PHP предоставляет password_hash () и password_verify (), используйте их. А вот и хорошие идеи о паролях. Если вы используете версию PHP до 5.5, здесь доступен пакет совместимости.
John Conde 29.08.2018 20:12

Не используйте JavaScript или метатеги для перенаправления веб-страницы. Вместо этого используйте Location: header. Проверьте PHP правильный путь для получения более свежих советов.

John Conde 29.08.2018 20:13

Вы уверены, что $currentpage установлен и имеет правильное значение?

John Conde 29.08.2018 20:13

Хорошо, благодарим за рекомендацию .$currentspage за звонок для просмотра текущей страницы

Muhammad Wazexr 29.08.2018 20:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
96
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

тебе нужен session_start()

if ($query->rowCount() > 0)
            {
                session_start();
                $_SESSION['login']=$_POST['email'];
                $_SESSION['fname']=$results->FullName;
                $_SESSION['uid']=$results['UserID'];
                $currentpage=$_SERVER['REQUEST_URI'];
                echo "<script type='text/javascript'> document.location = '$currentpage'; </script>";
            }

а затем вы запускаете сеанс с session_start () на другой странице, и он будет работать.

ВСЕ странице требуется session_start () для использования сеанса

Dice 29.08.2018 20:26

@MuhammadWazexr использует session_start () поверх каждой страницы, таким образом, переменные $ _SESSION будут сохранены

Ruben Perdigao 29.08.2018 20:27

@Dice Хорошо, сэр. а этот код правильный? $_SESSION['uid']=$results['UserID'];

Muhammad Wazexr 29.08.2018 20:30

да. Снимите электронную почту, вы можете легко получить ее с помощью запроса, если у вас есть userID

Dice 29.08.2018 20:32

Вот как вы используете сеанс, помещайте его в начало или каждый файл php, где он вам нужен

 <?php

        session_start();

        include("./Models/db_connect.php");
        include('./Controllers/Functions/PHP/messages.php');
        include('./Models/actual_date.php');
        $actual_date = get_date($db);

        switch(isset($_POST['login'])):  
            case 'Register':
            $email = htmlspecialchars(trim($_POST['em']), ENT_QUOTES, 'UTF-8');
            $password = htmlspecialchars(trim($_POST['pw']), ENT_QUOTES, 'UTF-8');

            // check if the combination fname/lname/email is already used
            include('./Models/log_check.php');
            unset($_SESSION['ID'],$_SESSION['role']);
            $_SESSION['ID'] = $row['ID'];
            $_SESSION['role'] = $row['role'];

            if (intval($row['ID']) > 0){
                include('./Models/status_update.php');
                $successmsg = "Connexion réussie! Redirection en cours";
                header('refresh:5;url=./index.php?page=Lobby');
                if ($_SESSION['role'] === 'vet') {
                    include './Views/html_top_vets.php'; 
                } else {
                    include './Views/html_top_clients.php'; 
                }

                include('./Views/lobby.php');
            } else {
                $errormsg = "   
                <p>Vous n'avez pas de compte ou la combinaison est incorrecte!</p>";
                include('./Views/html_top_login.php');
                include('./Views/login.php');
            }
            break;
            default:
            include('./Views/html_top_login.php');
                include('./Views/login.php');
        endswitch;
    ?>

Другие вопросы по теме