Robert B.: Profillink richtig gemacht?

Beitrag lesen

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