Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

contactformulier include in index geeft 404 pagina

llaannggee
9 antwoorden
  • Hallo,
    Ik heb een scriptje voor een contactfomulier met enkele foutmeldingen erin. Ik heb deze gemaakt en getest, alles werkt tot ik het in mijn index include, nu krijg ik telkens bij verzenden mijn 404 te zien inplaats de bedank pagina of foutmeldingen.
    Weet een van jullie wat ik nog moet aanpassen aan mijn script?

    Mijn site: http://www.sandercoumou.nl/?pagina=contact

    Alvast bedankt!
  • Als eerste:
    Ik tel iets te veel heads en body's in je pagina.

    Ten tweede:
    Kijk eens naar je form action:
    [code:1:b8996302cd] <form method="post" action="<br />
    <b>Notice</b>: Undefined index: test/PHP_SELF in <b>/var/www/vhosts/sandercoumou.nl/httpdocs/contact/contact.php</b> on line <b>254</b><br />
    ">
    [/code:1:b8996302cd]

    Daar zit nog een beetje werk aan denk :)
  • Teacher, hartelijk dank voor je reactie,

    Ik heb de overbodige head en body verwijderd, had dit over het hoofd gezien.
    uhm, ik begijp dat er in de post een fout zit.
    alleen kan je ook aangeven wat ik zou moeten aanpassen? ik snap namelijk niet wat ik daar fout doe, ik heb nu de volgende code

    <form method="post" action="<?php $_SERVER['test/PHP_SELF']; ?>">
    <p>
    <label <?php if(isset($fout['text']['naam'])) { echo 'class="fout"'; } ?>>Naam:</label>
    <input type="text" id="naam" name="naam" maxlength="30" <?php if(isset($fout['input']['naam'])) { echo 'class="fout"'; } ?> value="<?php if (!empty($naam)) { echo stripslashes($naam); } ?>" /><br />

    <label <?php if(isset($fout['text']['email'])) { echo 'class="fout"'; } ?>>Email:</label>
    <input type="text" id="email" name="email" maxlength="255" <?php if(isset($fout['input']['email'])) { echo 'class="fout"'; } ?> value="<?php if (!empty($email)) { echo stripslashes($email); } ?>" /><br />

    <label <?php if(isset($fout['text']['onderwerp'])) { echo 'class="fout"'; } ?>>Onderwerp:</label>
    <input type="text" id="onderwerp" name="onderwerp" maxlength="40" <?php if(isset($fout['input']['onderwerp'])) { echo 'class="fout'; } ?> value="<?php if (!empty($onderwerp)) { echo stripslashes($onderwerp); } ?>" /><br />

    <label <?php if(isset($fout['text']['bericht'])) { echo 'class="fout"'; } ?>>Bericht:</label>
    <textarea id="bericht" name="bericht" <?php if(isset($fout['input']['bericht'])) { echo 'class="fout"'; } ?> cols="35" rows="6"><?php if (!empty($bericht)) { echo stripslashes($bericht); } ?></textarea><br />

    Zou je iets precieser kunnen aangeven wat ik moet aanpassen?
    Alvast bedankt

    Sander
  • Je moet [code:1:7c7086efe1]<?php $_SERVER['test/PHP_SELF']; ?>[/code:1:7c7086efe1] vervangen door [code:1:7c7086efe1]<?php echo "test/" . $_SERVER['PHP_SELF']; ?>[/code:1:7c7086efe1]

    Overigens is er wel een veiligheidsrisico bij het gebruik van $_SERVER['PHP_SELF'].
  • [quote:6d3a02f1a4="llaannggee"]…
    <form method="post" action="<?php $_SERVER['test/PHP_SELF']; ?>">
    [/quote:6d3a02f1a4]

    $_SERVER heeft geen key: test/PHP_SELF. Dus daar zit 'm de fout. Welliswaar is het een super global, maar het is ook gewoon een associatieve array en een slash in een key kan nou eenmaal niet. Ik ken de context van het script niet, maar vermoedelijk moet het gewoon
    <?php $_SERVER['PHP_SELF']; ?> zijn.

    [edit]
    Ah, Supersnail was me net voor.
    [/edit] :D
  • Gooly en Supersnail hartelijk dank voor jullie snelle reacties!

    Het formulier werkt nu en verzend de informatie correct.
    Echter krijg ik nu nog 2 fouten in de bedankpagina, namelijk:

    [quote:3b7face406]
    Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/sandercoumou.nl/httpdocs/index.php:65) in /var/www/vhosts/sandercoumou.nl/httpdocs/contact/contact.php on line 207[/quote:3b7face406]

    Ik kan deze header vermelding in mijn script niet vinden …. ik zal wel blind zijn of zo

    [code:1:3b7face406]
    }
    else
    {
    $formulier = FALSE;


    if($cfg['HTML'])
    {
    // Headers
    $headers = "From: \"Contact Formulier\" <".$cfg['email'].">
    ";
    $headers .= "Reply-To: \"".$naam."\" <".$email.">
    ";
    $headers .= "Return-Path: Mail-Error <".$cfg['email'].">
    ";
    $headers .= "MIME-Version: 1.0
    ";
    $headers .= "Content-Transfer-Encoding: 8bit
    ";
    $headers .= "Content-type: text/html; charset=iso-8859-1
    ";


    $bericht = '
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    </head>


    <br />
    <b>Naam:</b> '.$naam.'<br />
    <b>Email:</b> <a href=\"mailto:'.$email.'\">'.$email.'</a><br />
    <br />
    <b>Bericht:</b><br />
    '.$bericht.'
    <br />
    <br />
    <br />
    ————————————————————————–<br />
    <b>Datum:</b> '.date("d-m-Y @ H:i:s").'<br />
    <b>IP:</b> <a href=\"http://sunny.nic.com/cgi-bin/whois?domain='.$_SERVER['REMOTE_ADDR'].'\">'.$_SERVER['REMOTE_ADDR'].'</a><br />
    <b>Host:</b> '.gethostbyaddr($_SERVER['REMOTE_ADDR']).'<br />

    </html>';
    }
    else
    {
    $bericht_wrap = wordwrap ($bericht, 40, "
    ", 1);
    // Headers
    $headers = "From: \"Contact Formulier\" <".$cfg['email'].">
    ";
    $headers .= "MIME-Version: 1.0
    ";
    $headers .= "Content-type: text/plain; charset='iso-8859-1'
    ";

    // Bericht
    $message = "Naam: ".$naam."
    ";
    $message .= "E-mail: ".$email."
    ";
    $message .= "Bericht:
    ".$bericht_wrap."
    ";
    $message .= "
    ";
    $message .= "Datum: ".date("d-m-Y H:i:s")."
    ";
    $message .= "——————————————————-
    ";
    $message .= "IP: ".$_SERVER['REMOTE_ADDR']."
    ";
    $message .= "Host: ".gethostbyaddr($_SERVER['REMOTE_ADDR'])."
    ";

    }

    if(mail($cfg['email'], "[Contact] ".$onderwerp, $bericht, $headers))
    {
    if(isset($_POST['stuurkopie']))
    {
    $headers = "From: \"Contact Formulier\" <".$email.">
    ";
    $headers .= "Reply-To: \"".$naam."\" <".$email.">
    ";
    $headers .= "Return-Path: Mail-Error <".$email.">
    ";
    $headers .= "MIME-Version: 1.0
    ";
    $headers .= "Content-Transfer-Encoding: 8bit
    ";
    $headers .= "Content-type: text/html; charset=iso-8859-1
    ";

    mail($email, "[Contact] ".$onderwerp, $bericht, $headers);

    }

    unset($naam, $email, $onderwerp, $bericht);
    setcookie("formulier", 1, time() + ( $cfg['spam'] * 60 ) );

    echo "
    <p>
    Uw bericht is succesvol verzonden.<br />
    <br /><br />
    Met vriendelijke groeten,<br />
    <b>".$cfg['naam']."</b>
    </p>
    ";
    }
    else
    {
    echo "Er is een fout opgetreden bij het verzenden van de email";
    }

    }
    }
    if($formulier)
    {
    ?>[/code:1:3b7face406]
























  • [code:1:c8e7cb731d]setcookie("formulier", 1, time() + ( $cfg['spam'] * 60 ) );[/code:1:c8e7cb731d]

    Cookies worden met de headers verstuurd. Daarom moet deze code, net als bij de "headers" functie, in je script staan voor elke uitvoer.
  • Supersnail,

    Ik heb de code zoals door jou opgegeven op meerdere plaatsen toegevoegd en getest, maar het blijft met hetzelfde resultaat. de genoemde foutmelding blijft terug komen.

    Waar zou ik die code moeten toevoegen dan? ik kom er zo niet uit.

    sander
  • Je moet de code niet toevoegen, maar verplaatsen (hij staat al in je script). Je moet hem zo "hoog" mogelijk zetten. Voordat je script uitvoer oplevert.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.