conact formulier werkend krijgen

Status
Niet open voor verdere reacties.
PHP:
<?php
session_start(); // zorg ervoor dat session_start ALTIJD binnen PHP bovenaan ALLES van je pagina staat, anders werkt het niet!
ini_set ("display_errors", 1);
error_reporting(E_ALL);
?>
<!-- hier jouw site -->

<?php
include 'PHPmailer/class.phpmailer.php';
include 'PHPmailer/class.smtp.php';

// Hier staan de instellingen die je zelf naar eigen wens kan aanpassen.
$to = "info@stuntenmetplinten.nl";   // Hier het email adres waarnaar verstuurd word.
$headers = "Lorem Ipsum"; // De kop (wordt niet gebruikt, foutje van je hostingprovider die dit geprogrammeerd heeft)

// Je credentials voor het inloggen.
$user ='mail@send.stuntenmetplinten.nl';
$passw ='hier moet je wachtwoord komen';

// INSTELLINGEN KLAAR!

function sendMail ($to, $subject, $message, $headers){
    $mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
    $mail->IsSMTP(); // telling the class to use SMTP
    
    try {
        global $user;  // Uw gebruikersnaam voor SMTP
        global $passw; // Uw wachtwoord voor bovenstaande
        
        $mail->SMTPDebug  = 2;                     // Turn ON voor Debug
        $mail->SMTPAuth   = true;                  // Moet altijd aanstaan
        $mail->Host       = "smtp.mijnhostingpartner.nl"; // Moet op MHP staan
        $mail->Port       = 25;                    // Moet op 25 staan
        $mail->Username   = $user; //  Zie global $user
        $mail->Password   = $passw;        // Zie global $ passw
        /*/  /*/
        // Hieronder kan een alternatief email adres worden ingevuld zoals een gmail adres of live etc
        $mail->AddAddress($user); //  indien een ander adres vul dan het volgende in tussen de ()    "Hieruwalternatief@mail.adres"
        /*/  /*/
        $mail->SetFrom($to); 
        //$mail->AddReplyTo('', ''); //  Hier een eventuele  tweede mail die het ontvangt
        $mail->Subject = $subject;  // pakt het onderwerp van het formulier
        $mail->MsgHTML($message); // Pakt het bericht
        $mail->Send();  // Verzend 
        echo "Message Sent OK<p></p>\n";  // Kan aangepast worden naar een persoonlijk verstuurd bericht
        
        // hieronder de foutmelding rapportage
    } catch (phpmailerException $e) {
      echo $e->errorMessage(); //Pretty error messages from PHPMailer
    } catch (Exception $e) {
      echo $e->getMessage(); //Boring error messages from anything else!
    }
}

// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    // naam controle
    if (empty($_POST['naam']))
        $naam_fout = 1;
    // e-mail controle
    if (function_exists('filter_var') && !filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL))
            $email_fout = 1;
    // antiflood controle
    if (!empty($_SESSION['antiflood']))
    {
        $seconde = 20; // 20 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
        $tijd = time() - $_SESSION['antiflood'];
        if($tijd < $seconde)
            $antiflood = 1;
    }
}

// Kijk of alle velden zijn ingevuld - naam mag alleen uit letters bestaan en het e-mailadres moet juist zijn
if (($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($antiflood) || empty($_POST['naam']) || !empty($naam_fout) || empty($_POST['mail']) || !empty($email_fout) || empty($_POST['bericht']) || empty($_POST['onderwerp']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
    if ($_SERVER['REQUEST_METHOD'] == 'POST')
    {
        if (!empty($naam_fout))
            echo '<p>Uw naam is niet ingevuld.</p>';
        elseif (!empty($email_fout))
            echo '<p>Uw e-mailadres is niet juist.</p>';
        elseif (!empty($antiflood))
            echo '<p>U mag slechts &eacute;&eacute;n bericht per ' . $seconde . ' seconde versturen.</p>';
        else
            echo '<p>U bent uw naam, e-mailadres, onderwerp of bericht vergeten in te vullen.</p>';
    }
        
  // HTML e-mail formlier
  echo '<form method="post" action="' . $_SERVER['REQUEST_URI'] . '" />
  <p>
  
      <label for="naam">Naam:</label><br />
      <input type="text" id="naam" name="naam" value="' . (isset($_POST['naam']) ? htmlspecialchars($_POST['naam']) : '') . '" /><br />
      
      <label for="mail">E-mailadres:</label><br />
      <input type="text" id="mail" name="mail" value="' . (isset($_POST['mail']) ? htmlspecialchars($_POST['mail']) : '') . '" /><br />
      
      <label for="onderwerp">Onderwerp:</label><br />
      <input type="text" id="onderwerp" name="onderwerp" value="' . (isset($_POST['onderwerp']) ? htmlspecialchars($_POST['onderwerp']) : '') . '" /><br />
      
      <label for="bericht">Bericht:</label><br />
      <textarea id="bericht" name="bericht" rows="8" style="width: 400px;">' . (isset($_POST['bericht']) ? htmlspecialchars($_POST['bericht']) : '') . '</textarea><br />
      
      <input type="submit" name="submit" value=" Versturen " />
  </p>
  </form>';
}
// versturen naar
else
{      
  // set datum
  $datum = date('d/m/Y H:i:s');
    
  $inhoud_mail = "===================================================\n";
  $inhoud_mail .= "Ingevulde contact formulier " . $_SERVER['HTTP_HOST'] . "\n";
  $inhoud_mail .= "===================================================\n\n";
  
  $inhoud_mail .= "Naam: " . htmlspecialchars($_POST['naam']) . "\n";
  $inhoud_mail .= "E-mail adres: " . htmlspecialchars($_POST['mail']) . "\n";
  $inhoud_mail .= "Bericht:\n";
  $inhoud_mail .= htmlspecialchars($_POST['bericht']) . "\n\n";
    
  $inhoud_mail .= "Verstuurd op " . $datum . " via het IP adres " . $_SERVER['REMOTE_ADDR'] . "\n\n";
    
  $inhoud_mail .= "===================================================\n\n";
  
  // --------------------
  // spambot protectie
  // ------
  // van de tutorial: http://www.phphulp.nl/php/tutorial/beveiliging/spam-vrije-contact-formulieren/340/
  // ------
  
  $headers = 'From: ' . htmlspecialchars($_POST['naam']) . ' <' . $_POST['mail'] . '>';
  
  $headers = stripslashes($headers);
  $headers = str_replace('\n', '', $headers); // Verwijder \n
  $headers = str_replace('\r', '', $headers); // Verwijder \r
  $headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
  
  $_POST['onderwerp'] = str_replace('\n', '', $_POST['onderwerp']); // Verwijder \n
  $_POST['onderwerp'] = str_replace('\r', '', $_POST['onderwerp']); // Verwijder \r
  $_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes
 
sendMail($to, $_POST['onderwerp'], $inhoud_mail, $headers);  
}
?>
<!-- Hier de rest van jouw site -->

Probeer, en lees de <!-- en --> commentaarregels ook even goed. ;)
 
Laatst bewerkt:
I dunno, ik ken de regels van je hosting niet. Trial and error en je komt er wel achter! ;)
 
Nee, ik heb die mogelijkheid niet, en ik houd contact graag via het topic. Dan kunnen anderen ook meelezen.
Maar heb je het script al geprobeerd? :)
 
Laatst bewerkt:
En, is het nog gelukt?
 
Nope snap er niets van ben nu op zoek naar een website die het regelt tegen betaling
 
Wat snap je dan niet precies?
Je hoef alleen maar mijn code van '27 september 2016, 19:09' te plakken, en even de commentaarregels goed te lezen, en je site daarin in te plaatsen.

Dan werkt het gewoon.
 
ik kan de berichten wel versturen, message sent ok, maar ik ontvang helemaal niets
 
Zet $mail->SMTPDebug op 1, dan zie je mogelijk ook errors.

Pas lijn 45 aan naar:

Code:
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}

Want nu toon je standaard een melding ongeacht of het gelukt is of niet.
 
Laatst bewerkt:
doet nog niets

HTML:
[code]
<?PHP
ini_set ("display_errors", 1);
error_reporting(E_ALL);

echo "<p>Email formulier</p>";
/*/ Hierin kunt u de gegevens aanpassen waarnaar de informatie gestuurd word     /*/
$user ='info@stuntenmetplinten.nl';
$passw ='*********';   
/*/   Hieronder nog een aantal zaken nalopen /*/
/*/   Lees de comments voor meer informatie /*/
//includes
include 'PHPmailer/class.phpmailer.php';
include 'PHPmailer/class.smtp.php';

