2016-05-17 15 views
0

Ich versuche, meine Login-PHP funktioniert. Ich kann nicht finden, was falsch ist. Ich hatte es schon früher funktioniert, aber es hörte auf einmal auf. Ich benutze auch Bootstrap, aber ich denke nicht, dass das irgendwelche Probleme verursachen würde. Alles zwischen dem PHP und dem Formular scheint übereinzustimmen. Ich benutze ein JavaScript und CSS modal für das Login-Formular, aber ich denke nicht, dass dies auch Auswirkungen hätte.Benutzerdefiniertes php Login-Formular: mit einem modalen

PHP:

<?php 
session_start(); 
include_once 'dbconnect.php'; 

if(isset($_SESSION['usr_id'])) { 

echo "Successfully Logged In!"; 

//header("Location: index.php"); 

} 

if (isset($_POST['login'])) { 

$email = mysqli_real_escape_string($con, $_POST['email']); 

$password = mysqli_real_escape_string($con, $_POST['password']); 

$result = mysqli_query($con, "SELECT * FROM users WHERE email = '" . $email . "' and password = '" . md5($password) . "'"); 
?> 
<!--<script> 
    alert("<?php echo 'Result is: '.$result; ?>"); 
</script> --> 
<?php 
$row = mysqli_fetch_array($result); 
echo $row; 

if ($row != NULL) { 

    $_SESSION['usr_id'] = $row['id']; 

    $_SESSION['usr_name'] = $row['name']; 

    // header("Location: index.php"); 

} else { 

    $errormsg = "Incorrect Email or Password!!!"; 

} 

} 

?> 

Hier wird die Anmeldungs ​​modal mit der Form:

<!-- The Modal --> 
    <div id="login" class="modal"> 

<!-- Modal content --> 
    <div class='js-fade fade-in is-paused'> 
     <div class="modal-content"> 
      <span class="close" data-dismiss="modal">x</span> 
       <form role="form" action="index.php" method="post" name="loginform"> 

             <fieldset> 

              <legend>Login</legend> 



              <div class="form-group"> 

               <label for="name">Email</label> 

               <input type="text" name="email" id="email" placeholder="Your Email" required class="form-control" /> 

              </div> 



              <div class="form-group"> 

               <label for="name">Password</label> 

               <input type="password" name="password" id="password" placeholder="Your Password" required class="form-control" /> 

              </div> 


              <div class="form-group"> 

               <input type="submit" name="login" value="login" class="btn btn-info login" role="button" /> 

              </div> 

             </fieldset> 
              <div class="signupbtn"> 
               <li><a href="signup/index.php" class="noaccount btn btn-info" id="signupbtn">Don't have an account? Sign Up here.</a></li> 
              </div> 
            </form> 
     </div> 

    </div> 
</div> 

Navbar:

<!-- Nav Bar --> 
<nav class="navbar navbar-default navbar-fixed-top navbar-left"> 
    <div class="container"> 
     <div class="navbar-header"> 
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
      </button> 
       <a class="navbar-brand brand" href="#" style="font-family: Warnes">Unleasht</a> 
     </div> 
    <div class="collapse navbar-collapse"> 
     <ul class="nav navbar-nav"> 
      <li class="navbarli"><a href="#" class="navbarli">HOME</a></li> 
      <li class="navbarli"><a href="#about" class="navbarli">ABOUT</a></li> 
      <li class="navbarli"><a href="#music" class="navbarli" data-toggle="collapse" data-target=".navbar-collapse.in">MUSIC</a></li> 
      <li class="navbarli"><a href="#contact" class="navbarli" data-toggle="collapse" data-target=".navbar-collapse.in">CONTACT</a></li> 
     </ul> 
     <ul class="nav navbar-nav navbar-right"> 

      <?php 
      function loggedIn(){ 
      if(isset($_SESSION['usr_id'])) 
      { echo '<li class="dropdown"> 
        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">'. $_SESSION['user'] .'<span class="caret"></span></a> 
        <ul class="dropdown-menu"> 
         <li><a href="#">'. $_SESSION['usr_name'] .'</a></li> 
         <li><a href="#">Account</a></li> 
         <li role="separator" class="divider"></li> 
         <li><a action="login/logout.php">Logout</a></li> 
        </ul> 
       </li>'; 
      }else{ 
       unset($_SESSION['usr_id']); 
       echo '<li><a href="#login" class="navbarli" data-toggle="modal" data-target="#login" id="loginbtn"><span class="glyphicon glyphicon-log-in navbarli"></span> Login</a></li>'; 
       } 
      } 
      loggedIn(); 
      ?> 

     </ul> 
    </div><!--/.nav-collapse --> 
    </div> 
</nav> 

Was mache ich falsch?

+0

Und ja, ich weiß, dass md5 keine gute Sache ist für Passwörter zu verwenden, da der Sicherheit. Im Moment versuche ich nur, das Login funktioniert zu haben, dann werde ich von md5 zu etwas anderem wechseln. –

+0

Sie sollten [MD5 Passwort-Hashes] (http://security.stackexchange.com/questions/19906/is-md5-considered-insecure) wirklich nicht verwenden und Sie sollten wirklich PHP [eingebaute Funktionen] verwenden (http: //jayblanchard.net/proper_password_hashing_with_PHP.html), um die Passwortsicherheit zu handhaben. Stellen Sie sicher, dass Sie [Passwörter nicht umgehen] (http://stackoverflow.com/q/36628418/1011527) oder verwenden Sie einen anderen Bereinigungsmechanismus vor dem Hashing. Wenn Sie dies tun, * ändert * das Passwort und verursacht unnötige zusätzliche Codierung. –

+0

[Little Bobby] (http://bobby-tables.com/) sagt [Ihr Skript ist für SQL Injection Attacks gefährdet.] (Http://stackoverflow.com/questions/60174/how-can-i-prevent -sql-injection-in-php) Erfahren Sie mehr über [vorbereitete] (http://en.wikipedia.org/wiki/Prepared_statement) Anweisungen für [MySQLi] (http://php.net/manual/en/mysqli.quickstart .prepared-statements.php). Sogar [die Zeichenfolge zu entkommen] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) ist nicht sicher! –

Antwort

0

Sie können nicht gesetzt $ _SESSION [ ‚usr_id‘], nachdem Sie alle Header gesendet haben, versuchen Sie folgenden Code ein:

<?php 
session_start(); 
include_once 'dbconnect.php'; 
if(isset($_SESSION['usr_id'])) { 
    echo "Successfully Logged In!"; 
}elseif (isset($_POST['login'])) { 
    $email = mysqli_real_escape_string($con, $_POST['email']); 
    $password = mysqli_real_escape_string($con, $_POST['password']); 
    $result = mysqli_query($con, "SELECT * FROM users WHERE email = '" . $email . "' and password = '" . md5($password) . "'"); 
    if (mysqli_num_rows($result)==1) { 
     $row = mysqli_fetch_array($result); 
     $_SESSION['usr_id'] = $row['id']; 
     $_SESSION['usr_name'] = $row['name']; 
     echo "OK fine"; 
    } else { 
     echo "Incorrect Email or Password!!!"; 
    } 
} 
?> 
+0

Warum sollte das OP das "ausprobieren"? Eine *** gute Antwort *** wird immer eine Erklärung haben, was getan wurde und warum es so gemacht wurde, nicht nur für das OP, sondern auch für zukünftige Besucher von SO. –

+0

Darüber hinaus können Sie SESSION-Variablen jederzeit festlegen - Sie können eine Sitzung nach dem Senden von Headern * nicht starten *. Denken Sie daran, dass das OP gesagt hat: "Ich hatte es schon früher in Betrieb, aber plötzlich hörte es auf." * –

Verwandte Themen