2016-08-02 7 views
0

Я работаю над страницей, которая после входа в систему войдет на страницу только для участников. У меня был этот вход, работающий вчера вечером, затем я что-то изменил, и теперь кажется, что сеанс не остается установленным. Сегодня я теряю рассудок. Благодарю.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">&times;</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'>&times;</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'>&times;</span></button>".$error."</div>"; 
} 

} 
} 

?> 

только для членов это то, что я имею в верхней части моих членов только страницы

<?php 
session_start(); 
if (!isset($_SESSION['email'])) 
{ 
header('Location: index'); 
} 
?> 

Когда я заполняю форму для входа и отправлю правильное имя пользователя и пароль, мне присваивается индекс, потому что мой $ _SESSION ['email'] не установлен. Если я удалю тест, он правильно перейдет на страницу только для участников.

+0

При устранении неполадок вам необходимо как можно меньше упростить задачу и четко описать, что происходит, что не предназначено или что не происходит, и я ничего здесь не вижу. –

+0

добавил немного больше к описанию внизу о том, что я испытываю. спасибо – shwrth

+0

Вы имеете в виду, что когда вы удаляете пароль SQL, это работает? –

ответ

0

Я понял свою проблему. Действие в форме должно было вызвать вызванный файл php.

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