[PHP] Dateiupload und Dateidownload

Jeder macht das eine und einige machen auch das andere. Die Rede ist vom Hoch- und Runterladen von Dateien im Internet. Jeder kann etwas herunter laden. Ob die Bedienungsanleitung, im PDF-Format, für den Fernseher oder ein schickes Bildchen als Bildschirmhintergrund oder oder oder… die Möglichkeiten sind schier unbegrenzt. Auf der anderen Seite gibt es natürlich auch I-Net Nutzer die auch Dinge hochladen.

Hier möchte ich kurz erklären wie man es als PHP Programmierer lösen kann. Viele Wege führen bekanntlich nach Rom. Hier mein Weg.
Als erstes der Upload. Hier brauchen wir natürlich überhaupt erst einmal eine HTML-Form mit einem Dateifeld. In seiner einfachsten Form würde das so aussehen:

<form enctype="multipart/form-data" method="post">
<input name="file" type="file" />
<input name="Submit" type="submit" value="Senden" />
</form>

Hier kann der User dann seine Datei auswählen und die Form abschicken. Damit wird, in diesem Fall, die Datei erneut aufgerufen und die Formulardaten mit übergeben. Sprich die Dateidaten. Diese können nun mit PHP erfasst und ausgewertet werden.

if(!empty($_FILES["file"]["name"])) {
	$UploadFolder = "./uploads/";

	//Dateinamen auf ungueltige Zeichen pruefen
	$Dateiname = preg_replace('/[^a-z0-9.-_]/', '', strtolower($_FILES["file"]["name"]));

	//Existiert die Datei auch noch nicht
	if(!file_exists($UploadFolder.$Dateiname)) {
		//An die richtige Stelle kopieren
		move_uploaded_file($_FILES['file']['tmp_name'], $UploadFolder.$Dateiname);
		if(!file_exists($UploadFolder.$Dateiname)) {
			echo "Datei konnte nicht hochgeladen werden. Bitte wenden Sie sich an einen Administrator.";
		} else {
			//Datei ist hochgeladen
		}
	} else {
		echo "Es existiert bereits eine Datei mit diesem Dateinamen. Bitte bennenen Sie die Datei um.";
	}
}

So. Damit haben wir die Datei hochgeladen und in dem Ordner „Uploads“ abgelegt. Das ist natürlich nicht alles. Jeder muss hier seinen eigenen Weg gehen.
Der Dateiname muss z.B. irgendwo (Datenbank) gespeichert werden, damit sich das System später daran “erinnert”. Aber für den Upload selbst reicht das.

Kommen wir zum 2. Teil. Dem Download der Datei.

Ein User hat jetzt eine Bedienungsanleitung auf einer Webseite hochgeladen und für andere Benutzer zum Download zur Verfügung gestellt. Jetzt kommt ein anderer User und möchte die Datei downloaden.

Als Programmierer wäre es das einfachste einfach einen Link zu veröffentlichen der auf die Datei, im Dateisystem, zeigt. Das hätte aber den Nachteil das dieser Link kopiert werden könnte und jeder die Datei einfach herunterladen kann. Schlecht wenn das vielleicht eigentlich nur registrierte Mitglieder dürfen sollen.
Also muss eine andere Lösung her. Hier wieder mein Weg nach Rom ;-)

$UploadFolder = "./uploads/"; //Name des Ordners mit der Downloaddatei
$FileName = "musterdatei.pdf"; //Name der Downloaddatei

header("Content-Type: ".$mimeType);
header("Content-Length: ".filesize($UploadFolder.$FileName));
header("Content-Disposition: attachment; filename=\"".$FileName."\"");
readfile($UploadFolder.$FileName);
exit;

Ja, das war es schon ;-) Aber es ist etwas komplizierter als es auf den ersten Blick scheint. Ich denke die ersten beiden Variablen sind klar. Der Content-Type beschreibt die Datei. Ob es ein Bild, PDF, Word-Dokument oder sonst was ist. Am besten ist hier diesen beim Upload gleich mit zu speichern. Denn das ist der einzige Zeitpunkt wo Du den Content Type “geliefert” bekommst. Sonst könnte man ihn noch über die Dateierweiterung rausbekommen.

Content-Length ist die Länge der Datei. Vorsicht, nicht wirklich die Größe. Da 1 Zeichen aber einem Byte entspricht – wie praktisch – können wir einfach die Dateigröße in Byte (!) angeben. ;-)

Bei Content-Disposition wird einfach gesagt Dateianhang und den Dateinamen. Hier muss nicht der Originale Dateiname angegeben werden, es könnte auch ein fiktiver angegeben werden.

Und zu guter letzt noch mit readfile die Datei einlesen und gleichzeitig ausgeben.

Ganz wichtig ist hier noch das vor diesem Code keine Ausgabe an den Browser gemacht werden darf. Am besten ist es für den Download eine eigene Datei zu erstellen und vor diesem Code nur das nötigste zu tun. Zum Beispiel checken ob der User, der den Download starten möchte, auch die Berechtigung hat oder die Variablen aus einer Datenbank auslesen. Aber keinerlei ausgaben an den Browser machen, sonst erscheinen ganz viele komische Zeichen im Browser ;-)

[PHP] Passwort generieren

Hi,

da ich auch das ab und zu brauche und jedes mal eine gute Funktion suche… hier meine Gedächtnissstütze :-)
$pwZeichen = ‘wertzupasdfghkyxcvbnmWERTZUPLKJHGFDSAYXCVBNM23456789′;
srand ((double)microtime()*1000000);
for($i = 0; $i < 5; $i++)
{
$passwort .= substr( $pwZeichen, (rand()%(strlen ($pwZeichen) ) ), 1);
}

In der Variable $pwZeichen sind alle Zeichen aufgeführt die in dem Passwort verwendet werden. srand startet den Zufallsgenerator (sonst würde das Passwort aus ein und dem selben Zeichen bestehen ;-)
Die ‘for’-Schleife bestimmt wieviele Zeichen das Passwort hat. Hier 5. Du kannst den Wert aber auch verändern. Und zu guter letzte werden die Zeichen hintereinander in die Variable $passwort geschrieben.

Das wars schon ;-)

[Tips & Tricks] Wie fange ich an?

Hallo,

hier möchte ich mal ein paar Tips und Tricks aus meiner persönlichen Erfahrung weitergeben. Ich kann nun auf einige Jahre Programmiererfahrung zurückblicken und habe selbst viel Zeit gebraucht um ein paar wichtige Erfahrungen zu machen. Damit andere vielleicht schneller dahinter kommen wie manche Dinge besser laufen, möchte ich ein paar Eckpunkte hier aufschreiben ;)

1) Trenne immer Code und Design

Meine ersten Seiten bestanden aus reinem HTML und alles war in einer Datei… wie auch sonst. Dann kam JavaScript und CSS ins Spiel und damit die ersten, primitven, Anfänge Code auszulagern. Als ich dann mit PHP angefangen habe und diverse Bücher, Foren, Internetquellen und sonstiges dazu konsultierte, wurde der Code weiterhin in einer Datei gespeichert. Also HTML und wild dazwischen der PHP-Code.
Das erste mal, an das ich mich erinnern kann, das ich merkte das diese Art und Weise eigentlich misst ist war als ich auf einer Seite ein komplettes Layout Redesign machen wollte. Mir blieb im Prinzip nichts anderes übrig als die Seite komplett neu zu machen.
Mein Fazit heute: PHP-Code und Layout immer strickt trennen. So viel wie möglich mit CSS arbeiten (man kann fast alles im Layout damit aendern und CSS wird (sollte) immer in einer seperaten Datei gespeichert werden). Ich habe auch mal den Fehler gemacht und HTML code mit PHP erstellt und dann wiederum in das HTML-Template eingebunden… wenn möglich auch das vermeiden.

2) Arbeite Objektortientiert

Wie oben schon beschrieben habe ich frueher alles in einer Datei gehalten. Ob Funktionen, PHP-Code, HTML, CSS und Javascript. Alles in einer Datei. Warum ist das jetzt schlecht? Nehmen wir z.B. die Emailüberprüfung (also ob eine Emailadresse valid ist). Diese wird z.B. gebraucht wenn der User sich registriert. Haben wir einen Newsletter brauchen wir sie auch da. Bauen wir die Funktion in beide Dateien ein und möchten wir die Funktion einmal erweitern dann müssen wir beide Dateien ändern. Zusätzlich wird mehr Speicherplatz benötigt. Immer (!) auslagern. Prinzipell alles was mehrfach gebraucht wird… besser noch alle Funktionen und Klassen immer in externe Dateien auslagern.

Heute ist die Regel: Lagere alles aus was du kannst und was Sinnvoll ist! Das heisst alle Funktionen kommen in eine seperate Datei, Layoutheader und -footer definitv auslagern, so viel wie möglich mit CSS arbeiten (dies natuerlich in einer seperaten Datei speichern), mit Klassen arbeiten (das Thema ist sehr umfangreich), arbeiten mit Strukturen. Alles was mehrfach gebraucht wird bekommt eine Funktion… wenn nicht gar Klasse.

3) Daten die sich ändern können immer in eine (1) Variable legen

Auch hier das selbe Prinzip. Alles was sich ändern kann muss zentral in einer Variable gelagert werden. Aktuelles Beispiel: WordPress versendet (unter bestimmten Voraussetzungen) automatisch Emails. Die Absenderadresse ist fest im Code (an mehreren Stellen) eingebaut und setzt sich aus “wordpress@” und dem Domainnamen zusammen. Existiert diese Emailadresse nicht real so kann es zu Fehlern kommen… will man Sie ändern muss man in den Code. Hätte man diese in eine Variable (z.B. in der wp-config.php oder gar in der Datenbank) abgelegt waere es ein leichtes Sie zu ändern. Was ich mit dem Beispiel sagen will ist: Baue nichts in den Code ein was sich ändern kann. Besonders dann nicht wenn der Code / das Script weitergegeben werden soll.

4) Erfinde nicht jedes Rad neu

Das hier ist kein Aufruf zum Datenklau! Aber es gibt heutzutage zu (fast) jedem Thema ein Tutorial, einen Codeschnipsel, eine Anleitung oder einfach nur den eigenen Verstand. Man muss nicht für jede Funktion von vorn Anfangen und viele der Codestücke sind millionenfach erprobt und im Einsatz und damit auch fehlerfreier als die eigene Funktion vielleicht sein würde.
Somit kann man sich viel Zeit und Ärger ersparen und auf bestehende Codefragmente zurückgreifen. Sonst kann man auch gern mal bei den anderen Schauen und sich gedanken darüber machen wie die es wohl gelöst haben könnten.
Zu vielen Sachen gibt es sogar komplett fertige Systeme. Wobei ich persönlich selten komplette Systeme nutze. Wenn dann doch mal was geändert werden muss dann muss man sich erst in das Script einarbeiten und, je nachdem wie der Programmierer gearbeitet hat, kann das mitunter sehr kompliziert werden.

… to be continued.

[PHP] Informationen über PHP und den Server

Hallo zusammen,

ein sehr wichtiges Werkzeug bei der Programmierung ist die PHP-Funktion “phpinfo()“. Sie wird immer wieder gebraucht wenn man etwas über den Server, die Konfiguration, Variablen und änliches wissen möchte.

Wie gebraucht man es? Ganz einfach… entweder eine neue Datei erstellen oder in eine bestehende (am besten ganz oben) einbauen:

<?php
phpinfo();
exit;
?>

