PHP form alles werkt maar geen mail

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Tom Reitsema

Tom Reitsema

21/12/2012 20:52:46
Quote Anchor link
hallo,

ik heb een formulier gemaakt met .php voor op mijn website zodat mensen vragen kunnen stellen en dat deze vraag dan wordt verstuurd naar mijn mail maar het formulier werkt maar ik krijg geen mail binnen in mijn inbox!

wat moet ik doen of wat heb ik fout gedaan?


mvg tom
 
PHP hulp

PHP hulp

30/07/2021 14:48:23
 
- Ariën -
Beheerder

- Ariën -

21/12/2012 20:59:32
Quote Anchor link
De relevante code tonen...
 
Tom Reitsema

Tom Reitsema

21/12/2012 21:00:54
Quote Anchor link
p
Gewijzigd op 21/12/2012 21:05:55 door Tom Reitsema
 
Php knipper

php knipper

21/12/2012 21:06:20
Quote Anchor link
dat is niet de code die -Aar- bedoeld.
Ze bedoeld de code die het formulier verstuurd.
 
Tom Reitsema

Tom Reitsema

21/12/2012 21:08:20
Quote Anchor link
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
<?php
    if($_SERVER['REQUEST_METHOD']=="POST")
    {

    if(strlen($_POST['name']) == 0)
    {
$error_msg ="- Voer astublieft uw naam in.<br/>"; }
    if(!ereg("^[_a-zA-Z0-9-]+(\.[*@([a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $_POST['uwemail']))
    {
$error_msg .="- Voer astublieft een geldig email adres in.<br/>"; }
    if(strlen($_POST['field']) ==0)
    {
$error_msg .="- Laat aub weten wat je aan ons wilt vragen.<br/>"; }
    
    if(!empty($error_msg))
    {

    //Een van de velden werd niet goed ingevuld
    echo "<b>Contact webmaster kon niet worden uitgevoerd door volgende redenen:</b><br><br>";
    echo $error_msg;
    echo "<br>Klik alstublieft op <a href=javascript:history.back(1)>Ga terug</a> en vul alle velden in.<br><br>";
    }

    else
    {
    $recipient = "tomreitsema@hotmail.com"; //Het email adres van de persoon die vragen moet ontvangen.
    $subject = $_POST['sub']; //Subject van de mail.
    $header = "From: " . $_POST['uwemail'] . "\n";
    $mail_body = "Contact script werd op " . date("d-m-Y") . " om " . date("H:i") . " uur uitgevoerd.\n";
    $mail_body .= "De volgende persoon vulde het contact formulier in:\n\n";
    $mail_body .= "Naam: " . $_POST['name'] . "\n";
    $mail_body .= "E-mailadres: " . $_POST['uwemail'] . "\n\n";
    $mail_body .= "Bericht:\n";
    $mail_body .= $_POST['field'];
    $mail_body .= "\n\n -- Einde van het contact bericht --";
    mail($recipient, $subject, $mail_body, $header);
    echo "<b>Uw bericht is succesvol verzonden</b><br/>Er zal zo spoedig mogelijk contact met u opgenomen worden.</b><br/>";
    echo "<a class=\"main\" href='javascript:history.back(1)'>Ga terug</a>";
    }
    }

    else
    {
    ?>


<form action="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_SERVER['PHP_SELF']; ?>
" method="POST" name="contact">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><br>
<table width="80%" height="155" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td height="2">&nbsp;</td>
<td height="2"><font size="1"><strong>(Velden met een * zijn verplicht)</strong></font></td>
<td height="2">&nbsp;</td>
</tr>
<tr>
<td height="2">Naam : </td>
<td height="2" colspan="2"> <input type="text" name="name" size="20">
<font size="2">* </font></td>
</tr>
<tr>
<td height="2">Email adres :</td>
<td height="2" colspan="2"> <input type="text" name="uwemail" size="20">
<font size="2"> * </font></td>
</tr>
<tr>
<td width="321" class="Kleiner"> Subject :</td>
<td colspan="2"> <input type="text" name="sub" size="20"> </td>
</tr>
<tr>
<td width="321" class="Kleiner">Vraag :</td>
<td width="216" rowspan="2"> <textarea name="field" wrap="VIRTUAL" cols="20"></textarea>
<font size="2">&nbsp; </font></td>
<td width="257"><font size="2">*</font></td>
</tr>
<tr>
<td width="321" class="Kleiner">&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="321">&nbsp;</td>
<td colspan="2"> <div align="left">
<input type="Submit" name="Submit" value="Verzenden">
</div></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%">
<tr>
<td>&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>
</form>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    }
    ?>
 
Ozzie PHP

Ozzie PHP

21/12/2012 21:13:27
Quote Anchor link
Php knipper op 21/12/2012 21:06:20:
dat is niet de code die -Aar- bedoeld.
Ze bedoeld de code die het formulier verstuurd.

Lol, Aar is een hij :)
 
Tom Reitsema

Tom Reitsema

21/12/2012 21:15:54
Quote Anchor link
welke code dit is de enige code die ik heb :S
 
- Ariën -
Beheerder

- Ariën -

21/12/2012 21:23:07
Quote Anchor link
Dat is de code ja. Kan je deze even tussen [code] en [/code]-tags zetten a.u.b?

In je code zie ik staan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
mail($recipient, $subject, $mail_body, $header);
    echo "<b>Uw bericht is succesvol verzonden</b><br/>Er zal zo spoedig mogelijk contact met u opgenomen worden.</b><br/>";

Je gaat er dus zelf maar vanuit dat het gelukt is? het is netter om met een if-statement om je mail() functie een controle te maken of het wel of niet gelukt is op de server. Dit zegt natuurlijk niks of het wel of niet verzonden is, maar het geeft wel aan of de server tot zover het mailen ondersteunt.
Gewijzigd op 21/12/2012 21:24:59 door - Ariën -
 
Tom Reitsema

Tom Reitsema

21/12/2012 21:25:22
Quote Anchor link
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
  
 <?php
    if($_SERVER['REQUEST_METHOD']=="POST")
    {

    if(strlen($_POST['name']) == 0)
    {
$error_msg ="- Voer astublieft uw naam in.<br/>"; }
    if(!ereg("^[_a-zA-Z0-9-]+(\.[*@([a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $_POST['uwemail']))
    {
$error_msg .="- Voer astublieft een geldig email adres in.<br/>"; }
    if(strlen($_POST['field']) ==0)
    {
$error_msg .="- Laat aub weten wat je aan ons wilt vragen.<br/>"; }
    
    if(!empty($error_msg))
    {

    //Een van de velden werd niet goed ingevuld
    echo "<b>Contact webmaster kon niet worden uitgevoerd door volgende redenen:</b><br><br>";
    echo $error_msg;
    echo "<br>Klik alstublieft op <a href=javascript:history.back(1)>Ga terug</a> en vul alle velden in.<br><br>";
    }

    else
    {
    $recipient = "tomreitsema@hotmail.com"; //Het email adres van de persoon die vragen moet ontvangen.
    $subject = $_POST['sub']; //Subject van de mail.
    $header = "From: " . $_POST['uwemail'] . "\n";
    $mail_body = "Contact script werd op " . date("d-m-Y") . " om " . date("H:i") . " uur uitgevoerd.\n";
    $mail_body .= "De volgende persoon vulde het contact formulier in:\n\n";
    $mail_body .= "Naam: " . $_POST['name'] . "\n";
    $mail_body .= "E-mailadres: " . $_POST['uwemail'] . "\n\n";
    $mail_body .= "Bericht:\n";
    $mail_body .= $_POST['field'];
    $mail_body .= "\n\n -- Einde van het contact bericht --";
    mail($recipient, $subject, $mail_body, $header);
    echo "<b>Uw bericht is succesvol verzonden</b><br/>Er zal zo spoedig mogelijk contact met u opgenomen worden.</b><br/>";
    echo "<a class=\"main\" href='javascript:history.back(1)'>Ga terug</a>";
    }
    }

    else
    {
    ?>

    
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" name="contact">
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td><br>
    <table width="80%" height="155" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
    <td height="2">&nbsp;</td>
    <td height="2"><font size="1"><strong>(Velden met een * zijn verplicht)</strong></font></td>
    <td height="2">&nbsp;</td>
    </tr>
    <tr>
    <td height="2">Naam : </td>
    <td height="2" colspan="2"> <input type="text" name="name" size="20">
    <font size="2">* </font></td>
    </tr>
    <tr>
    <td height="2">Email adres :</td>
    <td height="2" colspan="2"> <input type="text" name="uwemail" size="20">
    <font size="2"> * </font></td>
    </tr>
    <tr>
    <td width="321" class="Kleiner"> Subject :</td>
    <td colspan="2"> <input type="text" name="sub" size="20"> </td>
    </tr>
    <tr>
    <td width="321" class="Kleiner">Vraag :</td>
    <td width="216" rowspan="2"> <textarea name="field" wrap="VIRTUAL" cols="20"></textarea>
    <font size="2">&nbsp; </font></td>
    <td width="257"><font size="2">*</font></td>
    </tr>
    <tr>
    <td width="321" class="Kleiner">&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
    <tr>
    <td width="321">&nbsp;</td>
    <td colspan="2"> <div align="left">
    <input type="Submit" name="Submit" value="Verzenden">
    </div></td>
    </tr>
    </table>
    <table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%">
    <tr>
    <td>&nbsp;</td>
    </tr>
    </table>
    </td>
    </tr>
    </table>
    </form>
    
    <?php
    }
    ?>
 
Obelix Idefix

Obelix Idefix

21/12/2012 21:28:52
Quote Anchor link
Klik in je code eens op ereg
Je zult dan zien dat dit verouderd is / komt te vervallen.

Haal je mailadres uit je code ;-)

Beveilig je mailbericht; neem niet zonder beveiliging de invoer via $_POST waarden over.
Wordt de lus met het e-mailen wel doorlopen?
Gebruik liever phpmailer of swiftmailer (om niet het wiel opnieuw uit te vinden en je geen zorgen te hoeven maken over allerlei instellen van de mailfunctie van php).

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
    echo "<a class=\"main\" href='javascript:history.back(1)'>Ga terug</a>";
    }
    }

Gebruik bij php (echo) bij voorkeur ' en dan in HTML ". Scheelt je regelmatig escapen. In bovenstaande code ben je sowieso inconsequent en gebruik je voor HTML eerst " en daarna '.
Zorg voor duidelijkheid in je script. In bovenstaand voorbeeld heb je 2x een } onder elkaar staan. Welke hoort waarbij? Zorg mbv inspringen dat je dit direct kunt zien. Zie je ook veel sneller of je elke { afsluit met een }

[code[$_SERVER['PHP_SELF'] wordt als onveilig gezien. Laat dan liever leeg.
http://www.scriptorama.nl/security/tips-veiligere-site-phpself

Het gebruik van een table is niet echt meer van deze tijd voor een formulier.
En waarom plaats je een table in een table?
Gewijzigd op 21/12/2012 21:30:03 door Obelix Idefix
 
Tom Reitsema

Tom Reitsema

21/12/2012 21:40:36
Quote Anchor link
ik heb de code van iemand anders
 
Obelix Idefix

Obelix Idefix

21/12/2012 22:03:23
Quote Anchor link
Tom Reitsema op 21/12/2012 20:52:46:
ik heb een formulier gemaakt met .php voor op mijn website


Tom Reitsema op 21/12/2012 21:40:36:
ik heb de code van iemand anders


Of het script van jou is of copy/paste vind ik niet zo spannend.
Jij wilt de code gaan gebruiken; ik probeer je op een aantal zaken te wijzen.
Mogelijk/vermoedelijk is $header onvolledig. Daarom de tip om voor mailen phpmailer of swiftmailer te gebruiken.

Obelix en Idefix op 21/12/2012 21:28:52:
Haal je mailadres uit de code ;-)
Gewijzigd op 21/12/2012 22:07:58 door Obelix Idefix
 
- SanThe -

- SanThe -

22/12/2012 00:05:59
Quote Anchor link
De function ereg() is antiek.
Quote:
Warning

This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.


De mailheaders zijn niet goed.
 
Jack maessen

jack maessen

22/12/2012 13:33:27
Quote Anchor link
ik heb jouw script getest op mijn server en het werkt gewoon hoor (afgezien van de ereg error)
heb je je mail instellingen in de php.ini wel goed staan?
 
Tom Reitsema

Tom Reitsema

22/12/2012 14:02:12
Quote Anchor link
ik heb nog niks ingesteld in php.ini :S
 
Jack maessen

jack maessen

22/12/2012 14:15:27
Quote Anchor link
halverwege ergens in je php.ini staan deze regels:

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = smtp.ziggo.nl
; http://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = jouw@mail.nl

Ik gebruik het smtp relay van ziggo
jij dient het van jouw provider te gebruiken

Vergeet daarna niet je webserver te rebooten!
 
Obelix Idefix

Obelix Idefix

22/12/2012 20:39:06
Quote Anchor link
Als je host bij een hostingbedrijf of een gratis host/domein (zoals woelmuis) heb je volgens mij geen toegang tot je php.ini en kun je je webserver ook niet rebooten.
 
Jack maessen

jack maessen

22/12/2012 21:34:25
Quote Anchor link
terechte opmerking....ik was er gemakshalve vanuit gegaan dat tom de webserver zelf draaide
 
Tom Reitsema

Tom Reitsema

23/12/2012 00:05:59
Quote Anchor link
Ik run mijn eigen server
 
Jack maessen

jack maessen

23/12/2012 17:17:45
Quote Anchor link
is het nu gelukt dan? werkt je mailfunctie?
 
Tom Reitsema

Tom Reitsema

23/12/2012 18:58:21
Quote Anchor link
Nee ik post straks mijn php.ini
 

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.