Archiv

Artikel Tagged ‘Webentwicklung’

PHP Entwicklung mit Visual Studio 2005

22. Januar 2008

Im Zuge der ASP.NET Entwicklung bin ich auf den Geschmack von Visual Studio 2005 gekommen und sollte jetzt für meinen Kollegen eine IDE für PHP zur Verfügung stellen.

Zend Studio, PDT und PHPEclipse bieten nicht die Performance und Komfort den ein Entwickler von Visual Studio gewohnt ist.


Zend-Studio kann zwar sehr viel, ist aber teuer und sehr langsam.


Ich habe deshalb das Tool VS.PHP getestet und bin nach kleinen Anlaufschwierigkeiten sehr zufrieden damit. Es ist im Vergleich zu Zend Studio sehr günstig.

VS.PHP


Debuggen


Das wichtigste Feature ist natürlich das Debuggen und das kann VS.PHP besser als alle PHP IDEs mit denen ich bisher gearbeitet habe. Man benötigt nicht wie bei den anderen Tools ein Browser Plugin, sondern klickt einfach auf den Start-Button und kann die Seite dann mit DBG oder XDEBUG starten. Das Debuggen funktioniert problemlos wie man es auch bei ASP.NET Anwendungen gewohnt ist.


Webserver


VS.PHP arbeitet mit einem eigenen Apache-Server, inklusive PHP in den Version 4 und 5. Die Debug Tools sind auch schon vorhanden. Ich musste für meine Seite nur kleine Anpassungen an der http.conf und der php.ini machen und konnte dann sofort loslegen.

VS.PHP Debug Einstellungen


Wenn man sich die Feature Liste anschaut, kann man schon sagen das das Programm für den professionellen Einsatz tauglich ist.

PHP Editor

Smarty Editor

Javascript

WYSIWYG Html Editor

Xml/Xslt editor

Intellisense und Instellisensefilterung

Farbliche Hervorhebung des Codes

Lesezeichen

Autoformatierung

Code snippets

Faltbarer Code und benutzerspezifische Regionen

PhpDoc Unterstützung

Code Syntax Überprüfung

Vollbild Bearbeitung

Benutzerspezifische farbliche Hervorhebung des Quelltextes

Erweitertes Suchen/Ersetzen mit Regex Unterstützung

Projekt- und Lösungsunterstützung

Php und Javascript debugging

Automatische Wiederherstellung

Projektbetreuung per FTP, SFtp und FTPs

Makros

Dynamische Hilfe

Integrierte Php4/Php5 Unterstützung

Unterstützung von IE und Firefox

Community Unterstützung via CodeZone

Klassenbrowser

Datenbankbrowser und Editor

Unterstützung externer Anwendungen

Unterstützung von Add-ins

Internationale Einstellungen


Categories: Webentwicklung Tags:

Einfaches BounceMail Managament mit PEAR Net_Imap

18. Januar 2008

Wenn man auf seiner Seite Newsletter versendet sollte man darauf achten die zurückkommenden Mails:

  1. zu empfangen (Einen Return-Path beim versenden angeben)
  2. dann zu löschen oder deaktivieren

Um das zu realisieren muss man erstmal ein IMAP Postfach abrufen und die Mails darin auslesen. Ich hatte als letztes dafür das Paket Zend_Mail aus dem Zend Framework verwendet und war nicht so angetan von der Verwendung der Klasse. Der Hauptvorteil der Zend_Mail ist die saubere PHP5 Programmierung. Das Paket PEAR::Mail_IMAPv2 ist nicht wirklich intuitiv aufgebaut und benötigt die imap Extension, die auf meinen lokalen Windows Rechner Probleme machte.

Net_Imap

Ich bin dann auf das wenig dokumentierte Paket Net_Imap gestoßen. Dieses benötigt nicht die imap Extension und auch keine Dokumentation, da die Klasse so intuitiv aufgebaut ist, dass man sofort weiß wie man damit umgehen soll.

Mit dieser einfachen Klasse kann ich somit ein Postfach auslesen und gebe die gefundene Mail Adresse über den Event Dispatcher bekannt.

Klasse Mail_Bounce

<?php
require_once ('Net/IMAP.php');
require_once ('Event/Dispatcher.php');
/**
 * @author Axel Jung
 * @version 1.0
 * @created 14-Jan-2008 15:20:00
 */