Das war es auch schon. Ruft man diese Datei nun auf gibt PHP alles raus was er “weiß”. Einfach mal ausprobieren, man kann damit nichts kaputt machen ;)

Möchte man zum Beispiel wissen ob Apache mit dem mod_rewrite-Modul compiliert ist… phpinfo (diese Information steht ganz oben mit). Oder ob bestimmte Module includiert sind… phpinfo(). Auch informationen über die aktuelle Seite werden ausgegeben… z.B. welche IP der Besucher hat und noch wichtiger, in welcher $_SERVER-Variablen diese gespeichert ist. Welche Variablen (POST, GET, COOKIE) übergeben bzw. gespeichert sind.

Aber wie gesagt, einfach ausprobieren… es sind nur informationen… man kann nichts kaputt machen oder verändern. ;)

Gruß
Gordon


Hinweis: Die Verwendung meiner Codeschnipsel erfolgt auf eigene Gefahr! Ich übernehme auch keine Garantie auf Funktionstüchtigkeit (jeder Server ist anders konfiguriert. Bei Problemen können Sie hier aber gern einen Kommentar schreiben und wir suchen eine Lösung. ;)

[PHP] Emailadresse auf korrektheit prüfen / validieren

Hallo zusammen,

fast auf jeder Webseite gibt es ein Feld wo der Besucher seine Emailadresse eingeben soll. Ob in einem Kontaktformular, für die Anmeldung bei einem Newsletter oder für die Anmeldung zu einem Mitgliederbereich. Es gibt Anwendungen wo dies nötig ist.

Wir müssen in jedem Fall die Emailadresse prüfen. Ob Sie vom Aufbau her korrekt ist (nicht das der User ausversehen die Felder verwechselt hat und hier eine Internetadresse eingegeben hat) und wie können prüfen ob es die dazugehörige Domain überhaupt gibt. Schreibfehler in der Emailadresse können wir jedoch leider nicht prüfen… bzw. dies nur mit einem Aufwand der sich nicht mehr rentiert.

Hier eine einfache Funktion zum prüfen der Emailadresse:

function mailCheck($email) { 
    return preg_match("/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-.]+\.([a-zA-Z]{2,4})$/", $email); 
}

Bei dieser Funktion wird lediglich geprüft ob der Syntax der Emailadresse korrekt ist. Das heißt ob das “@”-Zeichen an der richtigen Stelle ist, ob eine TLD vorhanden ist. Ob die Domain vorhanden ist wird hier noch nicht geprüft.

Hier nun eine erweiterte Funktion:

function mailcheckDNS($mail) {
	$email = htmlspecialchars($mail);
	$r = false;

	if(preg_match('/(.*?)\@(.*?)\.(\w){2,6}/i', $email)) {
		$split = explode('@', $email);
    	$split2 = explode('.', $split[1]);
    	if(preg_match('/([a-z]){3,64}/i', $split2[0])) {
     		if(preg_match('/([a-z0-9\!\"\$\&\/\(\)\?\~\#\+\.\:\_\-]+){1,64}[^\@]/i', $split[0])) {
      			$MXCheck = getmxrr($split[1], $mxhosts);
        		if(!empty($MXCheck)) {
          			$r = true;
        		}
      		}
    	}
	}
	return $r;
}

Diese überprüft nun zusätzlich ob die Domain überhaupt existiert indem sie versucht diese zu erreichen. Ist dies möglich dann fällt die Überprüfung positiv aus, wenn nicht dann negativ.

Es gibt keinen 100%igen Emailcheck, aber was man prüfen kann das sollte man auch. Rechtschreibfehler kann man einfach nicht prüfen. Dafür könnten man z.B. den User die Emailadresse 2 mal eingeben lassen, zur Sicherheit.

Gruß
Gordon


Hinweis: Die Verwendung meiner Codeschnipsel erfolgt auf eigene Gefahr! Ich übernehme auch keine Garantie auf Funktionstüchtigkeit (jeder Server ist anders konfiguriert. Bei Problemen können Sie hier aber gern einen Kommentar schreiben und wir suchen eine Lösung. ;)

