2016-03-31 20 views
1

Ich habe Schwierigkeiten mit der Kopfzeile umleiten mich zu index.html von meiner Anmeldeseite. Ich bin mir nicht sicher, ob der Header sogar der richtige Weg ist, aber es ist alles, was ich bei der Seitenumleitung finden konnte.PHP Redirect auf eine andere Seite Problem

Dieser Code ist nur eine einfache Login-Seite, die den Benutzernamen und das Passwort einer MySQL-Datenbank überprüft.

Das Problem, das ich ist in der if-Anweisung habe:

if(mysqli_num_rows($res) == 1){ 
     header("Location: index.php"); 
     exit(); 
} 

vollständiger Code für login.php:

<?php 
     //Connects to MySQL database using sql_connect.php 
     require "sql_connect.php"; 
    ?> 

    <?php 
     if(isset($_POST['username'])) { 
      $username = $_POST['username']; 
      $password = $_POST['password']; 
      $sql = "SELECT * FROM login_test WHERE username='".$username."' AND password='".$password."' LIMIT 1"; 
      $res = mysqli_query($connection, $sql); 
      if(mysqli_num_rows($res) == 1){ 
       header("Location: index.php"); 
       exit(); 
      } else { 
       echo "Invalid login information!"; 
       exit(); 
      } 
     } 
    ?> 

    <!DOCTYPE html> 
     <html lang="en"> 
     <head> 
      <meta charset="UTF-8"> 
      <title>login</title> 
      <link rel="stylesheet" href="../style.css"> 
     </head> 
     <body> 
      <form name="login" method="post" action="login.php"> 
       <h3>Login</h3> 
       <p>Username: </p><input type="text"name="username"> 
       <p>Password: </p><input type="password" name="password"> 
       <br/> 
       <input type="submit"name="submit"value="log in"> 
      </form> 
      <script src="../script.js" type="text/javascript"></script> 
     </body> 
    </html> 

Während ich bin sicher, dass der Rest meines Codes bei weitem nicht perfekt Ich suche gerade wirklich, wie man zu einer neuen Seite umleitet, wenn der Benutzer in der Datenbank authentifiziert wird? Gibt es in meinem Fall eine bessere Option als Header oder führe ich es einfach falsch um?

+0

was verhindert, dass ein nicht authentifizierter Benutzer die Seite direkt besucht? – Tim

+0

Überprüfen Sie in Ihrem Serverprotokoll, ob Sie eine Warnung "Header bereits gesendet" erhalten. – Barmar

+0

Nichts zur Zeit. Ich lehre mich einen Schritt nach dem anderen – Hunter

Antwort

1

Ich habe PHP Header verwendet, aber habe schlechte Erfahrungen.
Normalerweise verwende ich Javascript

echo '<script type="text/javascript">' . "\n"; 
if(isset($from)) 
{ 
    echo 'window.location="..";'; 
} 
else 
{ 
    echo 'window.location="..";'; 
} 
echo '</script>'; 
0

header() Funktion nicht gut von Ihrem "mysqli_num_rows ($ res) == 1" Ergebnis ist falsch, kann es zu nicht funktioniert.

Und es gibt keinen Platz zwischen "Location" und Ihrer "index.php" wie: header ("Location: index.php");

Oder Sie können eine PHP-Funktion erstellen und JavaScript verwenden, es ist eine gute Möglichkeit, das zu vermeiden.

function redirect($url, $prompt) { 
    $js_string = "<script>"; 
    $js_string .= $prompt ? "alert('". $prompt ."');" : ""; 
    $js_string .= "window.location = '{$url}';"; 
    $js_string .= "</script>"; 
    exit($js_string); 
}