class Mail_Bounce{
    private $oNet_IMAP;
    private $oLog;
    private $oEvent_Dispatcher;
    /**
     * @param     Net_IMAP
     * @param    Log
     * @param    Event_Dispatcher
     */
    public function __construct(Net_IMAP $oNet_IMAP,Logger $log,Event_Dispatcher $oEvent_Dispatcher ){
        $this->oNet_IMAP = $oNet_IMAP;
        $this->oLog = $log;
        $this->oEvent_Dispatcher = $oEvent_Dispatcher;
    }
    /**
     * @param string    user
     * @param string    pass
     */
    public function readMailbox( $user, $pass){
        $this->login($user, $pass);
        $num = $this->oNet_IMAP->numMsg();
        if($num >0){
            $aMails = $this->oNet_IMAP->getMessagesList();
            if(PEAR::isError($aMails)){
                $this->oLog->log('Mail_Bounce->readMailbox() getMessagesList() error: '.$aMails->getMessage(),PEAR_LOG_ERR);
            }
            foreach($aMails as $aMail){
                $this->readMail($aMail['msg_id'],$aMail['uidl']);
            }
        }
        $this->logout();
    }
    /**
     * @param string    user
     * @param string    pass
     */
    private function login($user, $pass){
        $this->oLog->log('Mail_Bounce->login() try to login: '.$user,PEAR_LOG_INFO);
        $res = $this->oNet_IMAP->login($user, $pass);
        if(PEAR::isError($res)){
            $this->oLog->log('Mail_Bounce->login() login failed error: '.$res->getMessage(),PEAR_LOG_ERR);
            return false;
        }
        $this->oLog->log('Mail_Bounce->login() login sussess ',PEAR_LOG_INFO);
    }
    private function logout(){
        if(true === $this->oNet_IMAP->disconnect(true)){
             $this->oLog->log('Mail_Bounce->logout() disconnect sussess',PEAR_LOG_INFO);
        }else{
            $this->oLog->log('Mail_Bounce->logout() disconnect failed',PEAR_LOG_ERR);
        }
    }
    /**
     * @param    integer Message ID
     * @param    integer
     */
    private function readMail($msg_id,$uidl){
        $this->oLog->log('Mail_Bounce->readMail() read mail id: '.$msg_id,PEAR_LOG_INFO);
        $body = $this->oNet_IMAP->getBody($msg_id);
        $body = strip_tags($body);
        $aTreffer = array();
        if(preg_match('/To: (([a-z0-9]+([-_.]?[a-z0-9])+)@[a-z0-9äöü]+([-_.]?[a-z0-9])+.[a-z]{2,4})/i',$body,$aTreffer)){
            $email = $aTreffer[1];
            try{
                Event_Dispatcher::getInstance()->post($email,'onBounceEmail');
                $this->oLog->log('Mail_Bounce->readMail() email found: '.$email,PEAR_LOG_INFO);
                $this->deleteMassege($msg_id);
            }
            catch(Exception $e){
                $this->oLog->log('Mail_Bounce->readMail() email found but error: '.$e->getMessage(),PEAR_LOG_ERR);
            }
        }else{
            $this->oLog->log('Mail_Bounce->readMail() readMail To Adress not found'.$body,PEAR_LOG_ERR);
        }
    }
    /**
     * @param    integer     Message ID
     * @param    integer
     */
    private function deleteMassege($msg_id){
        if(true === $this->oNet_IMAP->deleteMessages($msg_id)){
            $this->oLog->log('Mail_Bounce->deleteMassege() delete mail id: '.$msg_id,PEAR_LOG_INFO);
        }else{
            $this->oLog->log('Mail_Bounce->deleteMassege() delete failed mail id: '.$msg_id,PEAR_LOG_ERR);
        }
    }
}
?>

Events abfangen

Mit folgenden Code reagiere ich auf den Event und kann die Mailadresse deaktivieren oder löschen.

<?
require_once 'Event/Dispatcher.php';
$oEvent_Dispatcher = Event_Dispatcher::getInstance();
$oEvent_Dispatcher->addObserver(array(new Dao_MailAbo(),'onBounceEmail'),'onBounceEmail');
?>
Categories: Webentwicklung Tags:

PHP und Java, es geht weiter

13. Dezember 2007

Neben den zahlreichen Versuchen PHP un Java zusammen zu bringen, bietet jetzt sogar Sun einen Plugin für die Netbean IDE.

Netbean ist eine kostenlose Java IDE die sehr stabil läuft und einige gute Features hat.

Ich habe mit dem Tool schon gute Erfahrungen gemacht.

Eine Einleitung für das Plugin gibt es hier http://blogs.sun.com/phantom/entry/hello_netbeans_this_is_php

Es bietet auch einen PHP Debugger unter der Verwendung von XDebug.

Screenhot

http://php.netbeans.org/

Categories: Webentwicklung Tags:

Jung New Media unterstützt Privat Immobilien Service

9. Dezember 2007

Privat Immobilien Service ist eine Beratungs- und Service-Agentur. Sie unterstützt durch fundierten und langjährigen Know-How Immobilienbesitzer, die Ihr Haus, Ihre Wohnung oder Ihr Grundstück privat verkaufen wollen.

Leistungen von Jung New Media:

- Konzeption, Beratung
- Webdesign
- HTML-Programmierung
- Suchmaschinenoptimierung

Web: Privat Immobilien Service

Privat Immobilien Service

Categories: Webentwicklung Tags:

Test von Zend-Studio for Eclipse Beta

20. November 2007

store-box-studio-product-main.gifVor einem Jahr testete ich schon das Zend-Studio for Eclipse (Neon). Jetzt wurde die offizielle Beta herrausgegeben und dann wollte ich dem Tool noch mal eine Chance geben. Es gibt einige Neuerungen die ich sehr schick finde:

Der Remote Debugger der sich leicht auf bestehenden Webservern intgrieren läßt.
Echte Code Vervollständigung und nicht so eine pseudo Funktion wie bei PHPEclipse. Das heißt, dass man nur Methoden und Eigenschaften der verwendeten Klassen angezeigt bekommt.
Bessere Hilfe bei der Erstellung von PHPDoc. Das PHDoc wird auch zur Validierung des Codes angewendet. Wenn man zum Beispiel @return array angibt und stattdessen was anderes zurückgibt wird das als Fehler markiert.
Gute Übersicht der PHP Funktionen (schon immer in Zend Studio)
Endlich eine Funktion zum Generieren von Getter und Setter

Ein großer Nachteil ist leider immer noch die sehr schlechte Performance beim Workspace erstellen. Die hat sich seit der Version vor einem Jahr leider nicht gebessert und ich befürchte fast das, das so bleiben wird.

Die Performance ist so schlecht, dass ich das Tool trotz seiner Vorteile nicht nutzen kann.

Sehr sympatich ist auch die Refaktoring Funktion, die aber im Test nicht zuverlassig funktionierte.

phped45.jpg Einen besseren Eindruck machte mir das Tool nuSphere PHPED.

Dieses Tool ist macht Zend-Studio irgendwie nach und ist aber billiger und performanter. Es gibt von der Firma sogar eine Art Zend-Plattform zum Bruchteil der Zend Version.

Categories: Webentwicklung Tags:

Webseite auf Barrierefreiheit testen

19. November 2007

Benutzerfreundlichkeit und Barrierefreiheit sind im Web2.0-Zeitalter in aller Munde. Viele Agenturen preisen Ihre Web-Dienstleistungen als barrierefrei an. Aber wie kann man sicher stellen, dass eine Webseite wirklich die Bedingungen für Menschen mit Einschränkungen wie z.B. einer Sehschwäche erfüllt?

Mit dieser Problematik beschäftigt sich die Seite
http://www.barrierecheck.net

Dort kann man kostenlos und ohne Vorkenntnisse eine Webseite auf die zehn wichtigsten Kriterien der Barrierefreiheit überprüfen lassen.

Categories: Webentwicklung Tags:

PHP – Java Framework

7. November 2007

zerographic1.pngIBM stellte auf der internationalen PHP Konferenz in Frankfurt das Projekt Zero vor. Das Projekt ist ein Web Framework für schnelle Webentwicklung. Es arbeitet nach dem REST Prinzip, was die Arbeit enorm erleichtert. Es wird extra für die Eclipse IDE entwickelt.

Das Besondere ist aber das IBM hier eine Php Engine anbietet die so arbeitet wie PHP, aber nicht in C sondern in Java geschrieben ist. Das hat den Vorteil das die Java Bridge keine Performance mehr kostet und das einige Ungereimtheiten von PHP beseitigt wurden. PHP-Extensions kann man bei Zero in Java schreiben.

Es hat nicht alles was das normale PHP hat und kann deshalb auch nicht in bestehenden Projekten eingesetzt werden, aber deren Devise ist: Einfach und unkompliziert ohne unnötigen Overhead. Diesen Eindruck macht auch die Webseite: sehr aufgeräumt, gut dokumentiert und klar.

Als Java und PHP Fan, hoffe ich das sich die Entwicklung fortsetzt.

Video Demo

Categories: Webentwicklung Tags:

International PHP Conference 2007

29. Oktober 2007

Die International PHP Conference gehört seit Jahren zu den bedeutendsten Treffpunkten der weltweiten PHP-Community.

