2015-10-06 2 views
0

У меня проблема с моими переменными сеанса PHP, которые, похоже, не сохраняются в моих сценариях входа и заголовка. Я пробовал несколько мелких исправлений (в основном из вопросов StackOverflow), ни один из которых не работал, и я тестировал это в IE, Firefox, Chrome и Safari - никто из них не работает. Вот мои скрипты:Переменные сеанса не сохраняются после входа в систему

login.php

<div id="wrapper"> 
    <div id="header"><?php include "header.php"; ?></div> 
    <div id="content"> 
    <img src='images/login.png' alt='Login' height="100px" /><br /> 
    <form method="POST" action="login.php"> 
     <table class='invisitable'><tr><td><label for='username' style='font-size: 18pt;'>Username: </label></td><td><input type='text' name='username' /></td></tr> 
     <tr><td><label for='username' style='font-size: 18pt;'>Password: </label></td><td><input type='password' name='password' /></td></tr></table><br /> 
     <input type='submit' name='submit' value='Login' /> 
    </form> 
    <?php 
     if (isset($_POST['submit'])){ 
     $username = mysql_real_escape_string(strip_tags($_POST['username'])); 
     $password = mysql_real_escape_string(strip_tags($_POST['password'])); 
     if ($username != "" && $password != ""){ 
      $hash = '$2a$07$Hf74GHfahoAH43sdhuvJThistleo4gBGJKRWQaa423hi2Ho1'; 
      $userDetails = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE username = '$username'", $db)); 
      $hashedPassword = $userDetails['password']; 
      if(crypt($password, $hashedPassword) == $hashedPassword){ 
      $passwordIsCorrect = true; 
      } else { $passwordIsCorrect = false; } 
      $loginQuery = mysql_query("SELECT * FROM users WHERE username = '$username'", $db) 
      or die("Error with database: ".mysql_error($db)); 
      if (mysql_num_rows($loginQuery) > 0 && $passwordIsCorrect){ 
      $userDetails = mysql_fetch_array($loginQuery); 
      session_start(); 
      ini_set(' session.save_path','/'); 
      $_SESSION['readometerUserID'] = $userDetails['id']; 
      echo $_SESSION['readometerUserID']; 
      echo "<p>Logged in</p>"; 
      // echo "<script language='Javascript'>setTimeout('location.href = \"http://www.readometer.co.uk/\";',100);</script>"; 
      } else{ 
      echo "<p>Incorrect details</p>"; 
      } 
     } 
     } 
    ?> 
    </div> 

    <?php include "footer.php"; // includes footer 
     include "closeConnection.php"; // closes connection 
     ?> 


    </div> 

header.php

<?php 
    function redirect() { 
    header('location:index.php'); 
    exit; 
    } 
    ini_set(' session.save_path','/'); 
    ?> 

<?php include_once("analyticstracking.php") ?> 

<?php 
    session_start(); 
    $db = mysql_connect("db580486371.db.1and1.com","dbo580486371","unthank/327"); 
    mysql_select_db("db580486371", $db); 
    if (isset($_SESSION['readometerUserID'])){ 
    $userDetails = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE id = ".$_SESSION['readometerUserID'], $db)); 
    } 
    if ($_SERVER['HTTP_HOST'] == "www.jamesthistlewood.co.uk" || $_SERVER['HTTP_HOST'] == "jamesthistlewood.co.uk"){ 
    header("Location: http://readometer.co.uk/"); 
    } 
?> 

<script src="//code.jquery.com/jquery-1.10.2.js"></script> 
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script> 
<script> 
$(document).ready(function(){ 
$(".navbtn").mouseover(function() { 
    $(this).animate({ 
      backgroundColor: "#FF4A4A" 
    }, 300); 
}); 
$(".navbtn").mouseout(function() { 
    $(this).animate({ 
      backgroundColor: "#222222" 
    }, 300); 
}); 


}); 
</script> 
<div id='navbar'> 
<a href='index.php'><div id='navbtn' class='navbtn' style='min-width: 80px; background: url(/images/home.png); background-size: auto 80px; background-repeat: no-repeat; background-position: 50% 20%;'></div></a> 
    <?php echo "<a href='choosebook.php'><div id='navbtn' class='navbtn' style='min-width: 80px; background: url(/images/test.png); background-size: auto 80px; background-repeat: no-repeat; background-position: 50% 20%;'></div></a>"; //if (isset($userDetails)) 
    ?> 
    <a href='about.php'><div id='navbtn' class='navbtn' style='min-width: 80px; background: url(/images/about.png); background-size: auto 80px; background-repeat: no-repeat; background-position: 50% 20%;'></div></a> 
    <?php if (! isset($userDetails)) echo "<a href='signup.php'><div id='navbtn' class='navbtn' style='min-width: 80px; background: url(/images/signupBtn.png); background-size: auto 80px; background-repeat: no-repeat; background-position: 50% 20%;'></div></a>"; ?> 
    <?php if (! isset($userDetails)) echo "<a href='login.php'><div id='navbtn' class='navbtn' style='min-width: 80px; background: url(/images/loginBtn.png); background-size: auto 80px; background-repeat: no-repeat; background-position: 50% 20%;'></div></a>"; ?> 
    <a href='leaderboard.php'><div id='navbtn' class='navbtn' style='min-width: 80px; background: url(/images/leaders.png); background-size: auto 80px; background-repeat: no-repeat; background-position: 50% 20%;'></div></a> 
    <?php if (isset($userDetails)) echo "<a href='settings.php'><div id='navbtn' class='navbtn' style='min-width: 80px; background: url(/images/settings.png); background-size: auto 80px; background-repeat: no-repeat; background-position: 50% 20%;'></div></a>"; ?> 
    <?php if (isset($userDetails)) echo "<a href='signout.php'><div id='navbtn' class='navbtn' style='min-width: 80px; background: url(/images/logout.png); background-size: auto 80px; background-repeat: no-repeat; background-position: 50% 20%;'></div></a>"; ?> 
    <?php if (isset($userDetails) && $userDetails['id'] <= 3) echo "<a href='database.php'><div id='navbtn' class='navbtn'><div id='navbtnText'>Database management</div></div></a>"; ?> 

</div> 

Я понимаю, что это использовать MySQL вместо MySQLi, но начнет меняться что на моем сайте. Некоторые из кода немного дрянные, так что простите меня.

Моя конфигурация PHP относительно сеансов:

PHP Configuration for settings

Я очень признателен за любую помощь, спасибо!

+1

Сессия была запущена для login.php? –

+0

'session_start();' должно быть в самом начале каждой страницы, участвующей в сеансах. –

+0

Вы пробовали удивительные услуги консультантов Stack Overflow, но все еще используете функции 'mysql_'? Это очень неудачно :( –

ответ

0

Исправлено. Все, что мне нужно было сделать, это добавить, что session_start() был в начале каждой страницы, которая использовала его перед выходом, иначе мудрый он не сработает.

Смежные вопросы