Do not access Superglobals in PHP 5

Die serverseitig interpretierte Skriptsprache PHP ist laut dem Tiobe Index auf Platz 5 der beliebtesten Programmiersprachen weltweit (Stand: Oktober 2013). Die einfache Syntax von PHP halten die Sprache seit 18 Jahren auf Erfolgskurs. Die Popularität und der rege Einsatz von PHP führen jedoch dazu, dass böswillige Menschen versuchen, Sicherheitslücken in PHP-Anwendungen auszunutzen.

Um keine Angriffspunkte in der eigenen PHP-Anwendung zu bieten, sollte man den direkten Zugriff auf superglobale Arrays (engl. Superglobals) vermeiden.
Do not access Superglobals in PHP 5 weiterlesen

WordPress Error Logging

Um Fehler in einem WordPress-System in eine Datei loggen zu lassen, muss man die WordPress-Konfigurationsdatei wpconfig.php anpassen. Folgende Einträge sind in der Datei wpconfig.php notwendig:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
ini_set('error_log', WP_CONTENT_DIR . '/debug.log');

Nach dem Abspeichern der genannten Einträge, werden alle Fehler in die Datei /wp-content/debug.log geschrieben. Möchte man selber Informationen in die Log-Datei schreiben, so kann man die PHP-Funktion error_log benutzen.
WordPress Error Logging weiterlesen

Working with arrays in PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$myArray = array(1, 2, 3);
 
// Operation on array copy (not-in-place)
foreach ($myArray as $key => $value) {
  $value = $value * 2;
}
 
// Operation on same array (in-place)
foreach ($myArray as $key => $value) {
  $myArray[$key] = $value * 2;
}
 
// Operation on same array (in-place, shortform)
foreach ($myArray as &$value) {
  $value = $value * 2;
}
 
// Nicely display array values
echo '<pre>';
var_dump($myArray);
echo '< /pre>';

WordPress Widget ID herausfinden

WordPress unterstützt im Design-Bereich die Möglichkeit, mehrere Instanzen eines Widgets zu verwenden. Damit Anwendungsentwickler die Möglichkeit haben, auf die Einstellungen verschiedener Instanzen eines Widgets zu reagieren, kann die Widget ID abgefragt werden. Die Widget ID setzt sich aus einem Slug des Widget-Namens und einer fortlaufenden Nummer zusammen.
WordPress Widget ID herausfinden weiterlesen

„DROP DATABASE“ – Anweisungen wurden deaktiviert.

Wer XAMPP benutzt und mit phpMyAdmin versucht eine Datenbank zu löschen, der wird eventuell die Meldung: "DROP DATABASE" - Anweisungen wurden deaktiviert. erhalten. Ist das der Fall, muss man in der Datei C:\xampp\phpMyAdmin\config.inc.php folgende Zeile hinzugefügt werden: $cfg['AllowUserDropDatabase'] = true;. Danach muss der Apache -und MySQL-Server neu gestartet werden.

Externe Links in neuem Tab öffnen

Für externe Links hat man früher gerne das Hyperlink-Attribut target auf _blank gestellt, um zu erreichen, dass diese Links in einem neuen Fenster oder Tab geöffnet werden. Mit dem „XHTML 1.0 Strict“-Standard wurde das Attribut target jedoch begraben, weshalb der W3C Markup Validation Service nur ein there is no attribute "target" anzeigt, sofern dieses Attribut verwendet wird. Begründet wurde dieser Entschluss damit, dass man dem Webseiten-Besucher selber die Entscheidung überlassen möchte, ob er den Link in einem neuen Fenster öffnen möchte oder nicht.

Möchte man trotzdem externe Links in einem neuen Tab öffnen lassen und dabei die W3C Validierung bestehen, so hilft ein Umweg über JavaScript, welcher alle externen Links findet und mit dem Wert target="_blank" auszeichnet:

var links = document.getElementsByTagName('a');
if(links.length > 0){
  for(var i = 0; (link = links[i]); i++){
    if(link.href.indexOf(document.domain) == -1){
      link.setAttribute('target', '_blank');
    }
  }
}

Möchte man die Links von dynamisch generierten Inhalten ebenfalls auf target="_blank" setzen, so hilft folgender PHP-Trick:

$text = str_replace('<a', '<a target="_blank"', $text);

Im aktuellen HTML5-Entwurf wurde das target-Attribut übrigens wieder aufgenommen.