PHP-Funktion convert2url()

Tags: Allgemein | String-Funktionen Kommentieren

Wandelt einen übergebenen String in eine kompatible Zeichenkette um, die als Dateiname oder URL verwendet werden kann. Dies findet zum Beispiel Anwendung, wenn beliebige Zeichenketten als Dateiname von Websites verwendet werden sollen. Die Konvertierung ist jedoch nicht umkehrbar.

 

PHP-Funktion check_var()

Tags: String-Funktionen Kommentieren

Mit dieser Funktion kannst du eine übergebene Variable auf vielerlei Gesichtspunkte prüfen.

PHP-Funktion google_pagerank()

Tags: PHP | Socket-Funktionen Kommentieren

Ermittelt den Google PageRank einer URL. Diese Funktion sollte nicht dazu verwendet werden, viele Anfragen zu senden und kann zu einer Sperrung der IP führen, falls zu viele Anfragen gestellt wurden.

 

PHP-Funktion get_remote_file()

Tags: PHP | Socket-Funktionen Kommentieren

Fordert mittels Sockets eine HTML-Datei auf einem anderen Webserver an und lädt diese herunter.

Suchphrasen

  • Mittels PHP Socket eine Datei abrufen.
  • Remote-Datei über PHP-Sockets herunterladen.

PHP-Funktion geo_coordinates()

Tags: PHP | Socket-Funktionen Kommentieren

Mit dieser Funktion lassen sich die Koordinaten zu einer „Google-lesbaren“ Adresse finden. Dies macht zum Beispiel bei der Einblendung von Google Maps sinn. Diese Funktion ist über das einfache „file_get_contents“ realisiert. Wenn der Server allow_url_fopen nicht erlaubt, muss hier der Weg über Sockets gewählt werden (s. get_remote_file()). Achtung: Bei mehrfacher Abfrage von Koordinaten über den Google-Server wird nach 10 Anfragen die Rückgabe gesperrt (dies für wenige Sekunden).

 

Artforms: Bugs im Release-Candidate für Joomla 1.5 beheben

Tags: Joomla! | Joomla! / Virtuemart | PHP Kommentieren

Wir verwenden auf einer Internetseite Joomla! mit installiertem ArtForms Version: 2.1b7.1 [RC1 For Joomla 1.5]. Wie zu erwarten sind noch einige Fehler in dem Modul zu finden. Im Folgenden möchte ich einige Lösungen für kleine Bugs vorstellen:
Bei falscher Captcha-Eingabe werden Eingabefelder gelöscht
Wird das Formular abgesendet, jedoch ein falscher Captcha-Code eingegeben, so werden alle anderen Eingabefelder geleert und man muss das gesamte Formular erneut ausfüllen. Wünschenswert wäre ja, wenn die Felder bestehen blieben und man lediglich das Captcha erneug eingeben müsste.
Um diesen Bug zu beheben, muss die direkte Weiterleitung nach dem Überprüfen des Captchas ausgeschaltet werden. Hierfür die Datei /components/com_artforms/artforms.html.php öffnen. Die Captcha-Überprüfung beginnt hier in der Zeile 103. Hier werden die einzelnen Varianten überprüft und gegebenenfalls der Benutzer zurückgeleitet. Die Zeile

die in jeder Überprüfung die Weiterleitung einleitet, unterbindet, dass andere Fehler überprüft werden und die Felder wieder mit Inhalt gefüllt werden.
Diese Zeile einfach durch die folgende ersetzen:

Dies bewirkt, dass nur eine Fehlermeldung erzeugt wird. Text, etc. der Meldung kann man hier entsprechend anpassen. Nachdem nun ein Fehler erzeugt wurde, wird das Script trotzdem weiter ausgeführt, andere Fehler werden gescannt und die Felder werden auch wieder mit Inhalten gefüllt.

Bei fehlerhaftem Absenden des Formulars werden Textarea-Felder geleert
Bei der Überprüfung und dem erneuten Füllen der Formularfelder, falls ein Fehler auftritt, haben die Programmierer vergessen, auch Textarea-Felder wieder mit Inhalt zu füllen. Deshalb werden diese geleert, wenn das Formular nicht erfolgreich abgeschickt werden konnte. Um diesen Bug zu beheben, die Datei /administrator/components/com_artforms/lib/af.lib.artforms.php öffnen und in der Zeile 327 den folgenden Code einfügen:

 

Joomla 1.0.x unter PHP5 / PHP5.3 lauffähig machen

Tags: Joomla! | Joomla! / Virtuemart | PHP Kommentieren

