weer een contactformulier raadsel

Status
Niet open voor verdere reacties.
Ik begrijp het niet.

Die twee email() functies stonden er toch de hele tijd al in.

Ik heb die niet in de laatste versie al toegevoegd of iets dergelijks.

Moet dan regel 16 in zijn geheel weg of regel 18?

Als regel 18 weg moet, hoe voeg ik dan de opdracht toe aan regel 16 dat hij na correct invullen naar deze pagina moet gaan: https://auto-ontsmetting.nl/bedankt.html
 
Je wilt toch een keer op de juiste manier mailen? En dan meteen controleren of de mail bij het postkantoor kan worden afgeleverd?
Als je die functie even aanpast met de juiste aanpassing die hostnet voorschrijft, dan moet het werken.

Je bent er bijna :)
Nog even goed kijken, husselen en profit.
Je hoeft echt niet moeilijk na te denken, want alle ingrediënten heb je. Nu alleen nog goed roeren tot de juiste saus!
 
Laatst bewerkt:
Keep it simple :) gebruik geen html body, doe het minimale om te testen en dan verder uitbouwen
php4u, wil jij even door dit opzetje lopen voor verbeteringen?

PHP:
<?php

// WIJZIGEN: bestaand emailadres op jouw domein
$van = 'info@auto.example.nl';

// WIJZIGEN: naar wie stuur je de email
$aan = 'een.persoon@gmail.com';

// WIJZIGEN: onderwerp van de email
$onderwerp = 'Contactformulier op website';

// formulier velden inlezen
$naam     = (isset($_POST['naam']))           ? trim($_POST['naam']) : '';
$email    = (isset($_POST['email']))          ? trim($_POST['email']) : '';
$telefoon = (isset($_POST['telefoonnummer'])) ? trim($_POST['telefoonnummer']) : '';
$bericht  = (isset($_POST['message']))        ? trim($_POST['message']) : '';

// minimaal moet dit zijn ingevuld
if ($naam != '' && $email != '') {
    
    // host provider zegt dat in de header een from moet staan
    $headers = array(
        'From'     => $van,
        'Reply-To' => $email
    );

    // bericht van de email opbouwen
    $body  = 'Naam: ' . $naam . PHP_EOL;
    $body .= 'Emailadres: ' . $email . PHP_EOL;
    $body .= 'Telefoonnummer: ' . $telefoon . PHP_EOL;
    $body .= '-----------------------' . PHP_EOL;
    $body .= $bericht . PHP_EOL;
    
    // duw de email de deur uit ;)
    $accepted = mail ($aan, $onderwerp, $body, $headers);
    if ($accepted == true) {
        header('location:https://example.nl/bedankt.html');
        exit;
    } else {
        header('location:https://example.nl/mislukt.html');
        exit;
    }
}
 
Laatst bewerkt:
@Bron: je vergeet nu wel de -f in het vijfde argument ;-)
 
Even wat anders....

Ik zou allebei jullie adressen even moeten hebben.
Weet niet of dit via een prive bericht kan of zo.

Zou graag een lekkere fles wijn of iets dergelijks willen opsturen.

Vind het zo bijzonder dat jullie zomaar iedereen willen helpen op dit forum.

Niet om nu te slijmen of zo maar jullie besteden er zoveel tijd aan.

Ongeacht de uitkomst van dit drama, erg bedankt!!
 
@Bron: je vergeet nu wel de -f in het vijfde argument ;-)
Vraagje, kan dit niet via de header?

@rob1970. In het voorbeeld zijn de veldnamen gebruikt van de website die je bedoelt
 
Laatst bewerkt:
Vraagje, kan dit niet via de header?
Volgens mij niet, omdat dit specifieke opdrachten zijn die je aan de mail-deamon (service) wilt laten weten:

additional_params (optional)

The additional_params parameter can be used to pass additional flags as command line options to the program configured to be used when sending mail, as defined by the sendmail_path configuration setting. For example, this can be used to set the envelope sender address when using sendmail with the -f sendmail option.
 
Laatst bewerkt door een moderator:
can be used to pass additional flags as command line options to the program

Aha, dan wordt de mail() regel...
PHP:
    $accepted = mail ($aan, $onderwerp, $body, $headers, "-f".$van);

"f" gewijzigd in "-f"
 
Laatst bewerkt:
Met het streepje dan voor de f :)
 
Dit streepje was het laatste stukje van de puzzel.

De mail is binnen gekomen.

Het was een hele bevalling maar het werkt!!!!!!!


Het enige waaraan ik nog twijfel of ik dat correct heb ingevuld is het adres op regel 7.

Moe dit ook het emailadres van de website zijn of iets anders?

PHP:
<?php
 
// wijzigen: bestaand emailadres op jouw domein
$van = 'info@auto-xxx.nl';
 
// wijzigen: naar wie stuur je de email
$aan = 'info@auto-xxx.nl';
 
// wijzigen: onderwerp van de email
$onderwerp = 'Contactformulier op website';
 
// formulier velden inlezen
$naam     = (isset($_POST['naam']))           ? trim($_POST['naam']) : '';
$email    = (isset($_POST['email']))          ? trim($_POST['email']) : '';
$telefoon = (isset($_POST['telefoonnummer'])) ? trim($_POST['telefoonnummer']) : '';
$bericht  = (isset($_POST['message']))        ? trim($_POST['message']) : '';
 
// minimaal moet dit zijn ingevuld
if ($naam != '' && $email != '') {
    
    // host provider zegt dat in de header een from moet staan
    $headers = array(
        'From'     => $van,
        'Reply-To' => $email
    );
 
    // bericht van de email opbouwen
    $body  = 'Naam: ' . $naam . PHP_EOL;
    $body .= 'Emailadres: ' . $email . PHP_EOL;
    $body .= 'Telefoonnummer: ' . $telefoon . PHP_EOL;
    $body .= '-----------------------' . PHP_EOL;
    $body .= $bericht . PHP_EOL;
    
    // duw de email de deur uit ;)
    $accepted = mail ($aan, $onderwerp, $body, $headers, "-f".$van);
    if ($accepted == true) {
        header('location:https://auto-xxx.nl/bedankt.html');
        exit;
    } else {
        header('location:https://example.nl/mislukt.html');
        exit;
    }
}
 
?>


Ik haal zometeen dat adres weer weg!!!
 
Laatst bewerkt:
@php4u dankje voor het controleren, stom om dat streepje te vergeten ;)

Moe dit ook het emailadres van de website zijn of iets anders?
Je mag op regel 7 elk willekeurig emailadres invullen wat je wilt. Dit mag ook een gmail of ander emailadres zijn. Het emailadres wat je op regel 7 invult is de ontvanger van de email. Zoals je het nu hebt gedaan wordt het contactformulier naar info@ gestuurd omdat je dit bij regel 7 hebt ingevuld.

Daarentegen moet het emailadres op regel 4 een bestaand emailadres op jouw domein zijn, dus in dit geval een bestaand emailadres op het auto domein.
 
Laatst bewerkt:
Nu de basis werkt zou je er nog wat validatie in kunnen stoppen.
Om dat te doen vervang je regel 1 t/m 25 (post #50) door deze code. Wijzig vooraf regel 4 en 7 even.

PHP:
<?php

// WIJZIGEN: bestaand emailadres op auto domein
$van = 'info@example.nl';

// WIJZIGEN: naar wie stuur je de email
$aan = 'aan.iemand@gmail.com';

// WIJZIGEN: onderwerp van de email
$onderwerp = 'Contactformulier op website';

// verwijder tags
if (isset($_POST)) {
    foreach($_POST as $key => $value) {
        $_POST[$key] = strip_tags($_POST[$key]);
    }
}

// formulier velden inlezen
$naam     = (isset($_POST['naam']))           ? trim($_POST['naam']) : '';
$email    = (isset($_POST['email']))          ? trim($_POST['email']) : '';
$telefoon = (isset($_POST['telefoonnummer'])) ? trim($_POST['telefoonnummer']) : '';
$bericht  = (isset($_POST['message']))        ? trim($_POST['message']) : '';

// eenvoudige validatie
$err = false;
if (strlen($naam) < 2)    $err = true;
if (strlen($email) < 7)   $err = true;
if (strlen($bericht) < 4) $err = true;
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) $err = true;

