Ankündigung

Einklappen
Keine Ankündigung bisher.

$_GET und Session

Einklappen

Neue Werbung 2019

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

  • $_GET und Session

    Folgendes will ich realisieren.

    Ich erstelle eine seite die zweisprachig ist. Auf der Startseite kann man die sprache aussuchen. Die sprachenkürzel sollen per $_GET in eine session geschrieben werden und auf allen folgenden seiten soll abgefragt werden:
    ist die session nicht gesetzt soll er sich das $_GET holen und in die session schreiben. wenn aber kein $_GET argument mitgegeben wurde soll er als standart in die Session de schreiben für deutsch.

    Wenn nämlich jemand nicht auf die startseite sondern auf eine andere seite kommt soll standartmäßig deutsch eingestellt sein. oben in dem menü kann er dann die sprache auswählen und die soll in eine session geschrieben werden.
    irgendwie kriege ich das nciht hin.
    hier mein amatör versuch:

    Code:
    $sprachauswahl = $_GET['sprache'];
    if(!isset($_SESSION['sprache']) /*and $sprachauswahl!=("de" or "en")*/){
    $_SESSION['sprache']="de";
    }
    else{
    		
    $_SESSION['sprache']=$sprachauswahl;
    }
    kann mir jemand helfen?
    hab schon die suche benutzt aber nix gefunden.

    danke

  • #2
    so könnte man das lösen:
    Code:
    session_start();
    if(ereg("^de$|^en$",$_SESSION['sprache'])){
    $sprache=$_SESSION['sprache'];
    } elseif(ereg("^de$|^en$",$_GET['sprache'])){
    $_SESSION['sprache']=$_GET['sprache'];
    $sprache=$_GET['sprache'];
    } else {
    echo "bitte sprache auswählen";
    }
    die sprache steckt dann in jedem fall in der variable $sprache egal ob sessions oder $_GET
    falls keine sprache ausgewählt ist folgt eine fehlermeldung
    du kannst es natürlich auch so ändern dass wenn keine sürache ausgewählt ist die sprache deutsch ist

    Kommentar


    • #3
      danke für die schnelle antwort.

      aber ich kapiere den code nicht ganz

      ereg("^de$|^en$",$_SESSION['sprache'])
      was genau passiert da?

      Kommentar


      • #4
        das ist ein regulärer ausdruck
        infos dazu gibts unter http://de3.php.net/manual/de/ref.regex.php
        dieser reguläre ausdruck bewirkt das selbe wie
        Code:
        $_SESSION['sprache']=="de" OR $_SESSION['sprache']=="en"
        is halt nur um einiges kürzer deswegen verwende ich das gerne

        Kommentar


        • #5
          ok das ist jetzt klar. aber eins verstehe ich noch nicht.
          in der variable $sprache habe ich jetzt meinen sprachenkürzel.
          aber in eine session wird der kürzel ja nicht geschrieben oder?
          ich meine eine auswahl soll ja für den ganzen besuch gelten.

          und gibt es eine möglichkeit das ganze in eine funktion zu packen in einer externen datei?

          Kommentar


          • #6
            Code:
            session_start(); 
            if(ereg("^de$|^en$",$_SESSION['sprache'])){ 
            $sprache=$_SESSION['sprache']; 
            } elseif(ereg("^de$|^en$",$_GET['sprache'])){ 
            >>>>>$_SESSION['sprache']=$_GET['sprache'];<<<<<
            $sprache=$_GET['sprache']; 
            } else { 
            echo "bitte sprache auswählen"; 
            }
            habe die anweisung zum in die session schreiben hervorgehoben
            wenn als default deutsch ausgewählt werden soll sieht es so aus:
            Code:
            session_start(); 
            if(ereg("^de$|^en$",$_SESSION['sprache'])){ 
            $sprache=$_SESSION['sprache']; 
            } elseif(ereg("^de$|^en$",$_GET['sprache'])){ 
            >>>>>$_SESSION['sprache']=$_GET['sprache'];<<<<<
            $sprache=$_GET['sprache']; 
            } else { 
            >>>>>$_SESSION['sprache']="de";<<<<<
            $sprache="de";
            }
            EDIT: mist innerhalb von code-tags funktioniert kein anderer bb-code
            hab das jetzt mit <<<<< markiert

            Kommentar


            • #7
              wegen der funktion oder externen datei:
              du kannst das einfach in eine datei sprache_check.php packen und dann immer am anfang jedes scriptes include
              Code:
              include("sprache_check.php");

              Kommentar


              • #8
                also das funktioniert nur:
                1. kommt beim ersten mal immer:
                Notice: Undefined index: sprache in /www/htdocs/v106193/schicksal.php on line 12

                Notice: Undefined index: sprache in /www/htdocs/v106193/schicksal.php on line 16

                Kann man das irgendwie unterbinden? also wie man es unterbindet weiß ich, ich mein so unterbinden das alles korrekt ist.

                und 2.
                man kann jetzt keine sprache wechseln. wenn man sich einmal entschieden hat kann man es nicht wieder ändern.

                Kommentar


                • #9
                  zu 1.
                  du musst notices unterdrücken: http://de3.php.net/error_reporting
                  so dass es komplett korrekt ist, ist schwer zu machen denn irgendwie muss man ja einen ggf. undefinierten index benutzen um dessen wert der ja ggf. vorhanden ist herauszubekommen
                  zu 2.
                  einfach das if und das elseif austauschen:
                  Code:
                  session_start();
                  if(ereg("^de$|^en$",$_GET['sprache'])){ 
                  $_SESSION['sprache']=$_GET['sprache'];
                  $sprache=$_GET['sprache']; 
                  } elseif(ereg("^de$|^en$",$_SESSION['sprache'])){ 
                  $sprache=$_SESSION['sprache']; 
                  } else { 
                  $_SESSION['sprache']="de"; 
                  $sprache="de"; 
                  }
                  jetzt wird nur die sprache aus der session genommen wenn sie nicht in $_GET vorhanden ist

                  Kommentar


                  • #10
                    ok danke es klappt und ich bin zufrieden.

                    many thanx!!!!!!!!!!

                    Kommentar

                    Lädt...
                    X