Die Konferenz bietet der internationalen Community ein optimales Forum für Informations- und Erfahrungsaustausch und einen Einblick in die weitere Zukunft von PHP. Für die Teilnehmer wird so eine ideale Möglichkeit geschaffen, sich über den Enterprise-Einsatz von PHP zu informieren. Ausserdem bietet die International PHP Conference zahlreiche Networking-Möglichkeiten und Social Events, so dass in entspannter Atmosphäre technische Probleme und mögliche Lösungen diskutiert werden können.

Mehr Infos zur International PHP Conference 2007

Categories: Webentwicklung Tags:

Spamschutz für E-Mail-Adressen durch Unicode-Verschlüsselung

26. Oktober 2007

Viele wundern sich, warum auf einen erfolgreichen Start einer Webseite im Internet plötzlich eine Flut von Spam-E-Mails folgt. Der Grund dafür ist, dass die E-Mail-Adresse, die z.B. auf der Kontakt- oder Impressum-Seite angegeben wird, unverschlüsselt ist. Diese unverschlüsselten E-Mail-Adressen können dann durch kleine Sammler-Programme (Spyder) im Internet leicht gefunden, gelesen und später zum Versenden von Spam-Mails missbraucht werden.

Es gibt mehrere Möglichkeiten, die Adressen zu schützen: Neben der Option, Adressen als Bild anzeigen zu lassen, steht eine weitere, die Unicode-Verschlüsselung, zur Verfügung. Der Unicode ist eine Zeichentabelle, in der statt Buchstaben bestimmte Zeichenfolgen verwendet werden, die jeder Browser ohne Probleme deuten kann, der Spyder hingegen nicht.

So eine Verschlüsselung zu erstellen ist in der Regel nicht einfach,
aber durch bestimmte Tools wie das “Spam-me-not” geht es ganz leicht.

Spam Me Not Email-Adresse verschlüsseln

Categories: Webentwicklung Tags:

Mehrsprachige Webseiten mit PHP

12. Oktober 2007

Wenn man mehrsprachige Webseiten mit PHP umsetzten will, geht eigentlich kaum ein Weg an Gettext vorbei.

Gettext

Da ich die Webseite meines Brötchengebers gerade komplett neu übersetzen lasse stelle ich die Internationalisierung jetzt auf Gettext um. Da unser Hoster dieses Tool schon installiert hat. Hatte ich zum Glück auf Server Seite nicht viel zu tun. Leider funktionierte die Installation auf meinen Windows Arbeitsrechner nicht so problemlos, da Windows andere Locale verwendet. Also statt de_DE muss man ger verwenden. Auch das Tool zum extrahieren der Textstellen aus dem Code lief bei mir unter Windows nicht. Da aber auch den Webserver das Tool xgettext vorhanden ist, nutze ich einfach das Tool online zum extrahieren der PO Dateien.

Erstmal muss man gettext im PHP Code aktivieren:

<?php
setlocale(LC_ALL, ‘de_DE’);
bindtextdomain(”default”, “./locale”);
textdomain(”default”);
?>

Dann kann man im Code den Text so ausgeben:

<?php
echo gettext(„Willkommen“);
?>

Zu diesem Zeitpunkt hat man noch keine Übersetzung-Datei. Man braucht Sie jetzt auch noch nicht, da der Code auch so funktioniert. Es wird halt einfach Willkommen ausgegeben.

Nachdem man den PHP Coden angepasst hat, lässt man xgettext über die PHP Dateien laufen. Dieses Tool extrahiert alle Strings die mit gettext oder dgettext aufgerufen werden und fügt die in einer PO Datei zusammen.

xgettext –default-domain=default -k_ *.php

Mann muss eventuell noch die Codierung angeben mit –from-code=ISO-…

Diese PO Datei kann man dann einen Übersetzer geben der die dann mit einem Tool wie poEdit übersetzt.

poEdit erzeugt automatisch beim Speichern der PO Datei eine MO Datei in die Textdaten in Maschinen lesbarer Form abgelegt werden.

Diese MO Datei muss man in das Verzeichnis /locale/de_DE/LC_MESSAGES kopieren und schon wird die Webseite übersetzt angezeigt.

Durch dieses Vorgehen kann die Arbeit vom Coder und Übersetzer unabhängig geschehen und weitere Sprachen können einfach und schnell hinzugefügt werden. Bei größeren Webseiten macht es Sinn die Texte in verschiedene Domains aufzuteilen, damit die Dateien nicht zu groß werden.

Categories: Webentwicklung Tags: