PHP input auslesen aber Text drin lassen

Gast #3149268
Lesenswert?

Hi.

Ich spiele grade etwas mit php herum.
Kann mir bitte einmal jemand sagen wie ich nach dem Drücken des Buttons 
es hin bekommen kann, dass der Text im Inputfeld bestehen bleibt.
UND dieser Text sollte anfangs einen vordefinierten Namen erhalten wenn 
man die Website öffnet.

Ich finde zwar etliche Tutorials, aber immer mit einem HTML und einer 
PHP Datei und auch immer nur welche bei dem es okay ist wenn der Text 
verschwindet.

Mein Code:
1
<form action="index.php" method="get" >
2
 
3
<p>Ihr Vorname:
4
<input type="text" name="vorname" />
5
</p>
6
 
7
<p>
8
<input type="submit" value="absenden" />
9
</p>
10
 
11
</form>
12

13
<?php
14
  echo $_GET[vorname]
15
?>

Gebt mir bitte einen Tip, irgendwie komme ich nicht drauf :(
Gast #3149272
Lesenswert?

Probier mal:
1
<input type="text" name="vorname" value="<?php echo $_GET['vorname']; ?>" />

wobei ich das normalerweise so machen würde:
1
<?php
2
$vorname = "Ihr Vorname";
3
if(isset($_REQUEST['vorname'])){
4
  $vorname = $_REQUEST['vorname'];
5
}
6

7
...
8
?>
9
<input type="text" name="vorname" value="<?=$vorname?>" />
Gast #3149511
Lesenswert?

Ein Formular, was sich selber wieder aufruft, nennt man "Affenformular" 
- nur mal so zur Illustration.

Was sauberen Programmierstil betrifft: Ich würde die 
wiederzuverwendenden GET- oder POST-Argumente in einer Funktion im 
HTML-Header erstmal "einsammeln", einer Prüfung unterziehen und in 
globale Variablen schreiben.

Wenn man z.B. spitze Klammern, Slashes, Doppelpunkte u. Frage- u. 
Prozentzeichen per Replace entfern und den ASCI-Zeichensatz auf die 
sichtbaren Zeichen eingrenzt, ist auch das Sicherheitsproblem 
entschärft.
Gast #3149588
Lesenswert?

Frank schrieb:
> Wenn man z.B. spitze Klammern, Slashes, Doppelpunkte u. Frage- u.
> Prozentzeichen per Replace entfern und den ASCI-Zeichensatz auf die
> sichtbaren Zeichen eingrenzt, ist auch das Sicherheitsproblem
> entschärft.

Nein, man verwendet eine vernünftige Escape-Funktion, dann ist das auch 
kein Stress und man muss nicht dumm rumfiltern.
Gast #3154907
Lesenswert?

"mysql_real_escape_string" würdest du nutzen, wenn der Text nachher in 
einer Datenbank gespeichert werden soll. Damit verhinderst du SQL 
Injections:
http://de.wikipedia.org/wiki/SQL-Injection

Das ersetzt Sachen wie Anführungszeichen (", ', `, ´) und andere 
Kontrollzeichen in der SQL Syntax. Besser ist es dann allerdings gleich 
prepared statements zu benutzen.


Um Cross Site Scripting zu verhindern willst du die Funktion 
"htmlentities"
http://php.net/manual/de/function.htmlentities.php
oder "htmlspecialchars"
http://www.php.net/manual/de/function.htmlspecialchars.php
verwenden. Diese Funktion ersetzen Zeichen aus der HTML Syntax, wie das 
Kaufmännische Und (&), diverse Klammern (<,>) und ebenfalls 
Anführungszeichen.
Gast #3154912
Lesenswert?

Wow, super.
Danke Dir für die Info!

Verwirrter Anfänger ist eher ein Fortgeschrittenes "Käpsele" :)

Werde mich da mal einlesen.
Für solche Dinge zu wissen sollte ich evtl. einmal von dem selbst 
beibringen absehen und mir ein Buch oder Videotutorial zu Gemüte ziehen.
Solche Fehler können ja im Web schon drastische Folgen haben...

Schönen Abend noch!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren