Kontaktformular- Spamfælde og kontrol af felter.
Har sat denne kontaktformular ind på en hjemmeside, jeg lige har oprettet. Har kun rettet i navnet på filen og så selvfølgelig i de punkter du beskriver.
Hvis jeg ikke skriver noget i nogle af felterne eller bare udfylder dele af formularen. Så kommer der ikke nogle "fejl meddelelser" bliver bare viderestillet til den valgte side.
Ellers tak for en god side. Den har lært mig meget. Sidst jeg lavede hjemmeside var det med rammer. Så lidt en ny verden.
Hjemmeside: http://www.historisk-samfund.dk/dokumenter/kontakt/kontakt-webmaster.php
Kontaktformular
dele af kontakt-webmaster.php siden:
<form method="post" action="kontakt-webmaster-formular.php"
name="formular">
<table style="width: 475px; margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="width: 100px;" align="left">Navn:</td>
<td align="left"><input name="navn" style="width: 375px;"
type="text"></td>
</tr>
<tr>
<td align="left">E-mail:</td>
<td align="left"> <span style="display: none;">Dette felt skal
ikke udfyldes: <input name="email" type="text"><br>
</span><input name="epost" style="width: 375px;" type="text"></td>
</tr>
<tr>
<td align="left">Emne:</td>
<td align="left"><input name="emne" style="width: 375px;"
type="text"></td>
</tr>
<tr>
<td align="left">Besked:</td>
<td align="center"><textarea name="besked"
style="width: 375px; height: 100px;" rows="5" cols="40"></textarea></td>
</tr>
<tr>
<td colspan="2" style="text-align: center;">Send kopi til dig
selv<input name="kopi" type="checkbox"></td>
</tr>
<tr>
<td colspan="2" align="center"><input value="Send" type="submit">
<input name="clear" value="Slet alt" title="Slet alt"
type="reset"></td>
</tr>
</tbody>
</table>
</form>
Selve kontakt-webmaster-formular.php fil
<?php
$hjemmeside = "historisk-samfund.dk";
$mail = "***@stofanet.dk";
$afsendermail = "kanikke@besvares.invalid";
$viderestil = "tak.php";
/* Her hentes oplysningerne fra de udfyldte felter */
$navn = $_REQUEST['navn'] ;
$email = $_REQUEST['email'] ;
$epost = $_REQUEST['epost'] ;
$besked = $_REQUEST['besked'];
$spamfaelde = $_REQUEST['spamfaelde'];
$kopi = $_REQUEST['kopi'];
$emne = $_REQUEST['emne'];
/* Her tjekkes, om det skjulte spamfÊlde-felt er udfyldt */
if(!empty($email)) {
echo "Du er havnet i formularens spamfÊlde. Det burde ikke vÊre muligt at havne her ved et uheld, s skam dig!";
exit ();
}
/* Her tjekkes, om der er forbudte tegn i felterne */
if(strpos($navn,'@')!==false || strpos($epost,'\\')!==false || strpos($emne,'\\')!==false || strpos($navn,'\\')!==false)
{
echo "Formularen er ikke udfyldt korrekt, tryk p tilbage-knappen og pr¯v igen. Tjek, at du har skrevet din mail-adresse korrekt, og at du har skrevet den i det rigtige felt. Der m ikke vÊre baglÊns skrÂstreger (\) i felterne.";
exit();
}
/* Her tjekkes, om afsenderen har indtastet sin mail-adresse, og i s fald bruges den som afsendeeradresse, s der kan svares p mailen */
if(!empty($epost)) {
$headers="From: $navn <$epost>\r\n";
}
else {
$headers="From: Kontaktformular <$afsendermail>\r\n";
}
/* Her indsÊttes din mailadresse, s afsenderen kan svare p kopimailen */
$formularheaders="From: $hjemmeside <$afsendermail>\r\n";
/* Her samles afsenderens navn, mailadresse og besked i en enkelt variabel */
$oplysninger="F¯lgende er sendt via kontaktformularen p $hjemmeside:\r\n\r\nNavn: $navn\r\nE-mail: $epost\r\nBesked:\r\n$besked";
/* Her samles oplysningerne til afsenderens kopi af mailen */
$kopimail="Hej $navn\r\nDu har sendt f¯lgende via kontaktformularen p $hjemmeside:\r\n$besked";
if ($kopi > '') {
/* Her sendes til modtageradressen */
mail($mail, $emne, $oplysninger, $headers);
/* Her sendes en kopimail til afsenderen */
mail($epost, $emne, $kopimail, $formularheaders);
}
else {
/* Her sendes mailen til modtageradressen */
mail($mail, $emne, $oplysninger, $headers);
}
/* NÂr mailen er sendt, viderestilles til denne hjemmeside */
header( "Location: $viderestil" );
?>
Håber du/I kan hjælpe. Skal siges jeg bruger mac, hvis det har nogen betydning, kompozer, Safari og Firefox.
Søren
Hvis jeg ikke skriver noget i nogle af felterne eller bare udfylder dele af formularen. Så kommer der ikke nogle "fejl meddelelser" bliver bare viderestillet til den valgte side.
Ellers tak for en god side. Den har lært mig meget. Sidst jeg lavede hjemmeside var det med rammer. Så lidt en ny verden.
Hjemmeside: http://www.historisk-samfund.dk/dokumenter/kontakt/kontakt-webmaster.php
Kontaktformular
dele af kontakt-webmaster.php siden:
<form method="post" action="kontakt-webmaster-formular.php"
name="formular">
<table style="width: 475px; margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="width: 100px;" align="left">Navn:</td>
<td align="left"><input name="navn" style="width: 375px;"
type="text"></td>
</tr>
<tr>
<td align="left">E-mail:</td>
<td align="left"> <span style="display: none;">Dette felt skal
ikke udfyldes: <input name="email" type="text"><br>
</span><input name="epost" style="width: 375px;" type="text"></td>
</tr>
<tr>
<td align="left">Emne:</td>
<td align="left"><input name="emne" style="width: 375px;"
type="text"></td>
</tr>
<tr>
<td align="left">Besked:</td>
<td align="center"><textarea name="besked"
style="width: 375px; height: 100px;" rows="5" cols="40"></textarea></td>
</tr>
<tr>
<td colspan="2" style="text-align: center;">Send kopi til dig
selv<input name="kopi" type="checkbox"></td>
</tr>
<tr>
<td colspan="2" align="center"><input value="Send" type="submit">
<input name="clear" value="Slet alt" title="Slet alt"
type="reset"></td>
</tr>
</tbody>
</table>
</form>
Selve kontakt-webmaster-formular.php fil
<?php
$hjemmeside = "historisk-samfund.dk";
$mail = "***@stofanet.dk";
$afsendermail = "kanikke@besvares.invalid";
$viderestil = "tak.php";
/* Her hentes oplysningerne fra de udfyldte felter */
$navn = $_REQUEST['navn'] ;
$email = $_REQUEST['email'] ;
$epost = $_REQUEST['epost'] ;
$besked = $_REQUEST['besked'];
$spamfaelde = $_REQUEST['spamfaelde'];
$kopi = $_REQUEST['kopi'];
$emne = $_REQUEST['emne'];
/* Her tjekkes, om det skjulte spamfÊlde-felt er udfyldt */
if(!empty($email)) {
echo "Du er havnet i formularens spamfÊlde. Det burde ikke vÊre muligt at havne her ved et uheld, s skam dig!";
exit ();
}
/* Her tjekkes, om der er forbudte tegn i felterne */
if(strpos($navn,'@')!==false || strpos($epost,'\\')!==false || strpos($emne,'\\')!==false || strpos($navn,'\\')!==false)
{
echo "Formularen er ikke udfyldt korrekt, tryk p tilbage-knappen og pr¯v igen. Tjek, at du har skrevet din mail-adresse korrekt, og at du har skrevet den i det rigtige felt. Der m ikke vÊre baglÊns skrÂstreger (\) i felterne.";
exit();
}
/* Her tjekkes, om afsenderen har indtastet sin mail-adresse, og i s fald bruges den som afsendeeradresse, s der kan svares p mailen */
if(!empty($epost)) {
$headers="From: $navn <$epost>\r\n";
}
else {
$headers="From: Kontaktformular <$afsendermail>\r\n";
}
/* Her indsÊttes din mailadresse, s afsenderen kan svare p kopimailen */
$formularheaders="From: $hjemmeside <$afsendermail>\r\n";
/* Her samles afsenderens navn, mailadresse og besked i en enkelt variabel */
$oplysninger="F¯lgende er sendt via kontaktformularen p $hjemmeside:\r\n\r\nNavn: $navn\r\nE-mail: $epost\r\nBesked:\r\n$besked";
/* Her samles oplysningerne til afsenderens kopi af mailen */
$kopimail="Hej $navn\r\nDu har sendt f¯lgende via kontaktformularen p $hjemmeside:\r\n$besked";
if ($kopi > '') {
/* Her sendes til modtageradressen */
mail($mail, $emne, $oplysninger, $headers);
/* Her sendes en kopimail til afsenderen */
mail($epost, $emne, $kopimail, $formularheaders);
}
else {
/* Her sendes mailen til modtageradressen */
mail($mail, $emne, $oplysninger, $headers);
}
/* NÂr mailen er sendt, viderestilles til denne hjemmeside */
header( "Location: $viderestil" );
?>
Håber du/I kan hjælpe. Skal siges jeg bruger mac, hvis det har nogen betydning, kompozer, Safari og Firefox.
Søren