dedlfix: Daten bei mysql_connect verschlüsseln

Beitrag lesen

Hi!

Da ich die Zeile mit der Variablen im Text nicht als $error ausgeben sollte, habe ich folgendes gemacht:

"Hallo <b>{".$_POST['username']."}</b>,...


> Wäre das so richtig? Eine Fehlermeldung wurde zumindest nicht ausgegeben.  
  
Nein. Zum einen wäre es richtig, entweder die {} ganz wegzulassen, denn die willst du ja nicht ausgeben. Oder du bleibst im String, dann muss du sie verwenden, weil PHP sie braucht, um die Variable richtig zu erkennen.  
  
  "Hallo <b>{$\_POST['username']}</b>,...  
  
Aber nun zu htmlspecialchars: Wenn du den Text nicht ausgeben willst, brauchst du ihn nicht zu erstellen. Da er aber da ist, soll er doch wohl auch ausgegeben werden. Zwar nicht gleich, aber im A-Teil (von EVA). Und weil du den Text an dieser Stelle schon zusammenbaust, musst du auch jetzt schon den Kontext beachten, also  
  
  "Hallo <b>" . htmlspecialchars($\_POST['username']) . "</b>,...  
  
notieren  

> ABER:  
> Müsste ich nicht alle Zeichen, die was mit HTML zu tun haben in meinem PHP Script mit htmlspecialchars() bearbeiten? Also:  
> ~~~php

"Hallo &lt;b&gt;{".$_POST['username']."}&lt;/b&gt;,...  

>   
> ... &lt;a href=\"anmelden.php\"&gt;Anmelden&lt;/a&gt;";

Oder ist das falsch gedacht?

Ja, falsch gedacht. Du willst ja HTML-Code an den Browser senden, also müssen die <> schon so bleiben, wie sie sind. Als &lt;&gt; notiert würde der Browser die Zeichen <> hinschreiben, anstatt sie als Tag-Begrenzer zu interpretieren.

Nachdem ich // mysql_close($verbindung); // aus dem Script entfernt habe, kommt auch keine Warnung mehr. Ich dachte, bei PHP muss alles korrekt sein? Warum wird ein (indirekter) Fehler angezeigt, wenn man es korrekt machen möchte? (am Kopf kratz!!)

Du hast irgendwo einen Fehler drin. Wenn $verbindung wirklich eine Ressourcenkennung beinhaltet, wie sie von mysql_connect() erzeugt worden ist, darf es keinen Fehler geben. Wenn aber aus irgendeinem Grunde was anderes (oder nichts/null) enthält, dann gibt es die Warnung.

Bei PHP muss nicht zwangsläufig alles penibel korrekt sein. Deswegen ist es ja anfängerfreundlich, weil es so viel durchgehen lässt. Allerdings fördert es auch eine gewisse Schlampigkeit und ist dadurch in Verruf geraten.

Ich habe noch eine Frage. Ich möchte, dass meine Besucher beim registrieren ihre Mailadresse mit angeben müssen. Kann ich diesen Codeschnipsel benutzen, um die Richtigkeit der Mailadresse abzufragen?

Auch wenn du einen Prüfung findest, die die Syntax einer E-Mail-Adresse in irgendeiner Weise mehr oder weniger vollständig prüft, gibt dir das nicht die geringste Garantie, dass zu der Adresse auch ein Postfach existiert, das deine Mail anzunehmen bereit ist, und das dem Besucher auch gehört. Ich gebe beispielsweise gern "test@example.com" an, wenn irgendwer eine E-Mail-Adresse haben will, ich aber keinen Grund sehe, wofür er die nun unbedingt benötigt.

Wenn du einigermaßen sichergehen willst, solltest du eine Bestätigungs-Mail versenden, auf die der Besucher reagieren muss. Es ist dann in Grunde genommen egal, ob die Mail nicht ankommt, weil er sich syntaktisch korrekt oder falsch vertippt hat oder weil er absichtlich eine falsche Angabe gemacht hat.

Lo!