Geen melding na versturen formulier

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior, Medior and Junior SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Medior Werklocatie: Veldhoven Vacature ID: 12696 Introductie Our client is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. Wat verwachten we van jou? SAP Certified Application Associate - SAP HANA Cloud Modeling (training and/or certification) Bachelor degree or higher Excellent understanding of SAP HANA (2.0 / Cloud), Data Modelling and writing

Bekijk vacature »

Pagina: 1 2 volgende »

Marina Koster

Marina Koster

13/03/2019 08:24:47
Quote Anchor link
Beste,

Ik heb een contactformulier wat na veel zoekwerk nu eindelijk naar mijn mail verstuurd wordt. Echter krijg ik geen melding dat deze verstuurd is. Ook als ik een veld niet invul krijg ik daar geen melding van, het formulier wordt ook niet naar de mail gestuurd.

Ik ben nieuw met php en weet ook niet zo goed waar ik moet zoeken. De codes heb ik van een uitleg op internet gekopieerd, dus ik heb geen idee waarom het bij mij niet werkt.

Het formulier: (index3.html)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<form action="" method="post" id="myform">
    <div>
        <label for="name">Name:</label><br>
        <input type="text" id="name" name="name" />
    </div>
    <div>
        <label for="surname">Surname:</label><br>
        <input type="text" id="surname" name="surname" />
    </div>
    <div>
        <label for="companyname">Company Name:</label><br>
        <input type="text" id="companyname" name="companyname" />
    </div>
    <div>
        <label for="email">E-mail:</label><br>
        <input type="email" id="email" name="email" />
    </div>
    <div>
        <label for="bericht">Message:</label><br>
        <textarea id="bericht" name="bericht"></textarea>
    </div>
    <div class="button">
        <button type="submit" name="submit">Send your message</button>
    </div>
</form>


PHP: (formverzenden.php)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php
if(isset($_POST['submit'])){
    $naar = "[email protected]";
    $onderwerp  = "Contactformulier";

    if(!empty($_POST['name'])){
          $name = $_POST['name'];
    }
else{
          die("U heeft geen voornaam ingevuld");
    }


    if(!empty($_POST['surname'])){
          $surname = $_POST['surname'];
    }
else{
          die("U heeft geen achternaam ingevuld");
    }

    
    if(!empty($_POST['companyname'])){
          $companyname = $_POST['companyname'];
    }
else{
          die("U heeft geen bedrijfsnaam ingevuld");
    }

    
    if(!empty($_POST['email'])){
           $email = $_POST['email'];
     }
else{
           die("U heeft geen emailadres ingevuld");
     }

    if(!filter_var($email, FILTER_VALIDATE_EMAIL)) // Als het email adres niet correct is
    {
        print '<p>Helaas, het email adres is niet correct!</p>';
        $fout = true;
    }

    if(!empty($_POST['bericht'])){
           $bericht = $_POST['bericht'];
     }
else{
           die("U heeft geen bericht geschreven");
     }

    $sjabloon = "
    Naam: {name} {surname}
    Bedrijf: {companyname}
    Email adres: {email}
    Bericht: {bericht}
     "
;
    $message = str_replace("{name}", $name, $sjabloon);
    $message = str_replace("{surname}", $surname, $sjabloon);
    $message = str_replace("{companyname}", $companyname, $sjabloon);
    $message = str_replace("{email}", $email, $message);
    $bericht = nl2br($bericht);
    $message = str_replace("{bericht}", $bericht, $message);

    $headers  = 'MIME-Version: 1.0\r\n';
    $headers .= 'Content-type: text/html; charset=iso-8859-1\r\n';
    $headers .= 'To: <' .$naar. '>\r\n';
    $headers .= 'From: ' .$name. ' ' .$surname. ' <' .$email. '>\r\n';

    if(mail($naar, $onderwerp, $message, $headers)){
         echo "De mail is succesvol verzonden, u wordt teruggestuurd naar het formulier";
         ?>

         <script language="javascript">setTimeout('document.location.href = "index3.html"', 2000);</script>
         <?
    }else{
         die("De mail kon niet verzonden worden, probeer later nog eens.");
    }

}
else{
    die('U heeft het formulier niet ingevuld');
}

?>


Dit staat in de <script> tags:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
   $(document).ready(function(){
        $("#myform").validate({
            debug: false,
            submitHandler: function(form) {
                // do other stuff for a valid form
                $.post('formverzenden.php', $("#myform").serialize(), function(data) {
                    $('#results').html(data);
                });
            }
        });
    });


Ook zie ik dat in de mail die ik ontvang {name} en {surname} niet worden ingevuld, terwijl dit bij {email}, {companyname} en {bericht} wel gebeurd.
Kunnen jullie me hiermee helpen?
Gewijzigd op 13/03/2019 08:34:32 door Marina Koster
 
PHP hulp

PHP hulp

29/11/2024 09:44:47
 
- Ariën  -
Beheerder

- Ariën -

13/03/2019 09:10:21
Quote Anchor link
Zet na <?php eens dit neer:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
error_reporting(E_ALL);
ini_set('display_errors',true);


Zie je dan foutmeldingen verschijnen?
 
Marina Koster

Marina Koster

13/03/2019 09:13:57
Quote Anchor link
Ik ontvang wel de mail maar krijg geen foutmeldingen.
 
- Ariën  -
Beheerder

- Ariën -

13/03/2019 09:21:41
Quote Anchor link
Welke foutmeldingen krijg je niet? En bij welke invoer?
 
Marina Koster

Marina Koster

13/03/2019 09:29:34
Quote Anchor link
Elk veld is verplicht, alleen bij het email veld krijg ik een melding als er geen @ of . in staat. Bij de rest krijg ik geen melding als ik deze leeg laat. Het formulier wordt dan ook niet naar de mail verstuurd. En als ik wel alle velden vul wordt de mail verstuurd alleen krijg je dit op de site niet te zien.
 
Jan R

Jan R

13/03/2019 09:33:26
Quote Anchor link
Quote:
$message = str_replace("{name}", $name, $sjabloon);
$message = str_replace("{surname}", $surname, $sjabloon);
$message = str_replace("{companyname}", $companyname, $sjabloon);
$message = str_replace("{email}", $email, $message);


Je start altijd behalve bij email met het sjabloon. Dus enkel de laatste 2 worden omgezet.

Jan

ps: e-mail is met koppelteken
 
Marina Koster

Marina Koster

13/03/2019 09:40:13
Quote Anchor link
Quote:
Je start altijd behalve bij email met het sjabloon. Dus enkel de laatste 2 worden omgezet.


Dan snap ik niet waarom companyname, email en bericht alle drie wel verstuurd worden. In de code zie ik geen verschil met name en surname.
 
- Ariën  -
Beheerder

- Ariën -

13/03/2019 09:40:21
Quote Anchor link
Als je logisch kijk zie je dat overal een (vieze!) die() gebruikt en daar bij de controle van het mail adres een $fout = true'. En een print daarna.
Dat is niet consistent met de andere controles.

Anyway, die() beëindigt je script, en dat wíl je eigenlijk niet. Het zou mooier zijn als je alle fouten verzamelt, en daarna deze gezamenlijk toont .

Die str_replaces zijn ook overbodig, je kan de variabelen ook zelf gebruiken.

Ik kan later vandaag even een opzetje maken voor een beter contactformulier.
Gewijzigd op 13/03/2019 09:42:38 door - Ariën -
 
Marina Koster

Marina Koster

13/03/2019 09:45:18
Quote Anchor link
- Ariën - op 13/03/2019 09:40:21:
Als je logisch kijk zie je dat overal een (vieze!) die() gebruikt en daar bij de controle van het mail adres een $fout = true'. En een print daarna.
Dat is niet consistent met de andere controles.

Anyway, die() beëindigt je script, en dat wíl je eigenlijk niet. Het zou mooier zijn als je alle fouten verzamelt, en daarna deze gezamenlijk toont .

Die str_replaces zijn ook overbodig, je kan de variabelen ook zelf gebruiken.

Ik kan later vandaag even een opzetje maken voor een beter contactformulier.


Dat zou heel fijn zijn! Deze code heb ik een op een overgenomen dus ik heb ook geen idee hoe ik het zou moeten verbeteren.

Toevoeging op 13/03/2019 10:31:48:

Quote:
Ik kan later vandaag even een opzetje maken voor een beter contactformulier.


Ik heb nu iets anders gevonden, ik weet niet of dit beter is?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
$naar
= '[email protected]';
$onderwerp = 'Contactformulier';
 
// Header instellen, zodat nl2br() werkt
$headers = "MIME-version: 1.0\r\n";
$headers .= "content-type: text/html;charset=utf-8\r\n";
 
if(isset($_POST['submit'])) // Als het formulier verzonden is door op de verzend knop te klikken
{
    $name = trim($_POST['name']);
    $surname = trim($_POST['surname']);
    $companyname = trim($_POST['companyname']);
    $email = trim($_POST['email']);
    $bericht = trim($_POST['bericht']);
    $fout = false;
 
    if(empty($name))
    {

        print '<p>Helaas, het voornaam veld is verplicht maar is nu niet ingevuld!</p>';
        $fout = true;
    }

    if(empty($surname))
    {

        print '<p>Helaas, het achternaam veld is verplicht maar is nu niet ingevuld!</p>';
        $fout = true;
    }

    if(empty($companyname))
    {

        print '<p>Helaas, het bedrijfsnaam veld is verplicht maar is nu niet ingevuld!</p>';
        $fout = true;
    }

    if(empty($email))
    {

        print '<p>Helaas, het e-mail veld is verplicht maar is nu niet ingevuld!</p>';
        $fout = true;
    }

    if(!filter_var($email, FILTER_VALIDATE_EMAIL))
    {

        print '<p>Helaas, het email adres is niet correct!</p>';
        $fout = true;
    }

    if(empty($bericht))
    {

        print '<p>Helaas, het bericht veld is verplicht maar is nu niet ingvuld!</p>';
        $fout = true;
    }

 
    if($fout == false)
    {

        $headers .= 'From: ' . $name . ' ' . $surname . ' <' . $email . '>';
 
        if(mail($naar, $onderwerp, nl2br($bericht), $headers))
        {

            print '<p>Het bericht is succesvol verzonden!</p>';
        }

        else
        {
            print '<p>Helaas, er is wat fout gegaan tijdens het verzenden van het formulier.</p>';
        }
    }
}

?>


Het gaat hier ook nog niet goed. Ik krijg nu een mail met de naam, achternaam, e-mailadres en het bericht, alleen hoe zorg ik ervoor dat de bedrijfsnaam wel ergens vermeld wordt?

En ook hier krijg ik geen melding dat het formulier is verzonden.
 
- Ariën  -
Beheerder

- Ariën -

13/03/2019 11:17:44
Quote Anchor link
https://www.phphulp.nl/php/script/data-verwerking/contact-formulier/12/contactformulierphp/1419/ wordt ook veel gebruikt, merk ik. Het voorkomt ook een berichtenflood.
Gewijzigd op 13/03/2019 11:18:11 door - Ariën -
 
Marina Koster

Marina Koster

13/03/2019 13:30:28
Quote Anchor link
- Ariën - op 13/03/2019 11:17:44:
https://www.phphulp.nl/php/script/data-verwerking/contact-formulier/12/contactformulierphp/1419/ wordt ook veel gebruikt, merk ik. Het voorkomt ook een berichtenflood.


Daar staat ook een stukje html in met het formulier, maar ik heb mijn formulier op index.html staan. Hoe kan ik zorgen dat mijn formulier gebruikt wordt?

En na het verzenden wordt je gestuurd naar een bedanktpagina, maar is het mogelijk een bedankje te krijgen op de pagina waar het formulier staat? d.m.v. een pop-up? Dit had ik bij het vorige formulier wel als bij het e-mailadres een @ of . vergeten was.
 
- Ariën  -
Beheerder

- Ariën -

13/03/2019 13:36:49
Quote Anchor link
Je kan ook via de 'action' doorverwijzen naar dit formulier. Maar om welke site gaat het? Dan kunnen we even kijken wat de beste opzet is.

Popupjes zou ik afraden.
 
Marina Koster

Marina Koster

13/03/2019 13:45:54
Quote Anchor link
- Ariën - op 13/03/2019 13:36:49:
Je kan ook via de 'action' doorverwijzen naar dit formulier. Maar om welke site gaat het? Dan kunnen we even kijken wat de beste opzet is.

Popupjes zou ik afraden.


Ik ben bezig een site te vernieuwen, de nieuwe versie staat nog niet online.

Voor nu even:
http://www.partsfactory.com/test/index3.html
 
- Ariën  -
Beheerder

- Ariën -

13/03/2019 13:54:58
Quote Anchor link
Dan kan je het contactformulier prima gebruiken met het bestaande formulier, maar dan moet je het geen .html noemen, maar .php.
 
Marina Koster

Marina Koster

13/03/2019 14:00:13
Quote Anchor link
Bedoel je index3.html? Hoe moet ik dit combineren met de php van de link die je stuurde?
 
- Ariën  -
Beheerder

- Ariën -

13/03/2019 14:02:57
Quote Anchor link
Het formulier en de layout toepassen in je PHP-script. Zo kan je ook bijv. velden laten oplichten die niet of verkeerd ingevuld zijn. Of een melding onder een validatiemelding onder de velden laten tonen. Een stuk praktischer.
Gewijzigd op 13/03/2019 16:07:52 door - Ariën -
 
Marina Koster

Marina Koster

13/03/2019 16:07:55
Quote Anchor link
Ik heb het nu werkend, het formulier wordt verstuurd en ik krijg een melding op de plek van het formulier, dus dat is ook goed. Alleen verspringt de site na het verzenden weer naar het begin van de pagina. Is er een manier om te zorgen dat de site op #contact blijft staan na verzenden?

test site
 
- Ariën  -
Beheerder

- Ariën -

13/03/2019 16:22:08
Quote Anchor link
Is een bericht dat 'het versturen gelukt is' niet veel praktischer. Nu kom ik op de index uit, wat verwarrend is.
 
Marina Koster

Marina Koster

13/03/2019 16:27:47
Quote Anchor link
Dat kan, dit is alleen wat in die link stond die je stuurde.

Onderstaand is het laatste deel van die php, welk deel moet ik dan vervangen?
En is het dan beter het te openen in een nieuw tabblad of op de bestaande pagina en dan een knop om terug te keren naar de site?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
  if (mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers))
  {

      // zorg ervoor dat dezelfde persoon niet kan spammen
      $_SESSION['antiflood'] = time();
      
      echo '<h1>Het contactformulier is verzonden</h1>
      
      <p>Bedankt voor het invullen van het contactformulier. We zullen zo spoedig mogelijk contact met u opnemen.</p>'
;
  }

  else
  {
      echo '<h1>Het contactformulier is niet verzonden</h1>
      
      <p><b>Onze excuses.</b> Het contactformulier kon niet verzonden worden.</p>'
;
  }
}

?>
 
- Ariën  -
Beheerder

- Ariën -

13/03/2019 16:37:08
Quote Anchor link
Dan zou je een bericht moeten krijgen.
Je verwijst overigens gewoon naar /test/index.php. Dus daar moet die controle ook inzitten.
 
Marina Koster

Marina Koster

13/03/2019 16:41:35
Quote Anchor link
- Ariën - op 13/03/2019 16:37:08:
Dan zou je een bericht moeten krijgen.


Wat voor soort bericht bedoel je dan?

Ik heb overigens wel meerdere testen van het formulier ontvangen.

- Ariën - op 13/03/2019 16:37:08:
Je verwijst overigens gewoon naar /test/index.php. Dus daar moet die controle ook inzitten.

Welke controle bedoel je?

Excuses voor de vele vragen, ik ben echt nieuw met php.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.