Helpmij.nl
Helpmij.nl
Helpmij.nl

Quote

Weergeven resultaten 1 tot 13 van 13

Onderwerp: Contactform php html site werkt niet meer

  1. #1
    Mega Senior damnsharp's avatar
    Geregistreerd
    6 januari 2012
    Locatie
    Oss
    Vraag is opgelost

    Contactform php html site werkt niet meer

    Hoi,
    Bij een html website van klant komen de berichten ingevuld op het contactform niet meer aan.
    Dit gebeurde na verplaatsing site naar andere server bij webhosting bedrijf.
    Geen idee waarom ze niet meer aankomen. Het contactform inclusief Google v2 captcha lijken goed te werken. Krijg ook netjes bericht dat mail verzonden is (bestandje src\autoload.php wordt aangeroepen).
    Een test php bestandje dat mail verstuurd komt wel aan.

    Wat kan ik het beste doen om de fout op te sporen?
    Bedankt!

    php code test mail wat werkt:
    PHP Code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    <?php 
        ini_set( 'display_errors', 1 );
        error_reporting( E_ALL );
        $from = "emailtest@bedrijfsnaam.nl";
        $to = "info@mijnmailadres.nl";
        $subject = "PHP Mail Test script";
        $message = "This is a test to check the PHP Mail functionality";
        $headers = "From:" . $from;
        mail($to,$subject,$message, $headers);
        echo "Test email sent";
    ?>

    php code contactform:
    PHP Code:
    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
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    
    <?php
    date_default_timezone_set('Europe/Amsterdam');
     
    if (isset($_POST['submit'])) {
     
        // Hieronder zelf invullen voor email
        $website_naam = 'BEDRIJFSNAAM BV';
        $emailkruse = "info@MIJNMAILADRES.nl";     // Emailadres waarnaar de mail verzonden wordt
        $onderwerp  = "Bericht van de website BEDRIJFSNAAM"; // Onderwerp van de email
        $nextpage   = "verzonden.php";          // Laat deze pagina als de mail verzonden is
        $faultpage = "niet-verzonden.php"; //Laat deze pagina als de mail verzonden is.
        $emailreply = "noreply@BEDRIJFSNAAM.nl";     // Van emailadres + Beantwoorden aan emailadres
        $from = $_POST['email'];
        // Hieronder zelf invullen voor reCaptcha v2 
        $siteKey    = "xxxxxxxx";
        $secret     = "xxxxxxxx";
        $lang       = "nl";
     
        
        // De headers samenstellen
        $headers     = 'From: ' . $website_naam . ' <' . $from . '>' . "\r\n";
        $headers    .= 'Reply-To: ' . $website_naam . ' <' . $from . '>' . "\r\n";
        $headers    .= 'Return-Path: Mail-Error <' . $from . '>' . "\r\n";
        $headers    .= ($bcc_emailadres != '') ? 'Bcc: ' . $bcc_emailadres . "\r\n" : '';
        $headers    .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
        $headers    .= 'X-Priority: Normal' . "\r\n";
        $headers    .= ($html) ? 'MIME-Version: 1.0' . "\r\n" : '';
        $headers    .= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . "\r\n" : '';
        
        // hier je bercicht samenstellen
        $postcode = $_POST['pc1'] . " " . strtoupper($_POST['pc2']);
        $bericht  = "Het volgende bericht is binnengekomen op de website op ".date("d-m-Y H:i:s")."\r\n".
                    "\r\n".
                    "Bedrijf:         ".$_POST['bedrijf']."\r\n".
                    "Contactpersoon:  ".$_POST['aanhef']." ".$_POST['naam']."\r\n".
                    "Adres:           ".$_POST['adres']."\r\n".
                    "                 ".$postcode." ".strtoupper($_POST['plaats'])."\r\n".
                    "                 ".$_POST['land']."\r\n".
                    "Telefoonnummer:  ".$_POST['telnr']."\r\n".
                    "Emailadres:      ".$_POST['email']."\r\n".
                    "\r\n".
                    "Zoek contact ".strtolower($_POST['contact'])."\r\n".
                    "\r\n".
                    "*****************************************************************************\r\n".
                    "Opmerkingen:\r\n".
                    "\r\n".
                    $_POST['opmerkingen']."\r\n".
                    "*****************************************************************************"; // laatste regel geen \r\n
     
        // reCaptcha token uit formulier
        $capInput = (isset($_POST['g-recaptcha-response'])) ? $_POST['g-recaptcha-response'] : '';
        $hasToken = (strlen($capInput) == 0) ? false : true;
     
        // reCaptcha library
        require_once __DIR__ . '/src/autoload.php';
     
        // Nieuwe instance van de ReCaptcha service
        $recaptcha = new \ReCaptcha\ReCaptcha($secret);
     
        // Mogelijk is file_get_contents('url') geblokkeerd bij jouw provider.
        // Een alsternatief is fsockopen(). Haal bovenstaande $recaptcha = ... weg en gebruik volgende regel.
        //$recaptcha = new \ReCaptcha\ReCaptcha($secret, new \ReCaptcha\RequestMethod\SocketPost());
     
        // Verificatie van de response waarbij ook de bezoekers IP wordt gecontroleerd
        $resp = $recaptcha->setExpectedHostname($_SERVER['SERVER_NAME'])
                          ->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']);
        
        // Controleer de response van $recaptcha->verify
        if ($resp->isSuccess()) {
            $capVerify = true;  // Verificatie gelukt
        } else {
            $capVerify = false; // Verificatie is niet gelukt
        }
     
        $mailsuccess = false;
        if ($hasToken === true && $capVerify === true) {
            $mailsuccess = mail($emailkruse, $onderwerp, $bericht, $headers);
        }
        // $nextpage is bedankpagina. $faultpage is bericht 'email niet verstuurd'
        if ($mailsuccess) include($nextpage); else include($faultpage);
        
     
    } else {
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     
    <head>
      <title>BEDRIJFSNAAM | Contactformulier Nederlands</title>
      <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
     
      <!-- **** layout stylesheet **** -->
      <link rel="stylesheet" type="text/css" href="css/style/style.css" />
     
      <!-- **** colour scheme stylesheet **** -->
      <link rel="stylesheet" type="text/css" href="css/style/colour.css" />
    </head>
     
    <body>
      <div id="main">
        <div id="logo">
        </div>
        <div id="menu">
          <ul>
            <li><a href="index_nl3.php">Home</a></li>
            <li><a href="technischadvies.php">Technisch advies</a></li>
            <li><a id="selected" href="contact_nl.php">Contact</a></li>
            <li><a href="route.php">Route</a></li>
            </ul>
        </div>
        <div id="content">
          <div id="column1">
            <?php include("include/vlag.php"); ?>
            <?php include("nieuws/laatste.php"); ?>
            <?php include("nieuws/archief.php"); ?>
            <?php include("nieuws/links.php"); ?>
            <?php include("nieuws/beursbericht.php"); ?>
          </div>
          <div id="column2">
                    
            <div><p></p>
              <p><span class="left"><img src="images/LOGO.png" alt="Logo" width="193" height="107" /></span></p>
              <h2>BEDRIJFSNAAM BV</h2>
                  
            </div>
            <!-- **** INSERT PAGE CONTENT HERE **** -->
           
           <form name="form1" id="form1" method="post" action="">
            <table border=0 bordercolor=#ffffff>
                <tr>
                    <td width="138"><span class="story">Bedrijfsnaam</span></td>
                    <td width="15">:</td>
                    <td><input type="text" maxlength="50" size="45" name="bedrijf" /></td>
                </tr>
                <tr>
                    <td><span class="story">Aanhef</span></td>
                    <td width="15">:</td>
                    <td><select name="aanhef">
                      <option value="Dhr.">De Heer</option>
                      <option value="Mevr.">Mevrouw</option>
                    </select></td>
              </tr>
                <tr>
                    <td><span class="story">Naam Contactpersoon</span></td>
                    <td width="15">:</td>
                    <td><input type="text" maxlength="50" size="45" name="naam" /></td>
                </tr>
                <tr>
                    <td><span class="story">Adres</span></td>
                    <td width="15">:</td>
                    <td><input type="text" maxlength="50" size="45" name="adres" /></td>
                </tr>
                <tr>
                    <td><span class="story">Postcode</span></td>
                    <td width="15">:</td>
                    <td>
                        <input type="text" maxlength="4" size="8" name="pc1" />
                        <input type="text" maxlength="2" size="4" name="pc2" />             </td>
                </tr>
                <tr>
                    <td><span class="story">Plaats</span></td>
                    <td width="15">:</td>
                    <td><input type="text" maxlength="50" size="45" name="plaats" /></td>
                </tr>
                <tr>
                    <td><span class="story">Land</span></td>
                    <td width="15">:</td>
                    <td> 
                        <select name="land">
                        <?php
                            include("include/inc.landen.php");
                            foreach($countries as $land){
                                echo "<option value=\"".$land."\">".$land."</option>\n";
                            }
                        ?>
                        </select>               </td>
                </tr>
                <tr>
                    <td><span class="story">Telefoonnummer</span></td>
                    <td width="15">:</td>
                    <td><input type="text" maxlength="50" size="45" name="telnr" /></td>
                </tr>
                <tr>
                    <td><span class="story">E-mail adres</span></td>
                    <td width="15">:</td>
                    <td><input type="text" maxlength="50" size="45" name="email" /></td>
                </tr>
                <tr>
                    <td valign="top"><span class="story">A.u.b. neem contact</span></td>
                    <td width="15" valign="top">:</td> 
                    <td><input type="radio" name="contact" value="Via email" id="mail" checked /><span class="story"><label for="mail">via email<br>
    </label>
                    </span><input type="radio" name="contact" value="Via telefoon" id="tel" /><span class="story"><label for="tel">via telefoon </label>
                    </span></td>
                </tr>
                <tr>
                    <td valign=top><span class="story">Opmerkingen</span></td>
                    <td valign=top width="15">:</td>
                    <td><textarea name="opmerkingen" cols="47" rows="5"></textarea></td>
                </tr>
                <tr>
                    <td colspan="2"></td>
                    <td>
                    <!--google recaptcha toegevoegd door DV-->
                    <div class="g-recaptcha" data-sitekey="XXXXXXXXX"></div>
                    <script src='https://www.google.com/recaptcha/api.js?hl=nl'></script>
                        
                        <input name="submit" type="submit" value="Verstuur">&nbsp;
                        <input type="reset" value="Reset">              </td>
                </tr>
            </table>
          <br/>
        </form>
              
            <blockquote>
            </blockquote>
          </div>
        </div>
        <div id="footer">
        </div>
      </div>
     
    </body>
    </html>
     
    <?php
    }
    ?>

  2. #2
    Giga Senior PHP4U's avatar
    Geregistreerd
    3 augustus 2014
    PHP Code:
    1
    2
    3
    4
    
    <?php
        mail($to,$subject,$message, $headers);
        echo "Test email sent";
    ?>
    Misschien moet je maar niet zomaar gokken dat het gelukt is, maar controleren of het true/false is.
    Voor hetzelde geldt triggert dit een error, die in de configuratie ingesteld is op: Laat geen errors zien.

    Trouwens hoort 'from' je eigen mailadres te zijn. En vaak eentje die bij je webhosting bekend is.
    Ik vermoed dat je hosting daar nu scherper op zal letten, en waardoor het nu dus fout gaat.
    Laatst aangepast door PHP4U : 17 februari 2020 om 13:46

  3. #3
    Mega Senior damnsharp's avatar
    Geregistreerd
    6 januari 2012
    Locatie
    Oss
    Hoi @php4u, bedankt voor je snelle reactie. Fijn.
    Ik begrijp dat het goed is om niet te gokken, maar ik meen juist dat er een check in staat. Klopt die niet?
    Wat moet ik veranderen?

  4. #4
    Giga Senior PHP4U's avatar
    Geregistreerd
    3 augustus 2014
    Ik zie geen controle met een if-je om je mail()-functie.
    Ik zeg niet dat dit de oplossing is, maar het maakt je code wel robuuster.
    Ik neem aan dat je weet hoe een if-je werkt?

    het echte probleem zit hem in je from-header die je niet zelf mag laten verzinnen door iemand ;-)
    Laatst aangepast door PHP4U : 17 februari 2020 om 13:56

  5. #5
    Mega Senior damnsharp's avatar
    Geregistreerd
    6 januari 2012
    Locatie
    Oss
    Ah zo ik snap het php4u, daar moet ik wel uitkomen.

    Hostingbedrijf heeft ook bericht gestuurd, ze opperen dat het met nieuwe PHP7 versie te maken heeft...

  6. #6
    Mega Senior damnsharp's avatar
    Geregistreerd
    6 januari 2012
    Locatie
    Oss
    Nog een aanvulling @php4u, de code uit het testmail.php is goed overigens want daarvan komt de mail wel aan.

    Het gaat me echt om de uitgebreide code van het contactformulier. Die mail komt niet meer aan.
    Bedoel je dat daar ook geen goede check in staat?

  7. #7
    Giga Senior PHP4U's avatar
    Geregistreerd
    3 augustus 2014
    In je eerste test-scriptje gebruik je (vermoedelijk) het vaste mailadres (domein) die ook bij je hosting bekend is, klopt dat?

    In je andere script, welke je in productie gebruikt, laat je de gebruiker de FROM zelf bepalen. Naast dat dit gevaarlijk is (header injection! == spam versturen door anderen), moet je dit ook vastzetten op jouw eigen mailadres. De enige header die aanpasbaar moet zijn is Reply-To, maar ook hier moet er ervoor zorgen dat hier enkel een mailadres ingevoerd wordt, welke je ook gecontroleerd hebt qua invoer.

    Verder staat het feit dat het nu niet meer werkt los van PHP 7. Maar misschien is het PHP 7 platform bij je hosting zelf wat stricter ingesteld.

    Dus:
    - Bouw bij voorkeur een goede check in, en vermeld aan de gebruiker dat de mail verstuurd is, of in het andere geval dat deze juist niet verstuurd vanwege een technisch probleem bij jouw site met een nostalgisch linkje naar jouw e-maildres .
    - Zet je FROM-header vast op jouw eigen mailadres, en laat de gebruiker Reply-To aanpassen, en valideer deze of het een mailadres is.
    Laatst aangepast door PHP4U : 17 februari 2020 om 14:15

  8. #8
    Mega Senior damnsharp's avatar
    Geregistreerd
    6 januari 2012
    Locatie
    Oss
    Ik snap het, daar zal ik eerst aan gaan werken en misschien verhelpt dat het probleem. Kom ik nog wat tegen zal ik het hier vermelden.
    Dank je!

  9. #9
    Giga Senior PHP4U's avatar
    Geregistreerd
    3 augustus 2014
    Thanks. Hopelijk lukt het!

  10. #10
    Mega Senior damnsharp's avatar
    Geregistreerd
    6 januari 2012
    Locatie
    Oss
    Hoi, ik heb regel 13 aangepast van
    HTML Code:
    1
    
    //$from = $_POST['email'];
    naar
    Code:
        $from = "info@bedrijfsnaam.nl";
    en nu komt de mail verzonden met het contactform komt aan!

    Nu de rest nog beter opmaken, maar met je hulp is het in ieder geval gelukt dus zet ik de vraag op opgelost :-)

  11. #11
    Giga Senior PHP4U's avatar
    Geregistreerd
    3 augustus 2014
    Ik neem aan dat je uiteindelijk wel je echte mailadres van je domein hebt ingevoerd?
    Fijn dat het nu werkt.

  12. #12
    Moderator bron's avatar
    Geregistreerd
    13 augustus 2013
    Locatie
    Voorburg
    Dit is o.a. een verschil tussen smtp en mail(). Bij smtp zijn "from" (uit contactformulier) en "authenticatie" (bij host provider) gescheiden.
    De kans dat de host provider het verzenden hiermee niet toelaat is een stuk kleiner maar toch zijn er host providers die zelfs dit niet toelaten
    Laatst aangepast door bron : 17 februari 2020 om 17:11
    Bestaande- en nieuwe websites op smartphone, tablet en pc.

  13. #13
    Mega Senior damnsharp's avatar
    Geregistreerd
    6 januari 2012
    Locatie
    Oss
    @php4u natuurlijk ;-) Bij helpmij anonimiseer ik altijd code.

    @bron dank je wel voor je bijdrage!

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl

Regels
Help

Helpmij.nl en business

Partners
Sponsoren