Contactformulier werkt niet binnen CSS opmaak en gebruik van DIV

Status
Niet open voor verdere reacties.

Devogon

Nieuwe gebruiker
Lid geworden
11 mrt 2012
Berichten
3
Hallo ,

Ik ben nieuw in het forum en heb een vraag over een contacformulier. Ik heb een werkende php code gevonden. Hiet voorbeeld formulier werkt goed. Ik heb naar mijn idee de gegevens overgnomen in een eigen contact formulier dat ook een bepaalde opmaak moet tonen. Echter krijg ik het geheel niet werkend in de opmaak versie. Is er iemand die mij kan helpen?

Bron PHP code (werkend)
Code:
[PHP]<?php
session_start(); // this MUST be called prior to any output including whitespaces and line breaks!

$GLOBALS['DEBUG_MODE'] = 0;
// CHANGE TO 0 TO TURN OFF DEBUG MODE
// IN DEBUG MODE, ONLY THE CAPTCHA CODE IS VALIDATED, AND NO EMAIL IS SENT

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <title>Securimage Example Form</title>
  <style type="text/css">
  <!--
  .error { color: #f00; font-weight: bold; font-size: 1.2em; }
  .success { color: #00f; font-weight; bold; font-size: 1.2em; }
  fieldset { width: 90%; }
  legend { font-size: 24px; }
  .note { font-size: 18px;
  -->
  </style>
</head>
<body>

<fieldset>
<legend>Example Form</legend>

<p class="note">
  This is an example PHP form that processes user information, checks for errors, and validates the captcha code.<br />
  This example form also demonstrates how to submit a form to itself to display error messages.
</p>

<?php

$GLOBALS['ct_recipient']   = email@mijnsite.nl'; // Change to your email address!
$GLOBALS['ct_msg_subject'] = 'Securimage Test Contact Form';

process_si_contact_form(); // Process the form, if it was submitted

if (isset($_SESSION['ctform']['error']) &&  $_SESSION['ctform']['error'] == true): /* The last form submission had 1 or more errors */ ?>
<span class="error">There was a problem with your submission.  Errors are displayed below in red.</span><br /><br />
<?php elseif (isset($_SESSION['ctform']['success']) && $_SESSION['ctform']['success'] == true): /* form was processed successfully */ ?>
<span class="success">The captcha was correct and the message has been sent!</span><br /><br />
<?php endif; ?>

<form method="post" action="<?php echo $_SERVER['REQUEST_URI'] . $_SERVER['QUERY_STRING'] ?>" id="contact_form">
  <input type="hidden" name="do" value="contact" />

  <p>
    <strong>Naam*:</strong>&nbsp; &nbsp;<?php echo @$_SESSION['ctform']['name_error'] ?><br />
    <input type="text" name="ct_name" size="35" value="<?php echo htmlspecialchars(@$_SESSION['ctform']['ct_name']) ?>" />
  </p>

  <p>
    <strong>E-mail*:</strong>&nbsp; &nbsp;<?php echo @$_SESSION['ctform']['email_error'] ?><br />
    <input type="text" name="ct_email" size="35" value="<?php echo htmlspecialchars(@$_SESSION['ctform']['ct_email']) ?>" />
  </p>

  <p>
    <strong>URL:</strong>&nbsp; &nbsp;<?php echo @$_SESSION['ctform']['URL_error'] ?><br />
    <input type="text" name="ct_URL" size="35" value="<?php echo htmlspecialchars(@$_SESSION['ctform']['ct_URL']) ?>" />
  </p>

  <p>
    <strong>Bericht*:</strong>&nbsp; &nbsp;<?php echo @$_SESSION['ctform']['message_error'] ?><br />
    <textarea name="ct_message" style="width: 450px; height: 200px"><?php echo htmlspecialchars(@$_SESSION['ctform']['ct_message']) ?></textarea>
  </p>

  <p>
    <img id="siimage" style="border: 1px solid #000; margin-right: 15px" src="./securimage_show.php?sid=<?php echo md5(uniqid()) ?>" alt="CAPTCHA Image" align="left">
    <object type="application/x-shockwave-flash" data="./securimage_play.swf?audio_file=./securimage_play.php&amp;bgColor1=#fff&amp;bgColor2=#fff&amp;iconColor=#777&amp;borderWidth=1&amp;borderColor=#000" height="32" width="32">
    <param name="movie" value="./securimage_play.swf?audio_file=./securimage_play.php&amp;bgColor1=#fff&amp;bgColor2=#fff&amp;iconColor=#777&amp;borderWidth=1&amp;borderColor=#000">
    </object>
    &nbsp;
    <a tabindex="-1" style="border-style: none;" href="#" title="Refresh Image" onclick="document.getElementById('siimage').src = './securimage_show.php?sid=' + Math.random(); this.blur(); return false"><img src="./images/refresh.png" alt="Reload Image" onclick="this.blur()" align="bottom" border="0"></a><br />
    <strong>Voer code in*:</strong><br />
     <?php echo @$_SESSION['ctform']['captcha_error'] ?>
    <input type="text" name="ct_captcha" size="12" maxlength="8" />
  </p>

  <p>
    <br />
    <input type="submit" value="Submit Message">
  </p>

</form>
</fieldset>

</body>
</html>

<?php

// The form processor PHP code
function process_si_contact_form()
{
  $_SESSION['ctform'] = array(); // re-initialize the form session data

  if ($_SERVER['REQUEST_METHOD'] == 'POST' && @$_POST['do'] == 'contact') {
  	// if the form has been submitted
  	
    foreach($_POST as $key => $value) {
      if (!is_array($key)) {
      	// sanitize the input data
        if ($key != 'ct_message') $value = strip_tags($value);
        $_POST[$key] = htmlspecialchars(stripslashes(trim($value)));
      }
    }

    $name    = @$_POST['ct_name'];    // name from the form
    $email   = @$_POST['ct_email'];   // email from the form
    $URL     = @$_POST['ct_URL'];     // url from the form
    $message = @$_POST['ct_message']; // the message from the form
    $captcha = @$_POST['ct_captcha']; // the user's entry for the captcha code
    $name    = substr($name, 0, 64);  // limit name to 64 characters

    $errors = array();  // initialize empty error array

    if (isset($GLOBALS['DEBUG_MODE']) && $GLOBALS['DEBUG_MODE'] == false) {
      // only check for errors if the form is not in debug mode
      
      if (strlen($name) < 3) {
        // name too short, add error
        $errors['name_error'] = 'Your name is required';
      }

      if (strlen($email) == 0) {
        // no email address given
        $errors['email_error'] = 'Email address is required';
      } else if ( !preg_match('/^(?:[\w\d]+\.?)+@(?:(?:[\w\d]\-?)+\.)+\w{2,4}$/i', $email)) {
        // invalid email format
        $errors['email_error'] = 'Email address entered is invalid';
      }

      if (strlen($message) < 20) {
        // message length too short
        $errors['message_error'] = 'Please enter a message';
      }
    }

    // Only try to validate the captcha if the form has no errors
    // This is especially important for ajax calls
    if (sizeof($errors) == 0) {
      require_once dirname(__FILE__) . '/securimage.php';
      $securimage = new Securimage();
      
      if ($securimage->check($captcha) == false) {
        $errors['captcha_error'] = 'Incorrect security code entered<br />';
      }
    }

    if (sizeof($errors) == 0) {
      // no errors, send the form
      $time       = date('r');
      $message = "A message was submitted from the contact form.  The following information was provided.<br /><br />"
                    . "Name: $name<br />"
                    . "Email: $email<br />"
                    . "URL: $URL<br />"
                    . "Message:<br />"
                    . "<pre>$message</pre>"
                    . "<br /><br />IP Address: {$_SERVER['REMOTE_ADDR']}<br />"
                    . "Time: $time<br />"
                    . "Browser: {$_SERVER['HTTP_USER_AGENT']}<br />";

      $message = wordwrap($message, 70);

      if (isset($GLOBALS['DEBUG_MODE']) && $GLOBALS['DEBUG_MODE'] == false) {
      	// send the message with mail()
        mail($GLOBALS['ct_recipient'], $GLOBALS['ct_msg_subject'], $message, "From: {$GLOBALS['ct_recipient']}\r\nReply-To: {$email}\r\nContent-type: text/html; charset=ISO-8859-1\r\nMIME-Version: 1.0");
      }

      $_SESSION['ctform']['error'] = false;  // no error with form
      $_SESSION['ctform']['success'] = true; // message sent
    } else {
      // save the entries, this is to re-populate the form
      $_SESSION['ctform']['ct_name'] = $name;       // save name from the form submission
      $_SESSION['ctform']['ct_email'] = $email;     // save email
      $_SESSION['ctform']['ct_URL'] = $URL;         // save URL
      $_SESSION['ctform']['ct_message'] = $message; // save message

      foreach($errors as $key => $error) {
      	// set up error messages to display with each field
        $_SESSION['ctform'][$key] = "<span style=\"font-weight: bold; color: #f00\">$error</span>";
      }

      $_SESSION['ctform']['error'] = true; // set error floag
    }
  } // POST
}

$_SESSION['ctform']['success'] = false; // clear success value after running[/PHP]

Dit is de codee met opmaak
Code:
[PHP]<?php
session_start(); // this MUST be called prior to any output including whitespaces and line breaks!

$GLOBALS['DEBUG_MODE'] = 1;
// CHANGE TO 0 TO TURN OFF DEBUG MODE
// IN DEBUG MODE, ONLY THE CAPTCHA CODE IS VALIDATED, AND NO EMAIL IS SENT

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>obs De Schuthoek</title>
<link href="../c/mijncss.css" rel="stylesheet" type="text/css" />
<script src="../SpryAssets/SpryMenuBar.js" type="text/javascript"></script>
<link href="../SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css" />
  <style type="text/css">
  <!--
  .error { color: #f00; font-weight: bold; font-size: 1.2em; }
  .success { color: #00f; font-weight; bold; font-size: 1.2em; }
  fieldset { width: 90%; }
  legend { font-size: 24px; }
  .note { font-size: 18px;
  -->
  </style>
</head>
<body class="twoColFixLtHdr">
<div id="container">
  <div id="header">
  </div>
  <div id="sidebar1">
    <ul id="MenuBar1" class="MenuBarVertical">
      <li><a href="../index.html">Home</a></li>
    </ul>
  </div>
  <div id="mainContent">
<h1> Contactformulier </h1>
<fieldset>
<?php

$GLOBALS['ct_recipient']   = email@mijnsite.nl'; // Change to your email address!
$GLOBALS['ct_msg_subject'] = 'Bericht via website www.mijnsite.nl';

process_si_contact_form(); // Process the form, if it was submitted

if (isset($_SESSION['ctform']['error']) &&  $_SESSION['ctform']['error'] == true): /* The last form submission had 1 or more errors */ ?>
<span class="error">Er is een probleem met het versturen.  Zie hieronder de fouten in rood.</span><br /><br />
<?php elseif (isset($_SESSION['ctform']['success']) && $_SESSION['ctform']['success'] == true): /* form was processed successfully */ ?>
<span class="success">Uw bericht is verstuurd.</span><br /><br />
<?php endif; ?>

<form method="post" action="<?php echo $_SERVER['REQUEST_URI'] . $_SERVER['QUERY_STRING'] ?>" id="contact_form">
  <input type="hidden" name="do" value="contact" />
  
  <p>
    naam*: &nbsp; &nbsp;<?php echo @$_SESSION['ctform']['name_error'] ?><br />
    <input type="text" name="ct_name" size="35" value="<?php echo htmlspecialchars(@$_SESSION['ctform']['ct_name']) ?>" />
    </p>
  
  <p>
    e-mail*:&nbsp; &nbsp;<?php echo @$_SESSION['ctform']['email_error'] ?><br />
    <input type="text" name="ct_email" size="35" value="<?php echo htmlspecialchars(@$_SESSION['ctform']['ct_email']) ?>" />
    </p>
  
  <p>
    onderwerp:&nbsp; &nbsp;<?php echo @$_SESSION['ctform']['URL_error'] ?><br />
    <input type="text" name="ct_URL" size="35" value="<?php echo htmlspecialchars(@$_SESSION['ctform']['ct_URL']) ?>" />
    </p>
  
  <p>
    bericht*:&nbsp; &nbsp;<?php echo @$_SESSION['ctform']['message_error'] ?><br />
    <textarea name="ct_message" style="width: 450px; height: 200px"><?php echo htmlspecialchars(@$_SESSION['ctform']['ct_message']) ?></textarea>
    </p>
  
  <p>
    <img id="siimage" style="border: 1px solid #000; margin-right: 15px" src="./securimage_show.php?sid=<?php echo md5(uniqid()) ?>" alt="CAPTCHA Image" align="left" />
    <object type="application/x-shockwave-flash" data="./securimage_play.swf?audio_file=./securimage_play.php&amp;bgColor1=#fff&amp;bgColor2=#fff&amp;iconColor=#777&amp;borderWidth=1&amp;borderColor=#000" height="32" width="32">
      <param name="movie" value="../securimage_play.swf?audio_file=../securimage_play.php&amp;bgColor1=#fff&amp;bgColor2=#fff&amp;iconColor=#777&amp;borderWidth=1&amp;borderColor=#000" />
      </object>
    &nbsp;
    <a tabindex="-1" style="border-style: none;" href="#" title="Refresh Image" onclick="document.getElementById('siimage').src = '../securimage_show.php?sid=' + Math.random(); this.blur(); return false"><img src="../images/refresh.png" alt="Reload Image" onclick="this.blur()" align="bottom" border="0" /></a><br />
    Voer code in*:<br />
    <?php echo @$_SESSION['ctform']['captcha_error'] ?>
    <input type="text" name="ct_captcha" size="12" maxlength="8" />
    </p>
  
  <p>
    <br />
    <input type="submit" value="Submit Message" />
    </p>
  
</form>
</fieldset>
</div>
  <div id="footer">
    <p>Alle rechten gereserveerd door: obs De Schuthoek © 2012</p>
  </div>
</div>
<script type="text/javascript">
<!--
var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"../SpryAssets/SpryMenuBarRightHover.gif"});
//-->
</script>
</body>
</html>[/PHP]
 
Bedoel je een koppeling naar het formulier veld ?

Ik heb hier even een voorbeeld voor je gemaakt, dan kun je dat even bestuderen, dit is wel een hele simpele versie, gebruik het daarom ook als richtlijn ! (geen captcha)

PHP:
<?php
if(isset($_POST['submit'])) {

$text = "";
$to = "naam@adress.nl";
$subject = "Contact Formulier bedrijf";
$name_field = $_POST['name'];
$Tel_field = $_POST['Tel'];
$email_field = $_POST['email'];
$subject_field = $_POST['subject'];
$message = $_POST['message'];
 
$body = "From: $name_field\n E-Mail: $email_field\n subject: $subject_field\n Tel: $Tel_field\n Message:\n $message";
 

mail($to, $subject, $body);

} else {



}
?>

HTML:
<form method="POST" action="Pages/Contact/send_form_email.php">
Naam:<br/><input type="text" name="name" size="30"><br/>
   <br/>
Tel:<br/><input type="text" name="Tel" size="30"><br/>
   <br/>
E-mail:<br/><input type="text" name="email" size="30"><br/>
   <br/>
Onderwerp:<br/><input type="text" name="subject" size="30"><br/>
   <br/>
Bericht:<br/><textarea rows="5" name="message" cols="30"></textarea>
   <br/>
   <br/>
<input type="submit" value="Submit" name="submit">
</form>

Ik hoop dat je er iets aan hebt ? Mocht dit niet je vraag zijn, hoor ik het graag !

Groetjes
 
Ik merkte dat het deel van de php code onder de </HTML> niet is mee gekopieerd in mijn aangepaste code. Het gaat er om dat het formulier wel goed zichtbaar is maar dat de email in mijn versie niet wordt gestuurd terwijl dit wel gebeurt als is het originele testformulier gebruik.
 
Wat je dan het beste kunt doen is, je maakt een apart bestandje voor je php code zoals ik hier boven laat zien.

Bijvoorbeeld - contact.php daar plak je de php code in. Het gaat erom, als je dat stukje php code bekijkt die ik gemaakt heb, dat die gekoppeld wordt aan het formulier.
Als je naar de php code kijkt, en het formulier, die je sommige stukjes code vanuit de php terug in het html formulier. En als je naar de html code kijkt, die je dat die eigenlijk verwijst naar het php bestandje !

Dan maak je een aparte .html pagina voor het formulier, of het formulier plaats je op een bestaande pagina. Die dus verwijst naar dat bestandje, en zorg dat je formulier is voorzien met de code zodat hij de regels in je php bestand herkent. (Ik probeer dit makkelijk uit te leggen, maar ik ben daar best slecht in eigenlijk :P)

Wat gebeurd er, gebruiker vult formulier in --> in het php bestandje wordt een controle uitgevoerd --> mail wordt verstuurd.

Ik hoop dat je het begrijpt ? Anders hoor ik het wel, en dan kom ik er nog weer op terug als het niet duidelijk is, haha.
Ik zal ondertussen ook even je code nakijken !

Groetjes,
 
M.

Ik snap wat je doet in de aparte HTML en PHP maar volgens mij moet de captcha juist in een PHP anders kan je de captcha-code niet lezen en gebruiken. volgens mij zit het probleem in het gebruik van DIV is de aangepaste versie mogelijk dat ik daar iets niet goed heb zitten
 
Lees even dit stukje op het forum, ik denk dat je hier al wel een heel eind mee komt ! :)

http://www.helpmij.nl/forum/showthread.php/296251-Captcha-in-PHP-formulier

Echter is dit allemaal wel outdated, die thread komt uit 2007, maar het geeft je een beetje een id.

(losstaande tip)
Ga dan ook even kijken naar .htacces codes etc, voor de veiligheid van je website en mail form etc.
Alleen (lang niet allen) (re)captcha is namelijk niet meer voldoende, gezien veel spammers daar al weer methodes voor hebben gevonden.

En je kunt ook altijd even naar http://www.phphulp.nl

Daar kun je heel veel leren, en staan vaak veel waardevolle tips op betreft php etc.

Als ik namelijk naar de code kijk die je op dit moment gebruikt, dan zie ik ook soms verwijzingen staan naar allemaal andere .php bestandjes.
Ik denk dat het verstandiger is om daarom even op phphulp te kijken naar een ander scriptje die je eventueel even zou kunnen gebruiken.
Anders wordt het allemaal te ingewikkeld en onoverzichtelijk ! En als je dit script zodanig zou willen aanpassen, doordat je de hele code moet analyseren, ben je vaak nog meer tijd kwijt, dan dat je zelf een nieuwe script zou gaan schrijven !

En op phphulp staat vaak heel duidelijk omschreven hoe je een scriptje moet implementeren.

Succes !
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan