Sinds mijn overstap naar een andere hosting provider (en de overgang van Linux en PHP4 naar FreeBSD en PHP4) werkt mijn e-mailformulier niet meer.
Het formulier zag er zo uit:
Deze deed het dus helemaal goed, maar toen de PHP-versie veranderde naar 5 kreeg ik meteen de melding dat ik vergeten was de naam in te vullen. Wat blijkt nu: PHP5 gaat anders om met variabelen. Helaas ken ik php erg slecht maar ik ben erin geslaagd die foutmelding weg te krijgen door $ te vervangen door $_POST[''] of $_GET['']. Het volgende script is het resultaat:
Dit gaf geen foutmelding meer maar e-mails werden er ook niet verstuurd. Het duurt erg lang voor de pagina ververst. Nogmaals, ik weet te weinig ervan af (weet niet of overal POST en GET goed staat, daar kom ik niet uit) maar ik HAD een werkend mailscript maar nu niet meer.... Wat ik ook nog heb geprobeerd is om het laatste gedeelte terug te veranderen:
Weet iemand wat er mis is? Bedankt!
Het formulier zag er zo uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Contact</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Refresh" content="3; URL=index.html">
<?
if ($naam_afzender == "")
{
echo "<script language=\"javascript\">alert(\"U bent vergeten uw naam in te vullen.\");history.go(-1)</script>";
}
elseif ($email_afzender == "")
{
echo "<script language=\"javascript\">alert(\"U bent vergeten uw e-mailadres in te vullen.\");history.go(-1)</script>";
}
elseif ($onderwerp == "")
{
echo "<script language=\"javascript\">alert(\"U bent vergeten een onderwerp in te vullen.\");history.go(-1)</script>";
}
elseif ($bericht == "")
{
echo "<script language=\"javascript\">alert(\"U bent vergeten een bericht in te vullen.\");history.go(-1)</script>";
} else {
$antwoord="Wij hebben uw reactie ontvangen en zullen zo spoedig mogelijk reageren.";
$antwoordonderwerp="Bedankt voor uw bericht";
$Name="Afzender : $naam_afzender\n";
$Email="E-mail : $email_afzender\n\n";
$Message="Bericht : $bericht\n\n";
$Date="Verstuurd op " . date("d-m-Y H:i:s") . "\n";
$IP="IP-Adres Afzender : $REMOTE_ADDR";
mail("pinockio@gmail.com", "$onderwerp", "$Name$Email$Message$Date$IP", "From: $naam_afzender <$email_afzender>");
mail("$email_afzender", "$antwoordonderwerp", "$antwoord", "From: Pinockio <pinockio@gmail.com>");
}
?>
<html>
<font face="Verdana" size="2">Bedankt, uw e-mail is verzonden</font><br><br><br>
<font face="Verdana" size="2">U wordt binnen 5 seconden doorgestuurd naar beginpagina.</font>
</html> |
Deze deed het dus helemaal goed, maar toen de PHP-versie veranderde naar 5 kreeg ik meteen de melding dat ik vergeten was de naam in te vullen. Wat blijkt nu: PHP5 gaat anders om met variabelen. Helaas ken ik php erg slecht maar ik ben erin geslaagd die foutmelding weg te krijgen door $ te vervangen door $_POST[''] of $_GET['']. Het volgende script is het resultaat:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Contact</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Refresh" content="3; URL=index.html">
<?
if ($_POST['naam_afzender'] == "")
{
echo "<script language=\"javascript\">alert(\"U bent vergeten uw naam in te vullen.\");history.go(-1)</script>";
}
elseif ($_POST['email_afzender'] == "")
{
echo "<script language=\"javascript\">alert(\"U bent vergeten uw e-mailadres in te vullen.\");history.go(-1)</script>";
}
elseif ($_POST['onderwerp'] == "")
{
echo "<script language=\"javascript\">alert(\"U bent vergeten een onderwerp in te vullen.\");history.go(-1)</script>";
}
elseif ($_POST['bericht'] == "")
{
echo "<script language=\"javascript\">alert(\"U bent vergeten een bericht in te vullen.\");history.go(-1)</script>";
} else {
$antwoord="Wij hebben uw reactie ontvangen en zullen zo spoedig mogelijk reageren.";
$_POST['antwoordonderwerp']="Bedankt voor uw bericht";
$_POST['Name']="Afzender : '$_GET[naam_afzender]'\n";
$_POST['Email']="E-mail : '$_GET[email_afzender]'\n\n";
$_POST['Message']="Bericht : '$_GET[Bericht]'\n\n";
$_POST['Date']="Verstuurd op " . date("d-m-Y H:i:s") . "\n";
$_POST['IP']="IP-Adres Afzender : $_GET[REMOTE_ADDR]";
mail("pinockio@gmail.com", "$_POST[onderwerp]", "$_POST[Name]$_POST[Email]$_POST[Message]$_POST[Date]$_POST[IP]", "From: $_POST[naam_afzender] <$_POST[email_afzender]>");
mail("$_GET[email_afzender]", "$_POST[antwoordonderwerp]", "$_POST[antwoord]", "From: Pinockio <pinockio@gmail.com>");
}
?>
<html>
<font face="Verdana" size="2">Bedankt, uw e-mail is verzonden</font><br><br><br>
<font face="Verdana" size="2">U wordt binnen 5 seconden doorgestuurd naar beginpagina.</font>
</html> |
Dit gaf geen foutmelding meer maar e-mails werden er ook niet verstuurd. Het duurt erg lang voor de pagina ververst. Nogmaals, ik weet te weinig ervan af (weet niet of overal POST en GET goed staat, daar kom ik niet uit) maar ik HAD een werkend mailscript maar nu niet meer.... Wat ik ook nog heb geprobeerd is om het laatste gedeelte terug te veranderen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| $antwoordonderwerp="Bedankt voor uw bericht";
$Name="Afzender : $naam_afzender\n";
$Email="E-mail : $email_afzender\n\n";
$Message="Bericht : '$bericht\n\n";
$Date="Verstuurd op " . date("d-m-Y H:i:s") . "\n";
$IP="IP-Adres Afzender : $REMOTE_ADDR";
mail("pinockio@gmail.com", "$onderwerp", "$Name$Email$Message$Date$IP", "From: $naam_afzender
<$email_afzender>");
mail("$email_afzender", "$antwoordonderwerp", "$antwoord", "From: Pinockio<pinockio@gmail.com>");
}
?> |
Weet iemand wat er mis is? Bedankt!
[ Voor 20% gewijzigd door pinockio op 21-06-2006 15:56 ]
Disclaimer: P. aanvaardt geen aansprakelijkheid op grond van dit bericht.