Jump to content

HTML Code Contact Formulier?


Recommended Posts

Geplaatst:

Aan het eind van de PHP-code waarin het formulier wordt verwerkt, kan je de volgende code plaatsen:

header ("Refresh: 0; URL=verzonden.php");

"verzonden.php" is dus de naam van de pagina die je ziet nadat het ook daadwerkelijk verzonden is. Zie ook deze post van Ewoud.

  • Reacties 37
  • Created
  • Laatste reactie

Top Posters In This Topic

  • NickyHendriks

    15

  • marcootje

    5

  • Thundercover

    4

  • Woetsha

    3

Geplaatst:
Aan het eind van de PHP-code waarin het formulier wordt verwerkt, kan je de volgende code plaatsen:

header ("Refresh: 0; URL=verzonden.php");

"verzonden.php" is dus de naam van de pagina die je ziet nadat het ook daadwerkelijk verzonden is. Zie ook deze post van Ewoud.

Bedankt hiervoor :D Maar even een ander vraagje.... Hoe kan ik een favicon inplaatsen? Ik weet het... favicon.ico. Maar wat dan nog meer?

Geplaatst:

Zet de volgende code tussen de HEAD-tags:

<link rel="shortcut icon" href="http://uweigenwebsite.nl/favicon.ico" type="image/x-icon" />

Daarnaast had je dit makkelijk op Google kunnen zoeken in plaats van het opnieuw hier te vragen: het zoekwoord "favicon" gaf al meteen bovenstaande code. Daarnaast wil ik je vragen om op 'Plaats Reactie' te drukken en niet telkens op 'Reageer'.

Geplaatst:

Bedankt voor de code. Ik zal erop letten. Flitskikker heeft me een site gegeven met allerlei dingen erop en die zal ik volgen ;)

Geplaatst: (bewerkt)

Ik heb voor de liefhebbers een voorbeeld van en compact, simpel contact formulier geschreven. Het script werkt echt en is geschreven in PHP (sla het bestand dus ook op als contact.php of iets dergelijks). Je dient er rekening mee te houden dat de beveiliging niet optimaal is.

De waarde van $mijnEmail zou eigenlijk een e-mail adres moeten zijn dat gekoppeld is aan je domeinnaam (bijvoorbeeld viceagent@domein.com als je het contactformulier op domein.com installeert). Anders loop je de kans dat de mailtjes allemaal in je spambox terecht komen. Vul een écht e-mail adres in! (Dus niet mijn-naam[at], maar [at] vervangen door @. Helaas staat GTAForum het niet toe dat ik er een e-mail adres neer zet :puh:)

<?php
/** Pas deze variabelen aan zelf aan **/
$mijnEmail = "mijn-naam[at]hotmail[com]"; // Je e-mail adres (het liefst een e-mail adres van je eigen domein) 
$mijnNaam = "zamg0d1"; // Je naam

/**  Is het contact formulier al ingevuld, of niet? **/
if ( ! isset ($_POST['submit_form'] ) ) 
 {
 /** Het contactformulier is nog niet ingevuld **/
 /** Weergeef het formulier **/
?>

<html> 
<head>
 <title> Contact </title> 
</head>
<body>
<!-- Verander contact.php in de naam van dit bestand -->
<form action='./contact.php' method='post'>
  Je naam: <input type='text' name='naam' maxlength='19'> <br>
  Je e-mail adres: <input type='text' name='e_mail' maxlength='50'> <br>
  Onderwerp: <input type='text' name='onderwerp' maxlength='25'> <br>
  Je bericht: <textarea name='bericht'> </textarea> <br>
<input type='submit' value='Verstuur' name='submit_form'>
 </form>
  </body>
</html>

<? 
}
else
 {
  /** Het contact formulier is ingevuld, verwerk het **/
if ( !isset ($_POST['e_mail']) || !isset($_POST['onderwerp']) || !isset($_POST['bericht']) || !isset($_POST['naam']) ) 
{
 /** Niet alle velden zijn ingevuld **/
  echo 'Vul alle velden in!';
 }
 else
{
 /** Alle velden zijn ingevuld **/
$verzender = substr(trim(strip_tags(htmlspecialchars($_POST['naam']))),0,20);
$verzender_email = substr(trim(strip_tags(htmlspecialchars($_POST['e_mail']))),0,50);
$onderwerp = "Contact formulier:" . substr(trim(strip_tags(htmlspecialchars($_POST['onderwerp']))),0,25);
$verzender_bericht = trim(strip_tags(htmlspecialchars($_POST['bericht'])));

$mail_headers = "To: " . $mijnNaam . " <" . $mijnEmail . ">\r\n";
$mail_headers .= "From: " . $verzender . " <" . $verzender_email . ">\r\n";
$mail_headers .= "Reply-To: " . $verzender . " <" . $verzender_email . ">\r\n";

$verstuur_mail = mail($mijnEmail, $onderwerp, $verzender_bericht, $mail_headers);

if(!$verstuur_mail)
 {
  /** De mail kon niet verstuurd worden **/
 echo 'Een fout is opgetreden, probeer het later nog eens.';
 }
 else 
 {
  /** Het is gelukt **/
  echo 'Bedankt voor het invullen van het contactformulier!';
 }
}
}
?>

