PHP - Tipps und Tricks

Aus Wikizone
Wechseln zu: Navigation, Suche

Links

http://www.phpbuddy.eu/


E-Mails mit php versenden

PHP - E-Mail versenden

siehe auch

PHP - Validieren von Benutzereingaben

Bilder schützen und nur über php ausliefern

1a Schutz per htaccess, so daß nur Zugriffe vom eigenen Server zulässig sind. 1b. Verzeichnisrechte so setzen, daß nur php-Nutzer lesen kann (oder einfach ein schwer zu erratender Verzeichnisname) -> kann man aber z.B. mit iFrame umgehen ist also weniger als Schutz praktisch, reicht aber, wenn man zur Laufzeit eine andere Variante des Bildes liefern will. 2. PHP Skript liefert die Bilder -> hier kann man dann User Access, Zeitsteuerung etc. regeln.

Beispiel htaccess:

Zugriff auf das Verzeichnis nur über php nicht über direktzugriff

order deny,allow
deny  from all


Hierbei sind auf Bilder nur Zugriffe von der eigenen Domain erlaubt, ansonsten kommt ein Ersatzbild. Eignet sich z.B. um Traffic durch Bilderklau vorzubeugen.

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?mydomain.de(/.*)?$ [NC]
RewriteRule .(gif|jpg|GIF|JPG)$ http://www.myDomain.de/images/ersatz.gif [R,L]
<?php
if ($_SESSION['eingeloggt'] == true) {
   header('Content-Type: image/jpeg');
   readfile('bild.jpg');
} else {
   echo 'Kein Direktzugriff erlaubt'; 
}
?> 

Weitere Beispiele mit htaccess:

Beispiel mit Ersatzgrafik und mehreren URL's: Kann ja sein, dass man mehrere Homepages hat, die darauf zurückgreifen dürfen. Folgendes überträgst Du ins Notepad und speicherst es als .htaccess ab:

     RewriteEngine on
     RewriteCond %{HTTP_REFERER} !^$
     RewriteCond %{HTTP_REFERER} !^http://(www.)?webmaster-eye.de(/.*)?$ [NC]
     RewriteCond %{HTTP_REFERER} !^http://(www.)?mynickpage.de(/.*)?$ [NC]
     RewriteRule .(gif|jpg|GIF|JPG)$ http://www.webmaster-eye.de/images/ersatz.gif [R,L]


Beispiel mit dem roten X: Folgendes überträgst Du ins Notepad und speicherst es als .htaccess ab:

     RewriteEngine on
     RewriteCond %{HTTP_REFERER} !^$
     RewriteCond %{HTTP_REFERER} !^http://(www.)?webmaster-eye.de(/.*)?$ [NC]
     RewriteRule .(gif|jpg)$ - [F]

Quelle der htaccess Beispiele: http://www.webmaster-eye.de/Traffic-sparen-mit-htaccess-als-Bilder-Schutz.242.artikel.html (11/2011)

Weiterleitung mit PHP

 header("Location: http://www.myHomepage.net");
 exit;

Ausgaben zwischenspeichern oder in Variablen umleiten

Problem: Die Ausgabe von echo oder von includes soll zuerst in einer Variablen gespeichert werden, damit Sie nicht gleich ausgegeben werden.

Das läßt sich lösen indem man die Ausgabe zunächst puffert und dann den Puffer in eine Variable lädt.

basicartsstudios at hotmail dot com

21-Jan-2007 10:39 Sometimes you might not want to include a php-file under the specifications defined in the functions include() or require(), but you might want to have in return the string that the script in the file "echoes".

Include() and require() both directly put out the evaluated code.

For avoiding this, try output-buffering:

<?php
ob_start();
eval(file_get_contents($file));
$result = ob_get_contents();
ob_end_clean();
?>

or

<?php
ob_start();
include($file);
$result = ob_get_contents();
ob_end_clean();
?>

which i consider the same, correct me if I'm wrong.

Best regards, BasicArtsStudios


Umlaute, UTF-8 und PHP: wenn Sonderzeichen falsch dargestellt werden

Quelle: http://www.sjmfreelancing.de/devblog/umlaute-utf-8-und-php.html (15.10.2008)

Ich habe des öfteren das Problem gehabt, dass Sonderzeichen auf PHP-basierten Internetseiten nicht korrekt angezeigt wurden und Firefox ein gerahmtes Fragezeichen statt Ü, ü etc. ausgab, der Internet Explorer einen Kasten und auch Safari&Co. Probleme hatten.

Lange war ich auf der Suche nach der richtigen Lösung für dieses Problem und habe mich durch unterschiedliche Blogs, Foren und Internetseiten gewühlt bis ich letztendlich eine Ansammlung verschiedenster Tipps & Tricks aufgenommen und in Kombination angewandt habe. Und siehe da: Sonderzeichen sind korrekt :)

Hier ein paar Dinge, die jeder Programmierer beherzigen sollte, wenn er mit Umlauten umgeht: 1. Header korrekt setzen Mit einem Einzeiler kann man PHP dazu bringen einen UTF-8-Header an den Browser zu senden. Einfach folgenden Code ganz oben in der Index-Datei setzen:

header('content-type: text/html; charset=UTF-8');  

2. HTML-Header korrekt setzen

Folgenden Code in den HEAD-Bereich des HTML-Dokuments setzen: view plaincopy to clipboardprint?

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

3. PHP-Dateien im UTF-8-Format speichern

Ganz wichtig ist es die PHP-Dateien die man verwendet im UTF-8-Format zu speichern. Sprich: den Editor dazu zu bringen, die Datei mit Umlauten zu speichern. 4. MySQL dazu bewegen UTF-8 zu nutzen

MySQL liefert auch nicht (immer) von Haus aus UTF-8-korrekte Ausgaben. Folgendes MySQL-Query einfach nach dem connecten mit der Datenbank ausführen:

mysql_query('set character set utf8;');

5. Das &-Zeichen immer escapen

Zwar nicht direkt ein Problem, aber: ü, ä, ß etc. sind auch dann korrektes HTML, wenn man sie nicht mittels htmlentities in Entitäten umgewandelt hat. Anders sieht es mit dem Kaufmanns-Und (&) aus: diesen IMMER mit & ausgeben. Auch bei Links gilt: & durch & ersetzen!

Validieren von Werten aus Eingabefeldern

PHP - Validierung von Werten aus Eingabefeldern

Sicherheit in PHP Skripts