Ankündigung

Einklappen
Keine Ankündigung bisher.

sessionvariable überprüfen

Einklappen

Neue Werbung 2019

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

  • sessionvariable überprüfen

    guten abend zusammen ich bin mal wieder ei nwenig am rum basteln, aber jetzt hänge ich etwas...
    ich starte meine session -> kein problem

    dann gibts ein formular das $_POST['warenid'] und $_POST['anzahl'] übergibt.
    so nun will ich folgendes:

    PHP-Code:
    <?php
    $_SESSION
    [$POST['warenid'] = $_POST['anzahl'];  // klappt auch
    ?>
    allerdings möchte ich das wenn das formular nochmal an die seite geschickt wird überprüft wird ob diese Sessionvar schon existiert, mein versuch:
    PHP-Code:
    <?php
    if( !isset($_POST['warenid']) || !isset($_POST['anzahl']) ) {
      echo 
    "Zur Bestellung bitte nur den Onlineshop benutzen, danke.";
    } else {
      if( 
    $_POST['warenid'] == "" || $_POST['anzahl'] == "") {
        echo 
    "Es trat ein Fehler auf! Bitte Problem melden - <a href=mailto:...>melden</a>";
      } else{
        if( !
    ereg("[0-9]",$_POST['anzahl'])) {
          echo 
    "In der angegebenen Anzahl befinden sich nicht nur Zahlen!
    \n"
    ;
          echo 
    "Unerlaubtes Zeichen: <font color=red>".$_POST['anzahl']."</font>\n";
        } else {
          if( 
    array_key_exists($_POST['warenid'], $_SESSION) ){
            
    $_SESSION[$_POST['warenid']] = $_POST['anzahl'];
            echo 
    "Bestellmenge aktualisiert.";
            echo 
    $_SESSION['warenid'];
          } else {
            
    $_SESSION[$_POST['warenid']] = $_POST['anzahl'];
            echo 
    "Ware in den Warenkorb gelegt.
    "
    ;
            echo 
    $_SESSION[$_POST['warenid']]."
    "
    ;
            echo 
    key($_SESSION);
          }
        }
      }
    }
    ?>
    danke schonmal
    Es ist ein großer Trost, andere dort scheitern zu sehen, wo man selbst gescheitert ist. (William Somerset Maugham)

  • #2
    Und dein Problem ist jetzt was genau?

    Kommentar


    • #3
      wenn ich das formular noch mal ausfülle und abschicke meldet er nicht wie ich will das die bestell menge aktualissiert wird sondern einfach das die Ware in den warenkorb gelegt wurde
      Es ist ein großer Trost, andere dort scheitern zu sehen, wo man selbst gescheitert ist. (William Somerset Maugham)

      Kommentar


      • #4
        Dann gibt es keinen entsprechenden Schlüssel im $_SESSION-Array. Lass dir $_SESSION und $_POST doch mal vor der Abfrage ausgeben und schau nach, ob die Werte überhaupt stimmen.

        Kommentar


        • #5
          ja also wenn ich mir das ausgeben lasse scheint es so zusein, als wenn $_SESSION immer nur einen einzigen array eintrag hat und zwar immer die aktuelle $_POST['warenid'] wie kann das sein? ich hab kein session_destroy oder unset drin...
          Es ist ein großer Trost, andere dort scheitern zu sehen, wo man selbst gescheitert ist. (William Somerset Maugham)

          Kommentar


          • #6
            Geht die Sessionid während der Navigation durch deine Seite verloren?

            Kommentar


            • #7
              Re: sessionvariable überprüfen

              Zitat von function
              PHP-Code:
              <?php
                    
              if( array_key_exists($_POST['warenid'], $_SESSION) ){
              ?>
              Nur ein kleiner Denkfehler:
              Entweder hier isset() anstatt array_key_exists() oder du verwendest
              array_key_exists() auf $_SESSION und nicht auf $_SESSION[$_POST[...]].

              Geschickt wäre es allerdings, die Waren nicht so in die Session zu
              packen, sondern als Array $_SESSION['cart'][<product_id>] oder so.
              Ansernfalls kann es zu Kollisionen mit Sitzungsvariablen kommen, die in
              ganz anderem Kontext gebraucht werden.

              Zitat von function
              PHP-Code:
              <?php
                  
              if( !ereg("[0-9]",$_POST['anzahl'])) {
                    echo 
              "In der angegebenen Anzahl befinden sich nicht nur Zahlen!
              \n"
              ;
                    echo 
              "Unerlaubtes Zeichen: <font color=red>".$_POST['anzahl']."</font>\n";
              ?>
              Niemals! Wenn du einen Shop programmierst, solltest du zumindest die
              Grundlagen über Anwendungssicherheit beherrschen!

              Nochwas aus der dclp-faq zum Lesen:
              8.2. Soll ich ereg() oder preg() verwenden?
              http://www.php-faq.de/q/q-regexp-ereg.html

              Liebe Grüße,
              Basti

              Kommentar

              Lädt...
              X