Von Zeit zu Zeit sammelt ja jeder Programmierer Code Schnippsel zusammen, die er von mal hier, mal da wiederverwendet. Einige meiner Code Snippets, die ich in PHP Projekten des öfteren verwende, habe ich mal zusammengestellt. Einie Beispiele sollen nur exemplarisch zeigen wie ein Problem gelöst wird und anregen für ähnliche Problemstellungen. Highlights sind z.B. eine XOR Verschlüsselung und das Blocken von IP-Adressen.
Bestimmte IP Adressen blocken
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | // Array mit den verbotenen IP-Adressen $verbotene_ips = array( '192.168.101.1', '192.168.202.1', '192.168.244.1', ); // Array kann auch aus einer Datei befüllt werden // $verbotene_ips = file('verbotene_ips.txt'); // Die IP-Adresse des Benutzers auslesen $ip = isset($_SERVER['REMOTE_ADDR']) ? trim($_SERVER['REMOTE_ADDR']) : ''; // Die IP des Benutzers mit dem Array der verbotenen IPs vergleichen if (($i = array_search($ip, $verbotene_ips)) != FALSE){ // Der Benutzer wurde geblockt - Meldung ausgeben echo "Ihre IP-Adresse ('$ip') wurde geblockt!"; exit; } // Hier kommt der Code für die IP-Adressen, die nicht verboten sind |
Temp Dateien löschen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | // Festlegen des Ordners, der gesäubert werden soll // die Slashes am Ende müssen beibehalten werden $captchaFolder = 'temp/'; // Dateitypen, die untersucht werden sollen (für Alle: *.*) $fileTypes = '*.txt'; //Nach wie vielen Minuten sollen die Dateien gelöscht werden? $expire_time = 20; // Alle Dateien des angegebenen Dateityps finden foreach (glob($captchaFolder . $fileTypes) as $Filename) { // Die Zeit der Erstellung auslesen $FileCreationTime = filectime($Filename); // Das Alte der Datei in Sekunden berechnen $FileAge = time() - $FileCreationTime; // Ist die Datei älter als die angegebene Zeit? if ($FileAge > ($expire_time * 60)){ // Irgendetwas mit der alten Datei machen.... print "Die Datei $Filename ist älter als $expire_time minuten\n"; // Zum Beispiel Löschen //unlink($Filename); } } |
Email-Adressen aus einem String fischen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | function email_fischen($str){ //regulärer Aussdruck um E-Mail Adressen zu erkennen $regexp = '/([a-z0-9_\.\-])+\@(([a-z0-9\-])+\.)+([a-z0-9]{2,4})+/i'; preg_match_all($regexp, $str, $m); return isset($m[0]) ? $m[0] : array(); } $test_string = ' test1@blub.org Verschiedene Formate testen: test2@blub.org; <a href="test3@blub.org">foobar</a> strange formats: test5@blub.org test6[at]blub.org test7@blub.net.org.com test8@blub.org test9@!blub!.org testest '; print_r(email_fischen($test_string)); /* Es wird dieses Array zurückgegeben: Array ( [0] => test1@blub.org [1] => test2@blub.org [2] => test3@blub.org [3] => test4@blub.org [4] => test5@blub.org [5] => test7@blub.net.org.com ) */ |
IP V4 Adresse auf Validität überprüfen
1 2 3 4 5 6 7 | function IsIPValid($ip){ if (preg_match('/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/', $ip)){ return true; } return false; } |
Sicheres Random Passwort erzeugen
(Angabe von sicherer Länge und Buchstaben vorrausgesetzt)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function random_password($length, $characters='abcdefghijkABC1234567890'){ if ($characters == ''){ return ''; } $chars_length = strlen($characters)-1; mt_srand((double)microtime()*1000000); $pwd = ''; while(strlen($pwd) < $length){ $rand_char = mt_rand(0, $chars_length); $pwd .= $characters[$rand_char]; } return $pwd; } |
Zeit zum erzeugen der Seite anzeigen
1 2 3 4 5 6 7 8 9 10 11 | $start = time(); // Code der ausgeführt werden soll, //hier einfach sleep zum erzeugen von 2 Sekunden sleep(2); $diff = time() - $start; print "Diese Seite wurde in $diff Sekunden generiert"; // Für eine genauere Angabe kann die microtime Funktion benutzt werden |
XOR Verschlüsselung mit Ver- und Entschlüsselungsfunktion
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | function XOREncryption($InputString, $KeyPhrase){ $KeyPhraseLength = strlen($KeyPhrase); // Durch den Eingabestring loopen for ($i = 0; $i < strlen($InputString); $i++){ // Zur Zeichenposition des Keys gehen //modulo, da der key() ja kürzer sein könnte $rPos = $i % $KeyPhraseLength; // Die eigentliche Ver- bzw. Entschlüsselung passiert hier $r = ord($InputString[$i]) ^ ord($KeyPhrase[$rPos]); // Die Buchstaben ersetzen $InputString[$i] = chr($r); } return $InputString; } // Hilfsfunktionen, die base64 benutzen // um lesbaren Text zu erzeugen function XOREncrypt($InputString, $KeyPhrase){ $InputString = XOREncryption($InputString, $KeyPhrase); $InputString = base64_encode($InputString); return $InputString; } function XORDecrypt($InputString, $KeyPhrase){ $InputString = base64_decode($InputString); $InputString = XOREncryption($InputString, $KeyPhrase); return $InputString; } |
E-Mail versenden mit PHP
1 2 3 4 5 6 | function sendMail($to, $subject, $message) { $headers = "From: \"From address\" " . "\r\n" . "Reply-To: \"Reply address\" " . "\r\n" . "X-Mailer: PHP/" . phpversion(); mail($to, $subject, $message, $headers); } |
Christi Himmelfahrt for jedes Jahr berechnen.
(Basierend auf der Gaußschen Osterformel und der Annahme, dass 39 Tage nach Ostersonntag Himmelfahrt ist.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | function himmelfahrt($year){ $X = $year; $K = floor ( $X / 100 ); $M = 15 + floor ( ( ( 3 * $K ) + 3 ) / 4 ) - floor ( ( ( 8 * $K ) + 13 ) / 25 ); $S = 2 - floor ( ( ( 3 * $K ) + 3 ) / 4 ); $A = $X % 19; $D = ( 19 * $A + $M ) % 30; $R = floor ( $D / 29 ) + ( floor ( $D / 28 ) - floor ( $D / 29 ) ) * floor ( $A / 11 ); $OG = 21 + $D - $R; $SZ = 7 - ( ( $X + floor ( $X / 4 ) + $S ) % 7 ); $OE = 7 - ( ( $OG - $SZ ) %7 ); $OS = $OG + $OE; return $OS; } |
Überprüfen ob eine Domain / Homepage erreichbar ist
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | function domainAvailable ( $strDomain ) { $rCurlHandle = curl_init ( $strDomain ); curl_setopt ( $rCurlHandle, CURLOPT_CONNECTTIMEOUT, 10 ); curl_setopt ( $rCurlHandle, CURLOPT_HEADER, TRUE ); curl_setopt ( $rCurlHandle, CURLOPT_NOBODY, TRUE ); curl_setopt ( $rCurlHandle, CURLOPT_RETURNTRANSFER, TRUE ); $strResponse = curl_exec ( $rCurlHandle ); curl_close ( $rCurlHandle ); if ( !$strResponse ) { return FALSE; } return TRUE; } |
Wenn ihr weitere nützliche PHP-Snippets auf Lager habt, zögert nicht, sie in den Kommentaren kund zu tun
12. Aug. von Leon



Danke! Ein echt hilfreiches Tutorial! 😀 Besonders das mit den IP-Adressen hat mir geholfen!
Snouty
am 11. März 2011