Ankündigung

Einklappen
Keine Ankündigung bisher.

Session ersetzen

Einklappen

Neue Werbung 2019

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

  • Session ersetzen

    Hallo zusammen, ich bin gerade dabei ne HP mit verschiedenen Sprachen zu programmieren. Ich wollte die Sprachsteuerung durch Sessions verwalten. D.h. wenn jemand die Sprache wechseln will, wird einfach die $_SESSION["lang"] auf die jeweilige Sprache gesetzt.

    Ok. soweit so gut. Am Anfang prüfe ich ob die Session schon existiert. Falls nicht erstelle ich eine neue Session mit der Standartsprache.

    PHP-Code:
    <?php
    if(!isset($_SESSION["lang"])){
        
    $_SESSION["lang"] = 'de';
    }
    ?>
    Jetzt hab ich eine Datei in der ich eigentlich die existierende Session durch eine mit der URL weitergegebene Wert (z.B. en, us, de, usw.) ersetzen will.

    Danach leite ich per header() wieder auf die Seite zurück auf der der User die Sprache ändern wollte.

    Mein Problem ist nun dass er die Sprache die ich am Anfang standartmäßig auf "de" gestellt habe nun in keine andere mehr ändert. Ich kann machen was ich will. Kann es vielleicht sein dass man Sessions nur mit einer speziellen Funktion oder so überschreiben kann?

    Hier noch der Code von der Datei wo die Sprache geändert werden sollte:
    PHP-Code:
    <?php
    //Benutzersprache wechseln
    $_SESSION["lang"] = $_GET["lang"];
    //Zur aktuellen Seite weiterleiten
    header ("Location: $_GET[redirect]");
    ?>


  • #2
    PHP-Code:
    <?php
    //Benutzersprache wechseln
    $_SESSION["lang"] = $_GET["lang"];
    //Zur aktuellen Seite weiterleiten
    //header ("Location: $_GET[redirect]"); 

    echo '<pre>';
    print_r($_SESSION);
    echo 
    '</pre>';

    ?>
    wurde es überschrieben?
    hast du session start in dem file stehen?
    . . . etc.
    schlimmer gehts nimmer.... dümmer immer!

    Kommentar


    • #3
      Die Session wird überschrieben. Sobald ich aber wieder mit header weiterleite wird wieder die Standartsprache hergestellt.

      Die Session starte ich in einer config Datei die immer includet wird.

      Kommentar


      • #4
        Ich hab jetzt auch eingestellt dass er nur ein session_start machen soll wenn es noch keine gibt. Eigentlich sollte es ja kein Prob sein aber ich habs trotzdem mal probiert - leider ohne Erfolg.

        Kommentar


        • #5
          du übergibst auch bei
          header("Locaction: index.php?PHPSESSID=".session_id());
          Die Session_id immer mit???
          auch ein Forum (PHP)

          Kommentar


          • #6
            Wenn ich deinen Code einfüge leitet er nicht mehr weiter. Dann bleibt er bei einer leeren Seite ohne Fehlermeldung hängen.

            Kommentar


            • #7
              PHP-Code:
              <?
              error_reporting(E_ALL);
              if(isset($_GET['lang']))
                {
                  header("Location: http://$SERVER[SERVER_NAME]/$_GET[lang]/index.php?PHPSESSID=".session_id());
                 exit();
                }
              else
                {
                  echo 'Bitte Sprache auswaehlen!';
                }
              ?>
              $_GET['lang'] ist im Beispiel "de"

              er leitet dich dann zu http://example.com/de/index.php weiter
              auch ein Forum (PHP)

              Kommentar


              • #8
                Ups. hab den kleinen Schreibfehler übersehen. Habs jetzt nochmal probiert aber trotzdem ohne Ergebnis. Er leitet die Session id nicht weiter. Ich verzweifel so langsam

                Kommentar


                • #9
                  Zitat von schifti
                  PHP-Code:
                  <?
                  error_reporting(E_ALL);
                  if(isset($_GET['lang']))
                    {
                      header("Location: http://$SERVER[SERVER_NAME]/$_GET[lang]/index.php?PHPSESSID=".session_id());
                     exit();
                    }
                  else
                    {
                      echo 'Bitte Sprache auswaehlen!';
                    }
                  ?>
                  $_GET['lang'] ist im Beispiel "de"

                  er leitet dich dann zu http://example.com/de/index.php weiter
                  Ja, aber ich brauch die Sprache ja nicht in der URL sondern in einer Session.

                  Kommentar


                  • #10
                    am Anfang der Seite (bevor du irgendetwas ausgibst):
                    PHP-Code:
                    <?
                    session_start();

                    $_SESSION['lang'] = $_GET['lang']
                    ?>
                    und dann die Weiterleitung
                    auch ein Forum (PHP)

                    Kommentar


                    • #11
                      Ja, so hab ich es ja. Ich kann ja selbst nicht verstehen wieso das nicht geht. Normalerweise ist sowas kein Prob. Aber irgendwo muss ja was sein.

                      session_start steht immer am anfang der seite in einer config datei die als erstes includet wird. In der Datei ist auch keine Ausgabe.

                      Kommentar


                      • #12
                        hast du dir mal alle Session Variablen mit print_r($_SESSION); ausgeben gelassen, um zu schauen ob er überhaupt etwas speichert?
                        auch ein Forum (PHP)

                        Kommentar


                        • #13
                          Array ( [lang] => de )

                          Kommentar


                          • #14
                            Juhu. Habs jetzt rausbekommen.
                            Habs jetzt so gemacht:

                            PHP-Code:
                            <?php
                            //Benutzersprache wechseln
                            if(isset($_GET["lang"])){
                                
                                
                            session_register("lang");
                                
                                
                            $_SESSION["lang"] = $_GET["lang"];

                                
                            header("Location: $_GET[redirect]");
                            }
                            ?>

                            Kommentar


                            • #15
                              session_register() ist veraltet.

                              $_SESSION['var'] = "wert" ist aktuell

                              Also, geht doch
                              auch ein Forum (PHP)

                              Kommentar

                              Lädt...
                              X