P.S. De code ziet er vrij onoverzicthelijk uit in deze layout, dit kun je oplossen door de code te kopieëren en in kladblok of een PHP-editor te plakken. :)

Bewerkt: door ViceAgent
Geplaatst:

Leuk formuliertje ViceAgent!

Je dient er rekening mee te houden dat de beveiliging niet optimaal is.

Met die beveiliging zit het op zich wel goed hoor. strip_tags() en htmlspecialchars() zijn niet eens noodzakelijk, omdat dat wat de gebruiker als $_POST parameters meegeeft, nooit als HTML gelezen zullen worden. Een mailserver reageert helemaal niet op html tags. Wanneer het programma waarmee jij je mail bekijkt echter elke vorm van HTML in mails toestaan, is het wel handig om deze functies te gebruiken. Het zou nogal irritant zijn wanneer mensen express iets als <script>while(1) alert('hahaha');</script> zouden sturen. De meeste mail tools voeren HTML in berichten echter niet standaard uit. substr() kan, maar is ook niet écht nodig.

Het enige waar je rekening mee moet houden als je een mailfunctie wilt beveiligen, is het injecteren van extra headers, zoals een BCC regel waar honderden e-mail adressen in staan. Dit is een regelmatig gebruikte manier om anoniem te spammen. Iets dergelijks moet je dus filteren. Het gaat dan vooral om de CRLF tekens '\r\n', waarmee de nieuwe headers gemaakt zouden kunnen worden. (Overigens gebruikt Windows \r\n en Unix \n, dus kijk even naar het OS waar de mailserver op draait.)

Dan is het misschien handig om, wanneer je het script daadwerkelijk veel wilt gaan gebruiken, een soort van timer in te bouwen, zodat mensen niet een robot (lees: cURL scriptje) kunnen maken die honderdduizenden mails gaat versturen in een paar seconden. Irritant, en DoS (Denial of Service, oftewel: een crash) als potentieel gevolg.

Verder een goed voorbeeld van hoe een mailformulier eruit zou kunnen zien. Dit werkt natuurlijk alleen als je alle juiste gegevens van de mail server in php.ini hebt staan.

Geplaatst:

Ik doelde voornamelijk op de afwezigheid van flood controles en e-mail checks, toen ik zei dat de beveiliging niet optimaal is. Het blokkeren van HTML is inderdaad redelijk onnodig in dit voorbeeld (ben er zo aan gewend geen enkele user input te vertrouwen :puh:).

De functie substr() gebruikte ik omdat ik zelf het liefst geen ellenlange namen/onderwerpen zie. Ik heb het 'maxlength' attribuut in de input velden ook ingevuld, maar dit biedt geen voldoende garantie dat de velden ook daadwerkelijk minder lang zijn dan deze waarde. Een beetje scriptkiddie heeft dat namelijk zo omzeilt.

Geplaatst:

Ik heb nu al een fijn scriptje die doorlinkt naar een pagina met alle gegevens :Y Ingebouwde flood control enzo :) En er zit gee CC of BCC in. Als je ernaartoe wilt moet je naar mijn site (zie onderste link in dsig) gaan. Dan naar Contact en dan zie je het wel. Dan zul je ook kunnen testen enzo voor mijn part. Ik heb het helaas nog niet goed onder de knie om het voor elkaar te krijgen dat ik het formuliertje ingebouwd krijgen wegens de side-bar. Die gaat dan onder het formulier zitten ipv links ernaast :(

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.

×
×
  • Create New...