Goedemiddag!
Ik wilde vandaag voor mn site een simpel contactformulier maken. Omdat ik nog niet zo goed ben in html heb ik geprobeerd zelf het formulier op te maken. Volgens mij heb ik het goed gedaan. Het is de bedoeling dat deze middels PHP wordt verstuurd naar mijn e-mailadres. Alleen daar loop ik vast. Ik ben eigenlijk nog niet zo toe aan het leren van PHP. Heb wel gezocht en kon wel wat dingen vinden, maar voor mij is het op dit moment meer een beetje raden wat te doen dan dat ik daadwerkelijk weet wat ik doe. Zouden jullie mijn code eens bekijken?

Dit is mijn formulier:

<form method="post" action="contact.php">
        <label for="naam">Naam</label>
        <input type="text" id="naam" name="Naam" placeholder="Je naam">

        <label for="email">E-mail</label>
        <input type="text" id="email" name="E-mail" placeholder="Je e-mailadres">

        <label for="bericht">Je bericht</label>
        <textarea id="subject" name="bericht" placeholder="Je bericht" style="height:100px"></textarea>

        <input type="submit" value="Verzenden">
    </form>


En dit is mijn PHP:

<?php

if($_POST["submit"]) {
    $recipient="*knip*@gmail.com";
    $subject="Bericht van de TwoSeven AMP site";
    $naam=$_POST["naam"];
    $email=$_POST["email"];
    $bericht=$_POST["bericht"];

    $mailBody="Name: $sender\nEmail: $senderEmail\n\n$message";

    mail($recipient, $subject, $mailBody, "From: $naam, <$email>");

    $thankYou="<p>Dank je! Je bericht is verzonden.</p>";
}

?>


Dank jullie alvast!
Groetjes, Rob

Persoonlijk zou ik er één script van maken in een enkel bestand. Je wilt immers ook invoer-validatie toevoegen, en het netste is dat je hierbij een melding bij de velden toont die niet of incompleet ingevuld zijn.

Het belangrijkste hierbij is dat je in je script als eerste de PHP-scripting uitvoert, en controleert of er een formulier verstuurd is:


<?php
if($_SERVER['REQUEST_METHOD']=="POST") {
// je formulier is verstuurd!
// valideer eerst je invoer
// Als dit allemaal gepasseerd is, dan verstuur je het formulier via mail
} else {
?>
Hier komt je formulier....
<?php
}
?>


Verder raad ik aan om in het vervolg je mailadres uit je bericht te halen, voordat je een hoop spam krijgt. Spammers liggen overal op de loer.
Ook komt je HTML niet overeen met je afhandeling. Je hebt bijvoorbeeld een input genaamd Naam en maakt wil naam weten in je script, zelfde voor E-mail vs email.
$_POST['submit'] bestaat ook niet omdat de submit-button geen name-attribuut heeft. Dit is mogelijk de reden dat er niets leek te gebeuren? De controle die @Ariën uitvoert om te kijken of er iets gePOST is werkt waarschijnlijk beter.

En tenzij je $email valideert is de huidige constructie mogelijk vatbaar voor mailheader injection. Mogelijk beter om de vierde parameter van je mail() aanroep ("From: $naam, <$email>") voorlopig weg te laten.
Tx! Dat van m'n email is niet handig nee. Zag dat het al was aangepast. Zal de volgende keer ook de code-tags gebruiken.

Ja ik wil het formulier in een AMP-versie van een website plaatsen. En ik dacht eigenlijk dat ik dan per se een php file moet hebben, maar amp werkt met html. Maar volgens mij niet zoals ik nu op andere fora lees, dus ik kan wel gewoon php in html plaatsen toch? Ik ga ff aan de slag met jullie opmerkingen en kijken of ik het formulier en de php code op 1 site krijg met alle aanpassingen . Bedankt vast!
Ik betwijfel als AMP nog de toekomst is. Ik merk dat niet veel websites erop overstappen. Maar verder is AMP meer een schil over je site heen.

Als je PHP wilt gebruiken in HTML zul je de .php extensie aan je bestandsnaam moeten toevoegen. Met het gebruik van mod_rewrite in Apache kan je dit nog ombuigen naar .html, maar feitelijk blijft het een php-bestand.
Los daarvan, een AMP-opstelling zal zelf niet het versturen van e-mail verzorgen. Dus daarvoor zul je de mailserver van je ISP moeten gebruiken, of via een SMTP(-achtige)-library een connectie moeten maken met bijvoorbeeld je GMail-account.
Als je via een specifieke SMTP-server wilt mailen of via die van Gmail, dan raad ik de PHPmailer class aan.
Dank jullie voor je reacties. Ik heb besloten om voor die AMP site dan maar geen contactformulier te gebruiken. Ik ga echter mijn nieuwe site opnieuw ontwerpen en neem dit mee voor een contactformulier daar op. Fijn forum dit. Dank jullie :)

Reageren