2017-05-28 4 views
0
<?php 

$host = 'localhost'; 
$username = 'admin2'; 
$password = 'vaptek'; 
$db_name = 'vaportek_db'; 


// Connect to server and select database. 
$db = new mysqli($host, $username, $password, $db_name); 

if($db->connect_errno){ 
    die('Unable to connect to database [' . $db->connect_error . ']'); 
} 

// username and password sent from form 
$myusername=$_POST['userId']; 
$mypassword=$_POST['userPw']; 

$stmt = $db->prepare("SELECT role FROM users WHERE `username`=? and `password`=?"); 
/* bind parameters for username and password */ 
$stmt->bind_param('ss', $myusername, $mypassword); 

/* execute query */ 
$stmt->execute(); 


// If result matched $myusername and $mypassword, table row must be 1 row 
if ($test == 1) { 
    // bind the result to a variable 
    $stmt->bind_result($role); 
    $stmt->fetch_object()->$role; 

    switch($role){  

     case 'director': 
     header("location: director.php"); 
     break; 

     case 'customer': 
     header("location: cust.php"); 
     break; 

     case 'production manager': 
     header("location: prodmanager.php"); 
     break; 

     case 'account admin': 
     header("location: accountadmin.php"); 
     exit(); 

     default: 
     echo "Wrong staff ID or password"; 
    } 
    $stmt->close(); 
} 

$db->close(); 
?> 

Wenn ich den Code ausführen es gibt mir nur eine leere Seite und gehen Sie nicht von login.phpphp Benutzer zu umleiten basierend auf der „Rolle“ mit mysqli

I echo $ Test gemacht haben = $ stmt-> affected_rows; was als -1 angezeigt wird Ich bin nicht sehr vertraut mit PHP und verstehe nicht wirklich, wo es falsch läuft.

+0

Welche möchten Sie mit PDO oder MySQLi verwenden? :/ – Juned

+0

Hallo, Entschuldigung nicht realisiert. Ich benutze derzeit mysqli, aber ich habe versucht, PDO und konnte nicht, dass auch nicht zu arbeiten, massiv eine Mauer zu schlagen –

+0

Dies ist nicht PDO, aber MySQLi ist auch OK. Jedenfalls bekommst du einen leeren Bildschirm, weil nichts "echo" ist. Das liegt daran, dass "$ test" null ist und der "if" -Körper übersprungen wird. –

Antwort

0
... 

/* execute query */ 
$stmt->execute(); 

$res = $stmt->get_result(); 

// If result matched $myusername and $mypassword, table row must be 1 row 
if ($res->num_rows == 1) { 

... 
+0

Versuchen, Eigenschaft von Nicht-Objekt in C: \ Benutzer \ ryank \ Desktop \ Xampp \ htdocs \ vaptek \ php \ login.php auf Linie 66 zu bekommen Entschuldigung, wenn dies eine einfache Lösung ist, verstehe ich wirklich nicht, es nicht php gemacht seit drei Jahren, daran fest für drei Tage. $ stmt-> fetch() -> $ role; –

+0

@RyanKenyon Zeile 66 ist '$ stmt-> fetch() -> $ role'? –

0
if($stmt->execute()){ 

//Gets the results and assigns it to $result 
$result = $stmt->get_result(); 

//runs a while loop so that the role can be pulled out and assigned to $role for the switch 
while($row = $result->fetch_assoc()){ 
    $role = $row['role']; 
} 

// If result matched $myuser 

es ENDLICH Fest! Danke für die Hilfe, du hast mich in die richtige Richtung gebracht.

Verwandte Themen