Philipp: Warum funktioniert $PHP_SELF bei mir nicht?

Hi!

Ich hab da so ein gaaanz kleines großes Problem:

Wenn ich in irgendein PHP-Script den Befehl $PHP_SELF verwende, führt der Browser beim Abschicken eines Formulars etc. nicht das Script aus, sondern öffnet eine Seite auf welcher steht:

Forbidden

You don't have permission to access ...

Was hab ich falsch gemacht? Warum nimmt er $PHP_SELF nicht an? Oder hab ich vergessen, etwas im Apache einzustellen?
Bitte helft mir!

Danke im Vorraus!

Mit freundlichen Grüßen

Philipp

  1. Hallo Philipp,

    Wenn ich in irgendein PHP-Script den Befehl $PHP_SELF verwende,

    mhh... $PHP_SELF würde ich ja nicht gerade als Befehl bezeichnen, aber gut... :-)

    führt der Browser beim Abschicken eines Formulars etc. nicht das Script aus,

    was steht im action-Attribut des form-elements?

    sondern öffnet eine Seite auf welcher steht:
    Forbidden
    You don't have permission to access ...

    Verzeichnisindexing (oder wie auch immer das genau heißt :-)) abgeschaltet?

    Warum nimmt er $PHP_SELF nicht an?

    ich tippe mal auf register_globals=off - befrag diesbezüblich mal das </archiv/> (mit hilfe der http://selfsuche.teamone.de/ bzw. über http://www.google.de/search?q=site:forum.de.selfhtml.org)

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. was steht im action-Attribut des form-elements?

      Dort steht folgendes:

      <form action='<?php echo $PHP_SELF; ?>'

      oder in anderen Scripten:

      <?=$PHP_SELF;?>

      Es funktioniert aber beides nicht!

      Verzeichnisindexing (oder wie auch immer das genau heißt :-)) abgeschaltet?

      Weiß nicht! Was isn das? :-D

      Philipp

      1. Hallo Philipp,

        was steht im action-Attribut des form-elements?
        Dort steht folgendes:
        <form action='<?php echo $PHP_SELF; ?>'

        uups - kann es sein, dass du garkein php zur Verfügung hast (bzw. selbiges nicht funktioniert)? mach mal eine Seite die nur <?php phpinfo(); ?> enthält und ruf die auf.

        im Übrigen solltest du besser $_SERVER['PHP_SELF'] schreiben.

        <?=$PHP_SELF;?>

        die Methode ist nicht gut - du setzt short_open_tag=on und register_globals=on vorraus...

        Verzeichnisindexing (oder wie auch immer das genau heißt :-)) abgeschaltet?
        Weiß nicht! Was isn das? :-D

        http://httpd.apache.org/docs-2.1/mod/core.html#options - bei dir steht vmtl. irgendwo in der Konfiguration des Apache "Options -Indexes" drin. Was steht denn nach dem Absenden des Formulars in der Adressleiste?

        Grüße aus Nürnberg
        Tobias

        --
        Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
        1. uups - kann es sein, dass du garkein php zur Verfügung hast (bzw. selbiges nicht funktioniert)?

          Doch! PHP funktioniert einwandfrei!

          Was steht denn nach dem Absenden des Formulars in der Adressleiste?

          Nun, ich habe folgendes Programm geschrieben, um mich vor Spam-Robots zu schützen! Wenn ich auf den Link klicke, steht in der Adress-Zeile der sich darauf hin öffnenden Seite:

          http://blablabla.php$email=info:philipp-wehner-homepage.de

          Das Programm sieht so aus:

          <?php

          if (isset($email))
          {
           $email = str_replace(':', '@', $email);
           header("Location: mailto:$email");
           exit;
          }
          ?>

          <a href="<?php echo $_SERVER['PHP_SELF']; ?>$email=webmaster:philipp-wehner-homepage.de"><u>E-Mail</u></a>

          1. Moin!

            uups - kann es sein, dass du garkein php zur Verfügung hast (bzw. selbiges nicht funktioniert)?

            Doch! PHP funktioniert einwandfrei!

            Dann funktionierst du nicht so einwandfrei. :)

            Gefragt war, was im form-Element als action-Attribut drinsteht. Aber IM BROWSER. Denn der Browser kann kein PHP, der kann nur HTML. Und da darf logischerweise kein PHP ankommen.

            - Sven Rautenberg

            --
            ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
          2. <a href="<?php echo $_SERVER['PHP_SELF']; ?>$email=webmaster:philipp-wehner-homepage.de"><u>E-Mail</u></a>

            Könnte sein, dass was mit dem Link nicht hinhaut:
            Probiers mal mit:
            <a href="<?php echo $_SERVER['PHP_SELF']; ?>?email=[name@provider.de]"><u>E-Mail</u></a>

            nach der Datei ein "?" nicht "$"

            matthias

            1. für [name@provider.de] natürlich Deine Adresse einsetzen ;-)

              1. Korrektur- name:provider.de - einsetzen.

                Aber wozu das Ganze. Denn Sinn dafür habe ich bisher noch nicht kapiert.

                Matthias

            2. Probiers mal mit:
              <a href="<?php echo $_SERVER['PHP_SELF']; ?>?email=[name:provider.de]"><u>E-Mail</u></a>

              Wenn ich das so mache, dann läd er die Seite neu! In der Adress-Leiste steht dann:

              http://blablabla.php?email=[webmaster:philipp-wehner-homepage.de]

              Nun, was den Sinn betrifft:

              Ich habe mir da mal so ein Buch gekauft: PHP 4 (Kochbuch) vom HANSER-Verlag. Da steht dieses Script drin, mit der Erklärung, dass es vor Spamrobots schützen soll! Scheinbar können die den : nicht interpretieren! Weiß auch nicht so genau!

              Philipp

              1. Wenn ich das so mache, dann läd er die Seite neu!

                ja na logisch: das meint ja auch $_SERVER['PHP_SELF'] -> lade dich selbst!
                Wenn Du also mit 'PHP_SELF' in der URL eine Datei aufrufst, dann wird die AKTUELLE Datei geladen mit den übergebenen Parametern. Das sind die hinter dem "?". Willst Du eine neue Datei aufrufen, dann musst Du auch eine neue erstellen und laden z.B http://www.domain.de/pfad/mailme.php?email=name:provider.de
                in der Datei kannst Du dann den ganzen Wust hineinschreiben.

                ZUm Sinn: ein robot ist höchstens in der Lage ein "mailto:" bzw. "name@provider.de" zu auszuwerten. Das Stichwort für den robot wäre dann entweder "mailto:" oder schlicht und einfach die E-Mail Adresse selbst. Also vermeide solche statischen Geschichten im HTML-Code wie: <a href="mailto:name@provider.de">.
                Deswegen meint das Kochbuch statt "@" ein ":" im Link zu nehmen und hinterher wieder zusammen zu setzen.

                Matthias

          3. hi,

            Nun, ich habe folgendes Programm geschrieben, um mich vor Spam-Robots zu schützen! Wenn ich auf den Link klicke, steht in der Adress-Zeile der sich darauf hin öffnenden Seite:
            http://blablabla.php$email=info:philipp-wehner-homepage.de
            <?php
            if (isset($email))
            {
             $email = str_replace(':', '@', $email);
             header("Location: mailto:$email");
             exit;
            }
            ?>

            wenn du die sache schon an den server sendest, dann mache lieber gleich ein formular, welches serverseitig mails versendet; dann bist du nicht mehr der äusserst unsicheren funktionsweise von mailto:-links ausgeliefert (recherchiere hierzu auch im archiv).

            gruss,
            wahsaga