// ga verder als er geen validatiefout is
if ($err != true) {

    // zet in de header het Van en het Beantwoorden emailadres
    $headers = array(
        'From'     => $van,
        'Reply-To' => $email
    );
 
Laatst bewerkt:
Gedaan en werkt nog steeds!!

Ik heb zelf nog 1 dingetje aangepast, ik heb de onderste regel iets aangepast.
Ook om te kijken of ik het een beetje begon te begrijpen.

Eerst was het dit:
Code:
  // bericht van de email opbouwen
    $body  = 'Naam: ' . $naam . PHP_EOL;
    $body .= 'Emailadres: ' . $email . PHP_EOL;
    $body .= 'Telefoonnummer: ' . $telefoon . PHP_EOL;
    $body .= '-----------------------' . PHP_EOL;
    $body .= $bericht . PHP_EOL;

Nu is het dit:
Code:
// bericht van de email opbouwen
    $body  = 'Naam: ' . $naam . PHP_EOL;
    $body .= 'Emailadres: ' . $email . PHP_EOL;
    $body .= 'Telefoonnummer: ' . $telefoon . PHP_EOL;
    $body .= '-----------------------' . PHP_EOL;
    $body .= 'Bericht: ' .$bericht . PHP_EOL;

Eerst kwam de mail zo binnen:
Naam: rob
Emailadres: info@example.com
Telefoonnummer: 0612345678
-----------------------
test 16:07 uur


Nu zo:
Naam: rob
Emailadres: info@example.com
Telefoonnummer: 0612345678
-----------------------
Bericht: test 16:09
 
Laatst bewerkt door een moderator:
Ook het tweede formulier werkt.

Op de website staat nog een ander formulier waar mensen ook hun kenteken en een voorkeursdag in kunnen vullen voor het maken van een afspraak.

Ik heb de code zo aangepast:

PHP:
// formulier velden inlezen
$naam     = (isset($_POST['naam']))           ? trim($_POST['naam']) : '';
$email    = (isset($_POST['email']))          ? trim($_POST['email']) : '';
$telefoon = (isset($_POST['telefoonnummer'])) ? trim($_POST['telefoonnummer']) : '';
$kenteken = (isset($_POST['kenteken']))       ? trim($_POST['kenteken']) : '';
$voorkeur = (isset($_POST['voorkeur']))       ? trim($_POST['voorkeur']) : '';
$bericht  = (isset($_POST['message']))        ? trim($_POST['message']) : '';
 
// eenvoudige validatie
$err = false;
if (strlen($naam) < 2)    $err = true;
if (strlen($email) < 7)   $err = true;
if (strlen($bericht) < 4) $err = true;
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) $err = true;
 
// ga verder als er geen validatiefout is
if ($err != true) {
 
    // zet in de header het Van en het Beantwoorden emailadres
    $headers = array(
        'From'     => $van,
        'Reply-To' => $email
    );
 
    // bericht van de email opbouwen
    $body  = 'Naam: ' . $naam . PHP_EOL;
    $body .= 'Emailadres: ' . $email . PHP_EOL;
    $body .= 'Telefoonnummer: ' . $telefoon . PHP_EOL;
    $body .= 'Kenteken: ' . $kenteken . PHP_EOL;
    $body .= 'Voorkeur: ' . $voorkeur . PHP_EOL;
    $body .= '-----------------------' . PHP_EOL;
    $body .= 'Bericht: ' .$bericht . PHP_EOL;


En ook deze mail komt keurig op deze manier binnen:

Naam: Rob
Emailadres: info@example.com
Telefoonnummer: 0612345678
Kenteken: 12AA34
Voorkeur: maandag de 13e om 12 uur
-----------------------
Bericht: test bericht afsprakenformulier
 
Laatst bewerkt door een moderator:
Goed dat je er zelf induikt en dingen aanpast.
Ik zie dat je extra <input> velden hebt toegevoegd.
 
Laatst bewerkt:
Ik heb daar dit toegevoegd:

$kenteken = (isset($_POST['kenteken'])) ? trim($_POST['kenteken']) : '';
$voorkeur = (isset($_POST['voorkeur'])) ? trim($_POST['voorkeur']) : '';
 
Ik neem aan dat het inmiddels werkt? :)
 
Het werkt als een speer.

Allebei nogmaals enorm bedankt voor alle hulp.

Aanbod van een flesje wijn staat nog steeds overigens.
 
Voor mij is je post 59 voldoende waardering. Het was leuk om je te helpen.
Suc6 met de website.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan