Showing posts with label PHP. Show all posts
Showing posts with label PHP. Show all posts

March 29, 2008

Diagramme online erzeugen (Google Charts)

In der letzten Wochen stieß ich auf die Google Chart API, wodurch sich einfach, schnell und ohne zusätzliche Frameworks Diagramme erzeugen lassen. Dies kann mitunter für die eigene Webseite hilfreich sein, um beliebige Daten grafisch zu präsentieren. Die angebotenen Möglichkeiten sind durchaus umfangreich, da die API ebenso von Google Analytics verwendet wird.

Nachfolgend ist ein Beispiel eines durch die API erzeugtes Diagramm dargestellt.
Downloadstatistik-Diagramm mit Google Chart generiert

Die Anfrage dazu sieht folgendermaßen aus:
http://chart.apis.google.com/chart?cht=p3&chd=t:40,12,4,4
&chs=550x150&chl=Diplomarbeit|JSF-Cartridge|BibTeX_Diploma|BibTeX_QM-Part
&chtt=Download Statistics

Zur detaillierteren Beurteilung der Fähigkeiten der API habe ich ein kleines Wordpress Plugin geschrieben, welches in der Wordpress Sitebar eine Statistik der Downloads auf der Webseite darstellt. Das Ergebnis ist in der rechten Spalte zu sehen. Dabei greift das Plugin auf die Daten des Download-Verwaltungsplugins Download Counter zurück.

April 13, 2007

Spamschutz für Formulare

Das Update des Captcha Codes von letzte Woche hat die Spambots anscheinend nicht vor eine schwierige Aufgabe gestellt. Der Code kann Spameinträge nicht zuverlässig verhindern. Schließlich habe ich mich nun noch einmal mit dem Thema Spam Formulareinträge befasst.

Dabei stieß ich diverse Seiten, die sich mit dem Thema Captcha "knacken" befassen. Jedoch wird auf dieser Seite auch beschrieben, was notwendig ist, um es Spambots schwer zu machen. Leider steht dies immer im Konflikt mit der Lesbarkeit. Was nutzt schon ein sicheres Captcha, dass auch der Benutzer nicht entschlüsseln kann?

Schließlich stieß ich auf einen anderen Ansatz. Dabei wird dem Benutzer eine Rechenaufgabe gestellt. Das verbunden mit einem Captcha Bild scheint nun die Spambots zuverlässig zu hindern. Zumindest habe ich seitdem keine Spameinträge mehr.

  • Captcha Code, der Spambots kaum hindern kann:

  • Zuverlässiger Schutz vor Spambots:


Das Prinzip ist einfach. Die Bots "wissen" nicht, dass die erkannten Zeichen zu einer Rechenaufgabe gehören und schreiben einfach alle Zeichen in das Textfeld, was natürlich zu einem falschen Ergebnis führt. Jedoch muss man sagen, dass dieser Variante auch nicht 100%ig sicher ist, da es nur eine Frage der Zeit ist, bis die Bots auch versuchen den Captcha Code zu berechnen.

Aber auch das lässt sich noch verbessern: Beispielsweise kann für die Angabe der Operation auch eine Zeichenkette, z.B. ADD für +, genutzt werden. Das würde es den Bots nochmals schwerer machen.
Download

Das Skript (calcpic.php) zur Erstellung einer Captcha Rechenaufgabe liegt der aktuellen Version des Captcha Codes bei.
captcha_03.zip

April 3, 2007

Verbesserter Spamschutz über Captcha Code

Seit einiger Zeit erhalte ich wieder vermehrt Spam Einträge über Benutzerformulare. Zwar benutzte ich den von mir entwickelten Captcha Bestätigungscode, jedoch scheint dieser mittlerweile zu einfach für die Spambots zu sein.

Deshalb habe ich mich noch einmal hingesetzt und den Captcha Code verbessert, um es den Bots schwerer zu machen, den Code zu erkennen.

Die Veränderungen sind:

  • im Hintergrund des Captcha Codes wird ein zufälliges Polygon gezeichnet (kann auch deaktiviert werden)

  • alternierende Textfarbe

  • zufällige Drehung der Zeichen


