PHP Foreach über zwei Arrays

Wenn man zwei symmetrische Arrays (Gleiche Anzahl von Elementen) hat und man möchte über diese gleichzeitig iterieren, dann wird das mit einem normalen Foreach nicht funktionieren. Man kann hier allerdings ein bisschen tricksen und die Funktion nützen, dass man sowohl über Key als auch den Wert des Arrays verfügen kann. < ?php foreach (array_combine($name, $value) as $n => $v){ //double Iteration $sql.=$n.’=’.$v.’, ‘; } Ganz nützlich, wenn man sich SQL Statements zusammenbaut.

PHP Passwort Sicherheit und Hashes 2

Ich hab mal ein bisschen herumprobiert und interessante Ergebnisse bekommen: SHA-512: 0.0001068115234375 Bcrypt: 4.3771350383759 Sha1: 3.3855438232422E-5 Md5: 1.5020370483398E-5 < ?php function bcrypt_encode($password, $rounds=’12’){ $salt = substr(str_shuffle(‘./0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’), 0, 22); return crypt($password, ‘$2a$’.$rounds.’$’.$salt); } function bcrypt_check($password, $stored){ return crypt($password, substr($stored, 0, 30)) == $stored; } $start = microtime(true); for($i = 0; $i < 10; $i++){ $x = hash(“sha512”, “123456”); } $end = microtime(true); echo ‘SHA-512: ‘.($end – $start).’ ‘; $start = microtime(true); for($i = 0; $i < 10; $i++){ $x = bcrypt_encode(‘123456’); } $end = microtime(true); echo ‘Bcrypt: ‘.($end – $start).’ ‘; $start = microtime(true); for($i = 0; $i < 10; $i++){ $x = sha1(“123456”); } $end = microtime(true); echo ‘Sha1: ‘.($end – $start).’ ‘; $start = microtime(true); for($i = 0; $i < 10; $i++){ $x = md5(“123456”); } $end = microtime(true); echo ‘Md5: ‘.($end – $start).’ ‘; Also wie man merkt, ist MD5 & SHA-1 wirklich auf Geschwindigkeit optimiert. Ich verwende hier abgeänderte Funktionen von hier, ohne die Einbindung der Email in den Hash. Mit 12 Iterationen bei bcrypt erreicht man schon sehr hohe Berechnungszeiten und kann dies noch natürlich steigern, allerdings ist die Frage, ab wann sich das noch lohnt. Einen Nutzer 10 Sekunden beim Login warten zu lassen ist […]

PHP Passwort Sicherheit und Hashes

Hey Ich habe zwar schon öfter darüber gelesen, dass MD5 Kollisionen beinhaltet, aber das bedrückte mich nicht weiter, bis ich heute einen Artikel bei Coding Horror laß über die Geschwindigkeit Passwörter zu berechnen. Demnach kann man mithilfe von seiner Grafikkarte, alle 6 Stelligen Passwörter mit Groß/Kleinbuchstaben, Sonderzeichen und Zahlen innerhalb von wenigen Minuten berechnen. Dies schockte mich doch ein bisschen, da doch von vielen “Experten” (Oder auch hier / oder hier) versichert wurde, dass MD5 mit einem Salt perfekt sicher wäre. (Irgendwie muss ich da grad selber darüber lachen). Bisher habe ich selbst in vielen von meinen Experimenten nur MD5 verwendet, mit verschiedenen Methoden einen Salt zu erstellen. Bei weiteren Nachforschungen stelle ich fest, dass auch SHA-1 mittlerweile nicht mehr als ganz sicher gilt. Coding Horror schlägt vor bcrypt (Welches auch unter BSD verwendet wird) oder bessere Algorithmen zu verwenden, welche bewusst darauf ausgelegt sind, langsam zu sein. Vor allem sollte, bei der Neuentwicklung einer Applikation, dies gegenüber Mehrfachhashen bevorzugt verwendet werden. Ich hatte bisher immer gelacht, wenn ich von Mitgliedern der Piratenpartei 30 Stellige Passwörter bekommen habe, aber irgendwo ist diese Vorsichtigkeit auch berechtigt. Eins ist klar: Wenn man ließt, dass einige Firmen immer noch Passwörter im Klartext speichern, […]

IE6 is finally dead

Webseiten für den IE6 zu entwickeln ist für viele Webdesigner der reinste Horror. Sachen wie Runde Ecken o.ä. werden zum reinsten Horror und lassen Auftraggeber viel Geld & Zeit kosten. Laut ie6countdown benutzen weniger als 10% der Internetbenutzer den 6er. Die meisten die ihn noch benutzen, kommen aus China. Facebook hat für IE6 Benutzer bereits den Zugang limitiert und IE7 wird ebenfalls nicht mehr die neue FB Timeline erleben. WDKK wird ab sofort den Support für IE6 & IE7 einstellen und keine Designs mehr an diese Versionen anpassen. Siehe auch: Microsoft feiert Ende des Internet Explorer 6

Cleanup Script für Debian

Nachdem ich ungern alles per hand mache, hab ich mir mal nen script geschrieben, dass die logfiles und den Ram-Cache leert. Dabei wird zuerst das logrotate ausgeführt und danach werden die .gz datein gelöscht.   #!/bin/bash sync echo 3 > /proc/sys/vm/drop_caches cat /dev/null > /var/log/messages cat /dev/null > /var/log/wtmp cat /dev/null > /var/log/maillog cat /dev/null > /var/log/apache2/error.log cat /dev/null > /var/log/xferlog logrotate -f /etc/logrotate.conf find /var/log/ -name ‘*.gz’ -exec rm “{}” \; find /var/log/ -name ‘*.1’ -exec rm “{}” \; find /var/log/ -name ‘*.0’ -exec rm “{}” \;

Awesome PHP Resize script

Found a awesome resize script for php today. Its straight forward and give many options. check it out at: http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/ < ?php /* * File: SimpleImage.php * Author: Simon Jarvis * Copyright: 2006 Simon Jarvis * Date: 08/11/06 * Link: http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details: * http://www.gnu.org/licenses/gpl.html * */ class SimpleImage { var $image; var $image_type; function load($filename) { $image_info = getimagesize($filename); $this->image_type = $image_info[2]; if( $this->image_type == IMAGETYPE_JPEG ) { $this->image = imagecreatefromjpeg($filename); } elseif( $this->image_type == IMAGETYPE_GIF ) { $this->image = imagecreatefromgif($filename); } elseif( $this->image_type == IMAGETYPE_PNG ) { $this->image = imagecreatefrompng($filename); } } function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) { if( $image_type == IMAGETYPE_JPEG ) { imagejpeg($this->image,$filename,$compression); } elseif( $image_type == IMAGETYPE_GIF ) […]

Skype in den Tray minimieren

Hey Leider sind die Standardeinstellungen unter WIN7 bei Skype so, dass standardmässig Skype nur in die Taskleiste minimiert. Da das bei vielen Programmen und kleinen Bildschirmen sehr lästig ist, hab ich nach einer Möglichkeit gesucht Skype in den Tray zu minimieren. Zufälligerweise gibts direkt von Skype ne Option dazu.   Einfach den Hacken entfernen und schon hat man mehr platz in der Taskleiste.

Wie macht man am besten Screenshots von Webseiten?

  Als Webdesigner mache ich viele Screenshots, oft will ich aber nur einen bestimmten Webseitenauschnitt haben. Zwar hat Windows hat dafür ne funktion, die wahrscheinlich jeder kennt, nämlich die Taste ‘Druck’ auf der Tastertur, allerdings speichert Windows den Screenshot nicht als Datei sonder legt es lediglich in den Zwischenspeicher. Dies mag für einige Anwendungen von vorteil sein, doch oft will man das Bild als Datei haben, um es nachzubearbeiten oder gleich hochzuladen, was aus dem Arbeitsspeicher nicht zu gut funktioniert. Auch hat man die Browseradressleiste im Screenshot und muss es wieder nachbearbeiten. Nach dem durchstöbern von den Firefox Addons habe ich ein Plugin names “Screengrab” gefunden, welches ermöglich die ganze Seite oder nur einen Teil zu speichern. Wirklich nützlich, wenn man die Webseite einem Freund zeigen will.   Visit Screengrab’s Homepage Visit Screengrab on Mozilla Add-Ons