PHP: Verschiedene IP-Ranges umleiten

Über die Methode redirectIpRanges können IP-Adressen aus verschiedenen Adressbereichen auf eine beliebige Zielseite umgeleitet werden. Der erste Parameter enthält die Adressbereiche, über den zweiten Parameter wird die Zielseite definiert.

Code:

$aMyIPRange[] = '127.0.0.3/127.0.0.3';
$aMyIPRange[] = '127.0.0.0/127.0.0.10';

redirectIpRanges($aMyIPRange, 'http://heise.de/');
                       
function redirectIpRanges($aIPRange, $sDestination)
{
    foreach((array) $aIPRange as $sRange)
    {
        $aIPRange = explode('/', $sRange);
        $iStart   = ip2long($aIPRange[0]);
        $iEnd     = ip2long($aIPRange[1]);
        $iIP      = ip2long($_SERVER['REMOTE_ADDR']);
       
        if ($iIP >= $iStart && $iIP <= $iEnd)
        header('Location: '.$sDestination);
    }
}

Zufälligen String mit PHP erzeugen

Diese PHP-Funktion erzeugt eine zufällige Zeichenkette. Über den Parameter „iLength“ kann die Länge des Strings gesteuert werden. Der Parameter „sCharacters“ definiert, aus welchen Zeichen der String bestehen soll.

function getRandomString($iLength = 10, $sCharacters = null)
{  
    if($sCharacters == null)
    $aCharacters = array_merge(range('A', 'Z'), range('a', 'z'), range(0,9));
    else
    $aCharacters = str_split($sCharacters);
   
    for ($sRandomString = '', $i = 0; $i < $iLength; $i++)
    $sRandomString.= $aCharacters[array_rand($aCharacters)];
   
    return $sRandomString;
}

var_dump(getRandomString()); //Y6K7UHey4l
var_dump(getRandomString(2, 'ab')); //ba
var_dump(getRandomString(8, 'ab')); //bababbaa
var_dump(getRandomString(5, 'ABCDEFGHIJKLMO1234%&$§"$%')); //BM$M$

PHP: Array Path

Über die Methode „getValue“ lassen sich die Werte eines mehrdimensionalen Arrays mit der folgenden Notation auslesen: „Key/Key/Key/..“. Ein möglicher Anwendungsfall wäre das Einlesen einer Konfiguration, die in Form eines Arrays vorliegt.

Code:

function getValue($sPath, $aArray)
{
    foreach(explode('/', $sPath) as $sKey)
    $aArray=&$aArray[$sKey];
    return $aArray;
}

PHP: Array Path weiterlesen

PHP: ZIP-Archiv erstellen

Die kleine Hilfsklasse „ZipHelper“ ermöglicht es, auf einfache Weise Zip-Archive mit PHP zu erstellen. Die Dateien und Verzeichnisse lassen sich auf verschiedene Arten über die Methode „addSource“ zu dem Archiv hinzufügen. Verzeichnisse werden rekursiv durchlaufen.

Beispiel:

  $oZipHelper = new ZipHelper("my_archiv.zip");
  $oZipHelper->addSource('*.txt')
             ->addSource('*.php')
             ->addSource('../')
             ->addSource('/test.txt')
             ->addSource(array('/home/sklueh/write.sh',
                               '/home/sklueh/config.php'))
             ->addSource('/home/sklueh/my_directory')
             ->create();

PHP: ZIP-Archiv erstellen weiterlesen

PHP: Ein mehrdimensionales Array über eine anonyme Funktion filtern

Möchte man ein Array nach bestimmten Kriterien filtern, dann kann man dafür Schleifen verwenden. Eine elegante Alternative zeigt dieses Beispiel:

Code:

$aUnfiltered[] = array('value' => 102, 'id' => 1);
$aUnfiltered[] = array('value' => 152, 'id' => 2);
$aUnfiltered[] = array('value' => 235, 'id' => 3);
$aUnfiltered[] = array('value' => 325, 'id' => 4);
$aUnfiltered[] = array('value' => 782, 'id' => 5);
$aUnfiltered[] = array('value' => 813, 'id' => 6);
$aUnfiltered[] = array('value' => 901, 'id' => 7);

$aFiltered = array_filter($aUnfiltered, function($aValues)
                         {
                            if($aValues['value'] > 500)
                            return $aValues;
                         });
print_r($aFiltered);

/*
Array
(
    [4] => Array
        (
            [value] => 782
            [id] => 5
        )

    [5] => Array
        (
            [value] => 813
            [id] => 6
        )

    [6] => Array
        (
            [value] => 901
            [id] => 7
        )

)
*/