Es ist mal wieder Zeit für eine kleine Spielerei. Ich habe euch ein Script zur Erstellung eines einfachen Passwortgenerators in PHP zur Verfügung gestellt. Vielleicht kann der ein oder andere von euch das Script gebrauchen um eigene Passwörter zu generieren.
Über Feedback oder Verbesserungsvorschläge würde ich mich wie immer äusserst freuen!
<?php
function random_pwd($length){
// Festlegung der verfügbaren Buchstaben, Zahlen und Sonderzeichen
$specialChars = array('!','@','#','$','%','&','*','(',')','_','-','+','=','[',']','<','>','?','/');
$chars = array_merge(range('a','z'), range('A','Z'), range(0,9), $specialChars);
// Einzelne Buchstaben entfernen
unset($chars[array_search('i',$chars)]);
unset($chars[array_search('l',$chars)]);
unset($chars[array_search('o',$chars)]);
unset($chars[array_search('I',$chars)]);
unset($chars[array_search('O',$chars)]);
unset($chars[array_search('Q',$chars)]);
$chars = array_values($chars);
// Array mischen
shuffle($chars);
// Array beschneiden
$pwd = array_slice($chars,0,$length);
// Rückgabewert als String
return implode('',$pwd);
}
// Ausgabe des Passwortes mit einer Länge von 10 Stellen
echo random_pwd(10);
?>
Um den Inhalt eines Array in einer Schleife effektiv zu ändern, müssen wir das Array mit der “call-by-reference”-Methode ansprechen:
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value)
{
$value = $value * 2;
}
// $arr ist nun Array( [0]=>2, [1]=>4, [2]=>6, [3]=>8 )
unset($value); // Das letzte Element der Referenz löschen
Durch das “&” sprechen wir die Referenz an und nicht die Variable (Array). Dadurch können wir den Wert direkt in einem Array ändern und umgehen somit den Kopiervorgang.
Diese Methode können wir auch bei Funktionen anwenden und bietet sich hervoragend bei großen Arrays an.
Der Gegensatz dazu ist die “call-by-value”-Methode. Sie kopiert den übergebenen Wert einfach und somit wird der Speicher nicht effektiv genutzt.
Um das PHP-Skript zu optimieren und die Geschwindigkeit zu maximieren, muss man einige Dinge beachten.
Tipp 1: Zählschleifen
Bei einer Zählschleife niemals ein Array zählen lassen in der Bedingung. Beispiel:
for($i = 0; $i <= count($array); $i++)
{
/** Anweisung **/
}
Dieses Beispiel führt dazu das bei jedem Durchlauf die Länge des Arrays ermittelt wird. Vorschlag:
$length = count($array);
for($i = 0; $i <= $length; $i++)
{
/** Anweisung **/
}
Beim durchlaufen eines Arrays wird sowieso empfohlen eine foreach-Schleife und keine for-Schleife zu benutzen.
Tipp 2: Der Speicher
Um den Speicher nicht unnötig zu überfüllen und ihn aufzublähen, sollte man Variablen und Arrays löschen, wenn man weiß, dass man sie nicht mehr braucht.
unset($array);
Tipp 3: Die Ausgabe
Wenn man in PHP etwas ausgeben lassen will, muss man nicht den Verkettungsoperator benutzen:
/** UNNÖTIG **/
$string = 'ein Test';
echo 'Das ist '.$string.' von mir'; // Das ist ein Test von mir
/** BESSER **/
echo 'Das ist ',$string,' von mir'; // Das ist ein Test von mir
Durch den Verkettungsoperator (.) wird die gesamte Zeile ersteinmal in ein String kompiliert. Das heißt, dass wir einen unnötigen Schritt haben. Mit dem Komma teilen wir dem Skript einfach mit, dass er es einfach ausgeben soll. Achtung, das Komma kann man nur benutzen wenn man den echo Befehl in einfachen Anführungszeichen ausgibt.
Einfache Funktion um einen Prozentsatz auszugeben. Die Berechnung kann auch über ein Formular erzeugt werden.
<?php
function prozent($wert, $prozent) {
return $wert * $prozent / 100;
}
?>
Ausgabe:
<?php
echo prozent(100,25);
?>
Der Wert 100 ist der Ursprungswert von dem der Prozentsatz 25 berechnet werden soll.
Durch das folgende Script kann eine Datei zum Datenimport zeilenweise eingelesen und ausgegeben werden. In unserem Beispiel geben wir den Inhalt der CSV Datei example.csv aus:
$filename = 'example.csv';
$file = file($filename);
for($i=0 ; $i<count($file) ; $i++) {
echo $file[$i];
echo '<br />';
}