PHP Schnipsel I


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. #1 von robo47 - 29. Dezember 2009 zu 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. #2 von dreiling - 29. Dezember 2009 zu 17:37

    ach du typ, wie du mich hier immer als dilettant hinstellst… unglaublich! :P

    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… :-)

(wird nicht veröffentlicht)
  1. Bisher keine Trackbacks.