[PHP] IP-Adresse anzeigen / herausfinden

Hallo zusammen,

heute zeige ich euch wie man ganz einfach die IP-Adresse seines Besuchers rausfindet. Wozu soll das gut sein? Zum Beispiel wenn man dem Besucher diese anzeigen möchte. Aber viel mehr um sie zu speichern. Denn bei Missbrauch kann man damit den Besucher identifizieren… meistens jedenfalls. Gut, eigentlich tut dies schon der Webserver in seinen Logfiles… aber manchmal ist doppelt besser.

Also wie geht das nun… ganz einfach. Sie steht nämlich in einer Server-Variable:

<?php echo “Ihre aktuelle IP-Adresse ist: <b>”.$_SERVER["REMOTE_ADDR"].”</b>”; ?>

Was heißt das jetzt? “echo” gibt etwas aus… nämlich “Ihre aktuelle IP-Adresse ist:” und “$_SERVER["REMOTE_ADDR"]” ist die Variable in der die IP des Besuchers gespeichert ist. Diese ist nicht 100% zuverlässig, also verlassen Sie sich bitte nicht darauf. Kommt ein Besucher über einen Proxy so wird hier die IP des Proxy-Servers gespeichert. Aber in der mehrheit ist es wirklich die richtige IP des Besuchers.

Gruß
Gordon


Hinweis: Die Verwendung meiner Codeschnipsel erfolgt auf eigene Gefahr! Ich übernehme auch keine Garantie auf Funktionstüchtigkeit (jeder Server ist anders konfiguriert. Bei Problemen können Sie hier aber gern einen Kommentar schreiben und wir suchen eine Lösung. ;)

[PHP] Einbinden von zusätzlichen Dateien in das Script (include)

Hallo,

heute möchte ich euch zeigen wie man externe / zusätzliche Dateien in ein Script einbindet.

Der große Vorteil von PHP (gegenüber z.B. HTML) ist, das man nicht alles in eine Datei quetschen muss. Besonders wenn das Script mal etwas größer und komplizierter wird, ist es von großem Vorteil bestimmte Elemente auszulagern. So behält man die Übersicht und nur so ist es möglich Objektorientiert zu arbeiten. Haben wir zum Bespiel eine Funktion die wir öfter brauchen so können wir diese in eine extra Datei schreiben und aus jedem beliebigen Script aus aufrufen.

Doch wie funktioniert das? Ganz einfach mit dem “include()”-Befehl. Es gibt dabei Grundlegend 2 verschiedene Befehle. “include()” und “include_once()”. Mit dem ersten Befehl kann man eine bestimmte Datei so oft man möchte in einem Script einbinden. Der zweite lässt die Einbindung einer bestimmten Datei in einem Script nur ein einziges mal zu, sollte ein zweites mal versucht werden die Datei zu includen gibt es einen Fehler. Was ist nun wann gut?

Schreiben wir z.B. folgende PHP-Datei:
<?php
session_start();
?>

So darf diese nur ein einziges mal in einem Script eingebunden werden, da es sonst einen Fehler gibt. Um auszuschließen das die Datei ausversehen noch ein weiteres mal aufgerufen wird benutzen wir “include_once()”.

Haben wir aber ein Logo (Bild) in eine externe Datei ausgelagert dann kann es durchaus möglich sein das wir dieses Logo an mehreren Stellen in einem Script einbinden wollen und müssen. Dann kommt “include()” zum einsatz.
Grundsatzlich ist meine Empfehlung immer include_once() zu benutzen, sofern die Datei nicht unbedingt mehrfach eingebunden werden muss. Damit ist man immer auf der sicheren Seite.

Oft sehe ich Scripte die Menüstrukturen mit “include” realisieren und dabei einen entscheidenen Fehler machen. Daher möchte ich hier kurz darauf eingehen.
Menüstrukturen mit include zu realisieren ist im grunde eine super sache, ich selbst arbeite oft damit. Aber wie schon erwähnt, immer auf die Sicherheit achten!
Also wie funktioniert es? Hier erst einmal das Beispiel wie man es NICHT machen sollte:

<?php
include($_GET["seite"]);
?>

Was passiert hier… die Seite wird z.B. mit http://www.testdomain.de/index.php?seite=start.php aufgerufen. Das Script liest den übergebenen Wert “seite” aus und bindet diese Datei einfach in das Script ein. Das wars. Funktioniert prima werden jetzt einige sagen. Stimmt, tut es… aber was ist wenn ich jetzt folgendes Aufrufe: http://www.testdomain.de/index.php?seite=./.htaccess
Dann bekommt er, unter umständen, Informationen zu gesicht die Ihn nichts angehen. Und das wäre noch der harmloseste Fall. Hacker können damit richtig böse sachen machen!

Also gestallten wir unser Script sicherer:

<?php
if ($_GET["seite"] == “start”) {
include_once(“start.php”);
} else {
include_once(“errorseite.php”);
}
?>

Was ist jetzt? Wir überprüfen erst einmal was in der übergebenen Variable “start” steht. Steht dort “start” drin, dann includen wir die Seite “start.php”… diese könnte aber auch “muster.html” heißen… der Besucher unserer Seite hat darin keinen Einblick mehr und wir könnten sogar ein bisschen tricksen um unsere Dateien zu verschleiern… und ein bisschen rate ich sogar dazu. ;)
Ist der Übergebene wert aber nicht “start” (also nicht von uns deklariert) dann geben wir einfach eine vordefinierte “errorseite.php” aus. Es interessiert uns nicht mehr ob da nun Müll in der Variable steht. Und sollte jetzt noch mal einer http://www.testdomain.de/index.php?seite=http://www.google.de aufrufen, dann landet er auf unserer Errorseite und fertig.

Also bitte, zu Ihrer eigenen Sicherheit, niemals die erste Version verwenden. Sicher, sie ist einfacher zu Handhaben… aber nicht nur für Sie ;)

Das Thema “include()” ist noch ein wenig umfangreicher. Aber das würde jetzt den Rahmen hier sprengen. Ich denke die Grundzüge sollten hier erklärt sein und vielleicht greife ich das Thema noch mal auf. Später.

Gruß
Gordon


Hinweis: Die Verwendung meiner Codeschnipsel erfolgt auf eigene Gefahr! Ich übernehme auch keine Garantie auf Funktionstüchtigkeit (jeder Server ist anders konfiguriert. Bei Problemen können Sie hier aber gern einen Kommentar schreiben und wir suchen eine Lösung. ;)

[PHP] Einfacher Datei-Counter

Hallo zusammen,

heute bauen wir uns einen einfachen Counter der seine Daten in einer Datei speichert. Das Prinzip ist einfach. Das Script wird beim Aufruf der Seite gestartet, öffnet eine Datei und holt den aktuellen Zählerstand, erhöht ihn um 1, gibt diesen aus und speichert den neuen (alten Stand + 1) wieder zurück in die Datei.

Und so wird es gemacht.

Als erstes der PHP-Tag, ohne den Bekanntlich nichts geht.
<?php
Dann wird der Dateiname an eine Variable übergeben (man könnte es auch direkt an den Befehl übergeben, aber so finde ich es dynamischer).
$dateiname = “counter.txt”;
Dann wird mit dem “fopen”-Befehl die Datei geöffnet. Der Parameter “r+” bedeutet hierbei das die Datei zum Lesen (read) geöffnet werden soll… das “+” heißt, wenn die Datei nicht vorhanden ist soll versucht werden sie anzulegen (Schreibrechte vorausgesetzt). Das Handle wird der Variable “$datei” übergeben.
$datei = fopen($dateiname,”r+”);
Der Dateiinhalt wird ausgelesen und an die Variable “$zaehler” übergeben, beschränkt auf 10 Zeichen. Das sollte für einen Zähler wohl reichen, wenn nicht einfach erhöhen.
$zaehler = fgets($datei, 10);
Nun wird geprüft ob überhaupt schon etwas in der Datei steht oder ob sie evtl. neu angelegt wurde. Wenn der String leer ist, dann muss er mit “0″ gefüllt werden da andernfalls der nachfolgende Befehl fehlschlägt und einen Fehler verursacht.
if($zaehler == “”) {
$zaehler = 0;
}

