2016-11-17 4 views
0

Ich bin neu in PHP und versuche, ein Mitglied Login zu erstellen. Ich bezahle mit diesem Codeblock und war neugierig, wie ich den Benutzernamen oder uid von der aktuellen Sitzung bekommen kann, damit ich den Benutzer mit seinem Benutzernamen begrüßen kann.Erhalte den Benutzernamen aus der aktuellen PHP-Sitzung

<?php 
session_start(); 
include 'db.php'; 

$uid = $_POST['uid']; 
$pwd = $_POST['pwd']; 

$sql = "SELECT * FROM users WHERE uid='$uid' AND pwd='$pwd'"; 
$result = mysqli_query($conn, $sql); 

if (!$row == mysqli_fetch_assoc($result)) { 
    echo "Your username or password is incorrect."; 
} else { 
    $_SESSION['id'] = !$row['$id']; 
} 

header("Location: index.php"); 

Ich habe versucht, diese if-Anweisung den Benutzernamen angezeigt werden, aber es angezeigt gar kein Ergebnis. Mein Gedanke ist, dass, wenn diese Anweisung die ID des Benutzers anzeigt, die gleiche Zeile die UID erhalten würde, aber das funktioniert nicht.

if (!$row == mysqli_fetch_assoc($result)) { 
    echo "Your username or password is incorrect."; 
} else { 
    $_SESSION['id'] = !$row['$id']; 
    $_SESSION['uid'] = !$row['$uid']; 
} 
+3

** Speichern Sie niemals Nur-Text-Passwörter! ** Bitte verwenden Sie PHP [integrierte Funktionen] (http://jayblanchard.net/proper_password_hashing_with_PHP.html), um die Passwortsicherheit zu behandeln. Wenn Sie eine PHP-Version kleiner als 5.5 verwenden, können Sie das 'password_hash()' [compatibility pack] (https://github.com/ircmaxell/password_compat) verwenden. Stellen Sie sicher, dass Sie *** [Kennwörter nicht entgehen] (http://Stackoverflow.com/q/36628418/1011527) *** oder verwenden Sie einen anderen Bereinigungsmechanismus vor dem Hashing. Wenn Sie dies tun, * ändert * das Passwort und verursacht unnötige zusätzliche Codierung. –

+2

[Little Bobby] (http://bobby-tables.com/) sagt *** [Ihr Skript ist für SQL-Injektionsattacken gefährdet.] (Http://stackoverflow.com/questions/60174/how-can- i-prevent-sql-injection-in-php *** Erfahren Sie mehr über [vorbereitete] (http://en.wikipedia.org/wiki/Prepared_statement) Anweisungen für [MySQLi] (http://php.net/manual /mysqli.quickstart.prepared-statements.php). Sogar [die Zeichenfolge zu entkommen] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) ist nicht sicher! [Glauben Sie es nicht?] (Http://stackoverflow.com/q/38297105/1011527) –

+0

'! $ Row ['$ id'];' wird sicherstellen, dass die Sitzungsvariable nicht gefüllt ist. Entfernen Sie die '!' –

Antwort

-1
if (!$row == mysqli_fetch_assoc($result)) { 

Sie versuchen, es zu überprüfen, ob zu Unrecht zumindest ein Ergebnis ist, gibt es eine eingebaute Funktion mysqli_num_rows() Ihr Code sollte wie folgt aussehen:

if(mysqli_num_rows($result) > 0) { // this line means if there is at least one result 
// set your session here 
    $row = mysqli_fetch_assoc($result); 
    $_SESSION['id'] = $row['id']; 
    $_SESSION['uid'] = $row['uid']; 
} else { 
// print your error message here 
} 

auf Ihrer Hauptseite können Sie Sagen Sie Hallo Benutzer, indem Sie Ihre Sitzung verwenden uid mit dem Code unter

///////////// Index Seitencode unter ///////////////// //////

// nicht vergessen Sitzung in der ersten Zeile nach dem PHP-Tags

<?php 
session_start(); 
echo 'Hello'.' '.$_SESSION['uid']; 

zu beginnen Da Sie sind neu Sie sollten verstehen, was php !

ist

! verwendet, wenn der Bezug zu überprüfen Aussage ist falsch zum Beispiel

if(1!=2){ 
    echo 'not equal'; 
    } 

ab ungleich

+1

Haben Sie versucht, den Code in diesem Beispiel auszuführen? Die Bedingung ist falsch; Es druckt nichts. – duskwuff

+0

Ja, @duskwuff ist korrekt. Dies druckt nichts. –

+0

SOrry meine schlechte bearbeitete meinen Code jetzt –

Verwandte Themen