Ankündigung

Einklappen
Keine Ankündigung bisher.

Session verliert Variablen

Einklappen

Neue Werbung 2019

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

  • Session verliert Variablen

    Hi,

    ich möchte eine Auswahlliste mit mehreren DropDown-Feldern ertellen, deren Inhalt vom jeweils vorherigen abhängt, das klappt auch. Das ganze übergebe ich mit POST und speichere es dann in eine Session.
    Das Problem ist nun, dass die Session aber nur hält, bis ich die Seite neu Lade, dann ist die Variable wieder lehr.
    Auf einem XAMPP funktioniert die Seite, aber ich nutze hier einen IIS, und dort tritt der Fehler auf.

    hier mal noch die php.ini: LINK

    den Benutzernamen behält die Session, aber eben die anderen Variablen nicht.

    an was könnte das liegen ?

    Danke !

  • #2
    Quellcode vorhanden?

    Wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      naja, das ist recht viel code, mehrere Seiten, aber ich poset mal was interessant sein könnte:
      PHP-Code:
      <?php

      /********* SESSION Befuellen ************/

          
      if(isset($_POST["Produktgruppe"]))
          {
              
      $_SESSION['Produktgruppe'] = $_POST["Produktgruppe"];
          }

          if(isset(
      $_POST["Ausfuehrung"]) && !isset($_SESSION['Ausfuehrung']))
          {
                 
      $_SESSION["Ausfuehrung"] = $_POST["Ausfuehrung"];
          }

          if(isset(
      $_POST["Artikel"]) && !isset($_SESSION["Artikel"]))
          {
                 
      $_SESSION["Artikel"] = $_POST["Artikel"];
          }

          if(isset(
      $_POST["AnzArtikel"]) && !isset($_SESSION["AnzArtikel"]))
          {
                 
      $_SESSION["AnzArtikel"] = $_POST["AnzArtikel"];
          }

          if(!isset(
      $_SESSION["Store"]))
          {
              
      $_SESSION["Store"] = "";
          }

          if(isset(
      $_POST["Anlage"]))
          {
              
      $_SESSION['Anlage'] = $_POST["Anlage"];    
          }

          if ( isset(
      $_SESSION['GPreis']) == FALSE) { $_SESSION['GPreis'] = "0"; };

      /******** ENDE SESSION BefÃllen *************/



      ?>
      Das binde ich im beginn der Seite ein, damit befülle ich die SESSION mit den POST-Daten aus den Formularen.

      das Formular sieht wie folgt aus:
      PHP-Code:
      <?php
      //@session_start();
      //include("php/checkuser.php");
      include ("connectdb.php");
      if (isset (
      $_REQUEST["PChange"]))  

          include (
      "resetp.php");
      }
      /******** Produktgruppe Formular *************/

      if (isset ($_SESSION["Produktgruppe"]))
      {
          
      $Produktgruppe mssql_query("SELECT Produktgruppe FROM P35Produktgruppen WHERE Nr='".$_SESSION['Produktgruppe']."';");
          
      $Produktgruppe mssql_fetch_array($Produktgruppe);
          echo 
      '<div style="border:0px solid #000000; height:22px; font-size:16px; width:320px;">';
          echo 
      "Produktgruppe: ".$Produktgruppe[0];
          echo 
      '</div><br>';
      }

      /******** ENDE Produktgruppe Formular *************/
      das komische ist, dass er nach einem reload der seite die Variablen verliert.

      Kommentar


      • #4
        Wieso ist session_start(); auskommentiert?
        [URL]http://hallophp.de[/URL]

        Kommentar


        • #5
          Wieso ist session_start auskommentiert und ein Formular sehe ich nicht!

          Wolf29
          while (!asleep()) sheep++;

          Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

          Kommentar


          • #6
            weil das php-schnippsel sind die aus php-dateien kommen, die über include eingebunden werden. auf der seite in die sie eingebunden werden steht ganz oben:
            PHP-Code:
            <?php 
                
            @session_start();
                if (isset (
            $_REQUEST["PChange"])) { header ("Location: kalk.php"); };
                include(
            "php/checkuser.php");
                include(
            "php/setsession.php");
                
            error_reporting(0);
            ?>
            das oben ist natürlich nicht das formular, entschuldige, da habe ich im eifer des gefechts die ausgabe gepostet.

            das formular:
            PHP-Code:
                echo '<form name="Produktgruppe" action="'.$_SERVER['PHP_SELF'].'?PChange=1" method="POST">';
                    echo 
            '<select name="Produktgruppe" onChange="this.form.submit();">';
                        echo 
            '<option>Produktgruppe</option>';
                        while(
            $row mssql_fetch_array($ProduktgruppenMSSQL_NUM))
                        {
                            
            $q_Beschreibung "SELECT Beschreibung FROM P35Produktgruppen WHERE Produktgruppe='".$row[0]."';";
                            
            $Beschreibung mssql_query($q_Beschreibung);
                            
            $Beschreibung mssql_fetch_row($Beschreibung);

                            print 
            '<option value="'.$row[1].'">'.$row[0].'</option>';
                        }
                    echo 
            '</select>';
                echo 
            '</form>'
            danke !

            Kommentar


            • #7
              Bekommst du denn eine Fehlermeldung/Warnung wenn du das @ vor session_start() wegnimmst?

              error_reporting(0) ist auch nicht sone gute Idee....
              sigpic

              Kommentar


              • #8
                dann bringt er nen 500er fehler:
                Code:
                Dieser Fehler (HTTP 500 Interner Serverfehler) bedeutet, dass die Website, die Sie besuchen möchten, ein Serverproblem hat, durch das die Anzeige der Webseite verhindert wird.
                
                Weitere Informationen über HTTP-Fehler erhalten Sie in der Hilfe.

                Kommentar


                • #9
                  Wenn man Fehler sucht, ist es bestimmt nicht sinnvoll, die Fehlerausgabe mit error_reporting(0) zu unterbinden.

                  Btw.
                  Code:
                  $_SERVER['PHP_SELF']
                  stellt ein Sicherheitsrisiko dar, da manipulierbar. Verwende stattdessen im action="" - Attribut:
                  Code:
                  action="?PChange=1"
                  . Das reicht aus, um auf die aktuelle Seite zu verweisen und zusätzlich den Parameter zu übergeben.
                  [URL]http://hallophp.de[/URL]

                  Kommentar


                  • #10
                    SO WIRD'S GEMACHT: Problembehandlung bei Anzeige der Fehlermeldung "HTTP 500 - Interner Serverfehler"
                    http://forum.de.selfhtml.org/archiv/2004/5/t82164/
                    usw.

                    Wolf29
                    while (!asleep()) sheep++;

                    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

                    Kommentar


                    • #11
                      also, wenn ich das session_start() am anfang auskommentiere, dann läuft die seite unter nem apachen ohne probleme, nur eben nicht unter dem iis.

                      wenn ich die fehlerausgabe ´nicht unterdrücke sagt er:
                      PHP-Code:
                      PHP NoticeUndefined indexProduktgruppe in php\queries.php on line 7 PHP NoticeUndefined indexAusfuehrung in php\queries.php on line 8 PHP NoticeUndefined indexAusfuehrung in php\queries.php on line 11 PHP NoticeUndefined indexAnlage in php\queries.php on line 12 PHP NoticeUndefined indexAnlage in php\queries.php on line 15 PHP NoticeUndefined indexAnlage in php\queries.php on line 16 
                      in der queries.php stehen nur abfragen, die aber nur ausgeführt werden, wenn die session-variablen vorhanden sind:
                      und den benutzernamen behält er sich ja, und die session-id, es werden nur die variablen bei nem reload verworfen.

                      EDIT:
                      jetzt habe ich die Variablen-Belegung mal in isset() gesetzt, damit sie nur belegt werden, wenn auch die session dazu vorhanden ist. aber nun kriege ich wieder einen Serverfehler 500.
                      Der Fehler taucht aber nur auf, wen ich am Anfang das session_start() setze.

                      Kommentar

                      Lädt...
                      X