Ankündigung

Einklappen
Keine Ankündigung bisher.

header location bei Kontaktformuar auf Onepager-Webseite

Einklappen

Neue Werbung 2019

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

  • header location bei Kontaktformuar auf Onepager-Webseite

    Hallo liebe Community,
    ich habe leider kein Informatikstudium gemacht, aber versuche, so gut es geht, die Sachen zu lernen, die ich fürs Webdesignen brauche. Im Forum konnte ich schon vieles über PHP lernen, bei meinem jetzigen Problem scheitere ich (und hab mich jetzt endlich hier auch mal angemeldet):

    Das PHP-Kontaktformular meiner Webseite funktioniert nicht mehr, seitdem ich heute auf Onepager umgestellt habe. Beim Abschicken meines Formulars findet eine Fehler-Validierung statt und dann erscheint entweder eine Fehlermeldung, dass nch etwas richtig ausgefüllt werden muss, oder es kommt ein Dankeschön-Text, wenn alles richtig ausgefüllt war.
    Im Formular hatte ich bisher header location auf eine neue PHP-Seite. Beim Onepager geht dies nicht, weil das Formular nur ein Ankerpunkt unten auf der langen Seite ist. WIE komme ich trotzdem wieder dort unten an?

    Meine URLs sind so bisher:
    www.meinewebseite.de/#kontakt
    www.meinewebseite.de/#about
    www.meinewebseite.de/#angebot

    Nicht ganz ideal, lieber hätte ich den Hash auch noch weg, aber das übersteigt meine Kenntnisse. (Evl. zu lösen über die htaccess-Datei??)
    Bisher versuche ich nun, auf "www.meinewebseite.de/#kontakt" rauszukommen, aber angezeigt wird mit nur eine leere Seite und die Adresse: "www.meinewebseite.de/index.php#kontakt"
    Was muss bloß in die Header location rein?

    Danke euren input und lieben Gruß
    drytooler

  • #2
    PHP hat nichts mit Webdesign zu tun.
    Stelle Deine Fragen so, dass wir auch ohne Glaskugel nachvollziehen können was Du gemacht hast.
    Wo ist Dein Quellcode?
    bitcoin.de <- Meine Freelancerwährung

    Kommentar


    • #3
      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 "*";
      }
      ?>

      Kommentar


      • #4
        mail() sollte nicht für den Mail-Versand verwendet werden, da es weitaus schwieriger zu verwenden ist, als es auf dem ersten Blick wirkt. Nimm besser einen fertigen Mailer wie z.B. PHPMailer, oder andere, die hier bestimmt noch genannt werden (oder mit der Forensuche zu finden sind). Damit hast du deutlich weniger Sorgen und eine stabilere Lösung.

        Kommentar


        • #5
          Ich hatte mir damals fertige Mailer angeschaut, die aber sehr umfangreich und kompliziert waren - deshalb hatte ich mir ein einfaches Skript zusammengeschrieben. Auf meiner alten Webseite hatte dies auch jahrelang (scheinbar gut?) funktioniert... Jetzt mit dem Onepager funktioniert der Teil mit der Location so nicht mehr.

          Kann ich das mail() auch in meinem einfachen Skript ersetzen, ohne gleich alles austauschen zu müssen? Das Skript soll nur abfragen, ob überall was vernünftiges eingetragen ist und die Mail dann rausschicken, wenn OK, ansonsten die einzelnen Zeilen bemängeln, bis richtig ausgefüllt wurde. Dazu muss es zu der Stelle (Anker auf der Webseite) zurückkehren, wo der Benutzer das Formular ausgefüllt hat.

          P.S. Habe Webseite gerade auf PHP-Version 7 umstellen müssen, da die alte nicht weiter unterstützt wird. Ich hoffe, das passt so - ich hab keine Ahnung von der Wirkung veschiedener PHP-Versionen....

          Kommentar


          • #6
            Die eregi() Funktion gilt seit PHP 5.3.0 veraltet, in PHP 7 ist sie nicht mehr drin. Du kannst dafür preg_match() verwenden. Aber braucht es dafür eine RegEx?

            Schau dir mal http://php.net/manual/de/filter.examples.validation.php an, da kannst du nicht nur mit z. B.

            PHP-Code:
            $email "example@example.com";

            if (
            filter_var($emailFILTER_VALIDATE_EMAIL)) {
                echo 
            "Email address '$email' ist gültig.\n";

            deine Email Adressen validieren, sondern auch noch anderes Zeug.

            deshalb hattee ich mir ein einfaches Skript zusammengeschrieben. Auf meiner alten Webseite hatte dies auch jahrelang (scheinbar gut?)
            Scheinbar gut trifft es wohl am besten. PHPmailer, den dir auch hellbringer empfohlen hat, ist die bessere Wahl. Arne Drews hat auf PHP Rocks auch ein HowTo geschrieben, lies dir das durch:

            https://www.php-rocks.de/thema/154-p...einbinden.html

            Kommentar


            • #7
              Dankeschön ihr alle!
              Ich schau mir die Sachen jetzt mal in Ruhe an und versuche mich dran... CU

              Kommentar


              • #8
                <span></span>
                hat genau welchen Zweck? Warum machst du das?

                Deine Frage zu der URL und dem Fragment, das ist Bestandteil der URL um zu der Position auf der Seite zu springen.
                Wenn du das nicht in der URL haben willst, musst du deine Seite auf Javascriot umstellen und das dann entsprechend behandeln, wundere dich dann aber nicht, wenn sich User beschweren oder Google deine Seite nicht mehr toll findet.

                Kommentar


                • #9
                  Okay, ich hab jetzt ganz viel ausprobiert ...und letztendlich gar nichts geschafft. Wenn man keine Ahnung von PHP hat, bis auf mal einen 4-wöchigen Grundkurs, ist es einfach zu komplex. Danke für eure Bemühungen.
                  Mir würde ein ganz einfaches PHP-Skript, ähnlich wie mein altes, auch völlig ausreichen. Es soll doch bloß den einfachen Zweck eines Kontaktformulars erfüllen...
                  Für die Verarbeitung des Formulars möchte ich definitiv kein JavaScript verwenden, für irgendwelches Design ist JavaScript jedoch okay.

                  Wie ich bessere URLs generiere ("www.meineseite.de/kontakt" statt mit Hash "www.meineseite.de/#kontakt" ist als Nebenfrage entstanden, als ich überlegt habe, welche Header Location ich angeben muss, um auf meiner Seite zu bleiben und unten auf den letzten Ankerpunkt "Kontakt" zu kommen.

                  Leider scheitere ich komplett.
                  Könnte mir evl. jemand behilflich sein, mein bestehendes Skript zu modernisieren?

                  @protestix: Der (scheinbar leere) <span></span> beinhaltet bloß ein Icon, das per CSS dann eingebunden ist. Ich bin halt Grafikdesigner

                  Kommentar


                  • #10
                    Schau dir mal http://php.net/manual/de/filter.examples.validation.php an, da kannst du nicht nur mit ...

                    PHP-Code:
                    if (filter_var($emailFILTER_VALIDATE_EMAIL)) {
                        echo 
                    "Email address '$email' ist gültig.\n";

                    deine Email Adressen validieren, sondern auch noch anderes Zeug.
                    Vorsicht .. Umlautdomains werden als false ausgewertet. https://php-de.github.io/jumpto/stan...il-validation/
                    The string "()()" is not palindrom but the String "())(" is.

                    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


                    • #11
                      Zitat von Miss Santrop Beitrag anzeigen
                      Aber braucht es dafür eine RegEx?
                      Emailadressen mit RegEx zu prüfen ist quatsch, da es zu viele Möglichkeiten gibt.
                      Beim Ausdruck von drytooler würde folgende (theoretisch valide) Emailadresse z.B. einen Fehler ausgeben: hänschen_klein@domain.casino

                      Kommentar


                      • #12
                        @MrChangelog: Oh ja, oje, das stimmt... Ich hatte nicht so viele Zeichen hinter dem @-Zeichen erwartet.
                        Also ich wär euch mega dankbar, wenn ihr mir helfen könntet, meine Zeilen etwas gültiger und korrekter zu machen.
                        Den PHP-Teil hab ich bisher oberhalb des Heads in der Datei drin, also praktisch PHP-Teil, dann direkt drunter HTML-Teil und das ganze als Datei "index.php" So wärs für mich am einfachsten; mit include und so was hab ich auch noch nie gearbeitet

                        Kommentar


                        • #13
                          Hier die (eine) RFC822-konforme Prüfung per RegExp:

                          http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html

                          Das ist keinesfalls gut verdauliche Kost...
                          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                          Kommentar


                          • #14
                            Ich würde es (wie oben schon erwähnt) einfach halten, zB so: https://php-de.github.io/jumpto/stan...#ohne-punycode und den Rest dann mit dem heuzutage sowieso üblichen Double-Opt-In (Bestätigungs-Email). Anders kann man E-Mail-Adressen auch nicht wirklich prüfen.
                            The string "()()" is not palindrom but the String "())(" is.

                            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


                            • #15
                              PHP-Code:
                              var_dumpfilter_var(idn_to_ascii('hänschen-wurst@äxample.com'), FILTER_VALIDATE_EMAIL) ); 
                              Code:
                              string(33) "xn--hnschen-wurst@xample-bzbn.com"
                              reicht für mich in den meisten Fällen, weil ich nur reagiere, wenn filter_var() false zurückgibt.

                              idn_to_ascii() soll angeblich seit 5.3.0 dabei sein, wann es im Standard ist, kann ich nicht genau sagen, bei einer alten 5.3.3 ist das nicht vorhanden, in den 7er Umgebungen allerdings.
                              Competence-Center -> Enjoy the Informatrix
                              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                              Kommentar

                              Lädt...
                              X