Anmeldung und Validierung in php mit mysqli
Konvertieren eines mysql-Seite zu mysqli. Wollen, stellen Sie sicher, dies ist der beste Weg, um den Benutzer login und session mit der userid oder username, entweder eine. Wenn es ein sicherer Weg, ich bin offen zu hören. Dieser code wird nicht funktionieren eh...weiß nicht, was ist falsch mit ihm. Hilfe ist willkommen.
mithilfe eines Formulars, username und pwd sind erforderlich. Dann die Verbindung mit dem db-Datei aufgerufen wird. Einmal angeschlossen, ist der admin-Tabelle abgefragt, um zu überprüfen Benutzername/pwd. Nichts passiert, aber eine leere Seite. Hier sind Datei. Danke.
form-Datei
<h2><br>Web Site Administration<br>
</h2> <p>Please log in below</p>
<form action="validate.php" method="post">
<b>User Name:</b>
<br> <input type="text" size="20" name="username">
<br> <br> <b>Password:</b>
<br><input type="password" size="20" name="password"> <br>
<br> <input type="submit" value="login"> </form>
hier ist die Verbindung zu db-Datei
<?php
function login();
//server info
$server = 'localhost';
$username = 'user_dbname';
$pass = 'pwd goes here';
$db = 'db and table here';
//connect to the database
$mysqli = new mysqli($server, $username, $password, $db);
//show errors (remove this line if on a live site)
mysqli_report(MYSQLI_REPORT_ERROR);
?>
und hier ist die Datei überprüfen
<?php
session_start();
include ("login.php");
login();
if(isset($_POST['submit']))
{
$username = trim($_POST['username']);
$password = trim($_POST['password']);
$query = "SELECT username, password FROM admins WHERE username='$username'
AND password='$password'";
$result = mysqli_query($mysqli,$query)or die(mysqli_error());
$num_row = mysqli_num_rows($result);
$row=mysqli_fetch_array($result);
if( $num_row ==1 )
{
$_SESSION['userid']=$row['userid'];
header("Location: admin.php");
echo 'hi there';
exit;
}
else
{
echo 'oops can not do it';
}
}
?>
- Entfliehen Sie dem Variablen
$username
und$password
mitmysqli_real_escape_string
function login();
- und was dann?- Nicht verwenden nur-Text-Kennwörter.
- zusätzlich zu den bisherigen Kommentaren, die Sie verwenden können, Großbuchstaben für Benutzername, so kann der Benutzer die Eingabe in groß-oder Kleinschreibung von Benutzernamen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist, wie würde ich dies tun, mit einer mehr Objekt-orientierten Stil
Dies ist, was Sie auf Ihrer login-Seite
login.php
:Für die
admin.php
Seite, würden Sie etwas anderes wollen:Haben Sie Zugang zu
$_SESSION['userid']
in der admin-Seite.In den validation-Datei, die die SQL-Abfrage ist nicht die Auswahl der
userid
Spalte, sondern nur dieusername
undpassword
für die Benutzer, daher Einstellung$_SESSION['userid']
wird nicht funktionieren.Ihre Funktion
login()
ist das nicht geschrieben in der Weg-Funktionen sind in PHP geschrieben, ich.e die Funktion wurde nicht definiert.Was Sie wahrscheinlich tun möchten, ist so etwas wie dieses:
Würden Sie dann die Funktion aufrufen:
Als Beispiel-code. Beachten Sie, dass dieser code ist prozedurale und nicht Objekt-orientiert.
if (if(isset($_POST['submit']))){
? Sie haben 2xifs
– es hat nicht ganz so funktioniert. Es ist mehr wieif(isset($_POST['submit'])){
isset($_POST['username']) && isset($_POST['password'])
... und ich Frage mich, wo die Gewohnheit der überprüfung für die (eher nutzlose)isset($_POST['submit'])
stammen können, aus. auch die plain-text Passwörter sind fraglich.Als vorspeise, ich habe versucht, die Methode oben, aber fand heraus, es ist nicht CASE SENSITIVE, das ist wichtig für die PASSWORT-überprüfung. Ich habe das Drehbuch geschrieben, unten & es funktioniert perfekt für die Passwort-überprüfung.
Das php-Skript ist:
Kann man nun verwenden jquery für limit-login-Versuch. Das jquery-script wird ein timer usw. je nach der Empfindlichkeit der Anwendung.
Experten-review & korrigieren Sie, wo nötig.