Kategorien
Apache Webserver PHP

PHP mit htaccess debuggen: Error Log

Um die möglichen bei Usern im Betrieb  auftretenden Fehler einer Webseiten zu loggen, empfiehlt sich ein Error Log in der htaccess einzurichten außerhalb des öffentlichen Teils der Webseite. Diese muss via FTP mit Schreibrechten versehen werden.

php_flag log_errors on

php_value error_log /srv/www/vhosts/domain/non-public/PHP_errors.log

php_flag ignore_repeated_errors on

php_flag ignore_repeated_source on

php_value error_reporting 1

Dabei werden keine sich wiederholenden und nur fatal run-time Fehler geloggt.

Kategorien
PHP

PHP 2-Spalten Layout eleganter Code

Wenn man performant und elegant ein belibeges 2 spaltiges Tabellen HTML  Layout generieren will ohne Tabellen, kann man z.B: so tun:

$count = count($array);
for($i = 0; $i < $count; $i++)
{
   $style = !$i%2 ? "left" : "right";
   $html .=  "<div class='$style'>{$array[$i]}</div>";
}

und mit CSS ausrichten:

#container{width:600px}
.left {width:200px}
.right {width:400px}
Kategorien
PHP

Auffüllen von Zahlen mit führenden Nullen in PHP

Wenn man eine Zahl mit führenden Nullen versehen will, wie z.B. 001, dann bietet sich die Funktion str_pad an:

$nummer3stellig = str_pad(1, 3, 0, STR_PAD_LEFT);
Kategorien
WordPress

Webseiten Input Feld deaktivieren in WordPress Kommentaren

Wenn man nicht will, dass Spammer und Suchmaschinenoptimierer Ihre Kommentare mit Links zu Ihrer Webseite hinterlassen, sollte man entweder

  • die Freischaltung der Kommentare von Hand übernehmen (Einstellungen->Diskussion == muss jeder Kommentar von einem Administrator überprüft werden.->Häckchen)
  • einen Spam Filter wie Akismet benutzen, der allerdings nur für private Zwecke (ohne Werbung) kostenlos ist
  • oder die Eingabe von Webseiten in das entsprechende Input-Feld der Kommentare verhindern

Dazu muss einfach folgender Code wie folgt auskommentert werden in der wp-includes/comment-templates.php (ca. Zeile 1522):

    $fields =  array(
        'author' => '<p>' . '<label for="author">' . __( 'Name' ) . '</label> ' . ( $req ? '<span>*</span>' : '' ) .
                    '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
        'email'  => '<p><label for="email">' . __( 'Email' ) . '</label> ' . ( $req ? '<span>*</span>' : '' ) .
                    '<input id="email" name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',
//        'url'    => '<p><label for="url">' . __( 'Website' ) . '</label>' .
//                    '<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></p>',
    );

Die Variante schützt einen wahrscheinliche nicht vor Pings.

Kategorien
MySQL PHP

Strings speichern in MySQL und Sicherheit

Um einen String abzuspeichern mit unbekanntem Inhalt, sollte immer die PHP Funktion mysql_real_escape_string verwendet werden:

$mystring = mysql_real_escape_string($mystring );

Damit werden bösartige Strings entschärft, mit denen großer Schaden angerichtet werden kann wie:

$string = "1';DELETE FROM table WHERE 1;#";
$sql = "SELECT * FROM table WHERE id = '$string' ";

Dies kann durch die Verwendung der Funktion verhindert werden.

 

 

Kategorien
PHP Zend Framework

Design Patterns im Zend Framework

Für einen Uni Vortrag habe ich mich mit den zahlreichen Design Patterns im Zend Framework beschäftigt. Folgende Themen werden beleuchtet mit Code- Beispielen:

Gliederung:

1. MVC
2. Front-Controller
3. Singleton
4. Row-Data-Gateway und Table-Data-Gateway
5. Registry

Download:

zend_framework_design_patterns

Kategorien
CodeIgniter Framework SEO

$_GET Variablen in CodeIgniter und SEO

CodeIgniter hat aufgrund der Sichheitsprobleme von Get-Variablen dieses standmäßig deaktiviert, d.h. sie werden überschrieben beim Starten der Webseite.

Ein Möglichkeit GET-Variablen trotzdem zu nutzen und gleichzeitig suchmaschinenfreundliche URLs zu erzeugen ist:

$this->uri->segment(3)

Dieser Befehl gibt bei einer URL namens:http://www.foo.de/1/2/3/ den Wert 3 zurück.

Der Vorteil ist, dass keine Namen-Wert-Paare mehr in der URL befindlich sind, sondern nur noch die Werte, was die Länge der URL verkürzt und sehr seo freundlich ist. Der Nachteil ist, dass die Reihenfolge sich natürlich verändern kann und es dann zu Problen kommt.

Kategorien
iPhone/iOS WordPress

iPhone Oberfläche für WordPress

Mit dem Plugin WPtouch ist das kinderleicht erledigt und funktioniert bestens. Gerade habe ich das Plugin für meinen Blog installiert und bin begeistert.

20110819-101522.jpg

Kategorien
CodeIgniter Framework PHP

RESTful Services in CodeIgniter und White Screen

Um einen RESTful Service in CodeIgniter einzubauen, nutzt man am besten die sehr gute Bibliothek von Phil Sturgeon, vielen Dank dafür!

Ich habe mich leider mit dem White Screen of Death bei Code Igniter rumschlagen müssen und folgende Lösung gefunden: Die Bibliothek in der neusten Version 2.4 funktioniert nicht mit CodeIgniter 1.7x. Es sollte die Version 2.2 der Bibliothek installiert werden.

Um das zu überprüfen, kann die Versionsnummer von CodeIgniter in der Datei system/codeigniter/CodeIgniter.php herausgefunden werden.

Wenn der REST-Service läuft, sollte man übrigends die folgende Zeile in der  REST_controller.php abändern,damit deutsche Umlaute und Sonderzeichen korrekt ohne Error : Entity ‚ouml‘ not defined usw. angezeigt werden:

Zeile 693

$value = htmlspecialchars(html_entity_decode($value, ENT_QUOTES, 'UTF-8'), ENT_QUOTES, "UTF-8");
Kategorien
CodeIgniter Framework PHP Webdeveloper Tools

CodeIgniter debuggen mit FirePHP

Codeignitor macht einem das debuggen nicht einfach, weil bei einem normalen printf oder var_dump() Ausgaben die komplette Seite nicht geladen wird und es nur einen Serverfehler zurückgibt. Deshalb wird der Entwickler gezwungen, sein Projekt ordentlich zu debuggen, es gibt mehrer Möglichkeiten:

  1. per Logfile
  2. nutzen der oben benannten Funktion und danach ein die()
  3. XDebug, was aber lokal einfach möglich ist
  4. FirePHP für den Firefox
  5. per Codeigniter Profiler

Die Installation von FirePHP in Codeignitor ist sehr gut hier beschrieben.

Die Debug Informationen können mit folgendem Code in der Firebug Konsole ausgegeben werde:

$this->firephp->log('Message');

Der sehr gute Codeigniter Profiler kann mit dem folgenden Befehl aktiviert werden:

            $this->output->set_header("Cache-Control: no-store, no-cache, must-revalidate");
            $this->output->set_header("Cache-Control: post-check=0, pre-check=0");
            $this->output->set_header("Pragma: no-cache");
            $this->output->enable_profiler(TRUE);