Hallo Keta,
ein paar Anmerkungen zu deinem Code:
$uzernm = strip_tags($_POST['usern4me']);
strip_tags brauchst du hier nicht bzw. es wandelt u.U. den Nutzernamen um. Im Folgenden $fetch->execute
kümmert sich das execute um das passende Escaping in den SQL-Kontext. Außerdem reichen einfache Quotes für Strings, solange du keine Variablen expandieren möchtest.
$fetch = $connect->prepare("SELECT * FROM usertablex WHERE usern=:uzernm"); $fetch->execute(array(":uzernm"=>$uzernm)); $row = $fetch->fetch(PDO::FETCH_ASSOC); $pwentered = md5(strip_tags($_POST['p4ssword']));
MD5 ist kein sicherer Passwort-Hashing-Algorithmus! Nimm besser password_hash.
if($pwentered==$pwindbase) { // … } else { echo 'FEHLSCHLAG!'; }
Da du die IP-Adresse speicherst, kannst du an dieser Stelle auch eine Log der Anmeldeversuche erstellen und bei zu vielen fehlgeschlagen Versuchen eine temporäre Sperre einrichten.
<html> <head> <title>PHP Übungsseite</title>
Oha, ein Umlaut ohne Angabe des charsets.
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
Hat es einen Grund, warum du das Scrollen unterbindest?
if(!$_SESSION['username']) {
Ich weiß jetzt nicht aus dem Kopf, ob das einen Fehler erzeugt, wenn der Key username nicht existiert. Das Prüfen mit array_key_exists
oder isset
funktioniert auf jeden Fall fehlerfrei.
echo 'Eingeloggt als <a href="http://www.seite.de/profile.php?proid='.$id.'">' .$_SESSION['username'].'</a> ! <a href="logout.php">Ausloggen?</a>';
An dieser Stelle wird der Kontextwechsel nach HTML nicht berücksichtigt.
Viele Grüße
Robert