Ich brauche etwas Hilfe mit meinem Login-Skript. Ich versuche nur, PHP und Mysqli selbst zu unterrichten und bleibe dabei, damit jeder Rat/jede Hilfe sehr geschätzt wird.führen Sie eine andere Abfrage nach erfolgreicher Anmeldung
Der tatsächliche Teil, der die Login-Daten überprüft, funktioniert und leitet dem Benutzer eine Seite, wenn die Übereinstimmung gefunden wird oder zurück zur Login-Seite, falls nicht erfolgreich.
Was ich geschehen möchte, ist, sobald der Benutzername überprüft wurde und die Sitzungen die Sitzung 'Benutzer' verwenden, um dann den gleichen Benutzer aus der Schüler- oder Lehrer-Tabelle abhängig von der Sitzung 'member_type' zu finden. Die Sitzung 'user' wird als die 'user_id' festgelegt, die in der Login-Tabelle und der Tabelle, in der die restlichen Details gespeichert sind, identisch ist und der Primärschlüssel beider Tabellen ist.
<?php
include_once ("includes/dbconnect.php");
session_start();
$error="";
if (isset($_POST['btn_signin'])) {
// username and password received from loginform
$username=mysqli_real_escape_string($conn,$_POST['username']);
$password=mysqli_real_escape_string($conn,$_POST['user_password']);
$sql_checklogin="SELECT * FROM user_logins WHERE username='$username' and password='$password'";
$result=mysqli_query($conn,$sql_checklogin);
$login=mysqli_fetch_array($result,MYSQLI_ASSOC);
$count=mysqli_num_rows($result);
// If result matched $username and $password, table row must be 1 row
if($count==1)
{
// Set Sessions
$_SESSION['logged_in']=TRUE;
$_SESSION['user']=$login['user_id'];
$_SESSION['member_type']=$login['reg_type'];
} else {
header("location:login.php");
$error = "Invalid Username or Password!";
}
}
//This part to be replaced with code that checks both tables to find the user details
if (isset($_SESSION['member_type'])) {
header("Location:mydashboard.php");
}
?>
//The above code works and allows user to login but sends both member types to same page
Gerade jetzt funktioniert das gut, aber ich möchte den letzten IF-Teil des Skripts mit etwas wie diesem ersetzen (oder einen besseren Vorschlag?).
//if (isset($_SESSION['member_type'])=='pupil' {
//$sql_findpupil="SELECT * FROM pupils WHERE user_id='$_SESSION['user']'";
//$result=mysqli_query($conn,$sql_findpupil);
//$pupil=mysqli_fetch_array($result,MYSQLI_ASSOC);
Sollte ich eine weitere Zählfunktion in diesem Teil setzen?
//header("location:mydashboard.php");
//}elseif (isset($_SESSION['member_type'])=='instructor' {
//$sql_findinstructor="SELECT * FROM instructors WHERE user_id='$_SESSION['user']'";
//$result=mysqli_query($conn,$sql_findinstructor);
//$instructor=mysqli_fetch_array($result,$MYSLQI_ASSOC);
Und hier?
//header("location:control_panel.php");
//}
//}
Wie gesagt, ich versuche, mir ein paar neue Fähigkeiten zu Hause haben wahrscheinlich so zu lehren, einige Junge Fehler Grundschule gemacht hier und etwas verpasst offensichtlich
weil Sie Ihren Ausgang vermissen; nach Ihrer header() Methode. – KDOT
Sieht aus wie Sie Passwörter im Klartext speichern PHP bietet ['password_hash()'] (http://php.net/manual/en/function.password-hash.php) und ['password_verify()'] (http://php.net/manual/en/function.password-verify.php) benutzen Sie sie bitte. Und hier sind einige [gute Ideen über Passwörter] (https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet) Wenn Sie eine PHP-Version vor 5.5 verwenden [gibt es ein Kompatibilitäts-Pack hier] (https : //github.com/ircmaxell/password_compat) – RiggsFolly
Ihr Skript ist [SQL Injection Attack] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in- php) Werfen Sie einen Blick auf, was mit [Little Bobby Tables] passiert ist (http://bobby-tables.com/) Sogar [Wenn Sie Eingaben entgehen, ist es nicht sicher!] (http://stackoverflow.com/) questions/5741187/sql-injection-das-kommt-um-mysql-real-escape-string) Verwenden Sie [vorbereitete parametrisierte Anweisungen] (http://php.net/manual/en/mysqli.quickstart.prepared-statements. php) – RiggsFolly