Forum: PC-Programmierung PHP input auslesen aber Text drin lassen


von Tom (Gast)


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 :(

von Timmo H. (masterfx)


Lesenswert?

<input type="text" name="vorname" value="<php? $_GET[vorname] ?>" />

von Tom (Gast)


Lesenswert?

funktionier leider nicht mit
<input type="text" name="vorname" value="<?php $_GET[vorname] ?>" />

von Verwirrter Anfänger (Gast)


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?>" />

von Tom (Gast)


Lesenswert?

Ah, supi - es funktioniert.
Danke Dir! Werde wohl auch eher die zweite Variante nutzen.

N8 dann jetzt mal
Tom

von Peter II (Gast)


Lesenswert?

Tom schrieb:
> Ah, supi - es funktioniert.

nur das du damit dir schon die erste Sicherheitslücke eingehandelt.

http://de.wikipedia.org/wiki/Cross-Site-Scripting

von D. I. (Gast)


Lesenswert?

Peter II schrieb:
> Tom schrieb:
>> Ah, supi - es funktioniert.
>
> nur das du damit dir schon die erste Sicherheitslücke eingehandelt.
>
> http://de.wikipedia.org/wiki/Cross-Site-Scripting

Erklär ihm auch, warum er die eingebaut hat :)

Hach ja aller anfang ist schwer, vor allem im Webbereich was Security 
angeht.

von Frank (Gast)


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.

von Tom (Gast)


Lesenswert?

uff, Sachen gibts.
Aus dem Standpunkt habe ich das noch gar nicht gesehen :)
Danke für die Tips!!!

von D. I. (Gast)


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.

von Tom (Gast)


Lesenswert?

Hi.

Sorry, das ich mich erst jetzt wieder melde.
Irgendwie viel um die Ohren gerade...

Habe eben mal nach Escape-Sachen gesucht - bin ja noch Anfänger... ;)
Wäre die Abfrage denn okay wenn ich "mysql_real_escape_string" nutzen 
würde?
Oder gibt es was besseres/aktuelleres/sichererereres oder so? :)

Grüße Tom

von Verwirrter Anfänger (Gast)


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.

von Tom (Gast)


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!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.