session - var-übergabe

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

  • session - var-übergabe

    hallo,

    probleme mit der variablen-übergabe bei sessions:

    der nutzer kommt zum ersten mal auf die index.php.
    als sprache wird, da $change leer, d.h. '$change != ch' --> '$lang = ger' übergeben. klappt.

    in einem dropdown kann der nutzer dann z.b. englisch als sprache auswählen.
    dabei wird '$change = ch' und '$lang = eng'.

    'eng' soll nun in der session registriert werden. klappt nicht.
    als sprache erscheint immer 'ger'

    dieser code in der index.php:
    PHP-Code:
    $change $_GET['change'];
    $lang $_POST['lang'];

    if (
    $change != 'ch')
        {
        
    $lang 'ger';
        
    session_start();
        
    session_register(lang);
        }

    if (
    $change == 'ch')
        {
        
    session_unregister(lang);
        
    session_register(lang);
        } 
    auch versuche mit session_destroy etc. bringen nichts.

    was mache ich falsch?

  • #2
    wie wärs das session_start() außerhalb von if ($change != 'ch') zu machen?
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Die Session solltest du auch schon am Anfang starten, nicht erst in der If Abfrage...
      PHP-Code:
      $change $_GET['change'];
      $lang $_POST['lang'];

      if (
      $change != 'ch')
          {
          
      $lang 'ger';
          
      session_start();
          
      session_register("lang");
          }

      if (
      $change == 'ch')
          {
          
      session_unregister("lang");
          
      $lang "eng";
          
      session_register("lang");
          } 
      mfg
      Günni


      Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
      Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
      Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
      City-Tiger - Online durch die Straßen tigern...

      Kommentar


      • #4
        danke für die schnelle hilfe!

        es ging, allerdings nur bis zum sprachwechsel.

        wenn der nutzer auf 'home' klickt (index.php), wird wieder mit 'ger' gestartet, und die neue sprache nicht beibehalten:
        PHP-Code:
        session_start();
        session_register(lang);

        if (empty(
        $_POST['lang'])) { $lang 'ger'; }  else { $lang $_POST['lang'];} 
        wobei $lang per dropdown übergeben wird. sollte also nicht empty sein.
        Zuletzt geändert von weserweb; 28.02.2003, 12:31.

        Kommentar


        • #5
          Ja Du musst ja auch den wert der $_SESSION['lang'] irgendwo verwenden ansonsten hats keinen Sinn die Session zu benutzen...
          etwa so:
          $_SESSION['lang'] = $_POST['language'] ? $_POST['language']:$_SESSION['language'];
          Beantworte nie Threads mit mehr als 15 followups...
          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

          Kommentar


          • #6
            @ MelloPie e.a.,
            ich musste 3 stunden weg.
            hab' jetzt mit deinem vorschlag ein wenig herumprobiert, komme aber nicht weiter, obwohl du im prinzip natürlich recht hast.
            ich habe es nun noch enmal ganz ausführlich gemacht:

            - beim ersten besuch der index.php ($sess_lang -> leer) und kein sprachwechsel ($drop_lang -> leer) wird 'lang' registriert und als wert 'ger' zugewiesen:
            PHP-Code:
                if (empty($_POST['drop_lang'])) { $lang 'ger'; } 
            - für den sprachwechsel ( $sess_lang -> leer ) wird $drop_lang erfolgreich übergeben und als wert für $lang z.b. 'eng' übernommen.
            PHP-Code:
                if (!empty($_POST['drop_lang']))  { $lang $_POST['drop_lang']; } 
            das problem ist jetzt der 3. fall:
            1.) kein neueinstieg -> $sess_lang hat einen wert -- 2.) kein sprachwechsel -> $drop_lang ist leer

            dieser lösungsversuch klappt leider auch nicht:
            PHP-Code:
            session_start();
            session_register(lang);

            $sess_lang $_SESSION['lang'];
                if (!empty(
            $sess_lang) AND empty($_POST['drop_lang'])) $lang $sess_lang// fall 3
                
            if (empty($_POST['drop_lang'])) { $lang 'ger'; } //fall 1
                
            if (!empty($_POST['drop_lang']))  { $lang $_POST['drop_lang']; } // fall 2 
            an dieser stelle noch einmal ganz herzlichen dank für die geduldige hilfe!!!

            Kommentar


            • #7
              Also mein Vorschlag funktioniert auf jeden Fall, den benutze ich immer.

              Allerdings hat sich ein Fehler eingeschlichen, den Du erkennen müsstest, kleiner Tipp: die assoziations keys der arrays sind nicht immer stimmig.
              Beantworte nie Threads mit mehr als 15 followups...
              Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

              Kommentar


              • #8
                es freut mich ja, dass dein code immer funktioniert, nur wenn ich ihn wie folgt benutze, hat 'lang' beim ersten aufruf keinen wert, beim refresh 'ger', sprachwechsel ist ok, aus english auf 'home' ergibt wieder 'ger'.
                mir ist klar, dass da etwas nicht stimmt (logisch):
                PHP-Code:
                session_start();
                session_register(lang);

                $_SESSION['lang'] = $_POST['drop_lang'] ? $_POST['drop_lang']:$_SESSION['lang'];

                    if (empty(
                $_POST['drop_lang'])) { $lang 'ger'; }
                    if (!empty(
                $_POST['drop_lang']))  { $lang $_POST['drop_lang']; } 
                wäre es im bereich des möglichen, zu deiner codezeile eine kurze erläuterung zu geben? danke!
                btw: habe ich die eingeschlichenen richtig gesehen?

                Kommentar

                Lädt...
                X