Lili: Anfängerin braucht Hilfe - Navigation über URL

Hi ihr lieben,

habe heut zum ersten Mal mit PHP rumexperimentiert - jedoch weiß ich schon jetzt nicht mehr weiter :-|
Ich möchte eine Navigation über URL machen und über den Link noch zusätzliche Werte übergeben.

Aufbau der 2-Sprachigen-Seite:

index.php  (Hier kann zwischen deutsch und englisch gewählt werden - Verknüpfung geht zu content_uk/index.php oder content_de/index.php)

config.php  (Code s.h. unten)

info.php  (Hier befindet sich ein Bild, welches in beiden Versionen vorkommen soll - lediglich der Text soll in der vorher ausgewählten Sprache angezeigt werden. Daher wäre es prima, wenn nur der eigentliche Text eingelesen wird: include ("content_de/info_text.php");) - und dort komme ich nicht weiter.

test.php  (unwichtig)


content_de/index.php  (Hier befindet sich das Deutsche Menü mit dem Link: <a href="index.php?id=de_info">INFO</a>)

content_de/info_text.php  (Deutscher Text)


content_uk/index.php  (Hier befindet sich das Englische Menü mit dem Link: <a href="index.php?id=uk_info">INFO</a>)

content_uk/info_text.php  (Englischer Text)

  
<?php  
//  config.php  
  
$page = array();  
  
// NEWS  
$page['info'] = "../info.php";  
$page['test'] = "../test.php";  
?>  


  
<?php  
//  news.php  
  
include ("content_de/info_text.php");  
?>  


  
<?php  
//  content_de/index.php  
  
include('../config.php');  
if(isset($_GET['id']) AND isset($page[$_GET['id']]))  
{  
if(!file_exists($page[$_GET['id']])) echo "Die Seite ist nicht vorhanden.";  
include $page[$_GET['id']];  
}  
else  
{  
include $page['test];  
}  
?>  

Was kann ich machen, damit Werte, oder Variablen in der URL, oder config.php aus dem Deutschen- oder Englischen Menü übergeben werden?
Wichtig ist, beide sprechen "info.php" an, - jedoch sollen unterschiedlichen Seiten "includet" werden...

Liebe Grüße, Lili

  1. Moin!

    Aufruf mit

    http://deinServer/seite.php?lang=de

    oder

    http://deinServer/seite.php?lang=en_uk

    ---

      
    # Wir testen, ob Sprache gesetzt ist, ansonsten setzten wir diese auf deutsch:  
    if (!isset($_GET['lang']) {  
      $_GET['lang']='de';  
    }  
      
    # Festlegen des Include-Verzeichnisses:  
    $strIncludeDir='content_'.$_GET['lang']  
      
    # Testen, ob vorhanden:  
      
    if ( !file_exists ($_SERVER["DOCUMENT_ROOT"].$strIncludeDir.$_SERVER["SCRIPT_NAME"] ) {  
      
       # $_SERVER["DOCUMENT_ROOT = Serververzeichnis der Wurzel Deines Webauftritts  
       # $strIncludeDir: relativer Pfad zur Sprachdatei  
       # $_SERVER["SCRIPT_NAME"] = Verzeichnis und Name des aktuellen Skriptes  
       # Das zu includierende Skript muss in diesem Beispiel  
       # also einfach den gleichen Name haben wie  
       # das includierende Skript. -> info.php -> info.php  
      
       # Die Datei wurde also nicht gefunden:  
       header("HTTP/1.0 404 Not Found");  
       # Hier einbauen, was Du noch zu tun gedenkst  
       # zum Beispiel Weiterleitung zur Default-Sprache:  
       header ('Location: '.$_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"].'?lang=de';  
      
    } else {  
       include $_SERVER["DOCUMENT_ROOT"].'content_'.$_GET['lang'].$_SERVER["SCRIPT_NAME"];  
    }  
      
    
    

    ...

    Die Bilder musst Du jetzt ausgehend von der includierenden (nicht der includierten!) Datei aus aufführen oder noch besser; verwende keine relativen Pfade, sondern absolute ('http://server.tld/verz/grafik.img')

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
    1. Ahoi fastix®,

      Wir testen, ob Sprache gesetzt ist, ansonsten setzten wir diese auf deutsch:

      if (!isset($_GET['lang']) {
        $_GET['lang']='de';
      }

        
      Also ich hab das ganze etwas "genauer" bei einem von mir erstellten  
      projekt und setzt nicht gleich automatisch auf deutsch. allerdings  
      gings bei mir um deutsch/französisch statt deutsch/englisch, kann man  
      ja aber anpassen.  
      ~~~php
        
          if(isset($_GET['lang']))  
          {  
            if($_GET['lang'] == "de" || $_GET['lang'] == "fr")  
            {  
              $anzeige_sprache = $_GET['lang'];  
            }  
            else  
            {  
              $suchsprachen = array ('de', 'fr');  
              $anzeige_sprache = lang_getfrombrowser ($suchsprachen, 'de', null, false);  
            }  
          }  
          else  
          {  
            $suchsprachen = array ('de', 'fr');  
            $anzeige_sprache = lang_getfrombrowser ($suchsprachen, 'de', null, false);  
          }  
        
      // Browsersprache ermitteln  
      function lang_getfrombrowser ($sprachen_array, $stnd_sprache, $sprachen_variable = null, $strict_mode = true)  
      {  
        // $_SERVER['HTTP_ACCEPT_LANGUAGE'] verwenden, wenn keine Sprachvariable mitgegeben wurde  
        if ($sprachen_variable === null)  
        {  
          $sprachen_variable = $_SERVER['HTTP_ACCEPT_LANGUAGE'];  
        }  
        // wurde irgendwelche Information mitgeschickt?  
        if (empty($sprachen_variable))  
        {  
          // Nein? => Standardsprache zurückgeben  
          return $stnd_sprache;  
        }  
        // Den Header auftrennen  
        $aktezptierte_sprachen = preg_split('/,\s*/', $sprachen_variable);  
        // Die Standardwerte einstellen  
        $akt_sprache = $stnd_sprache;  
        $akt_quality = 0;  
        // Nun alle mitgegebenen Sprachen abarbeiten  
        foreach ($aktezptierte_sprachen as $aktzepiterte_sprache)  
        {  
          // Alle Infos über diese Sprache rausholen  
          $res = preg_match ('/^([a-z]{1,8}(?:-[a-z]{1,8})*)'.  
                             '(?:;\s*q=(0(?:\.[0-9]{1,3})?|1(?:\.0{1,3})?))?$/i', $aktzepiterte_sprache, $matches);  
          // war die Syntax gültig?  
          if (!$res)  
          {  
            // Nein? Dann ignorieren  
            continue;  
          }  
          // Sprachcode holen und dann sofort in die Einzelteile trennen  
          $lang_code = explode ('-', $matches[1]);  
          // Wurde eine Qualität mitgegeben?  
          if (isset($matches[2]))  
          {  
            // die Qualität benutzen  
            $lang_quality = (float)$matches[2];  
          }  
          else  
          {  
            // Kompabilitätsmodus: Qualität 1 annehmen  
            $lang_quality = 1.0;  
          }  
          // Bis der Sprachcode leer ist...  
          while (count ($lang_code))  
          {  
            // mal sehen, ob der Sprachcode angeboten wird  
            if (in_array (strtolower (join ('-', $lang_code)), $sprachen_array))  
            {  
              // Qualität anschauen  
              if ($lang_quality > $akt_quality)  
              {  
                // diese Sprache verwenden  
                $akt_sprache = strtolower (join ('-', $lang_code));  
                $akt_quality = $lang_quality;  
                // Hier die innere while-Schleife verlassen  
                break;  
              }  
            }  
            // Wenn wir im strengen Modus sind, die Sprache nicht versuchen zu minimalisieren  
            if ($strict_mode)  
            {  
              // innere While-Schleife aufbrechen  
              break;  
            }  
            // den rechtesten Teil des Sprachcodes abschneiden  
            array_pop ($lang_code);  
          }  
        }  
        // die gefundene Sprache zurückgeben  
        return $akt_sprache;  
      }  
        
      
      

      MfG

      --
      Alle Angaben wie immer ohne Gewähr
      LEISE IST SCHEISSE!
      1. Hallo Daniel,

        function lang_getfrombrowser ($sprachen_array, $stnd_sprache, $sprachen_variable = null, $strict_mode = true)[...]

        Dass die Funktion aus http://aktuell.de.selfhtml.org/tippstricks/php/httpsprache/index.htm ist (nur mit deutschen Variablennamen), hättest du aber dazusagen und dir das Posten des Codes sparen können ...

        Grüße aus Nürnberg
        Tobias

        1. Ahoi Tobias Kloth,

          Dass die Funktion aus http://aktuell.de.selfhtml.org/tippstricks/php/httpsprache/index.htm ist (nur mit deutschen Variablennamen), hättest du aber dazusagen und dir das Posten des Codes sparen können ...

          ich wusst nichmehr woher ich die funktion hatte, ist wohl diese und ja
          die variablennamen hab ich eingedeutscht.
          Tut mir echt leid das ich das nicht dazu geschrieben hab, ich wusst echt
          nichmehr woher ich die hatte, aber das es nicht meine ist wusst ich
          noch, das hätt ich dazu schreiben sollen.

          MfG

          --
          Alle Angaben wie immer ohne Gewähr
          LEISE IST SCHEISSE!
          1. Hallo Daniel,

            ich wusst nichmehr woher ich die funktion hatte,

            Dann such mal mit Google nach "lang_getfrombrowser" :-)

            [...] die variablennamen hab ich eingedeutscht.

            warum denn eigentlich?

            Grüße aus Nürnberg
            Tobias

            1. Ahoi Tobias Kloth,

              warum denn eigentlich?

              Weil cih deutsche Variablenname bevorzuge, manchmal sind mir aber auch
              englische lieber, ist ganz verschickt bei mir. ich sitz als da und
              überleg mir wie ich die variable nennen könnte und mal fällt mir ein
              englischer ein, meistens aber ein deutscher.
              Woran das genau liegt kann ich nicht sagen.

              MfG

              --
              Alle Angaben wie immer ohne Gewähr
              LEISE IST SCHEISSE!
              1. Hallo Daniel,

                Weil cih deutsche Variablenname bevorzuge, manchmal sind mir aber auch
                englische lieber, ist ganz verschickt bei mir.

                mhh... ich verwende meistens auch deutsche Variablennamen - aber bei fertigen Funktionen (wie der lang_getfrombrowser() eben) ist es mir relativ egal, ob die Variablen innerhalb der Funktion deutsche oder englische Namen haben.

                Grüße aus Nürnberg
                Tobias

                1. Ahoi Tobias Kloth,

                  mhh... ich verwende meistens auch deutsche Variablennamen - aber bei fertigen Funktionen (wie der lang_getfrombrowser() eben) ist es mir relativ egal, ob die Variablen innerhalb der Funktion deutsche oder englische Namen haben.

                  ich hab mir den code halt nichtnur kopiert sondern ihn mir auch noch
                  angeschaut und deshalb die Variablennamen geändert.

                  MfG

                  --
                  Alle Angaben wie immer ohne Gewähr
                  LEISE IST SCHEISSE!