• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

eingabe überprüfen

Status
Für weitere Antworten geschlossen.

digga

Mitglied
Ich habe eine Seite, auf der man PHP testen kann... Ich habe versucht, einen Befehl (unlink) zu deaktivieren:

PHP:
Hier kannst du deine PHP- und HTML-Codes und deine Kenntnisse in PHP bzw. HTML testen:<br><br><br>

<form action="".$_SERVER['PHP_SELF']."" method="post">
<textarea name="testen" style="width:450px; height:300px;">
</textarea>
<input type="submit" value="Generieren">
</form>
<?php
$suche   = 'unlink';
$pos = strpos($meinString, $findMich);

// Beachten Sie die Verwendung von ===. Ein einfacher Vergleich (==) liefert
// nicht das erwartete Ergebnis, da die Position von 'a' die nullte Stelle
// (also das erste Zeichen) ist
if ($pos === false) {
    echo "$testen = stripslashes($testen);
?>
<?php
echo \"<br><br>Deine Eingabe:<br>\";
?>
<textarea style=\"width:450px; height:150px;\">
<?php
echo $testen;
?>
</textarea><br><br><br>
<?php
echo \"<br><br><b>Ergebnis:</b><br><br>\";
?>
<?php
function evalcode($code)
{
  return eval(stripslashes($code));
}
if(isset($_POST["testen"]))
{
  $str = stripslashes($_POST[\"testen\"]);
  $str = preg_replace(\"%<\?php(.*)\?>%isUe","evalcode('$1')\",$str);
  $str = preg_replace(\"%<\?(.*)\?>%isUe","evalcode('$1')\",$str);
  echo $str; 
$ipadresse =\"$REMOTE_ADDR\";
$email = \"EMAIL\";
$sende_email_text = \"Ein User mit der IP-Adresse: $ipadresse hat folgendes eingegeben: $testen\";
				@mail($email, \"PHP-Test\", $sende_email_text, \"From: EMAIL\");
}";
} else {
    echo "Ihre Eingabe enthält einen deaktivierten PHP-Befehl(unlink()";
    echo "<?php
echo \"<br><br>Deine Eingabe:<br>\";
?>
<textarea style=\"width:450px; height:150px;\">
</textarea><br><br><br>
<?php
echo \"<br><br><b>Ergebnis:</b><br><br>\";
?>";
}
?>

Jedoch erhalte ich eine Fehlermeldung:
Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /usr/export/www/hosting/toma1413/php_testen.php on line 34
Ich weiss jedoch nicht, wie es richtig aussehen muss.. Kann mir da jemand helfen?
 
okay, ich habe den PHP-Tag nur einmal geöffnet und auch einmal wieder geschlossen...
Immernoch die gleiche Fehlermeldung, allerdings mit einer anderen Zeile... Die Zeile, in der der Fehler ist, ist diese:
if(isset($_POST["testen"]))

Ich weiss allerdingt nicht was ich anders machen muss bzw. soll....
 
Ist das die komplette Zeile?
Poste doch nochmal deinen überholten Code hier im Forum.
Übrigens:
PHP:
//besser so
if(isset($_POST['testen']))
//also so
if(isset($_POST["testen"]))
 
warum benutzt du kein in_array ?

da isset lediglich darauf hin prüft, ob eine variable in einem Array gesetzt ist.

in_array tut dies zwar auch, es kann aber bei älteren php-versionen (imho 4.2) zu Problemen kommen, das der geprüfte wert hier kein Array sein darf.

Ausserdem unterscheidet in_array zwischen Groß- und Kleinschreibeung, was zu weitern Problemen und somit zur Verringerung der Performance führt.

isset ist demzufolge immer die bessere Lösung um auf das "gesetztsein" einer variable hin zu prüfen.
 
Hier:
PHP:
if(isset($_POST["testen"]))
{
  $str = stripslashes($_POST[\"testen\"]);
  $str = preg_replace(\"%<\?php(.*)\?>%isUe","evalcode('$1')\",$str);
  $str = preg_replace(\"%<\?(.*)\?>%isUe","evalcode('$1')\",$str);
hast du mehrere Anführungszeichen nicht Escaped.
 
in_array tut dies zwar auch, es kann aber bei älteren php-versionen (imho 4.2) zu Problemen kommen, das der geprüfte wert hier kein Array sein darf.
dann schreib di doch ne classe die mehrere abragen machen kann (als input ein array oder string nimmt)

Ausserdem unterscheidet in_array zwischen Groß- und Kleinschreibeung, was zu weitern Problemen und somit zur Verringerung der Performance führt.
PHP: strtolower - Manual
mach doch alles klein ?

isset ist demzufolge immer die bessere Lösung um auf das "gesetztsein" einer variable hin zu prüfen.
du willst den user doch alles via eval ausführen lassen was nicht von dir gelistet wurde ?

isset spielt doch da ne ganz andere rolle ?
 
was soll dieser Unsinn. Er will doch lediglich testen ob sein Post-Array eine gewisse Variable enthält.
Und du willst ne extra Klasse schreiben, die noch überprüft ob es ein Array ist oder nicht?! So ein Unfug
und dann hinterher die Werte mit strtolower auf Groß- und Kleinschreibung testen?! weiterer Unfug.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben