Я работаю над страницей, которая после входа в систему войдет на страницу только для участников. У меня был этот вход, работающий вчера вечером, затем я что-то изменил, и теперь кажется, что сеанс не остается установленным. Сегодня я теряю рассудок. Благодарю.php session(), похоже, не устанавливает
форма Войти
<div style="position: absolute; bottom: 175px">
<button class="btn btn-default btn-xs" name="submit" role="button" data-toggle="modal" data-target="#myModal">Member Login</button>
</div>
<!-- Modal -->
<div id="myModal" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Member Login</h4>
</div>
<div class="modal-body">
<form method="post" action="" name="login_form">
<p><input type="email" class="span3" name="email" placeholder="Email"></p>
<p><input type="password" class="span3" name="password" placeholder="Password"></p>
<p><button type="submit" id="submit" name="submit" value="Login" class="btn btn-primary">Sign in</button></p>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
login.php
<?php
session_start();
include("connect.php"); //Establishing connection with our database
$error = ""; //Variable for storing our errors.
if(isset($_POST["submit"]))
{
if(empty($_POST["email"]) || empty($_POST["password"]))
{
$error = "Both fields are required.";
}else
{
// Define $email and $password
$email=$_POST['email'];
$password=$_POST['password'];
// To protect from MySQL injection
$email = stripslashes($email);
$password = stripslashes($password);
$email = mysqli_real_escape_string($db, $email);
$password = mysqli_real_escape_string($db, $password);
$password = sha1($password);
//Check email and password from database
$sql="SELECT id FROM Members WHERE email='$email' and password='$password'";
$result=mysqli_query($db,$sql);
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);
//If email and password exist in our database then create a session.
//Otherwise echo error.
if(mysqli_num_rows($result) == 1)
{
$_SESSION['email'] = $email; // Initializing Session
$error = "Success!";
echo "<div class='alert alert-danger alert-dismissible' role='alert'>
<button type='button' class='close' data-dismiss='alert' aria-label='Close'>
<span aria-hidden='true'>×</span></button>".$error."</div>";
//header("location: members_only"); // Redirecting To Other Page
}else
{
$error = "Incorrect email or password.";
echo "<div class='alert alert-danger alert-dismissible' role='alert'>
<button type='button' class='close' data-dismiss='alert' aria-label='Close'>
<span aria-hidden='true'>×</span></button>".$error."</div>";
}
}
}
?>
только для членов это то, что я имею в верхней части моих членов только страницы
<?php
session_start();
if (!isset($_SESSION['email']))
{
header('Location: index');
}
?>
Когда я заполняю форму для входа и отправлю правильное имя пользователя и пароль, мне присваивается индекс, потому что мой $ _SESSION ['email'] не установлен. Если я удалю тест, он правильно перейдет на страницу только для участников.
При устранении неполадок вам необходимо как можно меньше упростить задачу и четко описать, что происходит, что не предназначено или что не происходит, и я ничего здесь не вижу. –
добавил немного больше к описанию внизу о том, что я испытываю. спасибо – shwrth
Вы имеете в виду, что когда вы удаляете пароль SQL, это работает? –