Guten Morgen,
da sich inzwischen auch EWA mit den etwas interessanteren Themen beschäftigt und sich im laufe der Zeit auch ausserhalb von EWA etwas nützliches angesammelt hat, hier ein paar kleine Codeschnipsel auf die ich immer wieder gerne zurückgreiffe:
Komplettes POST Array auslesen und ausgeben:
foreach($_POST as $key => $value) { print(htmlspecialchars("Name: [$key] Wert: [$value]")."<br>"); }
Komplettes POST Array unescapen:
if (get_magic_quotes_gpc()) { $_POST = array_map('stripslashes', $_POST); }
Includes als Dateinamen managen:
if ($_GET && is_file("files/".$_GET["site"].".php")) include ("files/".$_GET["site"].".php"); else include ("welcome.php");
Letzte Besuche von Google Bot registrieren:
$host = gethostbyaddr($_SERVER['REMOTE_ADDR']); $domain = explode(".", $host); $domain_array = count($domain)-2; if ($domain["$domain_array"] == "googlebot"){ //information verwalten, insert oder ausgabe }
Und kennt evtl irgendjemand ein WordPressPlugin was es erlaubt den Code schön formatiert zu posten?
Für Tips bin ich sehr dankbar
Grüße,
Christian
#1 von robo47 am 29. Dezember 2009 - 15:27
ausgeben von $_POST:
var_dump($_POST);
eventuell noch ein echo ”; davor wenn man es sich im browser anstatt im quelltext oder in der Shell anschaut.
Betreff komplettes POST-array escapen .. was hat stripslashes mit escapen zu tun ? unescapen wäre wohl eher richtig
Betreffs deiner Methode für includes via get:
1) -> mit isset arbeiten, ein if $_GET ist recht unsauber
2) error-reporting hochsetzen und fehler ausgeben lassen, ( http://www.robo47.net/codeschnipsel/2-Fehlerausgabe-in-PHP-Scripten )
Der Code testet über PHP casting-verhalten ob $_GET leer ist, aber es kann ja auch ein anderer $_GET-parameter gesetzt sein, dann bekommst du sowas:
Notice: Undefined index: site in foo.php on line Y
also am besten mit isset auf den passenden index überprüfen,
Allgemein wäre ich mit dynamischen includes über user-input immer sehr vorsichtig, eine alte php-version oder mal wieder was verbuggtes und schon kann man file_exists / is_file austricksen und via directory traversal: ../../
auf fast alles zugreifen, dann doch lieber ein statisches switch für den parameter, wenn man es dynamischer will/braucht ein array verwenden und mit in_array() schauen ob der parameter gültig ist, wenn man das system erweitert, kann man das array ja in einer config einlassen oder so.
#2 von dreiling am 29. Dezember 2009 - 17:37
ach du typ, wie du mich hier immer als dilettant hinstellst… unglaublich!
nagut.
1. var_dump() hatte ich bisher nicht genutzt und meine version ist ganz bestimmt um einiges hübscher in der browserausgabe.
2. unescapen is natürlich richtig, hab ich nu verbessert, danke!
3. isset kann man ja ohne probleme noch einbauen, da gibts eben ohne die site variable deine genannte meldung… und den schmutzigen kram mit directory traversal wirst du mir nu nächste woche nochmal etwas genauer erläutern müssen…