Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Beim öffnen traten zu viele Umleitungen auf

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Beim öffnen traten zu viele Umleitungen auf

    Hi Volks,

    bin neu hier und wollte mal eure Meinung zu dem Anfänglichen Skript wissen bzw was sich am globalen Konzept verbessern lässt.

    -----

    Im großen und ganzen geht es darum ich hab eine "index" Seite die mittels "include" eine Newsletter Seite in den "CONTENT" ladet. Wenn der USER dort seine MAILADRESSE eingibt wird diese mittels MySQLi in eine DB gespeichert.

    >> NUN:

    Ich möchte am besten nach dem Ausführen der "query" ein "Cookie" setzen das die Mailadresse enthält. Soweit sogut, jetzt habe ich das Problem, wenn ich die Seite einfach RE-LOADE (F5(PC)>>cmd+R(MAC)) bekomme ich die Fehlermeldung ">> BEIM ÖFFNEN VON www.deinedomain.tdl TRATEN ZU VIELE UMLEITUNGEN AUF <<" meine Annahme ist ich leite ja ganz unten im "else" Zweig mit "header" von der "index.php" Seite auf "index.php?check=xxx&email=xxxx"... einfache Frage: >> WIE REALISIERE ICH DAS GANZE RICHTIG! <<

    ----

    Hier ein bisschen Code :

    --> index.php

    PHP-Code:
    <?php 

    $mail_adress 
    htmlspecialchars($_GET["email"]);
    $check htmlspecialchars($_GET["check"]);

    if(isset(
    $mail_adress)){
        
    setcookie("email"$mail_adresstime()+60*60*24*30);
    }

    if(!isset(
    $_COOKIE["email"])) {
    ?>
            
    <!DOCTYPE html>
    <html>
    <head>
    <title>YOUR WEBSITETITLE</title>
    </head>
    <body>
    <div id="headwrapper">
      <div id="header">
       <img src="images/logo.png" width="400" id="logo" alt="" />
      </div>
    </div>
     <div id="wrapper">
      <div id="navlist">
          <p class="breadcrumb"><?php echo breadcrumbs(); ?></p>
      </div>
      <div id="body">
       <div id="content">
         <?php 
            
    include 'newsletter.php';
        
    ?>
       </div>
      </div>
     <div id="clear_bottom"></div>
     <div id="footer">
      <?php include 'inc/footer.inc';?>
     </div>
    </div>
    </body>
    </html>
    <?php 
    } else {
        
    $mail_adress htmlspecialchars($_COOKIE["email"]);
        
    header("Location: index.php?check=finish&email=$mail_adress");
    }

    ?>
    ----------

    ---> newsletter.php

    PHP-Code:
    <?php

    $mail_adress 
    htmlspecialchars($_GET["email"]);
    $error htmlspecialchars($_GET["check"]); 

    ?>
    <p class="clear_text">BLABLABL UNINTERESSANTER TEXT</p><br />
      <br />
       <div id="email">
       <?php if($error != "finish") { ?>
       <p>Bitte geben Sie hier ihre E-Mailadresse an:</p><br />
       <form action="newsletter_check.php" method="post">
       <input type="email" name="mail_adress" />
       <input type="submit" name="Absenden" value="Senden"/><br />
       </form>
      <?php 
    }
          if(
    $error == "finish") {
            echo 
    "<p class='mail_finish'>Wir senden ihnen die Erinnerung auf " $mail_adress ", sobald wir online sind.</p><a href='index.php?check=clear'>Nicht deine Mailadresse?</a>";
        }
          
          if(
    $error == "error") { 
              echo 
    "<p class='error'>Bitte &uuml;berpr&uuml;fen Sie die Eingabe!</p>"
          }
      
    ?>
    </div>
    -----------

    ---> newsletter_check.php

    PHP-Code:
    <?php 

        $mail_adress 
    $_POST["mail_adress"];
        
    $remote_ip $_SERVER["REMOTE_ADDR"];
        
        if(
    filter_var($mail_adressFILTER_VALIDATE_EMAIL)){
            require_once 
    'inc/db_config.inc';
            
            if(
    $erg $mysqli->prepare("INSERT INTO deinetablle(mail_adress, remote_ip) VALUES (?, ?)")) {
                
    $erg->bind_param("ss"$mail_adress$remote_ip);
                
    $erg->execute();
                
    $erg->close();
                
    header("Location: index.php?check=finish&email=$mail_adress");
            } else {
                
    header("Location: index.php?check=error");
            }
            
    $mysqli->close();
        } else {
            
    header("Location: index.php?check=error");
        }
    ?>
    -----

    Wäre für kreative Lösungen und Vorschläge sehr dankbar.

    MfG
    K.

  • #2
    Du setzt das Cookie und leitest dann auf die gleiche Seite weiter, falls es gesetzt ist!? Das ist doch unweigerlich eine Endlosschleife.
    Die Weiterleitung sollte nur erfolgen, sofern das Formular tatsächlich abgesendet wurde. Und nicht in Abhängigkeit davon, ob das Cookie gesetzt werden konnte oder nicht.

    Kommentar


    • #3
      Zitat von dennis81 Beitrag anzeigen
      Das ist doch unweigerlich eine Endlosschleife.
      Mhmm vielen dank manchmal sieht man den Wald vor lauter Bäumen nicht.

      Aber trotzdem plagt mich das Gefühl das es eine weitaus Elegantere Lösung gibt.

      Greets

      Kommentar

      Lädt...
      X