Archive for August, 2011

Anti-Spam Formular

Samstag, August 27th, 2011

Sie bekommen dauernd SPAM von Formularen, die auf Ihrer Website ausgefüllt werden?

Das sind Robots, die automatisch das Formular ausfüllen und absenden.

Jeder kennt die Abhilfe dagegen mit sogenannten Captchas, schwer lesbare Zeichen, die in ein Feld eingegeben werden müssen. Und jeder weiß, dass das umständlich ist.

Es gibt eine neue und sehr einfache und userfreundliche Methode gegen solchen Formular-Spam:

Ein unsichtbares Eingabefeld, welches unbedingt leer sein muss. Das Feld wird mit CSS display:none oder visibility:hidden unsichtbar gemacht. Wenn das Feld „email“ oder „name“ heißt, ist die Wahrscheinlichkeit sehr groß, dass eine Maschine das Feld ausfüllt.
Eine echte Person sieht das Feld gar nicht und kann es nicht ausfüllen.
Für noch mehr Sicherheit könnte man das Feld mit Javascript mit einem bestimmten Wert befüllen.

Quelle: http://usabilityblog.be/

Newsletter an Hotmail senden

Dienstag, August 23rd, 2011

Wenn man einen Newsletter an Hotmail-Empfänger sendet, dann kann es sein, dass Emails nicht ankommen und es auch kein Rück-Email gibt. Hier eine Erklärung, was Microsoft im Hintergrund macht und was man dagegen tun kann.

http://www.webforefront.com/archives/2007/11/getting_through.html

PHP im Hintergrund (fork)

Dienstag, August 16th, 2011

Ja, man kann PHP als Hintergrundprozess, unabhängig vom Browser laufen lassen.

Der Browser macht einen Request. Der Server liefert eine Response, die der Browser anzeigt. Der Server startet zusätzlich einen http-Request im Hintergrund, der unabhängig vom Browser weiterläuft. Wenn der Browser den Request beendet (Stopp-Button), dann läuft der Hintergrundprozess trotzdem weiter.

Hauptscript vom Browser aufgerufen, php_fork_main.php:

echo "<p>start\n";
echo "<p>calling background process\n";
##############################################################
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, 'http://localhost/php_fork_background.php');
curl_setopt ($ch, CURLOPT_TIMEOUT, 1);
curl_setopt ($ch, CURLOPT_POST, false);
curl_setopt ($ch, CURLOPT_FRESH_CONNECT, true);
curl_exec ($ch);
curl_close($ch);
##############################################################
echo "<p>background process called\n";
echo "<p>end.\n";

Hintergrundscript, php_fork_background.php:

ob_end_clean();
header("Connection: close\r\n");
header("Content-Encoding: none\r\n");
ignore_user_abort(true); // optional
set_time_limit(0); // run script until it finish
ob_start();
echo ('<p>Text from background process starting');
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush();     // Strange behaviour, will not work
flush();            // Unless both are called !
ob_end_clean();

#####################################
# background task
#####################################
echo "<p>background process running, this output is not visible";
for($i=0; $i<10; $i++) {
	$data = date("H:i:s") . " - $i\n";
	file_put_contents('fork_background.log', $data, FILE_APPEND);
	sleep(10);
}

Mit dank an http://www.ivankristianto.com/….

Einen echten click-Event generieren mit JS

Sonntag, August 14th, 2011

Wie generiert man mit JS einen echten Click-Event, der auch onmousedown und onclick auslöst?

Das geht so:

myDomElement = document.getElementById(„limited“);
click(myDomElement);
//#########################################
function click(elm) {
var evt = document.createEvent(‚MouseEvents‘);
evt.initMouseEvent(‚click‘, true, true, window, 0, 1, 1, 1, 1, false, false, false, false, 0, null);
elm.dispatchEvent(evt);
}