login  Naam:   Wachtwoord: 
Registreer je!
 Forum

formulier aanpassing

Offline stan - 01/02/2005 21:45
Avatar van stanNieuw 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:

  1. <?php
  2. $receiverMail = "xxx@home.nl";
  3.  
  4. $naam = ltrim(rtrim(strip_tags(stripslashes($_POST['naam']))));
  5. $email = ltrim(rtrim(strip_tags(stripslashes($_POST['email']))));
  6. $bedrijf = ltrim(rtrim(strip_tags(stripslashes($_POST['bedrijf']))));
  7. $straat = ltrim(rtrim(strip_tags(stripslashes($_POST['straat']))));
  8. $plz = ltrim(rtrim(strip_tags(stripslashes($_POST['plz']))));
  9. $plaats = ltrim(rtrim(strip_tags(stripslashes($_POST['plaats']))));
  10. $telefoon = ltrim(rtrim(strip_tags(stripslashes($_POST['telefoon']))));
  11. $telefax = ltrim(rtrim(strip_tags(stripslashes($_POST['telefax']))));
  12. $nieuwsbrief= ltrim(rtrim(strip_tags(stripslashes($_POST['nieuwsbrief']))));
  13. $vraag = ltrim(rtrim(strip_tags($_POST['vraag'])));
  14.  
  15. $ip = getenv("REMOTE_ADDR");
  16. $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";
  17.  
  18. // VALIDATION
  19. if(empty($naam) || empty($email) || empty($bedrijf) || empty($straat) || empty($plz) || empty($plaats) || empty($telefoon) || ($telefax) || empty($vraag)) {
  20. echo "<h4>De mail is niet verzonden</h3><p>Vul alle regels in...</p>";
  21. }
  22. elseif(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
  23. echo "<h4>De mail is niet verzonden</h3>Het email adres klopt niet, zorg dat U een goed email adres invoert...<br>";
  24. }
  25. else {
  26. 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");
  27. echo "<h4>De email is verzonden, als u binnen 2 dagen niks hoort neem dan contact op met xxx@home.nl of bel </h3>"; }
  28.  
  29.  
  30.  
  31. ?>


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
Offline nemesiskoen - 01/02/2005 21:47
Avatar van nemesiskoen Gouden medaille

PHP expert
  1. <?php
  2. if(empty($naam) || empty($email) || empty($straat) || empty($plz) || empty($plaats) || empty($telefoon) || empty($vraag)) {
  3. echo "<h4>De mail is niet verzonden</h3><p>Vul alle regels in...</p>";
  4. ?>


dat zou het moeten doen
Offline stan - 01/02/2005 21:55 (laatste wijziging 01/02/2005 21:57)
Avatar van stan 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?
Offline Thomas - 01/02/2005 23:38
Avatar van Thomas 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.
Offline stan - 01/02/2005 23:56 (laatste wijziging 01/02/2005 23:59)
Avatar van stan 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:

  1. $headers = "From: ".$naam_verzender." <".$email_verzender.">\r\n";
  2. $headers .= "MIME-Version: 1.0\r\n";
  3. $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
  4. $headers .= "Return-Path: Mail-Error <error@mijnsite.nl>\r\n";
  5. $headers .= "Reply-To: ".$naam_verzender." <".$email_verzender.">\r\n";
  6. $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
Offline Thomas - 02/02/2005 00:21
Avatar van Thomas Moderator Die headers voeg je als 4e parameter toe aan je mail-aanroep:

mail(<naar>, <onderwerp>, <inhoud>, <headers>);

Haal er uit wat je (niet) nodig hebt uit die headers en probeer een mailtje te versturen zou ik zeggen .
Offline stan - 02/02/2005 11:42
Avatar van stan 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
Offline xSc - 02/02/2005 15:47 (laatste wijziging 02/02/2005 15:50)
Avatar van xSc Onbekend
  1. <?php
  2.  
  3. foreach ( $_POST As $iSleutel => $sWaarde )
  4. {
  5.  
  6. $_POST[$iSleutel] = trim( strip_tags( stripslashes( $sWaarde ) ) );
  7.  
  8. }
  9.  
  10. ?>


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:

  1. <?php
  2.  
  3. $ip = getenv("REMOTE_ADDR");
  4.  
  5. //wordt
  6.  
  7. $sIp = $_SERVER['REMOTE_ADDR'];
  8.  
  9. ?>


En:

if(empty($naam) || empty($email) || empty($bedrijf) || empty($straat) || empty($plz) || empty($plaats) || empty($telefoon) || ($telefax) || empty($vraag)) {

Kan zo:

  1. <?php
  2.  
  3. if ( in_array( '', $_POST ) )
  4. {
  5. // Er is een leeg veld geconstateerd
  6. }
  7. else
  8. {
  9. //doorgaan
  10. }
  11. ?>


- Echo je HTML-code tussen '. Zo hoef je niet onnodig te escapen.
- Houd je variabelen buiten de quotes!
Offline stan - 03/02/2005 16:12 (laatste wijziging 03/02/2005 16:13)
Avatar van stan Nieuw lid Oke bedankt voor je reactie.
Ik heb bepaalde dingen veranderd, maar ook weer teruggezet. Bijvoorbeeld als ik dit verander.

  1. <?php
  2.  
  3. $ip = getenv("REMOTE_ADDR");
  4.  
  5. //wordt
  6.  
  7. $sIp = $_SERVER['REMOTE_ADDR'];
  8.  
  9. ?>
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:"

  1. <?php
  2. $receiverMail = "info@georgescharnigg.nl";
  3.  
  4. $man = ltrim(rtrim(strip_tags(stripslashes($_POST['man']))));
  5. $vrouw =ltrim(rtrim(strip_tags(stripslashes($_POST['vrouw']))));
  6. $naam = ltrim(rtrim(strip_tags(stripslashes($_POST['naam']))));
  7. $email = ltrim(rtrim(strip_tags(stripslashes($_POST['email']))));
  8. $bedrijf = ltrim(rtrim(strip_tags(stripslashes($_POST['bedrijf']))));
  9. $straat = ltrim(rtrim(strip_tags(stripslashes($_POST['straat']))));
  10. $plz = ltrim(rtrim(strip_tags(stripslashes($_POST['plz']))));
  11. $plaats = ltrim(rtrim(strip_tags(stripslashes($_POST['plaats']))));
  12. $telefoon = ltrim(rtrim(strip_tags(stripslashes($_POST['telefoon']))));
  13. $telefax = ltrim(rtrim(strip_tags(stripslashes($_POST['telefax']))));
  14. $cursus =ltrim(rtrim(strip_tags(stripslashes($_POST['cursus']))));
  15. $opmerking = ltrim(rtrim(strip_tags($_POST['opmerking'])));
  16.  
  17. $ip = getenv("REMOTE_ADDR");
  18. $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;
  19.  
  20.  
  21. $headers = "MIME-Version: 1.0\r\n";
  22. $headers .= "From: $name <$email>\r\n";
  23. $headers .= "Reply-to: $name <$email>\r\n";
  24. $headers .= "X-Priority: 3\r\n";
  25. $headers .= "X-Mailer: PHP mailer\r\n";
  26.  
  27. $onderwerp = 'cursus aanvraag!';
  28. mail ($name, $onderwerp, $msgformat, $headers, "-info@georgescharnigg.nl");
  29.  
  30. // VALIDATION
  31. if(empty($naam) || empty($email) || empty($straat) || empty($plz) || empty($plaats) || empty($telefoon) || empty($opmerking)) {
  32. header("Location: mailnietverzonden.htm");
  33. }
  34. elseif(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
  35. header("Location: mailnietgoed.htm");
  36. }
  37. else {
  38. $onderwerp = 'cursus aanvraag!';
  39. 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);
  40. header("Location: bedankt.htm");
  41. }
  42.  
  43.  
  44.  
  45. ?>


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.




Offline numlockrond - 03/02/2005 16:15
Avatar van numlockrond Onbekend dat script ziet er echt niet uit. Denk niet dat iemand zin heeft om daar naar te kijken.
Offline stan - 03/02/2005 16:24
Avatar van stan 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.

Offline numlockrond - 03/02/2005 16:25 (laatste wijziging 03/02/2005 16:26)
Avatar van numlockrond 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
Offline stan - 03/02/2005 16:32 (laatste wijziging 03/02/2005 16:35)
Avatar van stan 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:

  1. $man = ltrim(rtrim(strip_tags(stripslashes($_POST['man']))));
  2. $vrouw =ltrim(rtrim(strip_tags(stripslashes($_POST['vrouw']))));
  3. $opmerking = ltrim(rtrim(strip_tags($_POST['opmerking'])));


of
  1. $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;


of
  1. 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);


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.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.297s