2016-08-02 46 views
0

Ich arbeite an einer Seite, die einmal angemeldet ist, wird auf eine Mitglieder nur Seite gehen. Ich hatte diese Anmeldung letzte Nacht, dann habe ich etwas geändert und jetzt scheint es, dass die Sitzung nicht eingestellt bleibt. Ich verliere meine Meinung heute Nacht. Vielen Dank.php session() scheint nicht zu setzen

Login-Formular

<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>"; 
} 

} 
} 

?> 

Mitglieder nur das ist, was ich am Anfang meiner Mitglieder Seite

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

Wenn ich das Login-Formular ausfülle und den korrekten Benutzernamen und das Passwort einreiche, werde ich zum Index weitergeleitet, weil meine $ _SESSION ['email'] nicht gesetzt ist. Wenn ich den Test entferne, geht es korrekt auf die Seite nur für Mitglieder.

+0

Bei der Fehlersuche müssen Sie Ihr Problem auf ein Minimum reduzieren und klar beschreiben, was passiert, was nicht beabsichtigt ist oder was nicht geschieht, was sollte und ich sehe hier nichts davon. –

+0

hinzugefügt ein bisschen mehr zu der Beschreibung auf der Unterseite, was ich gerade erlebe. danke – shwrth

+0

Meinst du, dass, wenn Sie die SQL-Passwort-Überprüfung entfernen funktioniert es? –

Antwort

0

Ich habe mein Problem herausgefunden. Die Aktion im Formular musste die php-Datei aufgerufen haben.