$ _SESSION vars устанавливается на ноль на GoDaddy - PullRequest
0 голосов
/ 27 июня 2018

Это основной сценарий входа в систему, который я создал на сервере XAMMP на моем локальном компьютере. Отлично работал на локальном сервере. Загрузил его на мой Windows хостинг, и он больше не работает. Сценарий правильно вводит имя пользователя и пароль, которые вводит пользователь, и правильно его проверяет. Однако кажется, что переменные $ _SESSION устанавливаются в нуль. Однако я знаю, что массив, который он использует для установки переменных, не является нулевым, потому что он фактически использует тот же массив для проверки учетных данных для входа. В настоящее время, когда вы входите в систему, вы получаете сообщение об успехе в строке URL, как установлено в коде, и корректно получаете ошибки, когда это необходимо, поэтому проверка не является проблемой. Также я дважды проверил, что сессия действительно запущена, однако, похоже, она не обновляется. У меня также есть метод session_start () в моем заголовке, который включен во все мои страницы в качестве независимого скрипта, который включен вверху страницы. Я попытался удалить его, и сценарий входа в систему будет единственным кодом, который запускает этот сеанс, и это не имеет значения Однако, если я включаю настройку сессионных переменных в сам заголовок, он работает нормально. Так что каким-то образом переменные сессии устанавливаются в ноль. Есть идеи?
Edit2: вы можете перейти на selfscales.com, чтобы увидеть ошибку в действии

<?php

 session_start();

if(isset($_POST['submit'])) {
include 'dbh.inc.php';
$uid = mysqli_real_escape_string($conn, $_POST['uid']);
$pwd = mysqli_real_escape_string($conn, $_POST['pwd']);

//error handlers 
//check if inputs are empty
if(empty($uid) || empty($pwd)){
    header("Location: ../index.php?login=empty");
    exit();

} else {
    $sql = "SELECT * FROM users WHERE user_uid='$uid' OR user_email='$uid'";
    $result = mysqli_query($conn, $sql);
    $resultCheck = mysqli_num_rows($result);
    if($resultCheck < 1) {
        header("Location: ../index.php?login=error");
        exit();
    } else {
        if($row = mysqli_fetch_assoc($result)){
            //deashing the password 
            $hashedPwdCheck = password_verify($pwd, $row['user_pwd']);
            if($hashedPwdCheck == false){
            header("Location: ../index.php?login=error");
            exit();
            } elseif ($hashedPwdCheck == true) {
                //login in the user here
                $_SESSION['u_id'] = $row['user_id'];
                $_SESSION['u_first'] = $row['user_first'];
                $_SESSION['u_last'] = $row['user_last'];
                $_SESSION['u_email'] = $row['user_email'];
                $_SESSION['u_uid'] = $row['user_uid'];
                header("Location: ../index.php?login=success");
                exit();
            }
            }
    }
}


     }
  else {
   header("Location: ../index.php?login=error");
   exit();
    }

Редактировать1: Страница указателя

<?php
  include_once 'header.php';
   include 'includes/ssdb.inc.php';
  ?>
     <link rel="stylesheet" href="testingPHP/stylesheets/w3.css">
    <section class="main-container">
    <div class="main-wrapper">
    <?php
    if(isset($_SESSION['u_id'])){
        echo '<h2>Weigh</h2>';
     } else{
        echo '<h2>Welcome To Selfscale!</h2>';
        echo '<h4>Selfscale is a web application that eliminates the need 
        for a scalehouse.</h4>';
        echo '<h4>Selfscale allows truck drivers to purchase a weigh 
          without the need to talk to anyone.</h4>';
        echo '<h4>Please sign in or login.</h4>';
        echo '<h4> Notice: First time users will need to register their 
        company, truck and trailer.</h4>';
        echo '<h4>Then purchase a weigh for a small fee.</h4>';
        echo '<h4>You will have the option to download your weigh ticket, 
         email it to yourself, or print it out the old fashion way.</h4>';
        include 'weighForm.php';
     }



    ?>
    <?php
     if(isset($_SESSION['u_id'])){

     }
     ?>

</div>
</section>

 <?php
 include_once 'footer.php';
 ?>

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

В конце концов я позвонил в службу поддержки GoDaddy. Проблема заключалась в том, что путь сохранения по умолчанию для метода session_start () не был действительным каталогом на сервере. Это было проблемой с их стороны и было решено быстро. Спасибо всем, кто пытался помочь!

0 голосов
/ 27 июня 2018

Попробуйте добавить ob_start() поверх вашего скрипта, который может решить вашу проблему.

<?php
 ob_start();
 session_start();

if(isset($_POST['submit'])) {
include 'dbh.inc.php';
$uid = mysqli_real_escape_string($conn, $_POST['uid']);
$pwd = mysqli_real_escape_string($conn, $_POST['pwd']);

//error handlers 
//check if inputs are empty
if(empty($uid) || empty($pwd)){
    header("Location: ../index.php?login=empty");
    exit();

} else {
    $sql = "SELECT * FROM users WHERE user_uid='$uid' OR user_email='$uid'";
    $result = mysqli_query($conn, $sql);
    $resultCheck = mysqli_num_rows($result);
    if($resultCheck < 1) {
        header("Location: ../index.php?login=error");
        exit();
    } else {
        if($row = mysqli_fetch_assoc($result)){
            //deashing the password 
            $hashedPwdCheck = password_verify($pwd, $row['user_pwd']);
            if($hashedPwdCheck == false){
            header("Location: ../index.php?login=error");
            exit();
            } elseif ($hashedPwdCheck == true) {
                //login in the user here
                $_SESSION['u_id'] = $row['user_id'];
                $_SESSION['u_first'] = $row['user_first'];
                $_SESSION['u_last'] = $row['user_last'];
                $_SESSION['u_email'] = $row['user_email'];
                $_SESSION['u_uid'] = $row['user_uid'];
                header("Location: ../index.php?login=success");
                exit();
            }
            }
    }
}


     }
  else {
   header("Location: ../index.php?login=error");
   exit();
    }

Надеюсь, это решит вашу проблему. Для большего понимания ob_start()

См. http://php.net/manual/en/function.ob-start.php

...