Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] session wird nicht uebernommen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] session wird nicht uebernommen

    Hallo,

    nachdem ich nun mehr als eine Woche gebastelt und mich durch so ziemlich saemtliche Foren gesucht habe, brauch ich vllt doch mal eine kompetente Loesung.

    Folgendes Projekt steht an, man soll sich auf der Seite Templates (vorgefertigte Briefe) aufrufen koennen und zwar in verschiedenen Spachen.

    Das ganze ist bis jetzt wie folgt geregelt:

    hier kann man zu naechst sehen wie es aussehen soll:
    Kodak Intranetdas ende der url sieht so aus:
    index.php?site=template&sub=template2&lang=XXX

    und da wo die 3 grossen xxx stehen sollte eigentlich die jeweilige Sprache stehen. Bisher in php4 ging das auch. Seit es geaendert wurde in php5 geht es nicht mehr. das Script dazu sieht so aus.

    das ist das startscript in der Indexphp:
    PHP-Code:
    <?php
    session_start
    ();
    session_regenerate_id();

    include(
    "content/language.php");

    ?>
    die eigentlichen templatedateien sehen so aus:
    PHP-Code:
    <?php 

    include("content/tech/techtemp1.php");


    ?>
    <div id="content">
    <pre>
    <textarea id="template" cols="120" rows="60" readonly>

    <?php print $inhalt?>

    <?php print $telefonnummer ?>

    </textarea>

    </pre>
    </div>
    und die links dazu sehen so aus:
    PHP-Code:
    <div class="subItem"><a href="index.php?site=template&sub=techtemplate1&lang=<?php $LANG?>">AIO - cleaning-calibrating </a></div>
    findet er nix soll er
    PHP-Code:
    <?php
     
    if(isset($_GET[sub]) && file_exists("templates/".$_GET[sub].".php"))
          include(
    "templates/".$_GET[sub].".php");
         else
          include(
    templates/nixda.php);
    ?>
    </div>
    das ausgeben.

    Im Moment ist es so, das er nur die deutschen Templates anzeigt. Das sind die ersten in den Templatedateien und das er die durch anklicken der Sprache erzeugte Session vergisst.
    Leider hab ich ziemlich wenig Ahnung und habe das Projekt bisher mit einem Freund realisiert, leider ist der auch mit seinem Latein am ende.
    Wo liegt der Fehler und was muesste geaendert werden?

    Vielen Dank fuer die Hilfe.
    Kathy


  • #2
    Hallo und willkommen im Forum!

    Als erstes das hier session_regenerate_id(); ist veraltet.
    Dafür nutzt man heutzutage dieses hier
    PHP-Code:
    $_SESSION 
    Wo kommen $LNAG , $telefonnummer und $inhalt her?

    Benutze in Zukunft bitte die PHP Tags aus dem Editor um PHP Code darzustellen,das macht das lesen des Codes einfacher für uns!

    mfg der 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.
    http://www.lit-web.de

    Kommentar


    • #3
      Hallo Kathy, willkommen im Forum.

      Bitte editiere Dein Posting und setze sämtliche Codebstandteile in [php] BB Tags.
      --

      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


      --

      Kommentar


      • #4
        danke fuer die schnelle antwort. $LNAG ,
        $telefonnummer kommt aus der datei languages.php in der alle footer drin sind
        PHP-Code:
        <?php

         
        if(!isset($_GET[lang]) || ($_GET[lang]!="en" && $_GET[lang]!="de"))
          
        $_GET[lang]="de";
         
        $LANG=$_GET[lang];
        if(
        $LANG=="de")
        {

        $telefonnummer '
        Telefon:     0800 100 3416
        Fax:    00353 61 70 10 51
        $inhalt setzt sich aus den verschiedenen templatdateien zusammen....
        PHP-Code:
        <?php

         
        if(!isset($_GET[lang]) || ($_GET[lang]!="en" && $_GET[lang]!="de"))
          
        $_GET[lang]="de";
         
        $LANG=$_GET[lang];

        if(
        $LANG=="de")
        {
        $inhalt '
        Unsere Bearbeitungs-/Referenznummer:


        Betr.: Ihr Drucker.....
        und daher kommt auch die $LANG.

        was muss ich ausser $_SESSION noch angeben, wenn es veraltet ist? 9ch hab zu der session geschichte schon ne menge gefunden, aber nicht wirklich verstanden. sry

        danke Kathy

        Kommentar


        • #5
          Bitte nicht ignorieren!
          Bitte editiere Dein Posting und setze sämtliche Codebstandteile in [php] BB Tags.
          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar


          • #6
            ich bin dabei

            Kommentar


            • #7
              Es muß nicht zwingend an der Session liegen.
              Zuallererst solltest Du
              PHP-Code:
              $_GET[lang]
              $_GET[sub
              durch
              PHP-Code:
              $_GET['lang']
              $_GET['sub'
              ersetzen.

              Das
              PHP-Code:
              if($LANG=="de")
              {

              $telefonnummer 
              Telefon:     0800 100 3416 
              kann so auch schon mal nicht funktionieren und sollte einen Parser Error werfen.

              Die nächste wichtige Aktion wäre
              PHP-Code:
              error_reporting (E_ALL E_STRICT); 
              an den Anfang des Hauptscripts zu setzen.

              Dann solltest Du mal testhalber $_GET['lang'] mit var_dump ausgeben lassen.
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                Zitat von litterauspirna Beitrag anzeigen
                Als erstes das hier session_regenerate_id(); ist veraltet.
                Dafür nutzt man heutzutage dieses hier
                PHP-Code:
                $_SESSION 
                Du meinst wohl eher session_register.

                Trotzdem: Was macht session_regenrate_id denn in Deinem Code? Weil:
                bool session_regenerate_id ( [bool delete_old_session] )

                session_regenerate_id() will replace the current session id with a new one, and keep the current session information.
                Und wo wird überhaupt $LANG in die Session geschrieben, wie Du oben behauptest?
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar


                • #9
                  das resultat von den vorgenommenen veraenderungen sind erstmal ne menge fehlermeldungen:

                  PHP-Code:
                  Notice:  Use of undefined constant templates assumed 'templates' in /var/www/web24/html/Kodak/files/template.php on line 100

                  Notice
                  :  Use of undefined constant nixda assumed 'nixda' in /var/www/web24/html/Kodak/files/template.php on line 100

                  Warning
                  :  Division by zero in /var/www/web24/html/Kodak/files/template.php on line 100

                  Notice
                  :  Use of undefined constant php assumed 'php' in /var/www/web24/html/Kodak/files/template.php on line 100

                  Warning
                  :  include(php) [function.include]: failed to open streamNo such file or directory in /var/www/web24/html/Kodak/files/template.php on line 100

                  Warning
                  :  include() [function.include]: Failed opening 'php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear'in /var/www/web24/html/Kodak/files/template.php on line 100 
                  und das ist das stueck code was er anmeckert

                  PHP-Code:
                  <?php
                   
                  if(isset($_GET['sub']) && file_exists("templates/".$_GET['sub'].".php"))
                        include(
                  "templates/".$_GET['sub'].".php");
                       else
                        include(
                  templates/nixda.php);
                  ?>

                  Kommentar


                  • #10
                    Was soviel bedeutet wie: templates/nixda.php gehört in einen String, sonst werden templates und nixda als Strings interpretiert, dann in INT umgewandelt und durcheinander dividiert. Zum Ergebnis wird php konkateniert und dann versucht das ganze Ergebnis zu includen. Ein gutes Beispiel, warum man sich nicht auf die Ersetzung von Konstanten in Strings verlassen sollte.
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar


                    • #11
                      Zitat von litterauspirna Beitrag anzeigen
                      Als erstes das hier session_regenerate_id(); ist veraltet.
                      Seit wann das und wodurch wurde es ersetzt?

                      Kommentar


                      • #12
                        Zitat von nikosch77-new Beitrag anzeigen
                        Was soviel bedeutet wie: templates/nixda.php gehört in einen String, sonst werden templates und nixda als Strings interpretiert, dann in INT umgewandelt und durcheinander dividiert. Zum Ergebnis wird php konkateniert und dann versucht das ganze Ergebnis zu includen. Ein gutes Beispiel, warum man sich nicht auf die Ersetzung von Konstanten in Strings verlassen sollte.
                        oehm...ich muss was? sry aber ich bin ziemlich verwirrt. was genau muss ich tun, damit er die pfadangabe versteht und es nicht mehr als variable sieht?

                        Kommentar


                        • #13
                          templates/nixda.php gehört in einen String
                          --

                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                          --

                          Kommentar


                          • #14
                            vielen dank fuer die viele kritik, aber trotz all den aenderungen uebernimmt er noch immer nicht die sprache. er zeigt mir immer noch nur die deutsche version an und nicht die anders sprachigen.

                            Kommentar


                            • #15
                              Es sind ja auch noch Frage offen.
                              Und wo wird überhaupt $LANG in die Session geschrieben, wie Du oben behauptest?
                              Dann solltest Du mal testhalber $_GET['lang'] mit var_dump ausgeben lassen.
                              --

                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                              --

                              Kommentar

                              Lädt...
                              X