PHP PHP Programm läuft nicht

jopjip

Ensign
Dabei seit
Juni 2008
Beiträge
233
Hi,
ich bin gerade dabei mir PHP einzueignen und hab weil es sich anbietet und auch nützlich ist versucht ein Programm zu schreiben, in das Text eingegen wird und das automatisch Sonderzeichen und Umlaute in HTML-Code umwandelt.

PHP:
<h4>Geben Sie ihren HTML-Code ein</h4><br />
<form action="<?echo $_SERVER['PHP_SELF'];?>" method="post">
<!-- Input des HTML-Codes -->
<textarea name="inputfeld" cols="100" rows="15"></textarea><br />

<br />

<!-- Button der, der bewirken soll, dass das Skript ausgeführt wird und der HTML-Code im DIV-Bereich ausgegeben wird -->
<input type="button" value="abschicken" name="1" />
</form>

<h4>Hier ist der von uncodierten Sonderzeichen freie HTML-Code</h4><br />
<?

$zeichenarray = array("Ä" => "&auml;", "Ö" => "&Ouml;", "Ü" => "&Uuml;", "ä" => "&auml;", "ö" => "&ouml;", "ü" => "&uuml;", " " => "&nbsp;");

$ouput = htmlentities (strtr($_POST['inputfeld'], $zeichenarray));

/*Wenn der Button geklickt wird, soll dieser Bereich ausgeben werden*/
if ($_POST['abschicken'])
{
	/*Hier soll der Text abgegeben werden*/
	echo "<div>" . $output . "</div>";
}

?>
Wäre ganz nett, wenn mal jemand vom Fach drüber schauen würde, ich krieg echt graue Haare!

MFG
 

lod

Cadet 3rd Year
Dabei seit
Mai 2010
Beiträge
47
Was ist dieses komische Array bei htmlentities? Und bei der Überprüfung ob Text eingegeben wird prüfst du eine nicht vorhandene Variable.

Bin jetzt zu faul deinen Schlampercode zu fixen, hier meine Lösung:

PHP:
<?php

if(!empty($_POST['benutzereingabe'])){

  $neuertext = htmlentities($_POST['benutzereingabe']);
  echo "<i>".$neuertext."</i>";

}else{

echo "
<form action=\"dateiname.php\" method=\"post\">
<textarea name=\"benutzereingabe\" cols=\"100\" rows=\"15\"></textarea><
<input type=\"submit\" value=\"Abschicken\" name=\"submit\" />
</form>
";

}

?>
Nicht getestet, sollte aber funktionieren
 
Zuletzt bearbeitet:

Zeroflow

Lt. Commander
Dabei seit
Juli 2006
Beiträge
1.868
eig. sollte das ja mit
$newstring = htmlspecialchars( $string );
einfacher gehen...
 

HansDampf38

Lt. Junior Grade
Dabei seit
Jan. 2008
Beiträge
381
Also mir fallen auf die schnelle 3 Fehler auf

1. Schreibfehler

ouput --> output

2. "abschicken" ist der Wert und nicht der Name des Buttons

3. Der Button darf nicht von Typ "button", sondern muss vom Typ "submit" sein

und, weiß aber nicht ob man das als Fehler ansieht, solltest du anstatt POST mal mit GET probieren.

Gruß

HD
 

jopjip

Ensign
Ersteller dieses Themas
Dabei seit
Juni 2008
Beiträge
233
Vielen Dank Iod, ich hoffe du verzeist meine Fehler, ich hab dein Skript noch ein bisschen ergänzt:
PHP:
<?php

echo "<br><br>";

$zeichenarray = array("Ä" => "&auml;", "Ö" => "&Ouml;", "Ü" => "&Uuml;", "ä" => "&auml;", "ö" => "&ouml;", "ü" => "&uuml;", " " => "&nbsp;");

if(!empty($_POST['benutzereingabe'])){

  $neuertext = htmlentities(strtr($_POST['benutzereingabe'], $zeichenarray));
  echo "<i>".$neuertext."</i>";

}else{

echo "
<form action=\"index.php\" method=\"post\">
<textarea name=\"benutzereingabe\" cols=\"100\" rows=\"15\"></textarea>
<br>
<input type=\"submit\" value=\"Abschicken\" name=\"submit\" />
</form>
";

}

?>
Das Array "$zeichenarray" in Verbindung mit "strtr($string, $array,)" bewirkt, dass alle Symbole bzw. Schlüssel (also Ä, Ö, Ü, etc.) durch den entsprechenden Wert ersetzt werden (also &Auml; , &Ouml; , &Uuml; , etc.) so kann man auch beispielsweise aus einem "a" ein "e" machen, wenn man da Bock drauf hat :p

MFG und vielen Dank
 

lod

Cadet 3rd Year
Dabei seit
Mai 2010
Beiträge
47
Bitte ;) War nur verwirrt warum du das gemacht hast weil htmlentites() macht das auch selbst ;)
 

luky37

Captain
Dabei seit
Sep. 2005
Beiträge
3.417
Am Rande bemerkt sei, dass man lieber seine Charset Einstellungen in Ordnung bringen soll, anstatt mit HTML Entities die Augen davor zu verschließen.

Das macht man im HTTP Header und in den Meta Angaben.
 
Top