Tom: INFO: $_SERVER['PHP_SELF']

Beitrag lesen

Hello,

vielleicht erinnert sich noch jemand daran, dass wie neulich einen  Thread hatten, in dem es um das action-Attribut des Formularelementes ging.

So richtig gut konnte niemand erklären, was man denn dort hineinschreiben sollte mit PHP.

Es gibt eigens dafür $_SERVER['PHP_SELF'].
Es funktioniert aber auch, wenn man gar nichts in das Attribut hineinschreibt und es sit scheinbar auch so vorgesehen, das man das eben lassen darf.

[REQUEST_URI] => /debug/kontrolle.php?subaction=add
    [SCRIPT_NAME] => /debug/kontrolle.php
    [PHP_SELF] => /debug/kontrolle.php

Heute habe ich mir einen Wolf gesucht in einer alten Applikation und mich immer wieder gewundert, dass das Script bestimmte Operationen ausführte, die über

$subaction = '';
if(!empty($_GET['subaction']))
{
  $subaction= $_GET['subaction'];
}
...

if ($subaction == "delete")
{
  ### hier wundern
}

aufgerufen wurden, allerdings mittels Formular, das die Methode POST benutzt.

Da es sich leider um ein mittles JavaScript geöffnetes Fenster handelte, das keine Adressleiste hatte, ist mir auch nichts weiter aufgefallen. Ich habe mich nur sehr gewundert, dass doch trotz POST die Aktionen im if() ausgeführt wurden.

Des Rätsels Lösung ist, dass das Formular vorher mittels GET und Paramteren (über einen Link) geöffnet wurde, und diese Parameter nun noch an der URI des Formulares dranhängen. Da die Action-Attribute in dieser Applikation alle leer sind, werden diese Paramter bei einem POST wieder mitversandt (nach Affenmanier an sich selbst).

Das Script erhält dann also gleichezeitig GET und POST Parameter.

Wie man oben sehen kann, enthält aber

PHP_SELF] => /debug/kontrolle.php

die Parameter nicht mehr. Wenn man es benutzt, verhindert man das automatische Einschleppen der alten Get Parameter vom letzten Aufruf.

Ich fand, dieser kleine aber gemeine Unterschied könnte Euch viellelicht auch interessieren.

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau