$ _SESSION vars устанавливается на ноль на GoDaddy

Это основной сценарий входа, который я создал на сервере 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();
}

Edit1: индексная страница

<?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';
?>

0

Решение

Попробуй добавить 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

0

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

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

0

По вопросам рекламы [email protected]