Ankündigung

Einklappen
Keine Ankündigung bisher.

Session ersetzen

Einklappen

Neue Werbung 2019

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

  • duderino
    hat ein Thema erstellt Session ersetzen.

    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]");
    ?>

  • schifti
    antwortet
    session_register() ist veraltet.

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

    Also, geht doch

    Einen Kommentar schreiben:


  • duderino
    antwortet
    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]");
    }
    ?>

    Einen Kommentar schreiben:


  • duderino
    antwortet
    Array ( [lang] => de )

    Einen Kommentar schreiben:


  • schifti
    antwortet
    hast du dir mal alle Session Variablen mit print_r($_SESSION); ausgeben gelassen, um zu schauen ob er überhaupt etwas speichert?

    Einen Kommentar schreiben:


  • duderino
    antwortet
    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.

    Einen Kommentar schreiben:


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

    $_SESSION['lang'] = $_GET['lang']
    ?>
    und dann die Weiterleitung

    Einen Kommentar schreiben:


  • duderino
    antwortet
    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.

    Einen Kommentar schreiben:


  • duderino
    antwortet
    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

    Einen Kommentar schreiben:


  • schifti
    antwortet
    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

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • schifti
    antwortet
    du übergibst auch bei
    header("Locaction: index.php?PHPSESSID=".session_id());
    Die Session_id immer mit???

    Einen Kommentar schreiben:


  • duderino
    antwortet
    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.

    Einen Kommentar schreiben:


  • duderino
    antwortet
    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.

    Einen Kommentar schreiben:


  • search
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X