Nun müssen wir den Counter um 1 erhöhen… sonst wäre es ja kein Counter. :) PHP macht und das zählen einfach… einfach “++” an eine Variable (mit Zahl im Inhalt) anhängen und schon wird die Zahl in der Variable um 1 erhöht. Funktioniert auch andersrum mit “–” = Zahl minus 1.
$zaehler++;
Der beste Counter nützt nix wenn er nicht auch ausgegeben wird ;) Daher hier eine die Ausgabe, kurz und schmerzlos:

echo “Du bist der “.$zaehler.” Besucher.”;
Nun müssen wir den neuen Wert natürlich auch wieder in die Datei schreiben. Vorher müssen wir den alten Wert aber löschen und den Dateizeiger auf den Anfang der Datei setzen. Das geschieht mit “rewind”:
rewind($datei);
Dann den neuen Wert mit “fwrite” in die Datei schreiben:
fwrite($datei, $zaehler);
Und natürlich Datei schließen nicht vergessen.

fclose($datei);
Zum Abschluss unseres kleinen Scriptes den PHP-Tag wieder schließen…
?>
… und fertig sind wir schon. Einfach und wirkungsvoll. Für größere Projekte zwar nicht sinnvoll… aber für den Privatgebrauch sicher zumindest ein Anfang

Gruß
Gordon


Hinweis: Die Verwendung meiner Codeschnipsel erfolgt auf eigene Gefahr! Ich übernehme auch keine Garantie auf Funktionstüchtigkeit (jeder Server ist anders konfiguriert. Bei Problemen können Sie hier aber gern einen Kommentar schreiben und wir suchen eine Lösung. ;)

[PHP] Bilddaten auslesen wie Breite, Höhe und Typ

Hallo,

PHP stellt, wie so oft, eine kleine Funktion bereit um einfach an diese Daten zu gelangen. Aber wozu braucht man das Ueberhaupt? Ganz einfach. Z.B. kann man damit die Bilddimensionen des IMG-Tags fuellen. Oder man kann damit die Dimensionen eines Image-Popups an Javascript uebergeben. Oder den MIME vorgeben. Es gibt sehr viele Anwendunsmoeglichkeiten fuer diese Funktion.

Hier ist sie:

<span class="methodname"><strong><strong>getimagesize</strong></strong></span> ( <span class="methodparam"><span class="type">string</span> <tt class="parameter">$filename</tt></span> [, <span class="methodparam"><span class="type">array</span> <tt class="parameter reference">&$imageinfo</tt></span> ] )

Und hier ein kurzes Beispiel.

<?php $img = "picture.jpg"; $iA = getimagesize($img); echo "Bildbreite: ".$iA[0]."<br>"; echo "Bildhöhe: ".$iA[1]."<br>"; echo "Imagetype: ".$iA[2]."<br>"; //JPG, GIF, etc. echo "IMG-Tag String: ".$iA[3]; //zur verwendung von IMG-Tags ?>

Gruß
Gordon


Hinweis: Die Verwendung meiner Codeschnipsel erfolgt auf eigene Gefahr! Ich übernehme auch keine Garantie auf Funktionstüchtigkeit (jeder Server ist anders konfiguriert. Bei Problemen können Sie hier aber gern einen Kommentar schreiben und wir suchen eine Lösung. ;)