PHP_SELF funktioniert nicht

Wenn die beliebte Variable $PHP_SELF nicht funktioniert, kann $_SERVER[‚PHP_SELF‘] die Antwort sein! Diese Variable ist besonders beliebt, wenn es darum geht, dass sich ein PHP selbst aufrufen soll. Ein geeigneter Einsatzzweck dafür ist beispielsweise der Aufruf in einem Kontaktformular:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
if (isset($_POST['name'])) {
  $name = $_POST['name'];
  echo "Name: $name";
}
?>
 
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
  <label for="nachname">Name</label>
  <input type="text" id="nachname" name="name" />
  <button type="submit">Abschicken</button>
</form>

Text läuft über ein Div hinaus

Wenn man einen Breite-definierten Div-Container hat und eine lange Zeichenkette ohne Leerzeichen hinein schreibt, läuft der „Text“ aus dem Div-Container. Um das zu verhindern, hilft die CSS-Eigenschaft overflow.

Beispiel:

.divcontainer
{
    width: 100px;
    overflow: hidden;
}

Eigenschaften:

visible; Inhalt bleibt komplett sichtbar und überschreibt Div
hidden; Inhalt wird am Ende des Div-Bereichs unsichtbar
scroll; Inhalt bleibt innerhalb des Divs und wird gescrollt
auto; Der Web-Browser erzeugt automatisch Scrollbalken

Ein Umbruch der Zeichenkette ist nur möglich, wenn Leerzeichen in den Zeichen enthalten sind oder mit der PHP-Funktion wordwrap.

mod_rewrite – Die Zweite

Das ein funktionierender redirect-Befehl in der .htaccess-Datei kein hinreichender Beweis dafür ist, dass das mod_rewrite-Modul eines Apache-Webservers geladen ist, musste ich gerade feststellen. Die beste Methode ist es also sich mit phpinfo() das Modul bestätigen zu lassen.

In der phpinfo()-Übersicht gibt es den Absatz apache2handler mit der Spalte Loaded Modules. Wenn dort mod_rewrite aufgelistet ist, ist das Modul geladen. Falls nicht, hilft folgende Vorgehensweise:

  • in das Verzeichnis etc/sysconfig auf dem Server wechseln
  • die Datei apache2 öffnen
  • nach APACHE_MODULES=“…“ suchen und dort in die Liste der Module rewrite einfügen.
  • Beispiel:
    APACHE_MODULES=“actions alias auth_basic authn_file authz_host authz_groupfile authz_default authz_user authn_dbm autoindex cgi dir env expires include log_config mime negotiation rewrite setenvif ssl userdir php5 perl python suexec“
  • Apache-Server über die Kommandozeile (PuTTY) neustarten, Befehl: rcapache2 restart

Alexander Schulz beschreibt in seinem Blog die Vorgehensweise komplett über die Kommandozeile:

Zitat:

1. Wechseln in das Verzeichnis “etc/sysconfig”
“cd etc/sysconfig”
Hier liegen die Konfigurationsdateien, welche bei Neustarts zum Initialisieren der Dienste verwendet werden.
2. Bearbeiten der Datei “apache2″
“vim apache2″
* In den Einfügemodus wechseln
Taste “i” (für Insert) drücken
* Zeile suchen und Module rewrite hinzufügen
APACHE_MODULES=”actions alias […]” suchen und am Ende der Liste “rewrite” einfügen
(eine Liste mit allen Modulnamen steht im Kommentar darüber)
* Speichern und schließen
Befehl “:wq!” (w – Speichern; q! – Schließen ohne nachfragen)
3. Apache neu starten
“rcapache2 restart“
4. phpinfo() aufrufen und prüfen ob das Modul geladen ist

Textdatei mit PHP auslesen

Ein winziger Quellcode um eine Textdatei zeilenweise mit PHP auszugeben:

<?
    # Textdatei in ein Array einlesen
    $arrayTextDatei = file(„text.txt“);

    # Jede Zeile der Textdatei ausgeben
    for($i = 0; $i < count($arrayTextDatei); $i++)
     {
             echo $arrayTextDatei[$i].“<br />“;
    };
?>

Sollten die Array-Datensätze am Ende Leerzeichen aufweisen, hilft der Befehl substr() weiter.

Beispiel:

echo substr($arrayTextDatei[$i],0,-2).“,<br />“;

Hierdurch werden die Datensätze um -2 am Ende verkürzt.