function sendMail ($to, $subject, $message, $headers){
	$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
	$mail->IsSMTP(); // telling the class to use SMTP
	
	try {
		global $user;  // Uw gebruikersnaam voor SMTP
		global $passw; // Uw wachtwoord voor bovenstaande
		
		$mail->SMTPDebug  = 1;                     // Turn ON voor Debug
		$mail->SMTPAuth   = true;                  // Moet altijd aanstaan
		$mail->Host       = "smtp.mijnhostingpartner.nl"; // Moet op MHP staan
		$mail->Port       = 25;                    // Moet op 25 staan
		$mail->Username   = $user; //  Zie global $user
		$mail->Password   = $passw;        // Zie global $ passw
		/*/  /*/
		// Hieronder kan een alternatief email adres worden ingevuld zoals een gmail adres of live etc
		$mail->AddAddress($user); //  indien een ander adres vul dan het volgende in tussen de ()    "Hieruwalternatief@mail.adres"
		/*/  /*/
		$mail->SetFrom($to); 
		//$mail->AddReplyTo('', ''); //  Hier een eventuele  tweede mail die het ontvangt
		$mail->Subject = $subject;  // pakt het onderwerp van het formulier
		$mail->MsgHTML($message); // Pakt het bericht
		$mail->Send();  // Verzend 
		echo "Message Sent OK<p></p>\n";  // Kan aangepast worden naar een persoonlijk verstuurd bericht
		
		// hieronder de foutmelding rapportage
	} catch (phpmailerException $e) {
	  echo $e->errorMessage(); //Pretty error messages from PHPMailer
	} catch (Exception $e) {
	  echo $e->getMessage(); //Boring error messages from anything else!
	}
}

$to = "info@stuntenmetplinten.nl";   // Hier het email adres waarnaar verstuurd word.
$subject = "Lorem"; // Onderwerp
$message = "Ipsum";  // Het bericht
$headers = "Lorem Ipsum"; // De kop

sendMail($to, $subject, $message, $headers);		
?>
 
Laatst bewerkt:
Lees mijn post even nog eens door Je doet nu de helft.
 
gedaan maar nog niets hoor,

HTML:
<?PHP
ini_set ("display_errors", 1);
error_reporting(E_ALL);

echo "<p>Email formulier</p>";
/*/ Hierin kunt u de gegevens aanpassen waarnaar de informatie gestuurd word     /*/
$user ='info@stuntenmetplinten.nl';
$passw ='******';   
/*/   Hieronder nog een aantal zaken nalopen /*/
/*/   Lees de comments voor meer informatie /*/
//includes
include 'PHPmailer/class.phpmailer.php';
include 'PHPmailer/class.smtp.php';

function sendMail ($to, $subject, $message, $headers){
	$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
	$mail->IsSMTP(); // telling the class to use SMTP
	
	try {
		global $user;  // Uw gebruikersnaam voor SMTP
		global $passw; // Uw wachtwoord voor bovenstaande
		
		$mail->SMTPDebug  = 1;                     // Turn ON voor Debug
		$mail->SMTPAuth   = true;                  // Moet altijd aanstaan
		$mail->Host       = "smtp.mijnhostingpartner.nl"; // Moet op MHP staan
		$mail->Port       = 25;                    // Moet op 25 staan
		$mail->Username   = $user; //  Zie global $user
		$mail->Password   = $passw;        // Zie global $ passw
		/*/  /*/
		// Hieronder kan een alternatief email adres worden ingevuld zoals een gmail adres of live etc
		$mail->AddAddress($user); //  indien een ander adres vul dan het volgende in tussen de ()    "Hieruwalternatief@mail.adres"
		/*/  /*/
		$mail->SetFrom($to); 
		//$mail->AddReplyTo('', ''); //  Hier een eventuele  tweede mail die het ontvangt
		$mail->Subject = $subject;  // pakt het onderwerp van het formulier
		$mail->MsgHTML($message); // Pakt het bericht
		$mail->Send();  // Verzend 
		echo "Message Sent OK<p></p>\n";  // Kan aangepast worden naar een persoonlijk verstuurd bericht
		
		// hieronder de foutmelding rapportage
	} catch (phpmailerException $e) {
	  echo $e->errorMessage(); //Pretty error messages from PHPMailer
	} catch (Exception $e) {
	  echo $e->getMessage(); //Boring error messages from anything else!
	}if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
}

$to = "info@stuntenmetplinten.nl";   // Hier het email adres waarnaar verstuurd word.
$subject = "Lorem"; // Onderwerp
$message = "Ipsum";  // Het bericht
$headers = "Lorem Ipsum"; // De kop

sendMail($to, $subject, $message, $headers);		
?>
 
Je leest niet goed en zet die code op de foute plek.
Die echo met 'Message Set OK' moet je integraal vervangen!

Dan moet je echt meer gaan zien qua errors o.i d.
Anders vrees ik een overijverige spamfilter buiten PHP om.
 
Laatst bewerkt:
Ik snap er werkelijk niets meer van, ik heb nu een vraag gesteld iemand die dat tegen betaling voor mij kan regelen, dit kost met te veel tijd, en een hoop ergernis, Alle hulp ten spijt hoor, en dat waardeer ik enorm, maar krijg er de kriebels van
 
We zijn er bijna, dus waarom opgeven?
Wou je serieus een hoop betalen terwijl je al voor 95% geholpen bent?

De code wordt dus:
Code:
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo; // mailen mislukt....
} else {
  echo "Message Sent OK<p></p>\n";  // Kan aangepast worden naar een persoonlijk verstuurd bericht
}

Deze code dus aanpassen i.p.v. de huidige regel:
Code:
$mail->Send();  // Verzend

Dan moet je bij goede uitvoer van het script 'Message Sent OK' zien.

Alleen dus aanpassen, en niet zomaar ergens anders toevoegen. Tussen de try en de catch dus! NIET daarbuiten! ;)

Wat gebeurt er nu als je het script uitvoert?
 
Laatst bewerkt:
hahah, ja inderdaad, ik wil er voor betalen, ik weet niet eens meer in welke document ik nu zit te rommelen, ik waardeer het echt heel erg, maar wordt er stapel van.
 
Stop even met werken, en hervat het weer na een pauze. Maak aantekeningen waarin je precies zit te werken en zorg dat je gestructureerd bezig bent. ;)
 
Dit moet wel werken!

PHP:
<?php
session_start(); // zorg ervoor dat session_start ALTIJD binnen PHP bovenaan ALLES van je pagina staat, anders werkt het niet!
ini_set ("display_errors", 1);
error_reporting(E_ALL);
?>
<!-- hier jouw site -->
 
<?php
include 'PHPmailer/class.phpmailer.php';
include 'PHPmailer/class.smtp.php';
 
// Hier staan de instellingen die je zelf naar eigen wens kan aanpassen.
$to = "info@stuntenmetplinten.nl";   // Hier het email adres waarnaar verstuurd word.
$headers = "Dummy"; // De kop (wordt niet gebruikt, foutje van je hostingprovider die dit geprogrammeerd heeft)
 
// Je credentials voor het inloggen.
$user ='mail@send.stuntenmetplinten.nl';
$passw ='hier moet je wachtwoord komen';
 
// INSTELLINGEN KLAAR!
 
function sendMail ($to, $subject, $message, $headers){
    $mail = new PHPMailer(); // set the true param betwees the ( and ) brackets to throw exceptions on errors, which we need to catch. Otherwise the error is filled in $mail->ErrorInfo
    $mail->IsSMTP(); // telling the class to use SMTP
    
    try {
        global $user;  // Uw gebruikersnaam voor SMTP
        global $passw; // Uw wachtwoord voor bovenstaande
        
        $mail->SMTPDebug  = 2;                     // Turn ON voor Debug
        $mail->SMTPAuth   = true;                  // Moet altijd aanstaan
        $mail->Host       = "smtp.mijnhostingpartner.nl"; // Moet op MHP staan
        $mail->Port       = 25;                    // Moet op 25 staan
        $mail->Username   = $user; //  Zie global $user
        $mail->Password   = $passw;        // Zie global $ passw
        /*/  /*/
        // Hieronder kan een alternatief email adres worden ingevuld zoals een gmail adres of live etc
        $mail->AddAddress($user); //  indien een ander adres vul dan het volgende in tussen de ()    "Hieruwalternatief@mail.adres"
        /*/  /*/
        $mail->SetFrom($to); 
        //$mail->AddReplyTo('', ''); //  Hier een eventuele  tweede mail die het ontvangt
        $mail->Subject = $subject;  // pakt het onderwerp van het formulier
        $mail->MsgHTML($message); // Pakt het bericht
        if(!$mail->Send()) {
          echo "Mailer Error: " . $mail->ErrorInfo; // mailen mislukt....
        } else {
          echo "Message Sent OK<p></p>\n";  // Kan aangepast worden naar een persoonlijk verstuurd bericht
        }
        
        // hieronder de foutmelding rapportage
    } catch (phpmailerException $e) {
      echo $e->errorMessage(); //Pretty error messages from PHPMailer
    } catch (Exception $e) {
      echo $e->getMessage(); //Boring error messages from anything else!
    }
}
 
// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    // naam controle
    if (empty($_POST['naam']))
        $naam_fout = 1;
    // e-mail controle
    if (function_exists('filter_var') && !filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL))
            $email_fout = 1;
    // antiflood controle
    if (!empty($_SESSION['antiflood']))
    {
        $seconde = 20; // 20 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
        $tijd = time() - $_SESSION['antiflood'];
        if($tijd < $seconde)
            $antiflood = 1;
    }
}
 
// Kijk of alle velden zijn ingevuld - naam mag alleen uit letters bestaan en het e-mailadres moet juist zijn
if (($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($antiflood) || empty($_POST['naam']) || !empty($naam_fout) || empty($_POST['mail']) || !empty($email_fout) || empty($_POST['bericht']) || empty($_POST['onderwerp']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
    if ($_SERVER['REQUEST_METHOD'] == 'POST')
    {
        if (!empty($naam_fout))
            echo '<p>Uw naam is niet ingevuld.</p>';
        elseif (!empty($email_fout))
            echo '<p>Uw e-mailadres is niet juist.</p>';
        elseif (!empty($antiflood))
            echo '<p>U mag slechts &eacute;&eacute;n bericht per ' . $seconde . ' seconde versturen.</p>';
        else
            echo '<p>U bent uw naam, e-mailadres, onderwerp of bericht vergeten in te vullen.</p>';
    }
        
  // HTML e-mail formlier
  echo '<form method="post" action="' . $_SERVER['REQUEST_URI'] . '" />
  <p>
  
      <label for="naam">Naam:</label><br />
      <input type="text" id="naam" name="naam" value="' . (isset($_POST['naam']) ? htmlspecialchars($_POST['naam']) : '') . '" /><br />
      
      <label for="mail">E-mailadres:</label><br />
      <input type="text" id="mail" name="mail" value="' . (isset($_POST['mail']) ? htmlspecialchars($_POST['mail']) : '') . '" /><br />
      
      <label for="onderwerp">Onderwerp:</label><br />
      <input type="text" id="onderwerp" name="onderwerp" value="' . (isset($_POST['onderwerp']) ? htmlspecialchars($_POST['onderwerp']) : '') . '" /><br />
      
      <label for="bericht">Bericht:</label><br />
      <textarea id="bericht" name="bericht" rows="8" style="width: 400px;">' . (isset($_POST['bericht']) ? htmlspecialchars($_POST['bericht']) : '') . '</textarea><br />
      
      <input type="submit" name="submit" value=" Versturen " />
  </p>
  </form>';
}
// versturen naar
else
{      
  // set datum
  $datum = date('d/m/Y H:i:s');
    
  $inhoud_mail = "===================================================\n";
  $inhoud_mail .= "Ingevulde contact formulier " . $_SERVER['HTTP_HOST'] . "\n";
  $inhoud_mail .= "===================================================\n\n";
  
  $inhoud_mail .= "Naam: " . htmlspecialchars($_POST['naam']) . "\n";
  $inhoud_mail .= "E-mail adres: " . htmlspecialchars($_POST['mail']) . "\n";
  $inhoud_mail .= "Bericht:\n";
  $inhoud_mail .= htmlspecialchars($_POST['bericht']) . "\n\n";
    
  $inhoud_mail .= "Verstuurd op " . $datum . " via het IP adres " . $_SERVER['REMOTE_ADDR'] . "\n\n";
    
  $inhoud_mail .= "===================================================\n\n";
  
  // --------------------
  // spambot protectie
  // ------
  // van de tutorial: http://www.phphulp.nl/php/tutorial/beveiliging/spam-vrije-contact-formulieren/340/
  // ------
  
  
  $_POST['onderwerp'] = str_replace('\n', '', $_POST['onderwerp']); // Verwijder \n
  $_POST['onderwerp'] = str_replace('\r', '', $_POST['onderwerp']); // Verwijder \r
  $_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes
 
sendMail($to, $_POST['onderwerp'], $inhoud_mail, $headers);  
}
?>
<!-- Hier de rest van jouw site -->
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan