Vreemde fouten in formulier

Status
Niet open voor verdere reacties.

HelpHans

Gebruiker
Lid geworden
27 apr 2008
Berichten
8
Beste lezers,

Na heel veel zoeken op internet, proberen en aanpassen heb ik een werkend formulier met CAPTCHA kunnen maken. Er zijn echter 3 problemen:

1) het CAPTCHA image verschijnt pas na een refresh van de webpagina. Wellicht heb ik hierdoor zelfs nog minder last van SPAM maar ik begrijp het niet.
2) Als het formulier verstuurd wordt dan gebeurt dat via een email adres van mijn webhost (anonymous@server23.hosting2go.nl Lijkt me dat dit toch niet de bedoeling kan zijn?
3) (ik denk het makkelijkste) Na versturen van het formulier lukt het niet om via een klik te sluiten en weer op de homepage uit te komen.

Het webadres van de pagina is: http://www.daci-sr.com/Lidmaatschap_en_Giften/form1/Form1.php
Onderstaand het script van de pagina, de andere pagina's waarnaar wordt gerefereerd generen het CAPTCHA image en staan in dezelfde directory.

Zelf heb ik niet al te veel verstand van php en HTML dus graag in je antwoord daar rekening mee houden.

O ja (ik weet niet of dat nog wat uitmaakt) Ik gebruik Rapidweaver voor de website generatie en werk zelf op een Apple Imac met Safari als browser.

Bedankt voor jullie reacties,
Hans



PHP:
<h1>Contactformulier</h1>
<br />
<?php
$to = "info@daci-sr.com";


if (!isset($_POST['submit'])) {

  showForm();

} else { //form submitted

  $error = 0;


  if(empty($_POST['name'])) {
    $error = 1;
    $errstr[] = "Vult u alstublieft uw naam in";
  }

  if(!preg_match("/^(?:[\w\d]+\.?)+@(?:(?:[\w\d]\-?)+\.)+\w{2,4}$/", $_POST['email'])) {
    $error = 1;
    $errstr[] = "Vult u alstublieft een geldig email adres in";
  }

  if(empty($_POST['message']) || preg_match("/^uw bericht hier graag$/i", $_POST['message'])) {
    $error = 1;
    $errstr[] = "Vult u alstublieft een bericht in";
  }

  if(empty($_POST['imagetext'])) {
    $error = 1;
    $errstr[] = "Neem de bovenstaande code over";
  } else {
    include "securimage.php";
    $img = new securimage();
    $valid = $img->check($_POST['imagetext']);

    if(!$valid) {
      $error = 1;
      $errstr[] = "De code is niet correct";
    }
  }

  if ($error == 1) {
    echo "<left>\n<font style=\"color: #FF0000\">\n";
    foreach($errstr as $err) {
      echo "<li> " . $err . "</li>\n";
    }
    echo "</font>\n</left>\n<br />\n\n";

    showForm();

  } else {
    @mail($to, "Contact via de site - " . $_POST['name'], 
    "Beste Hans,\n \nOp " . date("r") . " heeft " . $_POST['name'] . " (emailadres " . $_POST['email'] .
    " ) het volgende bericht gestuurd:\n \nReden: " .
    $_POST['reden'] . "\n\n" . stripslashes($_POST['message']) . "\n\n" . "Telefoonnummer: " . $_POST['telephone']);

    echo "<center>\nBedankt voor uw bezoek aan onze website en uw bericht.  We nemen zo spoedig mogelijk contact met u op.<br /><br />"
        ."Klik <a href=\"#\" onclick=\"self.close()\">hier</a> om dit venster te sluiten.";

  }

} //else submitted



function showForm()
{
  $_POST['message'] = @htmlspecialchars(@$_POST['message']);

  echo "
<form method='POST'>
<table cellpadding='5' cellspacing='1' align='left'>
  <tr>
    <td colspan='2'>In verband met spam dient u éérst op de Refresh button van uw browser te drukken. Vervolgens vult u de onderstaande velden in:</td>
  </tr>
  <tr>
    <td> Uw naam:</td>
    <td align='right'><input type='text' name='name' value='{$_POST['name']}' /></td>
  </tr>
  <tr>
    <td> Uw email adres:</td>
    <td align='right'><input type='text' name='email' value='{$_POST['email']}' /></td>
  </tr>
  <tr>
    <td> Telefoonnummer:</td>
    <td align='right'><input type='text' name='telephone' value='{$_POST['telephone']}' /></td>
  </tr>
  <tr>
    <td> De reden waarom u contact opneemt: u wilt</td>
    <td align='right'><select name='reden'>
                                    <option value='Meer informatie'>Meer informatie</option>
                                    <option value='Lid worden'>Lid worden</option>
                                    <option value='Donateur worden'>Donateur worden</option>
                                    <option value='Anders'>Anders</option>
                                    </select>
    </td>
  </tr>
  <tr>
    <td colspan='2'> Uw bericht:</td>
  </tr>
  <tr>
    <td colspan='2'><textarea name='message' rows='8' cols='50'>{$_POST['message']}</textarea></td>
  </tr>
  <tr>
    <td align='right' colspan='2'><img src='securimage_show.php'></td>
  </tr>
  <tr>
    <td> Neem de bovenstaande code over:</td>
    <td align='right'><input type='text' name='imagetext'/></td>
  </tr>
  <tr>
    <td colspan='2'><input type='submit' name='submit' value='&nbsp;&nbsp;Verstuur&nbsp;&nbsp;' /></td>
  </tr>
</table>
</form>";
}

?>
 
Laatst bewerkt door een moderator:
Beste Maarten,

Bedankt voor je antwoord, ik heb probleem 2) inderdaad kunnen oplossen door het toevoegen van "From: " . $_POST['email']. Het kostte me nog even tijd om uit te vinden dat die punt er tussen moest maar zoals ik al zei heb ik echt weinig verstand van php en HTML.

Probleem 1) lijkt dus met de browser van doen te hebben. Ik ben benieuwd hoe en of dit met andere browsers werkt.

Zou je ook nog even naar probleem 3) kunnen kijken?

Alvast bedankt,
Hans
 
Met PHP kan dat met de fucntie header();, alleen dat moet verstuurd worden voor ALLES, dus voor de <html>, doctype etc etc, en als je alles gaat verschuiven weet ik niet of alles nog werkt.

Je kan het dus proberen met javascript.

Probeer eens bij de regel:
."Klik <a href=\"#\" onclick=\"self.close()\">hier</a> om dit venster te sluiten.";

de self.close() te vervangen met:

window.location.href('index.html')
 
Ik heb de self.close() vervangen maar dit maakt geen enkel verschil. In Rapidweaver kun je een aangepaste kop maken. Deze wordt dan ingevoegd tussen <head> tags. Bedoel je dat met de functie Header()? Ik heb al geprobeerd daar het volgende neer te zetten:
header("Location: http://www.daci-sr.com")
maar dat heeft ook geen effect.
 
Dat heeft geen effect omdat, zoals ik al zei, dat verstuurd moet worden voor de html etc.

Waarschijnlijk werkt dat wat ik zei niet, (window.location) omdat er in de map "Lidmaatschap_en_Giften/form1/Form1.php" geen index.html zich bevindt.

Probeer het dus eens met

window.location.href("http://www.daci-sr.com/index.html")
 
Jammer, dat helpt ook niet. www. daci-sr.com/index.html bestaat wel maar als ik klik dan verandert de pagina niet, alleen eindigt het einde van het webadres niet meer in Form1.php maar in Form1.php#

Voor de goede orde, er staat nu dus:
"Klik <a href=\"#\" onclick=\"window.location.href('http://www.daci-sr.com/index.html')\">hier</a> om dit venster te sluiten."
 
Het ligt dan toch aan Safari.

Op het moment dat de pagina NU op de server staat (@21.49), wordt gewoon doorverwezen naar de startpagina. (IE7).
 
Laatst bewerkt:
Lastig hoor:

Zonder de \ krijg ik de pagina niet gepubliceerd. Met de \ en met javascript publiceert de pagina wel maar werkt het weer niet om door te klikken. Alleen de # wordt achter het webadres geplaatst.
 
OK bedankt. Als het nu nog steeds werkt (?) dan lukt het in ieder geval bij 90% van de gebruikers.
 
Geen probleem.

Post dit dan even bij de 'test mijn programma' sectie, zodat je van meedere mensen hoort of het nou eigenlijk werkt of niet.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan