PHP form verstuurt niets en geeft geen foutmelding

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mohamed nvt

Mohamed nvt

14/03/2022 23:11:28
Quote Anchor link
Graag jullie hulp!
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?php
error_reporting(E_ALL);
error_reporting(-1);
ini_set('error_reporting', E_ALL);

$vnaamerr = $achternaamerr = $emailerr = $uwaanboderr = "";
$vnaam = $achternaam = $email = $uwaanbod = $message = "";

if($_SERVER['REQUEST_METHOD'] == 'POST') {
  if (empty($_POST['vnaam'])) {
    $vnaamerr = "Voornaam mag niet leeg zijn!";
  }
else {
    $vnaam = test_input($_POST['vnaam']);
      if (!preg_match("/^[a-zA-Z-' ]*$/",$vnaam)) {
        $vnaamerr= "Een voornaam mag alleen letters en spacties bevatten";
      }
  }

  
  if (empty($_POST['achternaam'])) {
    $achternaamerr = "Achternaam mag niet leeg zijn!";
  }
else {
    $achternaam = test_input($_POST['achternaam']);
    if(!preg_match("/^[a-zA-Z-' ]*$/",$achternaam)) {
      $achternaamerr= "Een achternaam mag alleen letters en spacties bevatten";
    }
  }

  
  if (empty($_POST['email'])) {
    $emailerr = "Mailadres mag niet leeg zijn!";
  }
else {
    $email =test_input($_POST['email']);
      if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $emailerr = "Het format van het mailadres is niet correct!";
      }
  }

  
  if (empty($_POST['uwaanbod'])) {
    $uwaanboderr = "Aanbod mag niet leeg zijn!";
  }
else {
    $uwaanbod = test_input($_POST['uwaanbod']);
  }

  
$message =test_input($_POST['toelichting']);
mail($to,$message,$body);

}
function
test_input($data){
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}



$to = "**knip**";
$body = "";
$body .="Van: ".$vnaam."\r\n";
$body .="Achternaam: ".$achternaam."\r\n";
$body .="Email: ".$email."\r\n";
$body .="Aanbod: ".$uwaanbod."\r\n";
$body .="Toelichting: ".$message."\r\n";



?>

<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="css/styles.css" media="all">
  <title>CryptoFit</title>
</head>
<body>
<div class="container">
  <h1>Dit domeinnaam staat te koop</h1>
  <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="POST" class="form">
    <div class="form-group">
        <label for="vnaam" class="form-label">Voornaam</label>
        <input type="text" class="form-control" id="vnaam" name="vnaam" tabindex="1" value="<?php if (isset($vnaam)) echo $vnaam; ?>">
        <span class="error">* <?php echo $vnaamerr; ?></span>
    </div>
    <div class="form-group">
        <label for="achternaam" class="form-label">Achternaam</label>
        <input type="text" class="form-control" id="achternaam" name="achternaam" tabindex="2" value="<?php if (isset($achternaam)) echo $achternaam; ?>">
        <span class="error">* <?php echo $achternaamerr; ?></span>
    </div>
    <div class="form-group">
        <label for="email" class="form-label">Uw mailadres</label>
        <input type="email" class="form-control" id="email" name="email" tabindex="3" value="<?php if (isset($email)) echo $email; ?>">
        <span class="error">* <?php echo $emailerr; ?></span>
      </div>
    <div class="form-group">
        <label for="uwaanbod" class="form-label">Uw aanbod</label>
        <input type="number" class="form-control" id="uwaanbod" name="uwaanbod" tabindex="4" value="<?php if (isset($uwaanbod)) echo $uwaanbod; ?>">
        <span class="error">* <?php echo $uwaanboderr; ?></span>
      </div>
      <div class="form-group">
        <label for="toelichting" class="form-label">Toelichting</label>
        <textarea class="form-control" id="toelichting" name="toelichting" tabindex="5" row="4" cols="50"></textarea>
      </div>
      <div>
        <button type="submit" class="btn" value="Verzenden">Verzenden</button>
      </div>
  </form>
</div>
  
</body>
</html>


Edit:
Mail-adres verwijderd. Je wilt vast geen spam en daarnaast niet relevant om hier te noemen.
Gewijzigd op 14/03/2022 23:31:45 door - Ariën -
 
PHP hulp

PHP hulp

16/08/2022 08:49:34
 
- Ariën  -
Beheerder

- Ariën -

14/03/2022 23:25:21
Quote Anchor link
Ik zie geen tekst die je laat zien als het gelukt is.

- met welke reden doe je stripslashes?
Gewijzigd op 14/03/2022 23:32:24 door - Ariën -
 
Ozzie PHP

Ozzie PHP

15/03/2022 01:32:00
Quote Anchor link
Kijk eens goed naar je volgorde.

Je verstuurt eerst je e-mail en daarna ga je pas $to en $body (vermoedelijk $headers) instellen.

Is dat logisch denk je?

Dat is zoiets als een brief op de post doen en pas naderhand het adres erop schrijven ... beetje lastig lijkt me ;-)
 
Frank Nietbelangrijk

Frank Nietbelangrijk

15/03/2022 03:13:45
Quote Anchor link
Mohamed bedoelt denk ik dat er geen mail verstuurd wordt of iig geen mail ontvangen wordt.

de PHP mail functie is slechts een doorgeef luik naar de sendmail applicatie die dan naast PHP op dezelfde machine moet draaien. Deze applicatie moet vervolgens geïnstalleerd zijn en op de juiste wijze geconfigureerd zijn. Echter laten meer en meer providers de mailfunctie bewust buiten werking vanwege het feit dat de functie maar al te vaak gebruikt wordt om te spammen.

Veel hosters bieden wel een SMTP server om je mail mee te versturen. Zoek eens in de FAQ van je hosting over de mogelijkheden en de configuratie.

Om emails te versturen over SMTP met PHP kun je het beste gebruik maken van library als PHPMailer

https://github.com/PHPMailer/PHPMailer
 
Ozzie PHP

Ozzie PHP

15/03/2022 09:45:51
Quote Anchor link
>> Mohamed bedoelt denk ik dat er geen mail verstuurd wordt of iig geen mail ontvangen wordt.

Dat lijkt me vrij logisch als er van tevoren geen ontvanger ($to) is ingesteld.
 
- Ariën  -
Beheerder

- Ariën -

15/03/2022 11:01:15
Quote Anchor link
Ikzelf raad ook altijd aan om phpMailer te gebruiken.

Als je de standaard mail()-functie gebruikt raad ik altijd aan om met een if-constructie om te controleren of de functie wel werkt. Het kan zijn dat de hostingprovider de functie uit heeft gezet (geeft false terug), of een false geeft vanwege een verkeerde parameter (bijv. een afwijkende domein opgegeven als afzender).

Schotel de gebruiker altijd een melding voor of de mail verstuurd is of juist niet 'vanwege technische problemen aan de serverkant'. Maar nogmaals: Met mail() kan je nooit weten of de mail aangekomen is. Met phpMailer kan je de route naar het postkantoor veel makkelijker debuggen.
 
Ivo P

Ivo P

16/03/2022 09:11:56
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
      if (!preg_match("/^[a-zA-Z-' ]*$/",$vnaam)) {
        $vnaamerr= "Een voornaam mag alleen letters en spacties bevatten";
      }

?>


Hoezo alleen "letters" en spaties? Je geeft er zelf al een ' bij en een - (waarbij de - liefst als laatste geplaatst wordt).
Maar iemand met een ö in de naam of een é, ç, ñ of een ð Die hebben pech? (En de zoon van Elon Musk helemaal natuurlijk)

Want vreemd genoeg accepteer je in het Aanbod-veld weer alle invoer. (tip: ik zou html proberen te voorkomen en daarom htmlspecialchars() gebruiken bij het opbouwen van de body van de email.
Draai het eens om: waarom wil je bepaalde tekens _niet_ in de invoer hebben, en waarom dan wel niet?
En filter dan op die tekens.
 



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.