Er staat 1 foutje in bij Inschijven moet inschijven worden heb deze aangepast in je code en heb nog een paar extra aanpassingen gemaakt zo dat je formulier nog wat veiliger is geworden.
heb overal in de code commentaar gezet van wat ik heb aangepast.
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['verzenden'])) { // extra controle toegevoegd zo dat er geen Get op het formulier kan worden toegepast.
function check_email($address) {
list($local, $host) = explode("@", $address);
$pattern_local = "^([0-9a-z]*([-|_]?[0-9a-z]+)*)(([-|_]?)\.([-|_]?)[0-9a-z]*([-|_]?[0-9a-z]+)+)*([-|_]?)$";
$pattern_host = "^([0-9a-z]+([-]?[0-9a-z]+)*)(([-]?)\.([-]?)[0-9a-z]*([-]?[0-9a-z]+)+)*\.[a-z]{2,4}$";
$match_local = preg_match($pattern_local, $local); // ook de controle aangepast eregi is niet meer beschikbaar in php 5.3 daarom preg_match gebruiken
$match_host = preg_match($pattern_host, $host); // ook de controle aangepast eregi is niet meer beschikbaar in php 5.3 daarom preg_match gebruiken
if($match_local && $match_host) {
return 1;
} else {
return 0;
}
}
if (!trim($_POST['inschrijven'])) // hier stond Inschrijven. met een hoofdletter I en in de name is het met een kleine i
$error="U moet een e-mail adres invullen!";
if ($error != "") {
echo $error."<br><a href=\"javascript:history.go(-1);\">Klik hier</a> om terug te keren";
} else {
$bericht = "Inschrijven: ".$_POST['inschrijven'];
mail ("info@computerlijn.be", "Contact site", $bericht, "FROM: Site");
echo "Bedankt ".$_POST['inschrijven'].", Bedankt voor uw inschrijving!";
}
} else {
?>
<table width="100%" border="0" class="navbox1">
<tr>
<td>
<form method="post" action="">
<table width="100%" cellpadding="0" cellspacing="0" class="navbox2">
<tr>
<td width="34%" class="blue_txt_11">Inschrijven op onze nieuwsbrief:</td>
<td width="42%"><input type="text" name="inschrijven" id="inschrijven" size="28"></td>
<td width="24%"><input type="submit" name="verzenden" value="Verzenden"></td>
</tr>
</table>
</td>
</tr>
</table>
<?php
}
?>
<?php
if($_SERVER['REQUEST_METHOD']=='POST'&&isset($_POST['verzenden'])){// extra controle toegevoegd zo dat er geen Get op het formulier kan worden toegepast.
mail settings moet je waarschijnlijk nog instellen test je dit local ?
Ik heb de vervolg pagina in action verwijderd de rede ik heb die niet dus kan ik ook niet door verwijzen.
karel - 02/10/2010 09:21 (laatste wijziging 02/10/2010 09:22)
HTML interesse
Nog steeds werkt het niet !
Wat bedoel je met mail settings nog instellen
ik test dit online !
Heb de mail aangepast zie hier onder als goed is zou het nu wel correct moeten werken.
Er was zo te zien geen host bekend bij het versturen en daardoor werkte de mail functie niet correct.
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['verzenden'])) { // extra controle toegevoegd zo dat er geen Get op het formulier kan worden toegepast.
function check_email($address) {
list($local, $host) = explode("@", $address);
$pattern_local = "^([0-9a-z]*([-|_]?[0-9a-z]+)*)(([-|_]?)\.([-|_]?)[0-9a-z]*([-|_]?[0-9a-z]+)+)*([-|_]?)$";
$pattern_host = "^([0-9a-z]+([-]?[0-9a-z]+)*)(([-]?)\.([-]?)[0-9a-z]*([-]?[0-9a-z]+)+)*\.[a-z]{2,4}$";
$match_local = preg_match($pattern_local, $local); // ook de controle aangepast eregi is niet meer beschikbaar in php 5.3 daarom preg_match gebruiken
$match_host = preg_match($pattern_host, $host); // ook de controle aangepast eregi is niet meer beschikbaar in php 5.3 daarom preg_match gebruiken
if($match_local && $match_host) {
return 1;
} else {
return 0;
}
}
if (!trim($_POST['inschrijven'])) // hier stond Inschrijven. met een hoofdletter I en in de name is het met een kleine i
$error="U moet een e-mail adres invullen!";
if ($error != "") {
echo $error."<br><a href=\"javascript:history.go(-1);\">Klik hier</a> om terug te keren";
} else {
$to = "info@computerlijn.be";
$subject = "Inschrijven:";
$bericht = "Ik wil mij inschijven voor de nieuwsbrief mijn email: " . $_POST['inschrijven'] ;
$header = "FROM: ". $_POST['inschrijven'];
mail($to,$subject, $bericht, $header);
echo "Bedankt ".$bericht .", Bedankt voor uw inschrijving!";
}
} else {
?>
<table width="100%" border="0" class="navbox1">
<tr>
<td>
<form method="post" action="">
<table width="100%" cellpadding="0" cellspacing="0" class="navbox2">
<tr>
<td width="34%" class="blue_txt_11">Inschrijven op onze nieuwsbrief:</td>
<td width="42%"><input type="text" name="inschrijven" id="inschrijven" size="28"></td>
<td width="24%"><input type="submit" name="verzenden" value="Verzenden"></td>
</tr>
</table>
</td>
</tr>
</table>
<?php
}
?>
<?php
if($_SERVER['REQUEST_METHOD']=='POST'&&isset($_POST['verzenden'])){// extra controle toegevoegd zo dat er geen Get op het formulier kan worden toegepast.
Heb je een online linkje ? => niet meer van toepassing.
Ik was te snel ziet nu wel dat het werkt.
Was waarschijnlijk een caching van php die was blijven staan in eerste instantie denk ik.
Dat je daarom al de post had gegeven dat het niet werkte.
Misschien nog een vraagje
zaosl je kon zien ging het hier over 1 veld waar een e-mail adres moest ingevuld worden.
Mijn vraag voor dit veld was inschrijven op de nieuwsbrief.
Kan ik ook bv 3 vragen maken met een vinkbox zodat de bezoeker kan kiezen uit bv. inschrijven, uitschrijven, andere ?
Maar je kan hier dan beter radio buttons voor gebruiken dan kunnen ze maar 1 optie aangeven.
Let wel op dat je dan eerst de afhandeling van de opties verwerkt voor dat je de mail verstuur.
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['verzenden'])) { // extra controle toegevoegd zo dat er geen Get op het formulier kan worden toegepast.
function check_email($address) {
list($local, $host) = explode("@", $address);
$pattern_local = "^([0-9a-z]*([-|_]?[0-9a-z]+)*)(([-|_]?)\.([-|_]?)[0-9a-z]*([-|_]?[0-9a-z]+)+)*([-|_]?)$";
$pattern_host = "^([0-9a-z]+([-]?[0-9a-z]+)*)(([-]?)\.([-]?)[0-9a-z]*([-]?[0-9a-z]+)+)*\.[a-z]{2,4}$";
$match_local = preg_match($pattern_local, $local); // ook de controle aangepast eregi is niet meer beschikbaar in php 5.3 daarom preg_match gebruiken
$match_host = preg_match($pattern_host, $host); // ook de controle aangepast eregi is niet meer beschikbaar in php 5.3 daarom preg_match gebruiken
if($match_local && $match_host) {
return 1;
} else {
return 0;
}
}
// afhandling radio buttons
if($_POST['actie'] == "aan") {
$actie = "aanmelden";
}
if($_POST['actie'] == "uit") {
$actie = "afmelden";
}
if($_POST['actie'] == "geen") {
$actie = "geen actie";
}
if (!trim($_POST['inschrijven'])) // hier stond Inschrijven. met een hoofdletter I en in de name is het met een kleine i
$error="U moet een e-mail adres invullen!";
if ($error != "") {
echo $error."<br><a href=\"javascript:history.go(-1);\">Klik hier</a> om terug te keren";
} else {
$to = "info@computerlijn.be";
$subject = "Inschrijven:";
$bericht = "Ik wil mij ".$actie. " voor de nieuwsbrief mijn email: " . $_POST['inschrijven'] ;
$header = "FROM: ". $_POST['inschrijven'];
mail($to,$subject, $bericht, $header);
echo "Bedankt ".$bericht .", Bedankt voor uw inschrijving!";
}
} else {
?>
<table width="100%" border="0" class="navbox1">
<tr>
<td>
<form method="post" action="">
<table width="100%" cellpadding="0" cellspacing="0" class="navbox2">
<tr>
<td width="34%" class="blue_txt_11">Inschrijven op onze nieuwsbrief: <br />
<input type="radio" name="actie" value="aan" checked/><label>inschijven</label><br />
<input type="radio" name="actie" value="uit"/><label>uitschijven</label><br />
<input type="radio" name="actie" value="geen"/><label>geen</label> <br />
<input type="text" name="inschrijven" id="inschrijven" size="28"> <br />
<input type="submit" name="verzenden" value="Verzenden"></td>
</tr>
</table>
</td>
</tr>
</table>
<?php
}
?>
<?php
if($_SERVER['REQUEST_METHOD']=='POST'&&isset($_POST['verzenden'])){// extra controle toegevoegd zo dat er geen Get op het formulier kan worden toegepast.