403 Forbidden
Schmaid
- php
Hallo
ich stehe hier vor einem Problem das ich absolut nicht verstehe und ich nicht weiterkomme.
Also ich habe den untenstehenden PHP-Code mit Hilfe von einer Übung aus einem Buch erstellt. Nur wenn ich dann im Formular etwas eingebe und abschicke, kommt nicht die gewünschte Ausgabe zurück sondern eine Fehlermeldung:
-----------------
Forbidden
You don't have permission to access /uebungen/<br /><b>Notice</b>: Undefined variable: PHP_SELF in <b>c:/programme/easyphp1-7/www/uebungen/ud12.php</b> on line <b>18</b><br /> on this server.
Apache/1.3.27 Server at pc013337 Port 82
-----------------
Es kann doch wohl nicht sein, dass ich auf meinem eigenen Rechner keine Berechtigung habe! Und warum funktioniert nur das PHP-Dokument nicht und alle anderen gehen.
Nur das mit dem Selbstaufruf funktioniert nicht. Ausser ich gebe in der Datei den Namen der Datei an als Aufruf, aber warum klappt es nicht mit <?php $PHP_SELF ?>
Hier ist der Quellcode:
<html>
<head>
<?php
If (isset($HTTP_POST_VARS['vn'])) {$vn=$HTTP_POST_VARS['vn'];} else {$vn="";}
If (isset($HTTP_POST_VARS['nn'])) {$nn=$HTTP_POST_VARS['nn'];} else {$nn="";}
If (isset($HTTP_POST_VARS['gesendet'])) {$gesendet=$HTTP_POST_VARS['gesendet'];} else {$gesendet="";}
if ($gesendet)
{
echo "Sie haben folgenden Namen";
echo " eingegeben: $vn $nn<p>";
}
?>
</head>
<body>
Bitte geben Sie einen Namen ein und senden Sie das Formular ab:
<form action = "<?php $PHP_SELF ?>" method = "post">
<input name = "nn"> Nachname<p>
<input name = "vn"> Vorname<p>
<input type = "submit" name = "gesendet">
<input type = "reset">
</form>
</body>
</html>
Gruß
Schmaid
Holladiewaldfee,
b>Notice</b>: Undefined variable: PHP_SELF in <b>c:/programme/easyphp1-7/www/uebungen/ud12.php</b> on line <b>18</b><br /> on this server.
Hier steht, daß $PHP_SELF nicht definiert ist.
Nur das mit dem Selbstaufruf funktioniert nicht. Ausser ich gebe in der Datei den Namen der Datei an als Aufruf, aber warum klappt es nicht mit <?php $PHP_SELF ?>
Und hier wunderst Du Dich, daß es nicht geht.
Suchtip: register_globals, $_SERVER['PHP_SELF']
Ciao,
Harry
Ja Servus
Suchtip: register_globals, $_SERVER['PHP_SELF']
ala gut also ich habe jetzt das ganze mit dem $_SERVER['PHP_SELF'] Befehl realisiert. Ich gehe mal davon aus, dass $PHP_SELF einfach noch zur älteren PHP-Version gehört und nicht richtig erkannt wird.
Gruß
Schmaid
Hallo,
ala gut also ich habe jetzt das ganze mit dem $_SERVER['PHP_SELF'] Befehl realisiert.
Das ist eine Variable vom Typ Array, kein Befehl.
Ich gehe mal davon aus, dass $PHP_SELF einfach noch zur älteren PHP-Version gehört und nicht richtig erkannt wird.
$PHP_SELF steht nur zur Verfuegung, wenn in der Konfiguration
von PHP die Option register_globals="on" ist.
Das war bei aelteren PHP-Versionen standardmaessig der Fall,
aber schon dort konnte man es abschalten.
In neueren Versionen ist register_globals standardmaessig
auf "off", und das ist gut so, denn es ist sicherer.
Verlangt dafuer etwas mehr Tipp-Arbeit.
http://www.dclp-faq.de/q/q-formular-register-globals.html
http://www.php.net/manual/de/security.registerglobals.php
Gruesse,
Thomas
hi,
die fehlerursache hast du ja jetzt - noch zur erklärung, warum du diese fehlermeldung bekommen hast:
You don't have permission to access /uebungen/
da das action-attribut deines formulars leer war, hat dein browser einfach einen request auf das verzeichnis, in dem du dich aktuell befindest, rausgeschickt.
da für dieses aber kein standard-dokument definiert bzw. ein solches nicht vorhanden ist, und das directory listing bei dir verboten ist, ergibt dieser request einen 403 forbidden.
gruss,
wahsaga
Hallo wahsaga,
ich habe da nicht viel verstanden von dem was du jetzt gesagt hast weil ich im PHP noch Frischling bin... vielleicht kannst dich ja noch dran erinnern hatte schon bei JavaScript hier öfters mal vorbei geschaut ;-)
Aber ich kopier mir deine Erklärung und lass Sie mir dann mal von einem Kollegen erklären... bin noch Azubi :-)
Gruß
Schmaid
Hallo,
ich habe da nicht viel verstanden von dem was du jetzt gesagt hast weil ich im PHP noch Frischling bin...
Das hat nichts mit PHP zu tun, sondern mit HTML, HTTP und
Webserver-Verhalten.
da das action-attribut deines formulars leer war, hat dein browser einfach einen request auf das verzeichnis, in dem du dich aktuell befindest, rausgeschickt.
Du hattest ja offenbar sowas:
Datei
http://www.example.com/verzeichnis/formular.php
mit
<form action="" method="post">
Also ein leerer Wert fuer das ACTION-Attribut.
Fuer die Begriffe (Element, Attribut u.s.w.) siehe:
http://www.jendryschik.de/wsdev/einfuehrung/xhtml/syntax.html
Wenn der Benutzer jetzt auf einen Submit-Button klickt oder
durch Druecken der Enter-Taste dafuer sorgt, dass das
Formular abgeschickt wird, dann schickt der Browser
es vermutlich an:
http://www.example.com/verzeichnis/
da für dieses aber kein standard-dokument definiert bzw. ein solches nicht vorhanden ist, und das directory listing bei dir verboten ist, ergibt dieser request einen 403 forbidden.
Das folgende gilt fuer den Apache-Webserver:
Wenn der Browser
http://www.example.com/verzeichnis/
verlangt (oder etwas dorthin schicken will, was fast aufs
selbe herauskommt), dann schickt der Webserver (je nach Konfiguration)
Gruesse,
Thomas