formulier aanpassing
stan - 01/02/2005 21:45
Nieuw lid
Hallo,
Ik heb een x aantal probleempjes met het versturen van een formulier. Ik maak nu gebruik van 3 verschillende formulieren op mijn site. Dit is een voorbeeld van 1: http://www.georgescharnigg.nl/contact.htm
De send.php (heb ik gekregen van iemand) ziet er zo uit:
<?php
$receiverMail = "xxx@home.nl";
$naam = ltrim(rtrim(strip_tags(stripslashes($_POST['naam']))));
$email = ltrim(rtrim(strip_tags(stripslashes($_POST['email']))));
$bedrijf = ltrim(rtrim(strip_tags(stripslashes($_POST['bedrijf']))));
$straat = ltrim(rtrim(strip_tags(stripslashes($_POST['straat']))));
$plz = ltrim(rtrim(strip_tags(stripslashes($_POST['plz']))));
$plaats = ltrim(rtrim(strip_tags(stripslashes($_POST['plaats']))));
$telefoon = ltrim(rtrim(strip_tags(stripslashes($_POST['telefoon']))));
$telefax = ltrim(rtrim(strip_tags(stripslashes($_POST['telefax']))));
$nieuwsbrief= ltrim(rtrim(strip_tags(stripslashes($_POST['nieuwsbrief']))));
$vraag = ltrim(rtrim(strip_tags($_POST['vraag'])));
$ip = getenv("REMOTE_ADDR");
$msgformat = "From: $naam ($ip)\nEmail: $email\nBedrijf: $bedrijf\nStraat: $straat\nPostcode: $plz Plaats: $plaats\n\n Telefoonnummer: $telefoon\n Fax: $telefax\n Nieuwsbrief: $nieuwsbrief\n\nVraag/mededeling:\n$vraag";
// VALIDATION
if(empty($naam) || empty($email) || empty($bedrijf) || empty($straat) || empty($plz) || empty($plaats) || empty($telefoon) || ($telefax) || empty($vraag)) {
echo "<h4>De mail is niet verzonden</h3><p>Vul alle regels in...</p>";
}
elseif(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
echo "<h4>De mail is niet verzonden</h3>Het email adres klopt niet, zorg dat U een goed email adres invoert...<br>";
}
else {
mail($receiverMail, $vraag, "From: $naam ($ip)\nEmail: $email\nBedrijf: $bedrijf\nStraat: $straat\nPostcode: $plz Plaats: $plaats\n\n Telefoonnummer: $telefoon\n Fax: $telefax\n Nieuwsbrief: $nieuwsbrief\n\nVraag/mededeling:\n$vraag");
echo "<h4>De email is verzonden, als u binnen 2 dagen niks hoort neem dan contact op met xxx@home.nl of bel </h3>"; }
?>
<?php
$receiverMail = "xxx@home.nl" ;
$msgformat = "From: $naam ($ip )\n Email: $email \n Bedrijf: $bedrijf \n Straat: $straat \n Postcode: $plz Plaats: $plaats \n \n Telefoonnummer: $telefoon \n Fax: $telefax \n Nieuwsbrief: $nieuwsbrief \n \n Vraag/mededeling:\n $vraag " ;
// VALIDATION
echo "<h4>De mail is niet verzonden</h3><p>Vul alle regels in...</p>" ; }
elseif ( ! ereg ( "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$" , $email ) ) { echo "<h4>De mail is niet verzonden</h3>Het email adres klopt niet, zorg dat U een goed email adres invoert...<br>" ; }
else {
mail ( $receiverMail , $vraag , "From: $naam ($ip )\n Email: $email \n Bedrijf: $bedrijf \n Straat: $straat \n Postcode: $plz Plaats: $plaats \n \n Telefoonnummer: $telefoon \n Fax: $telefax \n Nieuwsbrief: $nieuwsbrief \n \n Vraag/mededeling:\n $vraag " ) ; echo "<h4>De email is verzonden, als u binnen 2 dagen niks hoort neem dan contact op met xxx@home.nl of bel </h3>" ; }
?>
Ik wil nu graag ervoor zorgen dat je het veld bij bedrijf en bij fax niet perse hoeft in te vullen. Ik had dat gedaan door bij VALIDATION empty bij bedrijf en fax weg te halen. Maar ik weet niet of dit de correcte methode is?
Het formulier werkt nu ook niet meer als ik alles heb ingevuld, dan geeft die aan dat niet alle velden zijn ingevuld. Maar die zijn wel ingevuld. Ik weet niet of dit probleem aan het script ligt?
Hartelijk bedankt alvast voor het helpen, want dit is voor mij ook de eerste keer dat ik hiermee bezig ben.
12 antwoorden
Gesponsorde links
nemesiskoen - 01/02/2005 21:47
PHP expert
<?php
if(empty($naam) || empty($email) || empty($straat) || empty($plz) || empty($plaats) || empty($telefoon) || empty($vraag)) {
echo "<h4>De mail is niet verzonden</h3><p>Vul alle regels in...</p>";
?>
<?php
echo "<h4>De mail is niet verzonden</h3><p>Vul alle regels in...</p>" ; ?>
dat zou het moeten doen
stan - 01/02/2005 21:55 (laatste wijziging 01/02/2005 21:57)
Nieuw lid
oh, bedankt voor je snelle reactie.
Hij geeft nu iig weer aan de mail verstuurd is (kan ik die tekst trouwens ook laten in een popup bericht?)
Alleen komt het bericht (niet altijd) aan in de inbox waar die moet komen. Kan dit liggen aan het script of dat ik nog iets verkeerds heb ingevuld?
Thomas - 01/02/2005 23:38
Moderator
Ligt meestal aan spam filters, dus je zal je mailbericht moeten uitrusten met wat meer headers.
ltrim(rtrim()) kun je ook vervangen door trim() BTW - dat doet hetzelfde.
stan - 01/02/2005 23:56 (laatste wijziging 01/02/2005 23:59)
Nieuw lid
Misschien een hele stomme vraag, maar ik stel hem maar gewoon. Maar ik had in een tutorial op deze site iets gevonden over headers.
Dit wilde ik dus gaan aanpassen:
$headers = "From: ".$naam_verzender." <".$email_verzender.">\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "Return-Path: Mail-Error <error@mijnsite.nl>\r\n";
$headers .= "Reply-To: ".$naam_verzender." <".$email_verzender.">\r\n";
$headers .= "Bcc: ".$email_verzender."\r\n";
$headers = "From: " . $naam_verzender . " <" . $email_verzender . ">\r \n " ;
$headers .= "MIME-Version: 1.0\r \n " ;
$headers .= "Content-type: text/html; charset=iso-8859-1\r \n " ;
$headers .= "Return-Path: Mail-Error <error@mijnsite.nl>\r \n " ;
$headers .= "Reply-To: " . $naam_verzender . " <" . $email_verzender . ">\r \n " ;
$headers .= "Bcc: " . $email_verzender . "\r \n " ;
Maar waar moet ik dit nu zetten, want dat voorbeeld lijkt niet erg veel op mijn php bestand. Vandaar dat ik dat even niet weet.
Ik lees me echt rot op dit moment, maar kom niet echt goed verder.
Verder zeg je dat ik ltrim(rtrim()) ook kan aanpassen, maar als ik dat aanpas, werkt het dan beter? of is het dat de code dan beter in elkaar steekt?
Bedankt voor je antwoord
edit: deze tutorial was het: http://www.site...d=44#basis
stan - 02/02/2005 11:42
Nieuw lid
Oke, bedankt het is me gelukt. Het ligt aan de spamfilters van @home. Ik heb de headers wel ingevuld, maar dan nog kwam het maar af en toe aan. Nu heb ik het formulier laten sturen naar een gmail adres en dan komt het altijd aan.
Maar nu heb ik nog een vraagje. Ik wil liever dat de mensen niet van de pagina afgaan als ze versturen. Nu gebeurt dat wel, want je krijgt dan ineens een witte pagina te zien waar opstaat dat het bericht verstuurd is.
Ik heb nu een pagina gemaakt, genaamd bedankt.htm waar hetzelfde bericht instaat, maar dan blijf je gewoon op de pagina. Ik heb al eens wat proberen te wijzigen, maar niet met goed resultaat. Weet iemand hier misschien hoe ik daar naartoe kan verwijzen?
Bedankt alvast
xSc - 02/02/2005 15:47 (laatste wijziging 02/02/2005 15:50)
Onbekend
<?php
foreach ( $_POST As $iSleutel => $sWaarde )
{
$_POST[$iSleutel] = trim( strip_tags( stripslashes( $sWaarde ) ) );
}
?>
<?php
foreach ( $_POST As $iSleutel => $sWaarde )
{
}
?>
doet hetzelfde als onderstaand, alleen kun je gewoon $_POST['naam'] enz. blijven gebruiken.
$naam = ltrim(rtrim(strip_tags(stripslashes($_POST['naam']))));
$email = ltrim(rtrim(strip_tags(stripslashes($_POST['email']))));
$bedrijf = ltrim(rtrim(strip_tags(stripslashes($_POST['bedrijf']))));
$straat = ltrim(rtrim(strip_tags(stripslashes($_POST['straat']))));
$plz = ltrim(rtrim(strip_tags(stripslashes($_POST['plz']))));
$plaats = ltrim(rtrim(strip_tags(stripslashes($_POST['plaats']))));
$telefoon = ltrim(rtrim(strip_tags(stripslashes($_POST['telefoon']))));
$telefax = ltrim(rtrim(strip_tags(stripslashes($_POST['telefax']))));
$nieuwsbrief= ltrim(rtrim(strip_tags(stripslashes($_POST['nieuwsbrief']))));
$vraag = ltrim(rtrim(strip_tags($_POST['vraag'])));
Verder:
<?php
$ip = getenv("REMOTE_ADDR");
//wordt
$sIp = $_SERVER['REMOTE_ADDR'];
?>
<?php
//wordt
$sIp = $_SERVER [ 'REMOTE_ADDR' ] ;
?>
En:
if(empty($naam) || empty($email) || empty($bedrijf) || empty($straat) || empty($plz) || empty($plaats) || empty($telefoon) || ($telefax) || empty($vraag)) {
Kan zo:
<?php
if ( in_array( '', $_POST ) )
{
// Er is een leeg veld geconstateerd
}
else
{
//doorgaan
}
?>
<?php
{
// Er is een leeg veld geconstateerd
}
else
{
//doorgaan
}
?>
- Echo je HTML-code tussen '. Zo hoef je niet onnodig te escapen.
- Houd je variabelen buiten de quotes!
stan - 03/02/2005 16:12 (laatste wijziging 03/02/2005 16:13)
Nieuw lid
Oke bedankt voor je reactie.
Ik heb bepaalde dingen veranderd, maar ook weer teruggezet. Bijvoorbeeld als ik dit verander.
<?php
$ip = getenv("REMOTE_ADDR");
//wordt
$sIp = $_SERVER['REMOTE_ADDR'];
?>
<?php
//wordt
$sIp = $_SERVER [ 'REMOTE_ADDR' ] ;
?>
Dan verstuurt die geen ip meer mee.
Ik heb wel nog een volgend probleem. Aangezien dit mailscript naar behoren werkt, heb ik voor een ander formulier het proberen na te maken. Dit is wel goed gelukt, alleen blijven bepaalde velden leeg als ik deze ontvang in mijn email, terwijl ze wel zijn ingevuld.
Het gaat om dit script:"
<?php
$receiverMail = "info@georgescharnigg.nl";
$man = ltrim(rtrim(strip_tags(stripslashes($_POST['man']))));
$vrouw =ltrim(rtrim(strip_tags(stripslashes($_POST['vrouw']))));
$naam = ltrim(rtrim(strip_tags(stripslashes($_POST['naam']))));
$email = ltrim(rtrim(strip_tags(stripslashes($_POST['email']))));
$bedrijf = ltrim(rtrim(strip_tags(stripslashes($_POST['bedrijf']))));
$straat = ltrim(rtrim(strip_tags(stripslashes($_POST['straat']))));
$plz = ltrim(rtrim(strip_tags(stripslashes($_POST['plz']))));
$plaats = ltrim(rtrim(strip_tags(stripslashes($_POST['plaats']))));
$telefoon = ltrim(rtrim(strip_tags(stripslashes($_POST['telefoon']))));
$telefax = ltrim(rtrim(strip_tags(stripslashes($_POST['telefax']))));
$cursus =ltrim(rtrim(strip_tags(stripslashes($_POST['cursus']))));
$opmerking = ltrim(rtrim(strip_tags($_POST['opmerking'])));
$ip = getenv("REMOTE_ADDR");
$msgformat = "From: ".$name." (".$ip.")\ngeslacht: man = ".$man."\ngeslacht: vrouw = ".$vrouw."\nEmail: ".$email."\nBedrijf: ".$bedrijf."\nStraat: ".$straat."\nPostcode: ".$plz." Plaats: ".$plaats."\n\n Telefoonnummer: ";$telefoon."\n Fax: ".$telefax."\n cursus: ".$cursus."\n\n opmerking:\n".$opmerking;
$headers = "MIME-Version: 1.0\r\n";
$headers .= "From: $name <$email>\r\n";
$headers .= "Reply-to: $name <$email>\r\n";
$headers .= "X-Priority: 3\r\n";
$headers .= "X-Mailer: PHP mailer\r\n";
$onderwerp = 'cursus aanvraag!';
mail ($name, $onderwerp, $msgformat, $headers, "-info@georgescharnigg.nl");
// VALIDATION
if(empty($naam) || empty($email) || empty($straat) || empty($plz) || empty($plaats) || empty($telefoon) || empty($opmerking)) {
header("Location: mailnietverzonden.htm");
}
elseif(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
header("Location: mailnietgoed.htm");
}
else {
$onderwerp = 'cursus aanvraag!';
mail($receiverMail, $onderwerp, "From: ".$naam." (".$ip.")\ngeslacht: man = ".$man."\ngeslacht: vrouw = ".$vrouw."\nEmail: ".$email."\nBedrijf: ".$bedrijf."\nStraat: ".$straat."\nPostcode: ".$plz." Plaats: ".$plaats."\n\n Telefoonnummer: ".$telefoon."\n Fax: ".$telefax."\n cursus: ".$cursus."\n\n opmerking:\n".$opmerking);
header("Location: bedankt.htm");
}
?>
<?php
$receiverMail = "info@georgescharnigg.nl" ;
$msgformat = "From: " . $name . " (" . $ip . ")\n geslacht: man = " . $man . "\n geslacht: vrouw = " . $vrouw . "\n Email: " . $email . "\n Bedrijf: " . $bedrijf . "\n Straat: " . $straat . "\n Postcode: " . $plz . " Plaats: " . $plaats . "\n \n Telefoonnummer: " ; $telefoon . "\n Fax: " . $telefax . "\n cursus: " . $cursus . "\n \n opmerking:\n " . $opmerking ;
$headers = "MIME-Version: 1.0\r \n " ;
$headers .= "From: $name <$email >\r \n " ;
$headers .= "Reply-to: $name <$email >\r \n " ;
$headers .= "X-Priority: 3\r \n " ;
$headers .= "X-Mailer: PHP mailer\r \n " ;
$onderwerp = 'cursus aanvraag!' ;
mail ( $name , $onderwerp , $msgformat , $headers , "-info@georgescharnigg.nl" ) ;
// VALIDATION
header ( "Location: mailnietverzonden.htm" ) ; }
elseif ( ! ereg ( "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$" , $email ) ) { header ( "Location: mailnietgoed.htm" ) ; }
else {
$onderwerp = 'cursus aanvraag!' ;
mail ( $receiverMail , $onderwerp , "From: " . $naam . " (" . $ip . ")\n geslacht: man = " . $man . "\n geslacht: vrouw = " . $vrouw . "\n Email: " . $email . "\n Bedrijf: " . $bedrijf . "\n Straat: " . $straat . "\n Postcode: " . $plz . " Plaats: " . $plaats . "\n \n Telefoonnummer: " . $telefoon . "\n Fax: " . $telefax . "\n cursus: " . $cursus . "\n \n opmerking:\n " . $opmerking ) ; header ( "Location: bedankt.htm" ) ; }
?>
De velden die leegblijven zijn de radiobuttons (man/vrouw) en het vakje opmerking. Van de rest komt de informatie wel gewoon binnen. Ik snap niet wat er fout aan is.
numlockrond - 03/02/2005 16:15
Onbekend
dat script ziet er echt niet uit. Denk niet dat iemand zin heeft om daar naar te kijken.
stan - 03/02/2005 16:24
Nieuw lid
Hoe bedoel je, ziet er niet uit? Het is hetzelfde script wat in het begin staat, alleen met de aanpassingen erin waardoor het wel werkt. Nu werkt het ook, op 2 kleine dingen na die ik op dit moment niet weet op te lossen.
numlockrond - 03/02/2005 16:25 (laatste wijziging 03/02/2005 16:26)
Onbekend
gewoon. de opmaak is heel slordig. Als je daarin 1 typefout maakt ben je een uur bezig om de fout te vinden.
misschien heb je hier iets aan:
http://www.site...&id=17
stan - 03/02/2005 16:32 (laatste wijziging 03/02/2005 16:35)
Nieuw lid
Ja, ik denk dat ik het zelf al lastig vind als het script beter is, om de fout te zoeken. Het is voor mij allemaal nieuw. Maarja ik weet waar de fout moet zitten.
Dat kan ik wel hierneer zetten:
$man = ltrim(rtrim(strip_tags(stripslashes($_POST['man']))));
$vrouw =ltrim(rtrim(strip_tags(stripslashes($_POST['vrouw']))));
$opmerking = ltrim(rtrim(strip_tags($_POST['opmerking'])));
of
$msgformat = "From: ".$name." (".$ip.")\ngeslacht: man = ".$man."\ngeslacht: vrouw = ".$vrouw."\nEmail: ".$email."\nBedrijf: ".$bedrijf."\nStraat: ".$straat."\nPostcode: ".$plz." Plaats: ".$plaats."\n\n Telefoonnummer: ";$telefoon."\n Fax: ".$telefax."\n cursus: ".$cursus."\n\n opmerking:\n".$opmerking;
$msgformat = "From: " . $name . " (" . $ip . ")\n geslacht: man = " . $man . "\n geslacht: vrouw = " . $vrouw . "\n Email: " . $email . "\n Bedrijf: " . $bedrijf . "\n Straat: " . $straat . "\n Postcode: " . $plz . " Plaats: " . $plaats . "\n \n Telefoonnummer: " ; $telefoon . "\n Fax: " . $telefax . "\n cursus: " . $cursus . "\n \n opmerking:\n " . $opmerking ;
of
mail($receiverMail, $onderwerp, "From: ".$naam." (".$ip.")\ngeslacht: man = ".$man."\ngeslacht: vrouw = ".$vrouw."\nEmail: ".$email."\nBedrijf: ".$bedrijf."\nStraat: ".$straat."\nPostcode: ".$plz." Plaats: ".$plaats."\n\n Telefoonnummer: ".$telefoon."\n Fax: ".$telefax."\n cursus: ".$cursus."\n\n opmerking:\n".$opmerking);
mail ( $receiverMail , $onderwerp , "From: " . $naam . " (" . $ip . ")\n geslacht: man = " . $man . "\n geslacht: vrouw = " . $vrouw . "\n Email: " . $email . "\n Bedrijf: " . $bedrijf . "\n Straat: " . $straat . "\n Postcode: " . $plz . " Plaats: " . $plaats . "\n \n Telefoonnummer: " . $telefoon . "\n Fax: " . $telefax . "\n cursus: " . $cursus . "\n \n opmerking:\n " . $opmerking ) ;
Dit is voor mij ook de eerste keer dat ik met php bezigben, maar ik wist niet dat er bepaalde mogelijkheden zijn om zo een code op te schrijven.
en dit krijg ik dus in mijn emailbox te zien:
Citaat:
From: stan (mijn ip)
geslacht: man =
geslacht: vrouw =
Email: mijnemail@home.nl
Bedrijf: sdadasda
Straat: stressserstraat
Postcode: 6245LB Plaats: sdss
Telefoonnummer: 043
Fax: 043
cursus: Niveau 2 (BB)
opmerking:
Bij man/vrouw geeft die niks aan. En bij opmerking is het leeg. Dat is enige probleem.
Gesponsorde links
Dit onderwerp is gesloten .