Ankündigung

Einklappen
Keine Ankündigung bisher.

Session wird nicht übertragen bzw. angezeigt

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

  • Session wird nicht übertragen bzw. angezeigt

    Hallo Leute,
    meine Session wird nicht übertragen bzw. übernommen.
    Sobald ich auf "SENDEN" klicke, ohne dass ich einen Wert im Feld "E-Mail" eingetragen habe, soll der Wert der Session dort angezeigt werden.

    Hier mein Code:
    PHP-Code:
    <?php
    session_start
    ();
    include_once 
    __DIR__ '/config/db_config.php';

    $email=$_GET['email'];
    $_SESSION['abo'] = $_GET['abo'];
    $date date('Y-m-d');

    $pos strpos($email'@');

    if (
    $pos === false) {
        echo 
    '<div class="content">
        <p>Bitte geben Sie hier die e-mail Adresse ein, an welche<br>
            Sie keine Aussendungen mehr w&uuml;nschen und bestätigen Sie<br>
              Ihre Eingabe mit dem "Senden" Button:<br>

        <div class="form">

        <form action="'
    $_SERVER['PHP_SELF'] .'" method="post" name="form" id="formular" accept-charset="UTF-8" enctype="multipart/form-data">
            <input type="text" name="email_input" value="" />
            <input type="submit" class="btn_submit" name="submit" value="Senden" />
        </form>
        </div></div>'
    ;


        if (isset(
    $_POST['submit']) && $_POST['email_input'] == '') {
            echo 
    'test: '.$_SESSION['abo'];
            echo 
    '<div class="error">Sie haben keine E-Mail Adresse eingegeben!</div>';

        }
    }


  • #2
    Die Verwendung von $_SESSION ist hier sinnlos, da du sowieso immer den Wert von $_SESSION['abo'] mit $_GET['abo'] überschreibst. Somit kannst du gleich $_GET['abo'] bei der HTML-Ausgabe verwenden.

    Du beachtest übrigens den Kontextwechsel nach HTML nicht. Werte, die In HTML-Code eingefügt werden, müssen mit htmlspecialchars() behandelt werden.

    Kommentar


    • #3
      ok, danke für die Info mit htmlspecialchars(), aber mein Problem besteht noch immer. Es wird bei "test" nichts ausgegeben.
      PHP-Code:
      <?php
      include_once __DIR__ '/config/db_config.php';

      $email $_GET['email'];
      $abo $_GET['abo'];
      $date date('Y-m-d');

      $pos strpos($email'@');

      if (
      $pos === false) {
          echo 
      '<div class="content">
          <p>Bitte geben Sie hier die e-mail Adresse ein, an welche<br>
              Sie keine Aussendungen mehr w&uuml;nschen und bestätigen Sie<br>
                Ihre Eingabe mit dem "Senden" Button:<br>

          <div class="form">

          <form action="'
      $_SERVER['PHP_SELF'] .'" method="post" name="form" id="formular" accept-charset="UTF-8" enctype="multipart/form-data">
              <input type="text" name="email_input" value="" />
              <input type="submit" class="btn_submit" name="submit" value="Senden" />
          </form>
          </div></div>'
      ;


          if (isset(
      $_POST['submit']) && $_POST['email_input'] == '') {
              echo 
      'test: '.htmlspecialchars($aboENT_QUOTES);
              echo 
      '<div class="error">Sie haben keine E-Mail Adresse eingegeben!</div>';

          }
      }

      Kommentar


      • #4
        Dann steht wohl nichts in $_GET['abo'] drin.

        Kommentar


        • #5
          Folgendes:
          Ich baue gerade ein "Subscribe/Unsubscribe" für E-Mails.
          Im E-Mail ist ein Link enthalten, der auf diese Datei verweist mit den Parametern ....insert.php?email=email&abo=subscribe

          Wenn ich den Link anklicke, und es wird keine E-Mail mitgeschickt, dann wird dieser Code aufgerufen. Aber sobald ich auf Senden klicke, geht die Variable "subscribe" verloren.

          Kommentar


          • #6
            Du musst den Wert im Formular mitgeben:
            PHP-Code:
            <input type="hidden" name="abo" value="<?= htmlspecialchars($_GET['abo'], ENT_COMPAT'UTF-8'?>" />
            Und dann kannst du mit $_POST['abo'] darauf zugreifen.

            Kommentar


            • #7
              Ich hab's jetzt gelöst. So funktioniert es auch, wenn man öfters auf Senden klickt, ohne dass was im E-Mail-Feld eingetragen wurde.
              PHP-Code:
              include_once __DIR__ '/config/db_config.php';

              $email $_GET['email'];
              $date date('Y-m-d');
              $pos strpos($email'@');

              if (
              $pos === false) {
                  if (isset(
              $_GET['abo'])) {
                      
              $abo $_GET['abo'];
                  } else {
                      
              $abo $_POST['abo'];
                  }


                  echo 
              '<div class="content">
                  <p>Bitte geben Sie hier die e-mail Adresse ein, an welche<br>
                      Sie keine Aussendungen mehr w&uuml;nschen und bestätigen Sie<br>
                        Ihre Eingabe mit dem "Senden" Button:<br>

                  <div class="form">

                  <form action="'
              .htmlentities($_SERVER['PHP_SELF']).'" method="post" name="form" id="formular" accept-charset="UTF-8" enctype="multipart/form-data">
                      <input type="text" name="email_input" value="" />
                      <input type="hidden" name="abo" value="'
              .htmlspecialchars(($abo), ENT_COMPAT'UTF-8').'" />
                      <input type="submit" class="btn_submit" name="submit" value="Senden" />
                  </form>
                  </div></div>'
              ;


                  if (isset(
              $_POST['submit']) && $_POST['email_input'] == '') {
                      
              $abo $_POST['abo'];
                      echo 
              'test: '.htmlspecialchars($aboENT_QUOTES);
                      echo 
              '<div class="error">Sie haben keine E-Mail Adresse eingegeben!</div>';    
                  }

              Kommentar

              Lädt...
              X