Ankündigung

Einklappen
Keine Ankündigung bisher.

header location bei Kontaktformuar auf Onepager-Webseite

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

  • #16

    PHP-Code:
      (?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t] )+|\Z|(?=[\["()<>@,;:\".\[\]]))|"(?:[^"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?: \r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\".\[\] \000-\031]+(?:(?:( ?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\".\[\]]))|"(?:[^"\r\\]|\\.|(?:(?:\r\n)?[  \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\".\[\] \000-\0 31]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\".\[\]]))|\[([^\[\]\r\\]|\\.)*\ ](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\".\[\] \000-\031]+ (?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?: (?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z |(?=[\["()<>@,;:\".\[\]]))|"(?:[^"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n) ?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\".\[\] \000-\031]+(?:(?:(?:\ 
    HILFE... ich sag euch jetzt lieber nicht, was ich da verstanden habe..... *uiuiui* das ist ja fast schon grafisch...

    Kommentar


    • #17
      Hi zusammen, gibt es hier wirklich niemanden der mir helfen kann, was ich bei meinem Kontaktformular in HEADER LOCATION eintragen muss, damit nicht auf eine neue Seite (die es bei meinem Onepager nicht gibt) weitergeleitet wird?

      Dass mein PHP-Code etwas veraltet ist, weiß ich nun dank euch auch - danke euch für dem Input ...leider ist mir das alles auch nach einer Woche des Ausprobierens immer noch viel zu hoch und ich scheitere komplett.
      Wenn es jemand hinbekommt, meinen Code etwas umzuschreiben, wäre ich echt glücklich....

      - Prüfen, ob Name, E-Mail und Text eingetragen wurden. Eine einfache, fehlerfreie Überprüfung der Mail-Adresse würde absolut ausreichen, bei mir gibts nur 3 Zeichen hinter dem Punkt, das ist bei heutigen Web-Adressen zu wenig.
      - Bei Fehlern diese auflisten ("Es wurde kein Name eingetragen", etc.) -----> Formular muss auf dem Onepager an den Anker #kontakt zurückspringen!
      - Beim Abschicken eine E-Mail zusammenbasteln und Bestätigung einblenden -----> Formular muss auf dem Onepager an den Anker #kontakt zurückspringen!

      PHP-Code:

      <?php
      if(isset($_POST['name'])) {

          
      $name $_POST["name"];
          
      $email $_POST["email"];
          
      $textfeld $_POST["textfeld"];

          
      $fehler = array();

          if(
      $name=="" || $name == "*") {
              
      $fehler[] =  "<span></span>es wurde kein Name angegeben<br>";
          }

          if(!
      eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$"$email)) {
          
      $fehler[] = "<span></span>die Email-Adresse ist fehlerhaft<br>";
          }

          if(
      $textfeld == "" || $textfeld == "*") {
              
      $fehler[] =  "<span></span>es wurde kein Text eingetragen<br>";
          }

          if(
      count($fehler)>0) {

              if(
      count($fehler)<2) {
                  
      $msg "";
                  
      $msg .= "<p>";
                  
      //$msg .= "Sorry, das hat nicht geklappt. Bitte ".count($fehler)." Eingabe überprüfen: <br>";
                  
      $msg .= "<strong>";
                  
      $msg .= "Sorry, das hat nicht geklappt!";
                  
      $msg .= "</strong>";
                  
      $msg .= "<br>";
                  
      $msg .= "Bitte folgende Eingabe überprüfen: <br><br>";
              }
              else if(
      count($fehler)>1) {
                  
      $msg "";
                  
      $msg .= "<p>";
                  
      $msg .= "<strong>";
                  
      $msg .= "Sorry, das hat nicht geklappt!";
                  
      $msg .= "</strong>";
                  
      $msg .= "<br>";
                  
      $msg .= "Bitte ".count($fehler)." Eingaben überprüfen: <br><br>";    
              }
              foreach(
      $fehler as $txt) {
                      
      $msg .= $txt;
                  }
              
      $msg .= "</p>";    
          }

          else {

          
      $empfaenger "mail@meinewebseite.de" ;

          
      $betreff "Daten von Kontaktformular" ;

          
      $mailtext "Name: " $name "\r\n" .
                      
      "E-mail: "$email .  "\r\n" .
                      
      "Nachricht: "$textfeld "\r\n" ;


          
      $header 'From: '.$_POST["email"]."\r\n" .
                    
      'X-Mailer: PHP/' phpversion() ;

              if (@
      mail ($empfaenger$betreff$mailtext$header"-f mail@meinewebseite.de")) {
                  
      sleep(30);  // 30 Sek schlafen
                  
      header("Location: http://www.meinewebseite.de/#kontakt");
              }
              else {
                  
      $msg "<p>Fehler beim Versand!</p>";
              }
          }
      }
      else {
          
      $name "*";
          
      $email "*";
          
      $textfeld "*";
      }
      ?>

      Hier der Vollständigkeit halber noch das Formular:

      PHP-Code:
                      <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>#kontakt" method="post" name="formular">                      

                          <div>              
                              <fieldset><legend>Kontakt aufnehmen</legend>
                                  <p><label for="name">Name:</label>
                                  <input id="name" name="name" type="text" class="req" value="<?php echo $name ?>"></p>
                                  <p><label for="email">E-Mail:</label>
                                  <input id="email" name="email" type="text" class="req" value="<?php echo $email ?>"></p>
                              </fieldset>
                              <div id="msg"><?php echo $msg ?></div>                    
                          </div>

                          <div>                    
                              <fieldset><legend>Nachricht:</legend>
                                  <p><textarea name="textfeld" class="req"><?php echo $textfeld ?></textarea></p>
                                  <p><input name="senden" value="Absenden" type="submit"></p>
                              </fieldset>                
                          </div>              
                     </form>

      Kommentar


      • #18
        Zitat von drytooler Beitrag anzeigen
        Hi zusammen, gibt es hier wirklich niemanden der mir helfen kann, was ich bei meinem Kontaktformular in HEADER LOCATION eintragen muss, damit nicht auf eine neue Seite (die es bei meinem Onepager nicht gibt) weitergeleitet wird?
        Also die Zielseite musst du schon selber kennen, da kann keiner helfen.
        Syntaktisch ist der Location-header in Ordnung, allerdings gibt es bei Ankern wohl diverse Probleme, siehe auch hier:
        https://stackoverflow.com/questions/...th-html-anchor
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #19
          Du bist hier in einem Programmierforum, wir erwarten das Beherrschen der Grundlagen der Programmierung.

          Wenn du das nicht Erlernen willst, was ich nachvollziehen kann, dann musst du wohl oder übel jemanden damit beauftragen deine Wünsche umzusetzen. Dann ist allerdings die Scriptbörse, die richtige Anlaufstelle und nicht das Einsteigerforum von PHP.

          Wir schreiben hier jedenfalls nichts für dich, ändern auch keine fehlerhaften Scripte und sind auch kein Auftragsdienst.

          Kommentar


          • #20
            Nur so als Info noch..

            Ein Anker wird eigentlich nur am Client (Browser) verarbeitet, der Server weiß vom Anker nichts, hat den damit auch nicht im $_SERVER enthalten.

            Schau dir mal das Affenforumlar an. https://php-de.github.io/jumpto/affenformular/
            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #21
              Sorry Leute... ich WEISS definitiv, dass ich mich in einem Programmier-Forum angemeldet habe und ich dachte bei der Anmeldung - nachdem ich mein PHP-Formular selbst geschrieben habe - ich könnte (auch) ein klein wenig programmieren und wäre hier richtig!? Ich suche keinen Programmier-Service, weil ich zu faul wäre, etwas selber zu schreiben, ich interessiere mich wirklich dafür und ich dachte, meine Frage an euch wäre eigentlich eine ganz einfache und betrifft nur ein Detail in meinem Skript. Vielleicht hab ich sie doof formuliert und natürlich kenne ich meine Zielseite. Mit Sicherheit gibt es auch besser geschriebene Skripte... ich war super froh, dass ich das jetzige so hinbekommen hatte... Für euch Profis mag es wohl trotzdem grottenschlecht sein. Vielleicht stellt einer von euch mal ne Frage in einem anderen Forum zu einem Thema, in dem ich der Profi bin und kann euch dann helfen?


              Wenn ich es in meinem Skript so schreibe:
              PHP-Code:
                header('location: http://www.meinewebseite.de#kontakt'); 
              wird nach der Formularverabeitung diese (nicht vorhandene) URL aufgerufen und es kommt eine leere Seite:
              http://www.meinewebseite.de/index.php#kontakt


              ich weiß nicht, wie ich den Zusatz "index.php" aus der URL wieder weg bekomme.

              Beim Aufruf der Webseiten-URL http://www.meinewebseite.de wird die Datei "index.php" als Startseite automatisch geladen, ohne dass ihr Name mit erscheint. Beim Scrollen auf die einzelnen Abschnitte erscheint der Anker mit in der URL, z.B. http://www.meinewebseite.de/#kontakt
              (Schöner wärs ohne den #, wie eine normale Seite: http://www.meinewebseite.de/kontakt aber hier fehlte mir bisher noch die Stelle, wo ich ansetzen muss, um das zu ändern.)

              Fazit: header location scheint nicht besonders gut bei Ankern zu funktionieren, ich brauche wohl die Abfrage:
              window.location.hash
              - danke an Istegelitz für den Link!

              PHP-Code:
                window.location.hash='<?php echo $_GET["anchor"?>';   /You'll need to add some kind of input verification check for the anchor variable of course.
              Das Skript sucht den Ankernamen, richtig? Könnte ich den gleich festsetzen, als "kontakt", da ich nur eine einzige window.location brauche?

              PHP-Code:
              location.hash "kontakt";
              var 
              location.hash
              Anderer Ansatz: ich definiere "$location" und rufe sie dann auf. Leider erscheint dann wieder der Zusatz in der URL und es wird keine Seite gefunden...
              PHP-Code:
              $location "/#kontakt" ;


                  
              $header 'From: '.$_POST["email"]."\r\n" .
                            
              'X-Mailer: PHP/' phpversion() ;

                      if (@
              mail ($empfaenger$betreff$mailtext$header"-f mail@meinewebseite")) {
                          
              sleep(30);  // 30 Sek schlafen
                          
              header("Location: " "http://" $_SERVER['HTTP_HOST'] . $location);
                      /... 

              Kommentar


              • #22
                Das ist ein Misch-Masch aus PHP und JavaScript, mit dem du direkt zu dem Anker springen kannst, der in der PHP Get-Variablen steht.
                Du willst ja nicht immer zum Anker Kontakt springen sondern nur dann, wenn das Formular verarbeitet wurde. Also daher der Umweg über den GET-Parameter, den du dann via header location setzen kannst.

                Kommentar


                • #23
                  Die index.php ist vermutlich die default-page des Webservers. Wenn du keine vollständige URL angibst, nimmt der Webserver das eingestellte default.
                  Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                  Kommentar


                  • #24
                    Du mischst zuviel.
                    bei einem onepager wird das kontaktformular meist auch durch ajax versand, nicht so wie sonst üblich, deswegen kommt dort auch kein header location zum einsatz.
                    mit js nutzt man die https://developer.mozilla.org/en-US/...eb/API/History .


                    Kommentar


                    • #25
                      Ich habe da mal ein Beispiel zusammen gestrickt.
                      So wie ich das sehe braucht man header location nicht.
                      PHP-Code:
                      <?php
                      header
                      ('Content-Type: text/html; charset=utf-8');

                      $message null;

                      if (isset(
                      $_POST['submit'], $_POST['customer'] )) {

                          
                      $message "Chef Bescheid gegeben. Er kümmert sich.";
                          
                      // hier könnte auch die E-Mail abgesendet werden

                      }
                      ?>

                      <!doctype html>
                      <html>
                      <head>
                      <meta charset="utf-8">
                      <title>ONE PAGE WEBSITE WITH FORM</title>
                      <style>
                          html, body { margin: 0; padding: 0; height: 100%;font-family: serif; font-weight: bold; }
                          section { height: 100%; margin: 0; }
                          section:nth-child(odd) { color: white; background-color: black;}
                          section > p:first-child { border-top: 1px dashed silver; margin: 0; }
                          footer{ position: fixed; top: 90%; left: 10px; background-color: rgba(255,255,255,0.5); padding: 5px;}
                          footer:hover { background-color: white; }
                          nav a:link {padding: 0 5px; color:darkgrey;}
                          form { margin-left: 2em;}
                      </style>
                      </head>                                            

                      <body>
                          <section id="intro">
                              <p>01 intro</p>
                          </section>
                          <section id="cover">
                              <p>02 cover</p>
                          </section>
                          <section id="contact">
                              <p>03 contact</p>
                              <p><?= $message?></p>
                              <form action="#contact" method="post">
                              <p>Ein Formular</p>
                                  <label>Wie heisst du?</label>
                                  <input type="tesxt" name="customer" required>
                                  <input type="submit" value="submit" name="submit">
                              </form>
                          </section>
                          <footer>
                              <nav id="mainnav">
                                  <a href="#intro">intro</a>
                                  <a href="#cover">cover</a>
                                  <a href="#contact">contact</a>
                              </nav>
                          </footer>
                      </body>
                      </html>

                      Kommentar

                      Lädt...
                      X