2016-05-22 19 views
0

Ich kann nicht scheinen, meine Umleitung zu arbeiten. Erstens ist die Klasse:Kann Header-Speicherort nicht umleiten

public function LoginUser($username, $password){ 
    // Check if user adn password matches an user in database 
    if(isset($_POST['username'])){ 
     $username = mysqli_real_escape_string($this->db, $username); 
     $password = mysqli_real_escape_string($this->db, $password); 

     $sql = "SELECT * FROM users WHERE name='$username'"; 
     $result = mysqli_query($this->db, $sql) or die('Fel vid SQL-fråga - inloggning'); 

     if(mysqli_num_rows($result)){ 
      $row = mysqli_fetch_array($result); 
      $stored_password = $row['password']; 
      // check if hash_equals-function exists 
      if(function_exists("hash_equals")) { 
       //If excists 
       if(hash_equals($stored_password, crypt($password, $stored_password))) { 
        // create session 
        header("location: user/loggedin.php"); 
        $_SESSION['login'] = $username; 
       }else{ 
        echo '*WRONG!*'; 
       } 
      }else{ 
       //if not exists, use alternate method 
       if($stored_password == crypt($password, $stored_password)){ 
        // create session that tells that we're logged in 
        header("location: ../user/loggedin.php"); 
        $_SESSION['name'] = $username; 
       }else{ 
        echo 'WRONG!'; 
       } 
      } 
     } 
    } 
} 

Und mein Ruf für die Klasse:

<?php 
// call class User.php, LoginUser 
$users = new User(); 
if(isset($_POST['loginButton'])){ 
    if($users->LoginUser($_POST['username'],  $_POST['password'])){ 
     //header("location: admin/admin.php"); 
    }else{ 
     echo 'wrong username or password'; 
    } 
} 
+0

Sie können nicht 2 elses in einer Reihe so haben –

+0

natürlich, Sie richtig. Das letzte war irgendwie hereingekommen :). gelöscht und jetzt bearbeitet, funktioniert immer noch nicht .. – Kalabalik

+0

Also was _does_ passiert? Was bekommen Sie ausgegeben? –

Antwort

0

Sie können versuchen:

if(hash_equals($stored_password, crypt($password, $stored_password))) { 
     // create session 
        header("location: user/loggedin.php");     
     $_SESSION['login'] = $username; 

    }else if($stored_password == crypt($password, $stored_password)){ 
     // create session that tells that we're logged in 
     header("location: ../user/loggedin.php"); 
     $_SESSION['name'] = $username; 
    }else{ 
     echo 'WRONG!'; 
    } 

auch prüfen, ob es

ist
location: user/loggedin.php 

OR

location: ../user/loggedin.php 
+0

Danke für die Antwort, aber es scheint nicht zu helfen. Ich denke, Jon hat Recht, dass etwas mit dem Anruf nicht stimmt. – Kalabalik