Hier noch eine kleine Feature Liste des Captcha Skripts:

  • Auswahl welche Zeichentypen zur Generierung einer zufälligen Zeichenfolge benutzt werden sollen (Zahlen, Klein-, Großbuchstaben)

  • beliebige Länge an Zeichen

  • Abmessungen des Captcha Bildes

  • Farben frei definierbar


Das Skript läuft mit PHP4 und GDLib .

January 7, 2007

[FeedCreator] RSS-Feed mit PHP

Wie kann ich meinen Besuchern Inhalte per RSS-Feed zugänglich machen?

Diese Frage stellte ich mir vor Kurzem auch. Nach etwas googeln, habe ich relativ schnell eine Antwort gefunden.

Deshalb möchte ich die Implementierung des RSS 2.0 Feeds nicht im Einzelnen beschreiben, sondern das PHP Skript hier zum herunterladen bereitstellen.
Aufbau

RSS verlangt eine bestimmte XML Struktur (siehe RSS 2.0). Die PHP Klasse setzt diese Struktur um.
Benutzung

Als Erstes muss ein neues Objekt mit den grundlegenden Informationen (Titel, URL, Beschreibung, Sprache) erstellt werden.


$feed = new FeedCreator("Feed Titel", "http://link/zum/feed", "Beschreibung des Feeds", "de-de");

Zusätzlich können noch weitere Feedinformationen hinzugefügt werden. Mehr in der API (ethalten im zip Archiv - Ordner doc).

Als nächstes werden dem Feed Artikel (Items) hinzugefügt. Das geht einfach über

$feed->addItem("Artikel Titel", "Text des Artikels", "Link zum vollständigem Artikel");

Die Länge des Textes wird standardmäßig nicht beschränkt. Die maximale Anzahl von Wörtern kann über $feed->setSize(100); angepasst werden (bevor sie addItem() benutzen).

Nun muss nur noch der RSS-Feed als XML-Datei ausgegeben werden. Das geht mit Hilfe der Funktion $feed->getXML();.
Wichtig: Vor dem Aufruf dieser Methode darf noch nichts an den Browser gesendet worden sein. D. h. keine print oder echo Ausgaben vorher.
Erweiterungen

Den einzelnen Artikeln können noch mehr Informationen beigefügt werden.
Veröffentlichungsdatum

Nützlich für den Abonnementen für die Sortierung im Feedreader. Das Format richtet sich nach RFC 2822. Nützlich erweist sich die date("r") Funktion von PHP.

addItem("Titel", "Text", "URL", "Thu, 21 Dec 2000 16:01:07 +0200");
Autor

Der Autor des Artikels.

addItem("Titel", "Text", "URL", "Thu, 21 Dec 2000 16:01:07 +0200", "autor@mail.de (Autor Name)");
Kategorie

Um dem Artikel eine Kategorie zuzuordnen, muss ein Hilfsobjekt (Category) erstellt werden. Diesem Objekt werden die Kategorien getrennt durch einen / und ein optionaler Namespace angegeben.

$categorie = new Category("Technik/PC", "http://meinedomain.de");
addItem("Titel", "Text", "URL", "", "", $category);
Anhang

Für einen Anhang gibt es auch eine Hilfsklasse (Enclosure). Diesem Objekt muss die URL des Anhangs, die Größe in Bytes und der MIME-Typ mitgeteilt werden.

$enclosure = new Enclosure("http://image.png", 1536, "image/png");
addItem("Titel", "Text", "URL", "", "", null, $enclosure);
Download

FeedCreator_0.3.zip

September 26, 2006

Spamschutz (Captcha)

Wer ein Gästebuch oder E-Mail Formular auf seiner Website hat, kennt die Belästigug durch Bots. Mit Hilfe eines Bestätigungscodes kann dieses Problem reduziert werden.

Das PHP Skript ist winzig klein und benötigt nur eine installierte GDLib. Auch die Integration ist einfach. Dazu wird dem Formular einfach ein zusätzliches Eingabefeld hinzugefügt, in das der Captcha Code eingetragen werden muss. Nach dem Abschicken des Formulars kann der eingegebene Code überprüft werden.