Versucht man, eine alte Joomla!-Version (1.0.x) unter neueren PHP-Versionen zu installieren, beispielsweise von anderen Servern oder alten Seiten von Kunden, so stellt sich dies als gar nicht so einfach dar. Erst einmal bekommen man viele DEPRECATED-Fehlermeldungen. Diese beziehen sich nahezu ausschließlich auf Klassen-Aufrufe durch Referenzen und die Verwendung von ereg_replace, ereg, etc.
Durch die Ersetzung von ereg_replace() durch preg_replace() und ereg() durch preg_match() in allen fehlerhaften Dateien, behebt man dieses erste Problem. Hierbei bitte darauf achten, dass die preg_-Funktionen DELIMITERS benötigen – also einfach die Pattern durch Raute-Zeichen (#) oder auch Slashes (/) einschließen.
Die Klassenaufrufe durch Referenzen kann man aktualisieren indem man einfach alls &= durch einfach = ersetzt. PHP macht diesen Krimskrams in PHP5 nämlich ganz von allein.

Übrig bleibt noch eine letzte Fehlermeldung, die leider dazu führt, dass kein Content im Inhaltsbereich angezeigt wird:

Entgegen der Meinung, dass man hierbei nichts machen kann und einfach auf PHP5 upgraden soll, gibt es natürlich ein Workaround – denn nicht alle Provider erlauben ein Downgrade, insbesondere nicht für ausgewählte Virtuelle Hosts.
Zur Bug-Behebung in die Datei /includes/Cache/Lite/Function.php gehen und dort die gesamte Funktion call() durch die folgende ersetzen:

 

Entwicklermodus für ausgewählte Browser einschalten

Tags: PHP Kommentieren

Wird eine Seite aktiv verwendet und es ist unumgänglich, an der Live-Seite Änderungen vorzunehmen, so muss bei einem Update oder Änderungen am PHP-Script die Seite offline genommen werden. Ist dies problematisch, so können fortgeschrittene Programmierer auf eine andere Lösung zurückgreifen:
Um nur dem Entwickler Statusinformationen – beispielsweise Array-Dumps oder MySQL-Abfragen anzuzeigen, damit dieser einen Fehler beheben kann, ist eine Identifikation des Entwicklers notwendig. Die Überlegung ist, den Entwickler anhand des Browsers zu identifizieren und nur in diesem Falle den Debug-Modus zu starten und Statusmeldungen auszugeben.

Diese Funktion durchsucht den USER-Agent des Besuchers auf Vorhandensein des Strings DEVELOPER. Mit dem Firefox-Plugin User Agent Switcher können eigene Browseridentifikationen im Browser angelegt werden. Hier den Standard-User-Agent kopieren und ans Ende die Zeichenfolge DEVELOPER anhängen. Wird nun dieser User-Agent verwendet, so kann über die Funktion isDeveloper() ermittelt werden, ob es sich um einen Entwickler handelt oder nicht.

Wird dieser Code am Anfang des Script eingefügt, so hat man überall die Konstante DEBUG zur Verfügung und kann dann an entsprechender Stelle Ausgaben nur für Entwickler tätigen. Dies einfach so:

Damit werden normale Besucher nicht belästigt und der Entwickler erhält alle benötigten Informationen.

Wichtig ist jedoch, dass keine Parserfehler auftreten, weil dann sonst die Ausführung abbricht und die Seite für alle Besucher offline ist.

PHP: Beim Aufrufen des Scripts bleibt die Seite weiß

Tags: PHP Kommentieren

Dies ist ein häufiges Problem, jedoch oftmals nicht gravierend. Taucht ein Parserfehler in einem PHP-Script auf, beispielsweise da soeben eine Änderung am Code vorgenommen wurde (Tippfehler o.ä.), so gibt PHP standardmäßig die Fehlermeldung aus und bricht die Ausführung ab.
Ist die Konfiguration jedoch so eingestellt, dass Fehlermeldungen unterbunden werden, so wird keine Ausgabe getätigt und die Seite bleibt weiß. Eine Möglichkeit ist nun, am Anfang des Scripts Fehlermeldungen einzuschalten:

Werden Logdateien angelegt, so wird man den Fehler sicher dort finden.

Per mod_rewrite suchmaschinenfreundliche URLs erstellen

Tags: PHP Kommentieren

Die bekannten Parameteraufrufe von PHP-Dateien à la index.php?do=meineSeite&action=showContent sind nicht besonders hübsch und auch bei Suchmaschinen nicht beliebt.
Durch eine einfache Variante des Apache-mod_rewrite können all diese Parameter durch hübsche Dateisystem-ähnliche Strukturen ersetzt werden.
Im Folgenden ein Beispiel für eine solche Datei, die mod_rewrite konfiguriert:

Diesen Inhalt in eine Datei namens .htaccess im Root-Vertzeichnis (Hauptordner / Directory-Root) schreiben. Anschließend werden sämtliche Dateien, die nicht im Dateisystem existieren auf die Datei index.php umgeleitet. Pfade werden im Parameter $param übergeben. Sollten GET-Variablen vorhanden sein, so finden sich diese in $_GET["query_string"].
In der index.php können die übergebenen Daten dann verarbeitet werden. Hier wäre die Aufsplittung nach Slashes als erster Schritt sinnvoll, das ist dann aber jedem selbst überlassen.

TOP