|
Geschrieben von Mitja Schmakeit
|
|
Tuesday, 25. December 2007 |
|
Mit php kann man per eval() wunderbar Code ausführen, der in einem String enthalten ist. Ich bastel mir bei fast allen Projekten immer irgendwo im Adminbereich eine kleine PHP-Konsole, wo man per POST (Textarea) php-code ausführen kann. Das problem dabei ist, dass bestimmte Zeichen beim POST automatisch maskiert, also mit einem Backslash versehen, werden. Das folgende Script entfernt die überflüssigen und codezerstörenden Maskierungen, ohne die gewollten dabei zu entfernen.
<?php
function killmaskofpost($maskedpost)
{
$maskedpost = str_replace(chr(92).chr(92), "[][BACK--SLASH][]", $maskedpost);
$maskedpost = str_replace(chr(92), '', $maskedpost);
$maskedpost = str_replace("[][BACK--SLASH][]", chr(92), $maskedpost);
return $maskedpost;
}
$evalcode = killmaskofpost($_POST["evalcode"]);
echo "<form action='' method='post'><textarea cols='70' rows='7'>".$evalcode."</textarea><br /><input type='submit' name='evalsubmit' value='eval!' />";
if ($_POST['evalsubmit'] == 'eval!') { echo "<br /><hr />"; eval($evalcode); }
?>
Alternativ kann man stripslashes() verwenden, was natürlich nur halb so toll wie meine Funktion ist. |
|
Letzte Aktualisierung ( Sunday, 30. December 2007 )
|