Contactformulier werkt niet op nieuwe server
ik had onderstaand contactformulier altijd goed draaiend op mijn server staan. Sinds vorige week heb ik een nieuwe server, en nu doet hij het NIET meer.
Eerst:
Je vult het formulier in en klikt op verzenden: je krijgt een reactie 'Het bericht is verzonden u krijgt zo spoedig mogelijk antwoordt'o.i.d. (Als je niets invult een foutmelding).
Nu:
Wanneer je het contactformulier invult en op verzenden klikt, wordt het formulier geleegd en er wordt niets verzonden.
Overige phpScripts vertonen ook problemen, hoefde dit voordien niet nu moeten bestanden van bv. een teller ook een aanpassing krijgen in de rechten (chmodden).
Echter bij dit formulier heeft dit geen effect (het hoeft ook niet te schrijven).
Misschien dat jullie een blik op het script kunnen werpen, of daar iets in fout zit (nouja iets dat de nieuwe server verkeerd kan opvatten).
We zaten bij HostNederland (van JRonline)
En zijn over op Freerider (ook van JRonline)
Een op dit moment dus niet werkende versie is te vinden op www.vanmeijeren.nl/contact.php
Het script:
Code (php)
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
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
<?php
$recipient = "x";
$subject = "" . $subject . "\n";
$header = "From: " . $email . "\n";
$mail_body = "Het contactformulier werd op " .date("d-m-Y") . " om " . date("H:i") . " uur uitgevoerd.\n";
$mail_body .= "De volgende gegevens werden ingevoerd:\n\n";
$mail_body .= "Naam: " . $name . "\n";
$mail_body .= "E-mailadres: " . $email . "\n\n";
$mail_body .= "IP adres: " . $ip . "\n";
$mail_body .= "Vraag:\n";
$mail_body .= $vraag . "\n\n --- Einde van het automatisch gegenereerde bericht. ---";
if($submit){
if(strlen($name) == 0) {
$error_msg="Voer alstublieft uw naam in.<br>";
}
if(strlen($email) == 0) {
$error_msg="Voer alstublieft uw e-mailadres in.<br>";
}
if(strlen($vraag) == 0) {
$error_msg="Laat ons alstublieft weten wat u ons wilt vragen.<br>";
}
if($error_msg){
echo "Uw vraag kon om de volgende redenen helaas niet worden verwerkt:<br><br>";
echo $error_msg;
echo "<br>Klik alstublieft op <a href=javascript:history.back(1)>Vorige</a> en vul alle velden in.";
}else{
echo "Wij zullen uw vraag zo spoedig mogelijk beantwoorden!";
mail($recipient, $subject, $mail_body, $header);
}
}else{
?>
$recipient = "x";
$subject = "" . $subject . "\n";
$header = "From: " . $email . "\n";
$mail_body = "Het contactformulier werd op " .date("d-m-Y") . " om " . date("H:i") . " uur uitgevoerd.\n";
$mail_body .= "De volgende gegevens werden ingevoerd:\n\n";
$mail_body .= "Naam: " . $name . "\n";
$mail_body .= "E-mailadres: " . $email . "\n\n";
$mail_body .= "IP adres: " . $ip . "\n";
$mail_body .= "Vraag:\n";
$mail_body .= $vraag . "\n\n --- Einde van het automatisch gegenereerde bericht. ---";
if($submit){
if(strlen($name) == 0) {
$error_msg="Voer alstublieft uw naam in.<br>";
}
if(strlen($email) == 0) {
$error_msg="Voer alstublieft uw e-mailadres in.<br>";
}
if(strlen($vraag) == 0) {
$error_msg="Laat ons alstublieft weten wat u ons wilt vragen.<br>";
}
if($error_msg){
echo "Uw vraag kon om de volgende redenen helaas niet worden verwerkt:<br><br>";
echo $error_msg;
echo "<br>Klik alstublieft op <a href=javascript:history.back(1)>Vorige</a> en vul alle velden in.";
}else{
echo "Wij zullen uw vraag zo spoedig mogelijk beantwoorden!";
mail($recipient, $subject, $mail_body, $header);
}
}else{
?>
<p>Contactformulier</p>
<table border="0">
<form action="" method="POST">
<tr>
<td>Naam:</td>
<td><input type="text" name="name" size="80"></td>
</tr>
<tr>
<td> E-mailadres:</td>
<td><input type="text" name="email" size="80"></td>
</tr>
<tr>
<td> Onderwerp:</td>
<td><input type="text" name="subject" size="80"></td>
</tr>
<tr>
<td>Vraag:</td>
<td><textarea name="vraag" rows="10" cols="60"></textarea></td>
</tr>
<tr>
<td><input type="submit" name="submit" value="Verzenden"></td>
</tr>
</form>
</table>
Gewijzigd op 11/10/2011 15:51:18 door B a s
probeer dit eens te veranderen in:
Dus bijvoorbeeld:
$subject = "" . $subject . "\n";
wordt nu
$subject = "" . $_POST['subject'] . "\n";
En dan dus alles wat uit je form komt.
PS. Lees eens wat over e-mailinjection.
Hij gaat door met verzenden, en begint aan de ingebouwde controles: Naam, email en dan: vraag.
Echter op het onderdeel vraag blijft hij hangen.
Hoewel je wel een waarde in het formulier invult, blijft de waarschuwing 'Je hebt geen vraag ingevuld' komen.
Ik heb het voorbeeld bijgewerkt, je ziet het probleem met 'vraag'.
(Ik heb beide van jullie antwoorden geprobeert, eerst slechts .$_POST['subject'] ) en daarna ook alle waarden hiermee vervangen, beiden leiden tot hetzelfde 'vraag' probleem.)
Kan iemand mij dan toevallig ook nog vertellen, waarom dit script het eerst 100% deed en nu op een nieuwe server zoveel elende geeft?
Alvast harstikke bedankt,
Groeten Hugo van Meijeren
Het probleem komt omdat de serverinstellingen anders (veiliger) ingesteld staan dan bij de andere host.
$mail_body .= "Vraag:\n";
$mail_body .= $_POST['vraag'] . "\n\n --- Einde van het automatisch gegenereerde bericht. ---";
Groeten Hugo
Overigens gebruik je zowel $_SERVER['PHP_SELF'] in je formulier als $_POST in je mailtjes: dit is onveilig. Zie http://www.scriptorama.nl/security/mail-en-headers en http://www.scriptorama.nl/security/tips-veiligere-site-phpself voor meer info over waarom dit "gevaarlijk" is.
Hugo:
Beste forumleden,
...
Overige phpScripts vertonen ook problemen, hoefde dit voordien niet nu moeten bestanden van bv. een teller ook een aanpassing krijgen in de rechten (chmodden).
...
...
Overige phpScripts vertonen ook problemen, hoefde dit voordien niet nu moeten bestanden van bv. een teller ook een aanpassing krijgen in de rechten (chmodden).
...
waarschijnlijk ben je van een windowsserver over gegaan naar een linux server, op gooooogle is hier wel meer info over te vinden
PHP:
waarschijnlijk ben je van een windowsserver over gegaan naar een linux server, op gooooogle is hier wel meer info over te vinden
NEEEE geen windowsserver! Vorige was ook Linux.
Ik zal even de informatie doorlezen, ben nu in ieder geval een stap verder, en denk dat ik er wel uitkom.
Groeten Hugo