У меня проблема с моими переменными сеанса 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 относительно сеансов:
Я очень признателен за любую помощь, спасибо!
Сессия была запущена для login.php? –
'session_start();' должно быть в самом начале каждой страницы, участвующей в сеансах. –
Вы пробовали удивительные услуги консультантов Stack Overflow, но все еще используете функции 'mysql_'? Это очень неудачно :( –