Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 19

Thema: $PHP_SELF ist leer ??? (bei include)

  1. #1
    Registrierter Benutzer
    Registriert seit
    08.12.2002
    Ort
    Maria Thann
    Beiträge
    176

    $PHP_SELF ist leer ??? (bei include)

    Ich wollte die Variable $PHP_SELF verwenden, um meine Links zusammezubauen.

    Jetzt ist das Teil leer. Sie wird jedoch in einer include-Datei aufgerufen.

    Warum dass denn ?

    Torsten.E

    PS: Arbeitest Du immer GAERT ?

  2. #2
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Hallo,

    versuch mal $_SYSTEM['PHP_SELF'] !

    Gruß,

    Gaert

    PS: Nein ich arbeite nicht immer!


  3. #3
    Registrierter Benutzer
    Registriert seit
    08.12.2002
    Ort
    Maria Thann
    Beiträge
    176

    $_SERVER['PHP_SELF'] geht nicht

    Klappt leider nicht.

    Sollte ich vielleicht noch erwähnen, dass ich den Aufruf in einer
    Fuktion benötigte. Die Datei wird per require_once eingebunden
    (sofern das eine Rolle spielt).

    Torsten.E

  4. #4
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Ja es spielt eine Rolle, je nach System (Windoof) funktionieren Superglobals nicht in Dateien die mit require oder include eingebunden werden. Verwende statt dessen getenv() Welche PHP Version verwendest du denn, der Bug ist schon ziemlich alt.

  5. #5
    Registrierter Benutzer
    Registriert seit
    08.12.2002
    Ort
    Maria Thann
    Beiträge
    176

    PHP 4.3.1 unter SuSe 8.1

    und kein Windoof ;-)

    Torsten.E

  6. #6
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Bitte mal die jeweileigen Codeteile Posten (dort wo du inlcudest und dort wo du PHP_SELF einsetzt).


  7. #7
    Registrierter Benutzer
    Registriert seit
    08.12.2002
    Ort
    Maria Thann
    Beiträge
    176
    Hier das Start-Programm.

    PHP-Code:
    <?

    session_name("ID");  // legt den ID-Namen fest (unabhängig von PHP.INI)
    session_start();

    // Liest zuerst die Session-Funktionen ein und
    // Legt dann die Sprache fest damit die restlichen
    // Dateien eingelesen werden können.

    require_once("include/functions.php");
    require_once("include/i_Session.php");
    require_once("include/i_class.php");
    require_once("include/i_menue.php");
    require_once("include/language.php");

    ...............
    Und hier der Teil aus i_Session.php

    PHP-Code:

    ............

    function 
    i_sethref ($Link) {

       return 
    $_SERVER['PHP_SELF'].$Link;

    }

    .............. 

  8. #8
    Registrierter Benutzer
    Registriert seit
    08.12.2002
    Ort
    Maria Thann
    Beiträge
    176

    LÖSUNG

    Es muß die "global" Anweisung eingebunden werden, die
    GLOBALE Variablen in einer Funktion "sichtbar" macht.

    Verstehe ich zwar nicht warum das so ist, aber es funzt.

    Und wenn da so ist, kann man die "global" Anweisung
    generell für das ganze Programm irgendwo setzen. ?

    PHP-Code:
    function i_sethref ($Link) {

       global 
    $PHP_SELF;

       return 
    $PHP_SELF.$Link;


    Torsten.E
    Geändert von Torsten.E (26-04-2004 um 12:08 Uhr)

  9. #9
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Eigentlich gibts für genau diese Sache die superglobalen Arrays wie z.B. $_GET, $_POST ... und eben auch $_SERVER - nur sehr merkwürdig, dass dieses Array bei dir nicht gefüllt ist.
    Was kommt denn für ein Output bei einem print_r($_SERVER) ?
    Wie sind deine register_globals Einstellungen in der php.ini ?

    Übrigens:
    Es ist sauberer <?php statt <? zu verwenden...


  10. #10
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Das Problem hatte ich unter 4.* schon öfter manchmal hängt es mit der include Anweisung zusammen oder wenn die Dateien in der falschen Reihenfolge includiert werden. Ich würde wie schon erwähnt innerhalb der funktionen getenv() verwenden damit bist du auf der sicheren Seite.

  11. #11
    Registrierter Benutzer
    Registriert seit
    08.12.2002
    Ort
    Maria Thann
    Beiträge
    176

    getenv() geht au ned. PHP.INI (Link)

    Hier mal den Link zur PHP.INI, vielleicht fällt euch ja was schlaues
    dazu ein.

    www.ifta-gmbh.com/info.php

    Fällt mir gerade noch was ein. Formularvariablen sehe ich die mit $GLOBALS['vname']
    die Variable aber welche ich mit

    http://www.myprogramm.de?variable=wert

    übergebe sehe ich nicht, habe ich da was falsch verstanden.


    Torsten.E
    Geändert von Torsten.E (26-04-2004 um 18:14 Uhr)

  12. #12
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Sorry, aber den letzen Teil habe ich nicht geblickt... wie kommst du darauf, dass du auf Formularvariablen mit $GLOBALS[] zugreifen kannst?

    Post Daten stehen in $_POST[] (Formular mit method="post"), Get Daten (über URL oder Forumular mit method="get") stehen in $_GET[] - Cookie Daten in $_COOKIE[] und alles zusammen in $_REQUEST[]...

    Die ausgabe von phpinfo() sieht eigentlich ganz ok aus - bis auf das register_globals = on


  13. #13
    Registrierter Benutzer
    Registriert seit
    08.12.2002
    Ort
    Maria Thann
    Beiträge
    176

    REGISTER = ON

    Hey Gaert,

    ich habe Deine Erklärung bezüglich REGISTER=ON/OFF gelesen und stimme Dir zu 100% zu. Da ich seit 16 Jahren programmiere bin ich ebenfalls voll gegen GLOBALE-Variable soweit als möglich. !!!!

    Nur haben wir bei uns auch POSTNUKE am laufen und auch für unsere Kunden und für das Teil muß REGISTER = ON gesetzt sein, sofern ich das richtig im Kopf habe.
    Ansonsten würde ich das Teil auch abschalten.

    UND: Wenn auf die Variablen mit $_GET, $_POST, etc. zugegriffen wird, spielt es glaube ich auch keine so große Rolle ob REGISTER=ON ist.

    Torsten.E

  14. #14
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Nun ja - das Problem hat Gaert schon angedeutet, je nach anderer Software die bei dir noch läuft kann es die die ganze Seite zerhämmern weil die Variablen überschrieben werden.
    Ich würde dir empfehlen und wenn möglich das ganze mit htaccess zu Steuern

    PHP-Code:
    <FilesMatch "\.(php|html?)$">
    php_flag  register_globals       Off
    </FilesMatch

  15. #15
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    > Verstehe ich zwar nicht warum das so ist, aber es funzt.

    ganz einfach, falls du ne funktion in der art hast:

    PHP-Code:
    function x($var) {
      
    $t=0;
      while (
    $i <= $var ) {
        
    $t+=$i;
        
    $i++;
      }

    also $i nicht vorbelegt hast und es wurde schon vorher also außerhalb der funktion $i benutzt ist $i nicht 0 und die ganze funktion verhält sich anderst.
    Sowas beugt halt programmierfehlern vor.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •