setcookie erst nach aktuallisierung

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

  • setcookie erst nach aktuallisierung

    Hallo Leute,

    Hab leider ein weiteres problem.

    zum ändern der sprache übergebe ich per GET die zu verwendente sprache.
    das klappt auch, aber leider wird das cookie erst nach einem klick auf f5 geschrieben.

    PHP-Code:
    function set_lang()
    {
        global 
    $lang;
        
        
    $set_lang $_GET['set_lang'];
        if (isset(
    $set_lang) && $set_lang != ""){
            switch (
    $set_lang){
                case 
    'german'  $act_lang 'german';  break;
                case 
    'english' $act_lang 'english'; break;
                default        : 
    $act_lang DEFAULT_LANGUAGE; break;
            }
            include(
    $root_path 'languages/lang_' $act_lang '/lang_main.php');
            
    setcookie("zwent_lang"$act_langtime()+9999);
        } else if (isset(
    $_COOKIE['zwent_lang'])){
                   include(
    $root_path 'languages/lang_' $_COOKIE['zwent_lang'] . '/lang_main.php');
               } else {
                   include(
    $root_path 'languages/lang_' DEFAULT_LANGUAGE '/lang_main.php');
               }

    ich finde das sehr komisch, da dass früher irgendwie nicht passiert ist.
    denke irgendwie dass das am template-system liegt. kann das sein?

    danke, mfg tom

  • #2
    Ne, irgendwie nicht. Denn wo prüfst du denn ob das Cookie da ist?
    Der Elseif-Zweig wird doch nur erreicht, wenn die 1. IF-Bedingung fehl schlägt.


    Übrigens:
    PHP-Code:
    $set_lang $_GET['set_lang'];
        if (isset(
    $set_lang) && $set_lang != ""){ 
    Ist irgendwie nicht sehr sinnvoll. Du solltest lieber per isset() prüfen, ob $_GET['set_lang'] gesetzt ist, und nicht ob $set_lang gesetzt ist.
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      rtfm, das steht im manual unter "common pitfalls"

      Kommentar


      • #4
        Übrigens:
        PHP-Code:
        $set_lang $_GET['set_lang'];
            if (isset(
        $set_lang) && $set_lang != ""){ 
        Ist irgendwie nicht sehr sinnvoll. Du solltest lieber per isset() prüfen, ob $_GET['set_lang'] gesetzt ist, und nicht ob $set_lang gesetzt ist. [/B]
        Ja, das bleibt ja das selbe, ob in der if-abfrage oder bei der zuweisung die variabe zu überprüfen, oder lieg ich da falsch?

        ich die if-abfrage sollte eigentlich so passen, da ich das cookie nur überprüfen will, wenn kein GET-parameter übergeben wurde.
        denn wenn ein parameter übergeben wurde wird ja die gewünschte sprache aufgerufen, und wenn kein parameter übergeben wurde, dann soll die sprache aus dem cookie gelesen werden.

        dank, tom

        Kommentar


        • #5
          @shurakai.

          ok, hast recht, mit dem isset.
          tut aber leider nichts zur sache

          Kommentar


          • #6
            Re: setcookie erst nach aktuallisierung

            Original geschrieben von tomtitom
            das klappt auch, aber leider wird das cookie erst nach einem klick auf f5 geschrieben.
            Nein, das ist unsinnig formuliert.

            Der Cookie wird "gesetzt", in dem in die HTTP Response Header, die der Server dem Client mit der Antwort schickt, eine entsprechende Zeile aufgenommen wird.
            An den Server zurückgeschickt wird er dann erst mit dem nächsten Request, den der Client absetzt - und erst dann steht er auch in $_COOKIE zur Verfügung.

            Das ist übrigens genau das, worauf penizillin hinweis - das Manual geht auf diesem Umstand, der eigentlich logisch ist, wenn man nur ein bisschen vom Zusammenspiel von Client und Server bei HTTP verstanden hat, explizit ein.


            Das ist jetzt nach diesem hier schon der zweite Thread von dir heute, wo du massivse Zweifel daran aufkommen lässt, ob du dich wirklich schon an größere Projekte, die du ja offenbar vorzuhaben scheinst, heranwagen solltest ...
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              finde es allerdings merkwürdig, dass es im FireFox perfekt funktioniert, aber im IE nicht?

              nd kann mir bitte einer erklären wie man das problem löst?

              danke, mfg tom
              Zuletzt geändert von tomtitom; 25.05.2007, 20:35.

              Kommentar


              • #8
                Re: Re: setcookie erst nach aktuallisierung

                Original geschrieben von wahsaga

                Das ist jetzt nach diesem hier schon der zweite Thread von dir heute, wo du massivse Zweifel daran aufkommen lässt, ob du dich wirklich schon an größere Projekte, die du ja offenbar vorzuhaben scheinst, heranwagen solltest ...
                OffTopic:

                hehe ... bei dem Käse braucht man erst recht load balancing, um den Mist schön verteilen zu können, denn wie denn sonst kann die Seite in annehmbare Zeit ausliefern

                Kommentar

                Lädt...
                X