PHP formulier werkt niet met Safari, wel met andere browsers?

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 (met Rapidweaver) een werkend formulier met CAPTCHA kunnen maken. Dankzij MaartehhM heb ik al wat issues met het formulier kunnen oplossen. Ik blijf echter met 2 zaken zitten die blijkbaar wel optreden op mijn Imac met Safari als browser maar niet bij MaartehhM met IE7 (en volgens mij ook niet bij Firefox 3 beta 5)

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) Na versturen van het formulier lukt het niet om via een klik te sluiten en weer op de homepage uit te komen.

Via deze link kom je op de bewuste webpagina.
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.

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'], "From: " . 
    $_POST['email']);

    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=\"javascript:window.location.href('http://www.daci-sr.com/index.html')\">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:
@Hans

Voor het eerste probleem heb ik geen oplossing, moet ik eerste weten welke CAPTCHA je gebruikt.

Voor het tweede probleem volgens mij is de syntax zo:

<a href=\"#\" onclick=\"window.location.href = 'http://www.daci-sr.com/index.html'\">

Maar waarom zet je deze link niet gewoon in je href???

Groet
 
wat is de code van 'securimage_show.php' ?

en de link:
PHP:
."Klik <a href=\"#\" onclick=\"window.location.href('http://www.daci-sr.com/index.html')\">hier</a> om dit venster te sluiten.";
Maar zoals jeroendel al zei, waarom niet in de href? Zoiets:
PHP:
."Klik <a href='http://www.daci-sr.com/index.html'>hier</a> om dit venster te sluiten.";
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan