Contactformulier werkt niet op nieuwe server

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Hugo van Meijeren

Hugo van Meijeren

02/03/2006 21:41:00
Quote Anchor link
Beste forumleden,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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{
?>


<p>Contactformulier</p>
<table border="0">
<form action="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $PHP_SELF ?>
" 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>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
}
?>
Gewijzigd op 11/10/2011 15:51:18 door B a s
 
PHP hulp

PHP hulp

17/11/2024 15:25:11
 
Terence Hersbach

Terence Hersbach

02/03/2006 21:45:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
if($submit){
    if(strlen($name) == 0) {


probeer dit eens te veranderen in:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
if($_POST['submit']){
    if(strlen($name) == 0) {
 
- SanThe -

- SanThe -

02/03/2006 22:09:00
Quote Anchor link
Waarschijnlijk moet je al de vars uit je form opvangen met $_POST['var']. Dit heeft te maken met een server instelling betreffende superglobals.

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.
 
Hugo van Meijeren

Hugo van Meijeren

03/03/2006 16:14:00
Quote Anchor link
JA we zijn een stap verder!
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
 
- SanThe -

- SanThe -

03/03/2006 16:23:00
Quote Anchor link
Heb je $_POST['vraag'] gebruikt?

Het probleem komt omdat de serverinstellingen anders (veiliger) ingesteld staan dan bij de andere host.
 
Hugo van Meijeren

Hugo van Meijeren

03/03/2006 18:14:00
Quote Anchor link
Ja zeker:

$mail_body .= "Vraag:\n";
$mail_body .= $_POST['vraag'] . "\n\n --- Einde van het automatisch gegenereerde bericht. ---";

Groeten Hugo
 
Mathieu Kooiman

Mathieu Kooiman

03/03/2006 18:29:00
Quote Anchor link
Je kunt met var_dump($_POST) eens kijken wat $_POST precies wel en niet bevat. Nog makkelijker is als je het gebruikt mbv. <pre> tags: echo '<pre>', Var_dump($_POST), '</pre>';

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.
 
PHP Newbie

PHP Newbie

03/03/2006 18:36:00
Quote Anchor link
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).
...


waarschijnlijk ben je van een windowsserver over gegaan naar een linux server, op gooooogle is hier wel meer info over te vinden
 
Hugo van Meijeren

Hugo van Meijeren

04/03/2006 11:32:00
Quote Anchor link
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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.