Feld nach Anführungszeichen abgeschnitten

  • Themenstarter Themenstarter stender23
  • Beginndatum Beginndatum
S

stender23

Guten Tag zusammen,

ich habe folgendes Problem:

Ich habe ein Gästebuch mit einer Vorschau. Die Daten werden in der "eintragen.php" eingegeben und dann an die "vorschau.php" mittels "post" übergeben. So weit so gut.

Ist in diesem Feld nun (z.B. $name) ein Anführungszeichen wird dieses auch dargestellt.

Code:
echo "<td width=\"500\" HEIGHT=\"20\" align=\"left\">(stripslashes($name))</td>";

Soll nun was geändert werden, übergebe ich die Felder ebenfalls mittels "post" an die "aendern.php".

Code:
<input type=\"hidden\" name=\"name\" value=\"$name\">

Das Feld "name" ist dann aber in der "aender.php" an der Stelle abgeschnitten, wo eigentlich das Anführungszeichen sein sollte. Eben an dieser Stelle ist nun ein Backslash.

Warum wird das Feld nich ganz übegeben?

Wäre für einen Tip sehr dankbar.

stender23
 
Weil das Anführungszeichen das value beendet.
Soll ein Anführungszeichen in einem HTML-Attribut als Inhalt stehen, so muss es als &quot; geschrieben werden.
 
Wenn das du das folgendermassen meinst
Code:
<INPUT TYPE=\"hidden\" name=\"name\" value=\&quot;$name\&quot;>
habe ich drei Backslash in dem Feld stehen.
 
Schick mal die Variablenwerte vor der Ausgabe durch die htmlspecialchars()- bwz. htmlentities()-Funktion.
 
Nein, ich meinte das:
Code:
<INPUT 
  type="hidden" 
  name="name" 
  value="In diesem &quot;Feld&quot; stehen 2 Anführungszeichen">
Du mußt also in $name die Anführungszeichen durch &quot; ersetzen.

Edit: Oder Du bearbeitest gleich alle Zeichen, so wie Gumbo beschrieben hat.
 
Ach so meinst du das.

Aber wenn ich die austauschen möchte

Code:
$name = str_replace("?","&quot;", $name);

was schreibe ich an die Stelle "?" ?

Setze ich da ein Anführungszeichen, habe ich ein ähnliches Problem. Die Werte für str_replace werden zu früh beendet.
 
Es gibt viele Möglichkeiten, such dir eine aus: "\"", '"', chr(0x22) (hexadezimal) oder auch chr(34) (dezimal).

Allerdings empfehle ich dir die Benutzung einer der von mir oben erwähnten Funktionen.
 
Zuletzt bearbeitet:
Habe mich mal hierfür entschieden:

Code:
$name = str_replace('"',"&quot;", $name);

Wenn ich in das Feld $name den Wert test"test2"test3 eingebe, kommt nur test\\\ raus.
 
Zurück