17.Jan 2007
Gleichzeitiger Schreibzugriff auf eine Datei
Das Beschreiben z.B einer Logdatei mit einer in PHP geschriebenen Webanwendung ist nicht ungefährlich: tritt dabei eine race condition auf, kann auch eine mit flock() blockierte Datei leicht zerstoert werden. Die Lösung dieses Problems läuft über eine zusätzliche angelegten Lock-Datei:
function logData( $filename, $data )
{
$lockhandle = fopen( $filename . ".lock", "w" );
if( flock( $lockhandle, LOCK_EX + LOCK_NB ) ) {
$filehandle = fopen( $filename, "a+" );
fwrite( $filehandle, $data );
fclose( $filehandle );
flock( $lockhandle, LOCK_UN );
fclose( $lockhandle );
return true;
}
return false;
}
7.Jan 2007
Rastervögel
Rangezoomte Animation von zwei Vögeln mit Javascript:
5.Jan 2007
Upload mehrerer Dateien gleichzeitig
Zum Upload mehrerer Dateien mittels PHP eignet sich deren Angabe als Feld („file[]„). Der Aufbau ist etwas unerwartet – dieses Minimalbeispiel sollte die Funktionalität ausreichend erklären:
<html>
<?php
define( "DIR", "x:/" );
for( $i = 0; $i < count( $_FILES["file"]["tmp_name"] ); $i++ )
if ( is_uploaded_file( $_FILES["file"]["tmp_name"][$i]) )
move_uploaded_file(
$_FILES["file"]["tmp_name"][$i],
DIR . $_FILES["file"]["name"][$i]
);
?>
<body>
<form method="post" enctype="multipart/form-data">
<input name="file[]" type="file" /><br />
<input name="file[]" type="file" /><br />
<input name="file[]" type="file" /><br />
<input type="submit" />
</form>
</body>
</html>
18.Dez 2006
Dateien downloaden statt anzeigen
Manchmal möchte man Dateien lieber direkt zum Download anbieten, statt diese im Webbrowser anzeigen zu lassen. Für diesen Fall muß man den Mime-Typen auf application/octet-stream einstellen. Das läßt sich entweder durch ein AddType oder durch folgende Zeilen in der .htaccess bewerkstelligen (im Beispiel für .asc und .pdf-Dateien):
<FilesMatch "\.(asc|pdf)$">
ForceType application/octet-stream
</FilesMatch>
18.Nov 2006
Rewrite von PHP-Dateien
Wenn man PHP-Dateien als HTML-Dateien aufrufen möchte, wirkliche HTML-Dateien dabei aber nicht durch den PHP-Interpreter verlangsamt werden sollen, kann man die .htaccess um folgende MOD_REWRITE Befehle erweitern:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule (.+)\.html$ $1.php [L]
15.Nov 2006
Mausrad mit Javascript abfragen
function handle( delta ) { alert( delta ); }
function mousewheel( event ) {
var delta = 0;
if ( !event )
event = window.event;
if ( event.wheelDelta ) { // IE
delta = event.wheelDelta / 120;
if ( window.opera ) // Opera
delta = -delta;
} else if ( event.detail ) { // Mozilla
delta = -event.detail / 3;
}
if ( delta ) handle(delta);
if ( event.preventDefault )
event.preventDefault();
event.returnValue = false;
}
if (window.addEventListener) // Mozilla
window.addEventListener('DOMMouseScroll', mousewheel, false);
window.onmousewheel = document.onmousewheel = mousewheel;