PHP会话可以在我的虚拟主机服务器上运行,但不能在XAMPP本地服务器上运行

时间:2019-03-10 19:43:05

标签: php session xampp localhost

我正在制作带有会话的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 :(得分:0)

在您本地的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();
}
?>

别忘了将此行放在会话工作的顶部...

希望获得帮助。