Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Mehrsprachige Webseite mit Session

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Mehrsprachige Webseite mit Session

    Hallo,

    ich bin grad am umbauen einer Page die in 2 Sprachen oder mehrere Sprachen soll. Leider tu mich da grad voll schwer obwohl ja nicht viel dazu ist

    PHP-Code:
    session_start();


    if(isset(
    $_SESSION['lang']))
    {
        if(isset(
    $_GET['lang']) == "de"
        {  
            
    $_SESSION['lang'] = $_GET['lang'];
            
    $lang $_SESSION['lang'];
            include(
    $lang.".php");
        }
        elseif(isset(
    $_GET['lang']) == "en"
        {  
            
    $_SESSION['lang'] = $_GET['lang'];
            
    $lang $_SESSION['lang'];
            include(
    $lang.".php");
        }
    }
    else
    {
        
    $_SESSION['lang'] = "de";
        
    $lang $_SESSION['lang'];
        include(
    $lang.".php");

    Die Session speichert es nun endlich aber dafür ist $lang in der Ausgabe undefiniert,was sicherlich an den IF-Bedingungen liegt bzw am $_GET

    Wenn ich da nun $_GET mit $_SESSION ersetzen includiert er mir jedoch die Datein nicht.

    Ich denke mir der Aufbau ist blödsinnig oder?

    Lg

  • #2
    isset($_GET['lang']) == "de"
    Unsinn.

    Die Operationen von if(isset($_SESSION['lang'])) abhängig zu machen ebenfalls.

    Grundlogik sollte sein:
    Code:
    Wenn lang in GET
      setze SESSION auf GET (evtl. vorher prüfen ober gültige Sprache)
    
    //kein ELSE!!
    
    Wenn lang in SESSION
      setzte aktuelle Sprache auf SESSION-lang
    sonst
      setzte aktuelle Sprache auf DEFAULT-lang
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #3
      Machs doch lieber so:
      PHP-Code:
      session_start();

      if (isset(
      $_GET['lang'] && in_array($_GET['lang'],array('de','en','fr'))){
         
      $_SESSION['lang'] = $_GET['lang'];
      }elseif (!isset(
      $_SESSION['lang'])){
         
      $_SESSION['lang'] = 'de'//Halt deine defaultSprache
      }


      include 
      $_SESSION['lang'].'-lang.php'
      Grüße
      Signatur:
      PHP-Code:
      $s '0048656c6c6f20576f726c64';
      while(
      $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

      Kommentar


      • #4
        Hab es jetzt so und es kommt keine Fehlermeldung und es merkt sich auch die Sprache.
        PHP-Code:
        if(isset($_GET['lang']) != "")
        {
            
        $_SESSION['lang'] = $_GET['lang'];
            
        $lang $_SESSION['lang'];
        }

            if(!isset(
        $_SESSION['lang']) )
            {
            
        $lang $_SESSION['lang'];
            include(
        "de.php");
            }
            else
            {
            
        $lang $_SESSION['lang'];
            include(
        "".$lang.".php");
            } 

        Kommentar


        • #5
          PHP-Code:
          if(isset($_GET['lang']) != ""// immer noch falsch!!!!
          {
              
          $_SESSION['lang'] = $_GET['lang']; // unbedingt Werte prüfen wg. Including unten
              
          $lang $_SESSION['lang'];  // unnütz
          }

          // falsch eingerückt

              
          if(!isset($_SESSION['lang']) )
              {
              
          $lang $_SESSION['lang'];  // aha, Session ist nicht gesetzt, aber Du liest sie aus?!
              
          include("de.php");
              }
              else
              {
              
          $lang $_SESSION['lang'];
              include(
          "".$lang.".php"); // wie oft denn noch?! "". ist Dumpfsinn
              

          [COLOR="#F5F5FF"]--[/COLOR]
          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
          [COLOR="#F5F5FF"]
          --[/COLOR]

          Kommentar


          • #6
            nikosch ist mal wieder gut drauf... coole Kommentare

            Der Ansatz in #2 sollte einfach umgesetzt werden...
            "My software never has bugs, it just develops random features."
            "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

            Kommentar


            • #7
              PHP-Code:
              if(isset($_GET['lang']) =="de"){


              ist Quatsch, weil mit isset prüfst du ob der GET Parameter gesetzt ist, wie isset ja schon sagt. Also warum auf isset() prüfen und auf =="de"? Die Logik haut da nicht hin.

              Du kannst es so machen.

              PHP-Code:
              if($_GET['lang'] =="de"){
                  
                  
              //inhalt des get parameters der session variablen zuweisen
                  
              $_SESSION['lang'] = $_GET['lang'];

              Da prüfst du ob ein GET Parameter mit dem Inhalt de übergeben wurde, wenn das so ist also die Bedingung in der IF Anweisung wahr ist, dann wird der Inhalt des GET Parameters, nämlich de der Session Variablen zugewiesen und die kannst du nun für alle Prüfungen und Kontrollstrukturen einsetzen. Natürlich musst du dich noch um die jeweiligen Sicherheitsprüfungen etc. kümmern.

              Gruß litter
              Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
              [URL]http://www.lit-web.de[/URL]

              Kommentar


              • #8
                PHP-Code:
                if($_GET['lang'] =="de"){ 
                Das wiederum erzeugt aber eine Notice, wenn der Parameter eben nicht gesetzt ist.
                [COLOR="#F5F5FF"]--[/COLOR]
                [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                [COLOR="#F5F5FF"]
                --[/COLOR]

                Kommentar


                • #9
                  Die Prüfung sei jetzt mal dahingestellt.

                  PHP-Code:
                      if(isset($_GET['lang']))
                      {
                          
                  $_SESSION['lang'] = $_GET['lang'];
                      }

                      if(!isset(
                  $_SESSION['lang']) )
                      {
                          include(
                  "de.php");
                      }
                      else
                      {
                          
                  $lang $_SESSION['lang'];
                          include(
                  $lang.".php");
                      } 

                  Kommentar


                  • #10
                    PHP-Code:
                        if(isset($_GET['lang'])) // Sei jetzt mal dahingestellt
                        
                    {
                            
                    $_SESSION['lang'] = $_GET['lang'];
                        }

                        if(!isset(
                    $_SESSION['lang']) )
                        {
                            include(
                    "de.php"); // Codedoppelung
                        
                    }
                        else
                        {
                            
                    $lang $_SESSION['lang'];
                            include(
                    $lang.".php"); // Codedoppelung
                        

                    Warum nicht:

                    PHP-Code:
                        // ...

                        
                    if(!isset($_SESSION['lang']) )
                        {
                            
                    $lang 'de';
                        }
                        else
                        {
                            
                    $lang $_SESSION['lang'];
                        }  

                     include(
                    $lang.".php"); 
                    [COLOR="#F5F5FF"]--[/COLOR]
                    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                    [COLOR="#F5F5FF"]
                    --[/COLOR]

                    Kommentar


                    • #11
                      Ok stimmt ^^ aber hab mein immerhin verbessert oder etwa net?

                      Kommentar


                      • #12
                        Sach ma so schwer ist das doch net:
                        PHP-Code:
                        $availableLanguages = array('de''en''fr');
                        $defaultLanguage 'de';

                        if (isset(
                        $_GET['lang'])) {
                            if (
                        in_array($_GET['lang'], $availableLanguages)) {
                                
                        $_SESSION['lang'] = $_GET['lang'];
                            }
                        }

                        if (isset(
                        $_SESSION['lang'])) {
                            
                        $lang $_SESSION['lang'];
                        } else {
                            
                        $_SESSION['lang'] = $defaultLanguage;
                            
                        $lang $defaultLanguage;
                        }
                        include(
                        $lang '.php'); 
                        ca. 25sec...
                        "My software never has bugs, it just develops random features."
                        "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                        Kommentar


                        • #13
                          naja habs ja jetzt

                          jetzt bin ich nur am überlegen wie ich das alles so gestallte (urls, ob unterordner oder eher net) wobei man um unterordner net drumrum kommen wird ^^

                          Kommentar


                          • #14
                            Ich nochmal.

                            wie macht man das am besten mit den urls? passt man diese auch den sprachen an oder ist das nicht unbedingt notwendig,

                            Beispiel:

                            Deutsch: www. domain.de/start/
                            Englisch: www. domain.de/en/start/

                            oder doch lieber so

                            Deutsch: www. domain.de/start/
                            Englisch: www. domain.de/en/home/

                            bei zweitens müsste man entweder viel in Mod Rewrite schreiben oder in der Datenbank ablegen wie bei Oxid-Shop Software

                            Kommentar


                            • #15
                              Kannst Du halten wie ein Dachdecker. Variante 2 ist IMHO besser aus SEO Sicht, dafür ist die Abbildung auf den anderssprachigen Inhalt schwieriger. Im Zeifel lieber noch ne gemeinsame ID verwenden:

                              Deutsch: www. domain.de/47/start/
                              Englisch: www. domain.de/en/47/home/

                              47 fordert dabei eigentlich den Inhalt an. Ansonsten brauchst Du nämlich ein Mapping, das home auf start abbildet (und alle anderen Sprachkombinationen).

                              Im Übrigen würde ich Dir raten, auch die default-Sprache auf eine vollstänige URL zu erweitern:

                              Deutsch: www. domain.de/de/47/start/
                              statt
                              Deutsch: www. domain.de/47/start/

                              das macht die gemeinsame Verarbeitung alle Sprachvarianten einfacher, setzt aber auch voraus, dass Du die Website in allen Sprachen gleich strukturieren willst.
                              [COLOR="#F5F5FF"]--[/COLOR]
                              [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                              [COLOR="#F5F5FF"]
                              --[/COLOR]

                              Kommentar

                              Lädt...
                              X