8 berichten aan het bekijken - 1 tot 8 (van in totaal 8)
  • Q:
    Bijdrager
    Mr.Mark

    PHP contact formulier met bijlage en controle

    Voor een website die ik aan het maken ben ben ik een php script aan het samenstellen van een ander script die ik van internet geplukt heb een tijdje terug, maar sommige dingen kan ik niet werkende krijgen.

    Op dit moment verzend het formulier zelfs wanneer er niks is ingevuld. Ik wil een controle op het formulier hebben voordat het daadwerkelijk verstuurd wordt. Het formulier kan zelfs alleen maar verstuurd worden wanneer er een bestand is geselecteerd voor uploaden en verzending.

    Op dit moment heb ik het volgende script gevonden en klein beetje aangepast:
    [code:1:5016d56971]
    <!– on top of the page –>
    <?php
    // Your e-mail adress:
    $mailto = "[email protected]";

    # Maximum size of attachment in bytes:
    $max_attach_size = 500000;

    ?>
    <!– END on top of the page –>

    <!– START PHP form –>
    <?php
    /*if (empty($_POST[’form_submitted’]))
    {
    ?><p>Please fill out the form:</p>
    <?php
    }
    */
    if (isset($_POST["form_submitted"]))
    {
    $name = $_POST[’name’];
    $email = $_POST[’email’];
    $text = $_POST[’text’];

    unset($errors);
    if ($email != "" and !preg_match("/^[^@][email protected]+.D{2,5}$/", $email)) $errors[] = "E-mail address seems to be incorrect";
    if ($name != "") $errors[] = "Please enter your name";
    if ($_FILES[’attachm’][’size’] > $max_attach_size) $errors[] = "Attachment file size is too big(".number_format($_FILES[’attachm’][’size’]/1000,0,",","")." KB) – maximum size: ".number_format($max_attach_size/1000,0,",","")." KB";

    if (empty($errors))
    {
    $text = stripslashes($text);
    if ($name != "") $mail_name=$name; else $mail_name="Unknown";
    if ($email != "") $mail_email = $email; else $mail_email = "[email protected]";
    $ip = $_SERVER["REMOTE_ADDR"];

    // if attachment, MIME-Mail:
    if (isset($_FILES[’attachm’][’name’]) && trim($_FILES[’attachm’][’name’]) != "")
    {
    // read and encode file:
    $datei_content = fread(fopen($_FILES[’attachm’][’tmp_name’],"r"),filesize($_FILES[’attachm’][’tmp_name’]));
    $datei_content = chunk_split(base64_encode($datei_content),76,"n");
    // Boundary:
    $boundary = md5(uniqid(rand()));
    // Mail-Header:
    $mail_header = "From: ".$mail_name." <".$mail_email.">n";
    $mail_header .= "X-Sender-IP: ".$ip."n";
    $mail_header .= "MIME-Version: 1.0n";
    $mail_header .= "Content-Type: multipart/mixed; boundary="".$boundary.""n";
    $mail_header .= "This is a multi-part message in MIME format.n";
    // Mail-Text:
    $mail_header .= "–".$boundary;
    $mail_header .= "nContent-Type: text/plain";
    $mail_header .= "nContent-Transfer-Encoding: 8bit";
    $mail_header .= "nn".$text;
    // Attachment:
    $mail_header .= "n–".$boundary;
    $mail_header .= "nContent-Type: ".$_FILES[’attachm’][’type’]."; name="".$_FILES[’attachm’][’name’].""";
    $mail_header .= "nContent-Transfer-Encoding: base64";
    $mail_header .= "nContent-Disposition: attachment; filename="".$_FILES[’attachm’][’name’].""";
    $mail_header .= "nn".$datei_content;
    // End:
    $mail_header .= "n–".$boundary."–";
    // Sende E-Mail und gebe Fehler bzw. Bestaetigung aus
    if (@mail($mailto,$mail_subject,"",$mail_header)) $sent = true; else $errors[] = "no connection to the mailserver – please try again later";
    }
    // no attachment, normal E-mail:
    else
    {
    $mail_header = "From: ".$mail_name." <".$mail_email.">n";
    $mail_header .= "X-Sender-IP: $ipn";
    $mail_header .= "Content-Type: text/plain";
    if (@mail($mailto,$mail_subject,$text,$mail_header)) $sent = true; else $errors[] = "no connection to the mailserver – please try again later";
    }

    // copy to sender:
    if (isset($sent) && isset($email) && $email != "" && isset($_POST[’copy’]))
    {
    if (isset($_FILES[’attachm’][’name’]) && trim($_FILES[’attachm’][’name’]) != "") $copy_mail_text = "Copy of the e-mail:nn".$text."nnAttachment: ".$_FILES[’attachm’][’name’]; else $copy_mail_text = "Copy of the e-mail:nn".$text;
    $header= "From: ".$mailto."n";
    $header .= "X-Sender-IP: ".$ip."n";
    $header .= "Content-Type: text/plain";
    @mail($email, $mail_subject, $copy_mail_text, $header);
    }
    }
    }

    if (empty($sent))
    {
    if(isset($errors))
    {
    ?><p>Error:</p><ul>
    <?php foreach($errors as $f) { ?><li>
    <?php echo $f; ?></li><?php } ?></ul>
    <br /><?php
    }

    ?><form name=’myform’ method="post" action="" enctype="multipart/form-data"><div>
    <table cellpadding="2" cellspacing="0">
    <tr>
    <td class="style66" width="100">Name:</td>
    <td class="style66"><input name="name" value="<?php if (isset($name)) echo htmlentities(stripslashes($name)); else echo ""; ?>" size="25" /></td>
    </tr>
    <tr>
    <td class="style66">E-mail:</td>
    <td class="style66"><input name="email" value="<?php if (isset($email)) echo htmlentities(stripslashes($email)); else echo ""; ?>" size="25" /></td>
    </tr>
    <tr>
    <td class="style66">Message:<br>(optional)</td>
    <td class="style66"><textarea name="text" cols="25" rows="7"><?php if (isset($text)) echo htmlentities(stripslashes($text)); else echo ""; ?></textarea></td>
    </tr>
    <tr>
    <td class="style66">CV file:</td>
    <td class="style66"><input type="file" name="attachm" value="<?php if (isset($_POST[’attachm’])) echo htmlentities(stripslashes($_POST[’attachm’])); else echo ""; ?>" size="16" /></td>
    </tr>
    <tr>
    <td></td>
    <td class="style66" colspan="2"><input type="checkbox" name="copy" value="true" />Send a copy to yourself</td>
    </tr>
    <tr>
    <td></td>
    <td class="style66"><input type="submit" name="form_submitted" value="OK – Verzenden" /></td>
    </tr>
    </table>
    </div></form>
    <?php
    }
    else
    {
    if (empty($email)) { ?>
    <p class="style66">Thank you.<br />Your mail has been sent, but your address is missing so you won’t be getting any reply from me!</p>
    <?php }
    else { ?>
    <p class="style66">Thank you very much for your submission.<br />Your message has been successfully sent and received.</p>
    <?php }
    }
    ?>
    <!– END PHP form –>[/code:1:5016d56971]
    Zou iemand hier mij kunnen helpen met het perfectioneren van dit script? Omdat ik maar een simpele designer ben weet ik niet veel van php code schrijven.
    Alle hulp is welkom, natuurlijk!

    Om alles even helder te maken beschrijf ik even wat ik het formulier precies wil laten doen:

    De gebruiker moet een naam, geldig e-mail adres in vullen. Een bericht invullen is optioneel, maar een bestand moet ook geselecteerd worden. Wanneer de gebruiker op de SEND knop heeft geklikt wordt de controle uitgevoerd en krijgt de gebruiker de fouten te zien de er voor zijn gekomen als de gebruiker velden niet correct ingevuld heeft. Deze worden weergegeven in een pop-up of een paar regels boven het formulier.
    Wanneer alles correct is ingevuld en een bestand is geselecteerd dan wordt het formulier verstuurd naar het aangegeven e-mail adres.

    Bijdrager
    passe-partout

    Tja, ik ken er ook niets van maar kan u wel aanraden : http://www.jotform.com/

    Bijdrager
    ieperlingetje

    controleer al je formuliervelden met isset() en strlen() >0

    Edit: bovendien nogal spaghetticode, php en html door elkaar

    Bijdrager
    Mr.Mark
    ”passe-partout”

    Tja, ik ken er ook niets van maar kan u wel aanraden : http://www.jotform.com/

    Juist! Precies naar zo’n formulier ben ik op zoek. Niu nog alleen een versie zien te vinden die ik op mijn eigen server kan plaatsen. Maar tot die tijd werkt deze wel goed.

    Bijdrager
    jwchess
    ”Mr.Mark”
    ”passe-partout”

    Tja, ik ken er ook niets van maar kan u wel aanraden : http://www.jotform.com/

    Juist! Precies naar zo’n formulier ben ik op zoek. Niu nog alleen een versie zien te vinden die ik op mijn eigen server kan plaatsen. Maar tot die tijd werkt deze wel goed.

    Deze gebruik ik bij ingewikkelde formulieren: http://www.formhandler.net/

    Bijdrager
    wout3r

    Voor € 25,- maak ik er eentje voor je :roll:

    Bijdrager
    Mr.Mark
    ”wout3r”

    Voor € 25,- maak ik er eentje voor je :roll:

    nee, dank je. dan frutsel ik zelf liever nog even 30 minuten door en kom uit met een frut formulier … dank voor je ‘zakelijke’ aanbod… :?

    Bijdrager
    wout3r

    No problem ;-). Ik wil je ook wel even op weg helpen. Mail me anders maar.

8 berichten aan het bekijken - 1 tot 8 (van in totaal 8)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.