Login Script (Mr. Happy) Ändern der Navileiste.

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Login Script (Mr. Happy) Ändern der Navileiste.

    Hi,

    habe das Forum schon durchstöbert aber leide keine Lösung für mein Problem gefunden.

    Meine Quellcode ist auf viele einzelne Teile aufgeteilt.

    Meine default.php:
    Zuerst include head.tpl (mit session start)

    danach folgt die eigentlich Unterteilung. Also z.B.:

    PHP-Code:
    if (aktion=="1") {

        include(
    "tpl/top.tpl");  // Hier steht die obere Navigation 
        
    include ("tpl/navi.tpl"); // Hier die Navigation Links
        
    include ("tpl/content1.tpl"); //Hier dann der Inhalt der Seite

    }

    if (
    aktion=="2") {

        include(
    "tpl/top.tpl");  // Hier steht die obere Navigation 
        
    include ("tpl/navi.tpl"); // Hier die Navigation Links
        
    include ("tpl/content2.tpl"); //Hier dann der Inhalt der Seite


    In der top.tpl habe ich ja die obere Navigation. Dort soll dann der entsprechende Link "Sign In" oder halt "Sign Out" erscheinen.

    PHP-Code:
    if (!logged_in())
    {
    echo
    '<a href="default.php?aktion=21">Sign In</a>';
    }
    else
    {
    echo 
    '<a href="default.php?aktion=20">Sign Out</a>';

    Nun habe ich folgendes Problem, wenn ich auf Sign In klicke, erscheint das Einloggformular. Ich logge mich also ein und ein Text erscheint, "Sie sind nun eingeloggt." Klappt also auch. Nur in der oberen Navigation klappt das umschalten von "Sign In"/ Sign Out" nicht sofort. Erst wenn die Seite erneut aufgerufen oder halt ein anderer Link geklickt wird, erfolgt das Umschalten.

    Ich verstehe das nicht, da die Seite doch neu aufegrufen wird und die Datei top.tpl neu eingebunden wird. Warum muss das ein zweites mal aktualiesiert werden um zu funktionieren und wie kann ich das umgehen??

    Ich hoffe jemand hat einen Rat. Vielen Dank im voraus.

  • #2
    du mußt die reinfolge ändern.

    zuerst muss der code mit einloggen bzw. ausloggen stehen und erst dann darf die if-abfrage mit sign in und sign out sein !

    weil so guckt er ob die eingeloggt bist, das bist du zu dem zeitpunkt noch, er gibt also an du bist eingeloggt und erst danach kommt der code das er sich ausloggen soll ... so kommt es zu deinem problem

    hoffe is einigermassen verständilich

    mfg
    dominikoo

    Kommentar


    • #3
      Hi Dominikoo,

      Erstmal vielen Dank für die Antwort. Es sah erst gut aus. Einmal ausprobiert und es klappte. Eingeloggt submit Button gedrückt und Sign In sprang auf Sign out. Dann auf einen anderen Link geklickt und was passiert?? Sign Out springt auf Sign In. Irgendwie springt es seidem hin und her, sprich jedesmal wenn die Seite neu geladen wird.

      Vielleicht habe ich Dich auch einfach nur falsch verstanden. Also ich habe das Ganze nur rumgedreht.

      PHP-Code:
      if (!logged_in())
      {
      echo 
      '<a href="default.php?aktion=20">Sign Out</a><img src="images/dummy.gif" width="5" height="1">';
      }
      else{

      echo
      '<a href="default.php?aktion=21">Sign In</a><img src="images/dummy.gif" width="5" height="1">';

      Ich habe Deinen Beitrag nun mehrmals gelesen und habe das Gefühl das Du wohl etwas anderes gemeint hast, nur komme ich da leider nicht drauf.
      Vielleicht könntest Du nochmal genauer drauf eingehen, wäre wirklich nett.

      Gruss

      Kommentar


      • #4
        Re: Login Script (Mr. Happy) Ändern der Navileiste.

        Original geschrieben von Luka

        PHP-Code:
        if (aktion=="1") {

            include(
        "tpl/top.tpl");  // Hier steht die obere Navigation 
            
        include ("tpl/navi.tpl"); // Hier die Navigation Links
            
        include ("tpl/content1.tpl"); //Hier dann der Inhalt der Seite

        }

        if (
        aktion=="2") {

            include(
        "tpl/top.tpl");  // Hier steht die obere Navigation 
            
        include ("tpl/navi.tpl"); // Hier die Navigation Links
            
        include ("tpl/content2.tpl"); //Hier dann der Inhalt der Seite


        jetzt mal eine ganz dumme Frage....müsste da nicht
        PHP-Code:
        if ($_GET['aktion']=="1") {

            include(
        "tpl/top.tpl");  // Hier steht die obere Navigation 
            
        include ("tpl/navi.tpl"); // Hier die Navigation Links
            
        include ("tpl/content1.tpl"); //Hier dann der Inhalt der Seite

        }

        if (
        $_GET['aktion']=="2") {

            include(
        "tpl/top.tpl");  // Hier steht die obere Navigation 
            
        include ("tpl/navi.tpl"); // Hier die Navigation Links
            
        include ("tpl/content2.tpl"); //Hier dann der Inhalt der Seite


        stehen?
        Entweder das ist falsch, oder du solltest mal den kompletten code posten

        Kommentar


        • #5
          Hi Gae-Bulga,

          hast Recht, natürlich fehlt das $ Zeichen. Im Original habe ich das aber.


          Deine Version gilt doch wenn man die Globalen Variablen abgeschaltet hat oder?

          PHP-Code:
          if ($_GET['aktion']=="2") ... 
          Habe die noch aktiviert, obwohl ich es eigentlich noch ändern will.

          Danke dennoch.

          Kommentar


          • #6
            Ja, ich habe grundsätzlich die Globals off, daher....

            Also ich fänds wirklich super, wenn du den kompletten code der default.php und der head.tpl posten würdest (natürlich ohne passwörter oder so).

            Kommentar


            • #7
              Der Quellcode wird Dir nicht viel mehr Infos geben. Die default.php ist so aufgebaut wie oben aufgeführt. Also nur "Wenn das gedrückt dann das einbinden" usw. In der head.tpl steht nur session start und die Meta Tags. Die Top.tpl ist nur für den oberen Bereich zuständig. Dort ist auch ein Teil der Navigation, mit dem Link für Sign In/Sign Out. Mehr ist das nicht.

              Kommentar


              • #8
                Problem ist dass ich das noch nicht Jahre lang mache und mit Beschreibungen des Codes nicht viel anfangen kann.

                Einer der Mods wirds bestimmt können und dir irgendwann antworten

                Kommentar


                • #9
                  Kein Problem, ich bin selbst noch ganz am Anfang, sprich erst vor ein paar Monaten angefangen. Gibt also auch für mich noch viel zu lernen. Na ja, vielleicht hat jemand eine Lösung für mich oder ich stosse irgendwann doch noch zufällig drauf. Vielen dank dennoch...

                  Kommentar


                  • #10
                    Hi,

                    öhm ... ne so hatte ich das nicht gemeint

                    Ich versuchs nocheimal zu erklären

                    Also:

                    du hast eine php datei, sagen wir logout.php.

                    Diese fängt mit folgendem an:

                    PHP-Code:
                    if (!logged_in())
                    {
                    echo 
                    '<a href="default.php?aktion=20">Sign Out</a><img src="images/dummy.gif" width="5" height="1">';
                    }
                    else{

                    echo
                    '<a href="default.php?aktion=21">Sign In</a><img src="images/dummy.gif" width="5" height="1">';
                    }
                    // + dem rest des Menüs 
                    So:

                    Nun wirst du wohl wahrscheinlich den logout teil irgendwo unten drangehängt haben:

                    PHP-Code:
                    if (!logged_in())
                    {
                    echo 
                    '<a href="default.php?aktion=20">Sign Out</a><img src="images/dummy.gif" width="5" height="1">';
                    }
                    else{

                    echo
                    '<a href="default.php?aktion=21">Sign In</a><img src="images/dummy.gif" width="5" height="1">';
                    }
                    // + dem rest des Menüs

                    function logout() 

                        
                    $sql="UPDATE member 
                        SET UserSession=NULL 
                        WHERE UserSession='"
                    .session_id()."'"
                         
                    mysql_query($sql); 


                    logout()

                    // also wird der User ausgeloggt 
                    Wenn du nun auf logout.php gehst wird dir dein Menü anzeigen das du online bist, obwohl du dich gerade ausgeloggt hast den:

                    PHP-Code:

                    // hier bist du noch eingeloggt!

                    if (!logged_in()) // hier immer noch !! 
                    {
                    echo 
                    '<a href="default.php?aktion=20">Sign Out</a><img src="images/dummy.gif" width="5" height="1">'// er wird das einzeigen, weil du noch eingeloggt bist
                    }
                    else{

                    echo
                    '<a href="default.php?aktion=21">Sign In</a><img src="images/dummy.gif" width="5" height="1">';
                    }
                    // + dem rest des Menüs

                    // hier bist du auch noch eingeloggt

                    function logout() 

                        
                    $sql="UPDATE member 
                        SET UserSession=NULL 
                        WHERE UserSession='"
                    .session_id()."'"
                         
                    mysql_query($sql); 


                    logout() // erst hier bist du wirklich ausgeloggt!!!

                    // also wird der User ausgeloggt 
                    Mit umdrehen meine ich nun, der logout teil MUSS vor der Navi in der logout.php vorkommen, also irgendwie so:

                    PHP-Code:

                    function logout() 

                        
                    $sql="UPDATE member 
                        SET UserSession=NULL 
                        WHERE UserSession='"
                    .session_id()."'"
                         
                    mysql_query($sql); 


                    logout() // jetzt bist du ausgeloggt

                    if (!logged_in()) // Jetzt bist du hier auch ausgeloggt 
                    {
                    echo 
                    '<a href="default.php?aktion=20">Sign Out</a><img src="images/dummy.gif" width="5" height="1">'
                    }
                    else{

                    echo
                    '<a href="default.php?aktion=21">Sign In</a><img src="images/dummy.gif" width="5" height="1">'// er wird das einzeigen, weil du NICHT eingeloggt bist
                    }
                    // + dem rest des Menüs 
                    so ungefähr

                    mfg
                    dominikoo

                    Kommentar


                    • #11
                      Hi Dominikoo,

                      gut falsch verstanden also. Ich werde mir das Ganze mal in Ruhe anschauen müssen. Es ist ja so, das ich den Teil:

                      PHP-Code:
                      if (!logged_in())
                      {
                          echo
                      '    <a href="default.php?aktion=21">Sign In</a><img src="images/dummy.gif" width="5" height="1">';

                      }
                      else{

                      echo 
                      '<a href="default.php?aktion=20">Sign Out</a><img src="images/dummy.gif" width="5" height="1">';

                      einfach oben in der Datei top.tpl habe. Diese wird jedesmal eingebunden. Ich dachte mir halt okay, wenn ich auf Sign Out klicke, wird die Seite incl. der top.tpl neu aufgerufen. Dann wird ja auch überprüft, ob nun eingeloggt oder nicht. (s.o.)
                      Für mich ist das so eigentlich logisch, aber so wie es auschaut ist da ja doch ein Gedankenfehler. Wie gsagt, muss mir Deine Lösung nochmal in aller Ruhe zu Gemüte führen. Vielen Dank für die Hilfe.

                      Kommentar

                      Lädt...
                      X