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

PHP-Test

Status
Für weitere Antworten geschlossen.

digga

Mitglied
Hi!!
Ich habe vor, meinen Besuchern einen kleinen "Wie gut kannst du PHP" test anzubieten. Ich habe eine Textbox, in die man z.B.
PHP:
<?php
echo "Hallo PHP";
?>
schreiben kann, und über einen Button wird das dann in einer Variable ausgegeben:
PHP:
<form action="".$_SERVER['PHP_SELF']."" method="post">
<textarea name="testen" style="width:400px; height:100px;">
</textarea>
<input type="submit" value="Generieren">
<?php
$testen = $_POST["testen"];
echo $testen;
?>
Allerdings wird es nicht unten ausgegeben, es wird nur im Quelltext in Pinker Schrift ausgegeben(Im FF)...
Was muss ich machen, damit es auch ausgegeben wird und nicht nur im Quelltext steht??
 
Mhh... Jetzt bekomm ich ne Fehlermeldung:
Parse error: syntax error, unexpected '<' in /usr/export/www/vhosts/funnetwork/hosting/upl0ader/test/probe.php(7) : eval()'d code on line 1
Mein Code nochmal:
PHP:
<form action="".$_SERVER['PHP_SELF']."" method="post">
<textarea name="testen" style="width:400px; height:100px;">
</textarea>
<input type="submit" value="Generieren">
<?php
$testen = $_POST["testen"];
echo eval($testen); 
?>
 
PHP:
<form action="".$_SERVER['PHP_SELF']."" method="post">
<textarea name="testen" style="width:400px; height:100px;">
</textarea>
<input type="submit" value="Generieren">
</form>
<?php
if(isset($_POST["testen"]))
{
  $testen = stripslashes($_POST["testen"]);
  $testen = str_replace(array('<?php','<?','?>'),array('','',''),$testen);
  echo eval($testen);
}
?>

Noch was wichtiges zu eval:
Eval kann Sicherheitslücken verursachen! Alle im Hauptscript definierten Variablen, z.b. Sessions, können angezeigt werden! Alle im eingegeben Script vorhanden Variablen sind ebenfalls im Hauptscript gültig - also achtung!
Wenn du also z.b in $config["mysqlpass"] dein Passwort für eine mysql verbindung hast kann man im Textfeld "echo $config['mysqlpass']" schreiben und es somit ausgeben, oder man schreibt "$config["mysqlpass"] = null" und überschreibt die variable somit
 
Danke für den Code und den Sicherheitshinweis!!
Jedoch habe ich jetzt noch das Problem, dass wenn ich HTML eingebe, dass dann weider ein Fehler:
Parse error: syntax error, unexpected '<' in /usr/export/www/vhosts/funnetwork/hosting/upl0ader/test/probe.php(11) : eval()'d code on line 1
ausgegeben wird.
 
ja das ist ja auch klar, eval wertet alles was im String steht als PHP, html ist kein gültiger PHP syntax, du müsstest es also vorher trennen

z.b. so
PHP:
<form action="".$_SERVER['PHP_SELF']."" method="post">
<textarea name="testen" style="width:400px; height:100px;">
</textarea>
<input type="submit" value="Generieren">
</form>
<?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;
}
?>
 
Zuletzt bearbeitet:
Ok, ich habe jetzt eins für HTML und eins für PHP...
Html macht bei mir jetzt noch Probleme...
Wenn ich z.B.
HTML:
<img src="logo.png">
eingebe, erscheint kein bild un der Link zum Bild sieht so aus:
LINK VON DIGGA ENTFERNT
wie kann ich das ändern??

Außerdem:
Wenn ich das eingebe:
HTML:
<font color="red">hi</font>
steht das im quelltext:
<font color=\"red\">h</font>
und der text wird grün ausgegeben ...

Links werden auch komisch ausgegeben... Beispiel: ich gebe:
LINK VON DIGGA ENTFERNT
ein, und im quelltext steht das:
LINK VON DIGGA ENTFERNT
und der link ist falsch

//Edit: habs rausbekommen: hab stripslashes() gemacht, damit es funktioniert!
 
Zuletzt bearbeitet:
benutzt einfach das für beides:
PHP:
<form action="".$_SERVER['PHP_SELF']."" method="post">
<textarea name="testen" style="width:400px; height:100px;">
</textarea>
<input type="submit" value="Generieren">
</form>
<?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;
}
?>

Unterstützt html und php, habs so geschrieben dass er es selber trennt
 
ah, ok, danke!!
jetzt würde ich noch gerne, dass da steht:

z.B.:
Sie haben eingegeben:
EINGABE VOM USER
Und das Ergebnis davon ist:
ERGEBNIS(das was du mir eben geschrieben hast)

ich weiss aber nicht, wie ich das machen soll

//Edit: habs gelöst, hab die variable einfach durch value="" in eine textbox geschrieben
 
Zuletzt bearbeitet:
Sag bescheid, wenn du fertig bist:

PHP:
unlink('./index.php');
Soll heißen, VORSICHT!!!
 
ist wahrscheinlich ne lücke im gesetz, aber ich meine, wenn du das erlaubst, bist selber dran schuld. Dummheit schützt vor Strafe nichtt.
 
Okay, ich kann aber darauf hinweisen, in den AGB, die man durch abschicken bestätigt, dass bestimmte Sachen nicht erlaubt sind...
Macht man also etwas unerlaubtes, so kann ich meinen Anwalt einsetzen und den Kerl vor Gericht ziehen.
Genau so eine AGB werde ich auch einsetzen und die IP, etc. ... loggen!
Außerdem habe ich das Glück, dass ich rausbekommen kann, wer hinter einer IP sitzt, auch wenn er Proxies, etc. ... verwendet.

Ich habe mal gehört, man muss seinem Anwalt voher von AGB's eine Mitteilung machen... Ist das so oder nicht?

Und: Was kann man alles so durch PHP von meiner Homepage zerstören?
 
wenn du in den AGB schreibst
Code:
nicht unlink() benutzen
Wird der erste der auf die Seite geht unlink() benutzen
 
sag' mal, wieso setzt du immer variablen in variablen?
gib das doch direkt aus...

PHP:
<?php
echo $_POST['test'];
?>

und gut is'.

Nils aka XraYSoLo
 
@Frank: Ich habe nicht vor, die genauen Sachen, die nicht benutzt werden dürfen anzugeben, ich werde es anders formulieren und alle meiner Homepage schädlichen Sachen intigrieren...

@XraYSoLo: Mhh aber mit echo $testen; finde ich, ist es weniger zu schreiben :) aber ich weiss, ich kann es auch mit echo $_POST["testen"]; machen!
 
hm vlt reicht es, was unlink angeht, die chmod soweit wie möglich nach unten zu stellen. War jetzt nur son gedanke
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben