Сеанс PHP работает на моем сервере веб-хостинга, но не на моем локальном сервере XAMPP - PullRequest
0 голосов
/ 10 марта 2019

Я делаю скрипт входа в PHP с сессиями.Я сделал сеанс под названием Пользователь.Если пользователь вошел в систему, сеанс будет запущен.На моем сервере веб-хостинга все выглядело нормально.Но на моем собственном сервере localhost xampp сеанс не был запущен.
Мой скрипт входа в систему с кодом:

<?php 
session_start();
require ('connection.inc.php');
    if(isset($_POST['Login'])) {
        htmlspecialchars($userName = $_POST['UName']);
        htmlspecialchars($password = $_POST['pwd']);
       if(empty($_POST['UName']) || empty($_POST['pwd'])) {
            header("location:../login.php?Empty= Vul alle velden in");
       }
       else {
            $sql= "SELECT * FROM users WHERE UName=? AND Pass=?";
            $stmt = mysqli_stmt_init($conn);
            if(!mysqli_stmt_prepare($stmt, $sql)) {
                header('Location: login.php?MYSQLI_ERROR');
            }
           else {
               mysqli_stmt_bind_param($stmt, "ss", $userName, $password);
               mysqli_stmt_execute($stmt);
               $result = mysqli_stmt_get_result($stmt); 
           }
            if($row = mysqli_fetch_assoc($result)) {
                if($row['2FAStatus'] == 0) {
                    $_SESSION['User'] =$row['UName'];
                    $_SESSION['ID'] =$row['ID'];
                    header("Location:../sessiontest.php?uid=".$row['UName']);
                    exit();
                }
                else if ($row['2FAStatus'] == 1) {
                    if(isset($_COOKIE['remember'])) {
                        $_SESSION['User'] =$row['UName'];
                        $_SESSION['ID'] =$row['ID'];                        
                        header("Location:../wellcome.php?uid=".$row['UName']);
                        exit();
                    }
                    else {
                        header('Location: ../2FALogin.php?request=valid');
                        exit();                        
                    }
                }
            }
            else {
                header("location:../login.php?Invalid= Verkeerd wachtwoord/gebruikersnaam combinatie");
                exit();
            }
       }
    }
    else {
        header('Location: inlogfail.html');
    }


Мой файл sessiontest.php имеет следующий код:

 if(isset($_SESSION['User'])) {
    echo 'yes';
    exit();
}
else {
    echo 'no';
    echo error_get_last();
    exit();
}

Нет ничего из вывода error_get_last ().Я вижу только «нет».но на моем сервере я вижу да.Кто-нибудь знает, что происходит?С уважением,

1 Ответ

0 голосов
/ 11 марта 2019

В вашем локальном xampp вы могли забыть установить session.save_path в свой php.ini ... проверьте также, существует ли ваш сеансовый путь ... Например, у меня есть это значение в моем php.ini:

session.save_path = 'F:\Apache24\tmp' (http://php.net/manual/en/session.configuration.php#ini.session.save-path)

Также поместите в свой: sessiontest.php

<?php if (session_status() == PHP_SESSION_NONE) { session_start(); } ?>

как показано ниже

<?php
if (session_status() == PHP_SESSION_NONE) { session_start(); }
if (isset($_SESSION['User'])) {
  echo 'yes';
  exit();
} else {
  echo 'no';
  echo error_get_last();
  exit();
}
?>

Не забудьте поставитьэта строка вверху, где вы работаете с сессией ...

Надеюсь, это поможет.

...