Contact Formulier + CAPTCHA V2
Omdat ik veel emails/vragen kreeg of ik ook de CAPTCHA erook bij wou toevoegen heb ik besloten om het oude script te herschrijven en CAPTCHA eraan toe te voegen.
Verbeteringen zijn altijd welkom.
Oude versie:
http://www.phphulp.nl/php/scripts/1/331/
Features:
- CAPTCHA
- Anti Spam
- Kopie van email naar Verstuurder
- Email Checker
- xHTML valid
- CSS valid
Installatie:
De variabelen in het configuratie gedeelte wijzigen en de bestanden uploaden,
vergeet het font arial.ttf in een map fonts te zetten!
Bestanden:
- contact.php
- captcha.php
- style.css
- fonts/arial.ttf ( Hier te vinden )
Download:
http://php.ferket.net/contact.zip
Voorbeeld: http://php.ferket.net/contact.php
Gesponsorde koppelingen
PHP script bestanden
Er zijn 149 reacties op 'Contact formulier captcha v2'
Gesponsorde koppelingen
Warning: Cannot modify header information - headers already sent by (output started at /home/demaart/domains/demaartjestuin.nl/public_html/test/contact.php:8) in /home/demaart/domains/demaartjestuin.nl/public_html/test/contact.php on line 229
Uw bericht is succesvol verzonden, er word zo snel mogelijk gereageerd op u vraag of dergelijke.
Met vriendelijke groeten,
jeffrey
Warning: Cannot modify header information - headers already sent by (output started at /home/demaart/domains/demaartjestuin.nl/public_html/test/contact.php:8) in /home/demaart/domains/demaartjestuin.nl/public_html/test/contact.php on line 243
Je begint je contact.php met outputten van HTML, dat is niet slim. Beter wacht je daarmee tot regel 238 en ga je vanaf daar pas alle output naar de browser verzenden. Eventuele output die je in de regels daarvoor genereert, sla je zo lang op in een variabele welke je later in het script uitleest...
krijg ik dit:
Uw bericht is succesvol verzonden, er word zo snel mogelijk gereageerd.
Met vriendelijke groeten,
Redactie 112Zwaagwesteinde.nl
Warning: Cannot modify header information - headers already sent by (output started at /home/vhosts/112zwaagwesteinde.nl/httpdocs/cf/contact.php:214) in /home/vhosts/112zwaagwesteinde.nl/httpdocs/cf/contact.php on line 220
Opm: Ik heb CAPTCHA uitgezet.
Wie weet?
- contact.php
- captcha.php
- style.css
- fonts/arial.ttf ( Hier te vinden )
Even een zipje gemaakt die is hier te vinden:
http://php.ferket.net/contact.zip
Maak eens een bestand met alleen dit erin:
En dan zoek je naar GD, heb zon vermoeden dat GD niet is ingeschakeld bij jou host.
GD Support enabled
GD Version bundled (2.0.28 compatible)
FreeType Support enabled
FreeType Linkage with freetype
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled
wat houd dat in??
Werkt captcha niet??
<br />
<b>Fatal error</b>: Call to undefined function: str_split() in <b>/home/sites/..../public_html/captcha/captcha.php</b> on line <b>70</b><br />
Bij mij is de map captcha de test map hier voor en is zo ingedeelt zoals aangegeven.
Waarschijnlijk heb je dan geen PHP 5 op je server. Je zou het onderstaande stukje code ergens bovenaan in het captcha.php script kunnen zetten.
Heb deze functie gelijk toegevoegd aan de captcha.php zodat andere mensen met PHP4 niet dezelfde problemen hebben.
Bron: http://nl3.php.net/manual/nl/function.str-split.php#77031
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if (phpversion () < "5"){ // define PHP5 functions if server uses PHP4
function str_split($text, $split = 1)
{
if (!is_string($text)) return false;
if (!is_numeric($split) && $split < 1) return false;
$len = strlen($text);
$array = array();
$s = 0;
$e=$split;
while ($s <$len)
{
$e=($e <$len)?$e:$len;
$array[] = substr($text, $s,$e);
$s = $s+$e;
}
return $array;
}
}
?>
Heb nwste versie, maar na verzending teruggaan naar de pag / site als een bericht verstuurd is blijft niet goed gaan. Cannot modify header information - headers already sent... enz. Script blijft dus hikken op
Door in dit stukje de 1 te veranderen in een 0 wordt de foutmelding welliswaar niet meer weergegeven, maar is niet echt een elegante oplossing. Ook niet zoals oorspronkelijk bedoeld, toch? Dat terruggaan is juist wel zo wenselijk
Groeten
Die error krijg je alleen als er al een output van html is gweest voordat het script word aangeroepen. Dit krijg je meestal wanneer het script geinclude word.
Zet eens ob_start(); helemaal bovenaan je pagina.
@Pieter,
Bijlage toevoegen is niet mogelijk in dit script maar je zou even kunnen rondzoeken hier in het script lib daar staat er wel 1tje in. Of eventueel dan dit script uitbreiden.
Als cookie is geplaatst en contactform binnen de tijd opnieuw probeer te openen gaat het script + redirect naar http://www.mijndomeinnaam.nl wel helemaal goed.
Kleine wijziging dus nog, maar wat?
Na het invullen van het formulier wordt de bezoeker doorgestuurd naar:
http://www.mijndomeinnaam.nl/http://www.mijndomeinnaam.nl/
Hoe hebben jullie dat opgelost?
@Thijs wat was die typefout?
Ik heb beide zippakketten (oud en nieuw?) gedownload en bij beide krijg ik die dubbele website redirect
edit: op regel 221 stond:
ik heb de slash weggehaald:
en nu wordt de bezoeker na invullen correct doorgestuurd!
Ik ben niet zo super ervaren hiermee..
Maar ik heb iig na 2 uur klooien de layout veranded aan hem aan de praat gekregen.
Alleen nu werkt mijn style.css wel in IE en FF maar niet in Opera...
ff de jouwe gechecked in Opera en daar negeerd die ook het hele CSS..
Heb je mischien een oplossing?
Thnx
-----------------------------------------------------------------------------------------
edit:
-----------------------------------------------------------------------------------------
Sorry, maar ik negeerde ff helemaal het feit dat ik op mijn laptop VISTA:S draai, en Opera en vista hebben een beetje huwelijks problemen!;) Daarom werkt die niet...
Mijn fout!
Op Xp diet die het gwn prima!
Giancarlo
Ook weer eens een berichtje van mij
Ik heb het nieuwe captcha geïnstalleer en..
japapapapapappapap het werkt!
Nu heb ik nog een vraagje
Bji het formulier heb ik eeen blauwe achtergrond (en een lichtblauwe 'container')
Wanneer het formulier verzonden is, dan staat er :
Uw bericht is succesvol verzonden.
Er wordt, indien nodig, zo snel mogelijk gereageerd.
Met vriendelijke groeten,
Redactie ........
Dit is dan een witte achtergrond én een ander lettertype
Hoe kan ik dit aanpassen?
Ik heb dit php script gebruikt op mijn website http://www.terreros.be/contact.php
maar ik krijg na het invullen volgende foutmelding :
"Warning: Cannot modify header information - headers already sent by (output started at /home/terreros/public_html/contact.php:219) in /home/terreros/public_html/contact.php on line 225"
Wat doe ik in hemelsnaam fout ?
Het bericht zelf komt overigen wel mooi aan in m'n mailbox zoals het hoort.
Maar ik wordt niet doorgelinkt naar de pagina die ik wens, ik blijf op die foutmelding staan
Ik heb het zo opgelost..
echo "
<p style=\"background-color: transparent; font-family: Arial, Helvetica, sans-serif; font-size: 12px; bold; color: #FFFFFF\">
Uw bericht is succesvol verzonden.</p>
Snap je?
Transparent kan je vervangen door iedere kleur die je wilt natuurlijk..
En als je de SPam functie heb aangezet moet je hem daar ook ffies bij doen!
Ciao!
Het werkt wel, maar alleen als ik www.mijndomeinnaam.nl/contact.php
invoer. Ik wil de php code in een bestaande pagina laten integreren.
Graag hulp!
bedoel je hoe je die in een bestaande pagina kan zetten?
ik denk dat dan -of met includen kan:
(dan zet je deze code in je script waar die moet komen)
het kan ook met een iframe:
@thijs
Mooi script ! Alleen als ik hem upload, staat er zeg maar een witte afbeelding met een rood kruisje in de ding waar normaal die code moet staan..
hoe kan dit?
Uw bericht is succesvol verzonden, er word zo snel mogelijk gereageerd.
Met vriendelijke groeten,
Organisatie Pollepop
Warning: Cannot modify header information - headers already sent by (output started at /customers/pollepop.nl/pollepop.nl/httpd.www/contact/contact.php:215) in /customers/pollepop.nl/pollepop.nl/httpd.www/contact/contact.php on line 221
mailjes komen netjes aan.... waar komt deze error vandaan?
pagina staat op www.pollepop.nl/contact/contact.php
EDIT:
opgelost,
ob_start(); Bovenaan gezet, en de pagina waar hij naar toe moet worden gestuurd, alleen de pagina benoemen en niet je eigen server of hostnaam of domein..
bij werd het dus: front.html
Heb de volgende veranderingen aangebracht zodat het script starten:
-->
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if (phpversion () < "5"){ // define PHP5 functions if server uses PHP4
function str_split($text, $split = 1)
{
if (!is_string($text)) return false;
if (!is_numeric($split) && $split < 1) return false;
$len = strlen($text);
$array = array();
$s = 0;
$e=$split;
while ($s <$len)
{
$e=($e <$len)?$e:$len;
$array[] = substr($text, $s,$e);
$s = $s+$e;
}
return $array;
}
}
?>
<--
Maar hij blijft CCTJ geven iemand een idee?
Mooi formulier zeg, maar ik krijg deze error. Ben ik iets vergeten?
Op de server draait PHP versie 5.2.5
Max.
[08-Apr-2008 06:16:18] PHP Warning: Cannot modify header information - headers already sent by (output started at /home/lucubagh/public_html/temptrn/newsletter/contact.php:216) in /home/lucubagh/public_html/temptrn/newsletter/contact.php on line 222
Regel 104 if(strtoupper($code) != $_SESSION['captcha_code']) geeft bij mij een NOTICE: Notice: Undefined index: captcha_code
en hierdoor werkt de captcha_code dus ook niet.
Ik vind het wel raar dat niemand anders deze error krijgt. In ieder geval: Je kan dit wegwerken door eerst te controleren of de captcha_code wel gezet is.
Voeg bij regel 104 isset($_SESSION['captcha_code']) && toe.
Dit wordt dus:
if(isset($_SESSION['captcha_code']) && strtoupper($code) != $_SESSION['captcha_code'])
Voor de rest: Perfectamundo! :-)
Nee ook bij refresh niet:
http://www.bobautowas.nl/schiedam/index.htm
blijft dezelfde code geven
P.S., ik heb de captcha en antispam uitgezet maar daarvoor kreeg ik de error ook al. (was m'n uigen keuze, niet om te verhelpen)
Als ik een e-mail stuur ontvang ik hem wel en de stuurder ook..
oke, sorry was k vergeten hier is ie:
Warning: session_start() [function.session-start]: open(/var/php_sessions/sess_9d978d79222e6e8b14396077541ab478, O_RDWR) failed: No such file or directory (2) in /hermes/web03/b486/pow.chieldegroot/htdocs/remi/redegro/index.htm/index.php on line 13
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /hermes/web03/b486/pow.chieldegroot/htdocs/remi/redegro/index.htm/index.php:13) in /hermes/web03/b486/pow.chieldegroot/htdocs/remi/redegro/index.htm/index.php on line 13
hier dan het formuliertje, gewoon zoals ie het hoort te doen
Warning: Unknown(): open(/var/php_sessions/sess_9d978d79222e6e8b14396077541ab478, O_RDWR) failed: No such file or directory (2) in Unknown on line 0
Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/php_sessions) in Unknown on line 0
heb je hier wat aan?
Echter als ik alle gegevens heb ingevuld dan krijg ik de vermelding: "The requested document was not found on this server"
http://www.sanlucar.be
Wie weet er raad?
<form method="post" action="">
Staat dat er ook wel bij jouw?
Mooi zo!
Ik wist mijn error hierboven ook weg te halen om de error notice regels weg te halen...
Nu alleen weer ander probleem. Ik heb de cntact pagina in mijn index pagina geinclude, maar nadat er een een bericht is verzonden gaat refresht hij dat stukkie niet meer. Heeft iemand een oplossing?
gewoon een Reset inzetten zoals deze:
<input type="Reset" id="wis" name="wis" value="Wis velden" />
en ik krijg allen een paar errors kan iemand mij helpen plz.
Warning: ini_set() has been disabled for security reasons in /usr/export/www/vhosts/funnetwork/hosting/dutchgamerboy/page/nl/kontakt.php on line 3
en deze:
Notice: Undefined variable: iaantal in /usr/export/www/vhosts/funnetwork/hosting/dutchgamerboy/page/nl/count.txt on line 8
en deze nog eens:
Notice: Undefined variable: echo in /usr/export/www/vhosts/funnetwork/hosting/dutchgamerboy/page/nl/count.txt on line 42
en ik krijg allen een paar errors kan iemand mij helpen plz.
hier pagina mischien hebben jullie er wat aan!!
http://dutchgamerboy.funpic.de/page/nl/index.php?site=kontakt
HHAHAHA ik heb het zelf al gered maar toch bedankt jongens!!!!
paar kleine dingetjes
heb de spam time out op 0 gezet en nu krijg ik dit:
U kunt maar eens in de 0 minuten een e-mail versturen!
U wordt nu automatisch doorgestuurd.
Dat door sturen werkt niet en daaronder krijg ik de melding:
Warning: Cannot modify header information - headers already sent by (output started at
/contact/contact.php:294) in
/contact/contact.php on line 295
Verder moest er idd iets toegevoegd worden om die 'header' melding weg te krijgen.
Ook vind ik het heel jammer dat je nu een witte pagina met tekst krijgt ipv dat de tekst in je opmaak komt..
Hoop dat iemand deze nog een keer goed gaat aanpassen (misschien wat makkelijker?)
Ik heb lang naar een dergelijk script gezocht (ben een beginner en weet nog niet goed hoe ik met php om moet gaan) en dat van jou had ik binnen vijf minuten werkend. Geweldig!
Echter... het werkt niet helemaal goed.
Ik heb eerst de contact.zip gedownload en vervolgens gaf die problemen:
De mails worden goed verstuurd en ik krijg de mededeling daarover ook netjes op het scherm, maar dan gevolgd door de volgende foutmelding. ik heb de voorgaande posts doorgelopen en gezien dat meer mensen problemen hadden.... namelijk:
Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/anjozegels.nl/httpdocs/contact.php:215) in /var/www/vhosts/anjozegels.nl/httpdocs/contact.php on line 221
ik zag toen ook dat de code die je hier op de website hebt staan adners is dan die van de zip file. Als ik de code van je website neem, krijg ik de captcha niet te zien. Als ik de oude captcha.php neem en de nieuwere contact.php krijg ik nog voor het invulformuliertje de volgende foutmelding:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/vhosts/anjozegels.nl/httpdocs/contact.php:1) in /var/www/vhosts/anjozegels.nl/httpdocs/contact.php on line 14
als ik dan het formuliertje invul, gaat de mail verder wel goed maar blijf ik dus in het foutmeldingenscherm hangen.
enig idee?
dit is dus het scherm waar ik vervolgens in blijf hangen:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/vhosts/anjozegels.nl/httpdocs/contact.php:1) in /var/www/vhosts/anjozegels.nl/httpdocs/contact.php on line 14
Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/anjozegels.nl/httpdocs/contact.php:1) in /var/www/vhosts/anjozegels.nl/httpdocs/contact.php on line 206
Uw bericht is succesvol verzonden, er word zo snel mogelijk gereageerd.
Met vriendelijke groeten,
Anjo
Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/anjozegels.nl/httpdocs/contact.php:1) in /var/www/vhosts/anjozegels.nl/httpdocs/contact.php on line 221
Dat was het eerste dat ik gedaan heb, maar merendeels is de uitleg technisch en ik ken (nog) geen php.
Maar ik heb niets aan het schript veranderd behalve de eigen waarden (bv het email-adres ). Dat is ook een van de redenen van mijn mail: als ik deze fout krijg zonder verder iets te wijzigen, moeten toch veel meer mensen dezelfde fout hebben?
En er zijn dus verschillende versies in omloop: de download hierbovenaan lijkt ouder dan de code in deze posts. Dat leek me ook iets om onder de aandacht te brengen.
maar om het probleem voor mezelf opgelost te krijgen denk ik dat ik me toch maar moet gaan verdiepen in php om een en ander werkend te krijgen.
met dank voor het meedenken
$mail->AddAddress($info_klanten["email"]);
Kijk, dit was bij mijn vorige script de regel waar ik dat deed. Via een DB connectie en een ID kon hij zien in welke DB en welk veld hij het email adres moest ophalen.
Maar hoe kan ik dat fixen bij dit script? Dat ik een regel toevoeg dat hij uit een database het email adres pakt.. en eventueel een BCC naar mij kan sturen.
En hier zoek ik ook een oplossing voor:
$cfg['url'] = "http://www.triple-art.nl/index.php?page=contact";
In mijn vorige script ging dat als volgt:
2
<form name="contact" method="POST" action="index.php?page=product&id=<?php echo $_GET["id"]; ?>&action">?>
Hoe kan ik ervoor zorgen dat dit weer kan in dit nieuwe script?
kan ik de "echo" begroeting (of "echo" foutmelding) in de originele pagina laten zien.
nu komt er een blanco pagina met de begroeting of foutmelding en dan de redirect .
Ik zou deze melding willen verkrijgen in de originele pagina (ipv. van het formulier of boven of onder een leeg formulier.
Hoe zou ik dat kunnen doe?
Alvast bedankt voor alle hulp.
Peter
Bedankt voor je script, maar ik krijg een fout melding!
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /customers/mouthaanfotografie.nl/mouthaanfotografie.nl/httpd.www/contact.php:1) in /customers/mouthaanfotografie.nl/mouthaanfotografie.nl/httpd.www/contact.php on line 25
Warning: Cannot modify header information - headers already sent by (output started at /customers/mouthaanfotografie.nl/mouthaanfotografie.nl/httpd.www/contact.php:1) in /customers/mouthaanfotografie.nl/mouthaanfotografie.nl/httpd.www/contact.php on line 411
Uw bericht is succesvol verzonden, er word zo snel mogelijk gereageerd.
Met vriendelijke groeten,
Robert Mouthaan
Warning: Cannot modify header information - headers already sent by (output started at /customers/mouthaanfotografie.nl/mouthaanfotografie.nl/httpd.www/contact.php:1) in /customers/mouthaanfotografie.nl/mouthaanfotografie.nl/httpd.www/contact.php on line 441
Ik ben wel een niewbie. Dals als iemand het een beetje in jip en janikketaal kan vertellen graag.
Link: www.mouthaanfotografie.nl/contact.php
Alsvast bedankt
Prima script , zeker met wat aanvullingen om de foutmeldingen te voorkomen , wel heb ik nog een vraag aan jullie experts :
Na verzending krijg je een witte pagina te zien met daarin de bedank tekst nu wil ik eigenlijk dat dit gelijk een bedank pagina is met opmaak , hoe doe ik dit , weet een beetje van php , ga van het najaar een opleiding doen maar daar heb ik nu ff niks aan
alvast bedankt
ik wou even kijken hoe deze script er uit zit maar ik krijg deze fout melding kan imand me helpen?
alvast bedankt!!!!!!!!!
Het contactformulier werk bij mij perfect, alleen zou ik graag willen weten hoe ik de bedank pagina kan veranderen, zoals de witte achtergrond en de tekst type qua groote en kleur. Ben al 4 nachten bezig geweest en ik zie de bomen door het bos niet meer, heb vierkante oogjes ervan gekregen.
Wie kan mij helpen, misschien is het iets eenvoudigs maar ik zie het niet meer.
Ik zie jullie reactie graag tegemoed.
Alvast bedankt voor de genomen moeite.
deze 3:
Warning: ini_set() has been disabled for security reasons in /www/uuuq.com/m/a/r/marty-f1/htdocs/contact.php on line 10
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /www/uuuq.com/m/a/r/marty-f1/htdocs/contact.php:10) in /www/uuuq.com/m/a/r/marty-f1/htdocs/contact.php on line 13
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /www/uuuq.com/m/a/r/marty-f1/htdocs/contact.php:10) in /www/uuuq.com/m/a/r/marty-f1/htdocs/contact.php on line 13
hoe moet ik ze oplosssen?
edit:
ik ebn al verder die problem zijn opgelost ik heb gen ini_set(); weg gehaald.
maar als ik nu verzend krijg ik deze fout:
Er is een fout opgetreden bij het verzenden van de email
Warning: Cannot modify header information - headers already sent by (output started at /www/uuuq.com/m/a/r/marty-f1/htdocs/contact/contact.php:219) in /www/uuuq.com/m/a/r/marty-f1/htdocs/contact/contact.php on line 221
??? wie kan me helpen???
Met php4 (dus zonder de 5 achter de extensie) werkt het super. Ik heb de code nu via een include opgenomen in de hoofdpagina, zodoende komt ook de "bedankt" melding keurig in de template.
Hiervoor heb ik in de hoofdpagina helemaal bovenin ob_start() verwerkt zoals beschreven, om de foutmeldingen te voorkokomen.
Ik heb verder de mail controle nog uitgebreid met een domein check.
De checkmail routine ziet er nu als volgt uit:
function checkmail($email)
{
if(eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$", $email))
{
list($userName, $mailDomain) = split("@", $email);
if (checkdnsrr($mailDomain, "MX")) {
return TRUE;
}
}
return FALSE;
}
Hierdoor wordt ook het domein gecontroleerd, zodat nog meer typefouten en niet-bestaande domeinen ook resulteren in een foutmelding.
Thijs, bedankt!
Warning: Cannot modify header information - headers already sent by (output started at /customers/pollepop.nl/pollepop.nl/httpd.www/contact/contact.php:215) in /customers/pollepop.nl/pollepop.nl/httpd.www/contact/contact.php on line 221
mailjes komen netjes aan.... waar komt deze error vandaan?
pagina staat op www.pollepop.nl/contact/contact.php
EDIT:
opgelost,
ob_start(); Bovenaan gezet, en de pagina waar hij naar toe moet worden gestuurd, alleen de pagina benoemen en niet je eigen server of hostnaam of domein..
bij werd het dus: front.html
ben een leek snap het niet helemaal hoe hij dit bedoeld
maar hij stuurt wel mail
Heb je script ingevoerd, maar ik stuit op een probleempje:
Wanneer ik de pagina online bekijk dan krijg ik meteen in beeld, boven het contactformulier:
vervolgens het volgende;
Ik heb een regel bijgevoegd en een regel gewijzigd:
Toegevoegd = bedrijfsnaam. Deze werkt perfect.
gewijzigd = onderwerp.
Onderwerp heb ik gewijzigd in telefoonnummer.
Bij het invullen van het formulier geeft ie aan dat telefoonnummer niet of niet correct is ingevuld. Ik heb vast iets fout gedaan, weet alleen niet wat.
dit heeft betrekking op
error_reporting(E_ALL);
ob_start();
session_start();
en dan wel op de laatste regel: session_start()
Wat ik fout doe weet ik niet
Bvd Irma
Foutmelding:
2
3
Deprecated: Function eregi() is deprecated in /customers/mijnwebsite/mijnwebsite/httpd.www/contact.php on line 67
Ik hoop dat iemand hiervoor een oplossing heeft.
Groeten,
Wietse
Leden, dit is de fout van die header errors.
Vervang:
Door:
Naar tuurlijk wat Henk en Annie zei is ook erg handig
Quote:'session_start() moet helemaal bovenaan je pagina staan, er mag geen html ofso boven staan!'
Hiermee is het opgelost!
Veel succes
wil hem implementeren in mijn web site via mijn ftp server.
Ik heb daarvoor een sub pagina met de naam mailform.
Omdat het voor mij toch allemaal nieuw is (is dummy hiervoor een juiste benaming) weet ik niet op welke manier ik het hele script kan onderbrengen in de bewust subpagina Mailform.
Graag hulp hier mee,
Cees
@Cees: Dat het script bij jou werkt zegt niks over de kwaliteit van dit script. Jammer genoeg maakt dit script gebruik van oude technieken en zijn een aantal dingen gewoon fout.
Zoals Jasper dus zegt, er zijn de afgelopen tijd (eigenlijk constant) topics over dit script geweest. Steeds weer met dezelfde problemen. Verder is dit script dus gewoon ouderwets en zijn de e-mail headers volgens mij ook verkeerd. Daarom heb ik mijn vorige reactie geplaatst. Het was niet de bedoeling om meer aandacht voor dit script te genereren, maar juist af te schrikken om te gebruiken.
Ik heb namelijk nog geen degelijk alternatief gevonden, indien iemand deze heeft of dit script kan optimaliseren dan hoor ik dat graag
ik gebruik dit formulier nu ook,
hij werkt goed bij het testen.
echter geeft hij 1 probleem aan:
als ik op verzenden druk, wordt ik netjes verwezen naar een nieuwe pagina met de tekst: dat hij verzonden is.
maar op deze pagina zie ik onder deze tekst nog het mailformulier te staan.
wel wordt ik hierna meteen doorgestuurd naar mijn home-pagina.
ook zou ik de tekst bedankt et cetera gecentreerd willen hebben op mijn pagina.
hoe doe ik dit allemaal.
een andere vraag is:
ik heb een veld 'to_send' met optiemenu.
nu wil ik een veld erbij met:
$to_sendmail = (met een functie dat hij de naam zoekt in $to_send en dan bij optie 1 'emailadres1' invult,
bij optie 2 'emailadres2' invult et cetera.
ik wil graag bij to_send de naam invullen en niet een mailadres als waarde
hieronder mijn script, zoals ik hem in mijn website heb.
voorbeeld op : http://turningpointtilburg.nl/mail4
script
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<title>GTV Turning Point Tilburg</title>
<link href='css/main.css' rel='stylesheet' type='text/css' />
<link rel='stylesheet' href='css/lightbox.css' type='text/css' media='screen' />
<script src='js/jquery.js' type='text/javascript'></script>
<script type='text/javascript' src='js/prototype.js'></script>
<script type='text/javascript' src='js/scriptaculous.js?load=effects,builder'></script>
<script type='text/javascript' src='js/lightbox.js'></script>
<!--[if lt IE 7]>
<script type='text/javascript' src='supersleight-min.js'></script>
<link rel='stylesheet' href='css/iefixes.css' type='text/css' media='screen' />
<![endif]-->
<style type='text/css'>
body {
background-image: url();
background-repeat: no-repeat;
}
.sidebar_links {
text-align: left;
float: left;
margin-left: 0px;
width: 12%;
border-right-color: #00F;
border-right-style: solid;
border-right-width: 0px;
}
</style>
<script type='text/javascript'>
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a.indexOf('#')!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a;}}
}
function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a)&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf('?'))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers.document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
</script>
</head>
<body onload='MM_preloadImages('buttons/a_mail_form1.png')'>
<div id='wrapper'>
<div id='nav'>
<div class='wrap'>
<div id='logo'> <a href='index'>GVT Turning Point Tilburg</a></div>
<ul id='menu'>
<li> <a href='index' class='home'>Home</a></li>
<li> <a href='nieuws' class='nieuws'>Nieuws</a></li>
<li> <a href='informatie' class='informatie'>Home</a></li>
<li> <a href='overons' class='over_ons'>Over Ons</a></li>
<li> <a href='contact' class='contact'>Contact</a></li>
</ul>
</div>
</div>
<div id='header'>
<div class='wrap'>
<h3>Welkom op de pagina voor het versturen van een mail</h3>
</div>
</div>
<div id='content'>
<div class='wrap'>
<div class='sidebar_links' id='Logo img'>
<h2><a href='Logo_Turning_Point_Tilburg-Cas.gif' rel='lightbox' title='GTV Turning Point Tilburg'><img src='Logo_Turning_Point_Tilburg-Cas.gif' width='148' height='235' /></a></h2>
<p> </p>
<p></p>
<p></p>
<p></p>
<p></p>
<p> </p>
<p></p>
<div align='left'></div>
</div>
<div class='main'>
<div class='In-main'>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
############################################
# Filename : contact.php #
#------------------------------------------#
# Written By : Thijs Ferket #
# Website : www.ferket.net #
#------------------------------------------#
############################################
ini_set('display_errors', 1);
error_reporting(E_ALL);
// Config Gedeelte
$cfg['url'] = 'http://www.turningpointtilburg.nl';// Site waarnaar je terug gaat als je een bericht hebt achtergelaten
$cfg['naam'] = 'GTV Turning Point Tilburg'; // Webmaster naam
$cfg['email'] = '[email protected]'; // Webmaster E-mail
$cfg['spam'] = 1; // Anti Spam Tijd in Minuten ( Voer '0' om de Spam Beveiliging uit te zetten )
$cfg['value'] = TRUE;
$cfg['text'] = TRUE; // Bij Fout Text Rood maken ( TRUE voor aan, FALSE voor uit )
$cfg['input'] = TRUE; // Bij Fout Border om Vakje Rood maken ( TRUE voor aan, FALSE voor uit )
$cfg['HTML'] = TRUE; // Een HTML email ( TRUE voor aan, FALSE voor uit )
$cfg['CAPTCHA'] = TRUE; // CAPTCHA ( TRUE voor aan, FALSE voor uit )
// Hieronder niks meer veranderen
// E-mail Checker / Validator
function checkmail($email)
{
if(eregi('^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$', $email))
{
return TRUE;
}
return FALSE;
}
$mailformulier = TRUE;
if(!isset($_COOKIE['mailformulier']))
{
if(isset($_POST['wis']) && ($_SERVER['REQUEST_METHOD'] == 'POST'))
{
foreach($_POST as $key => $value)
{
unset($value);
}
header('Location: '.$_SERVER['PHP_SELF'].'');
}
if(isset($_POST['verzenden']) && ($_SERVER['REQUEST_METHOD'] == 'POST'))
{
$aFout = array();
$to_send = trim($_POST['to_send']);
$naam = trim($_POST['naam']);
$email = trim($_POST['email']);
$onderwerp = trim($_POST['onderwerp']);
$bericht = trim($_POST['bericht']);
if($cfg['CAPTCHA'])
{
$code = $_POST['code'];
}
if(empty($to_send))
{
$aFout[] = 'Je hebt niet gekozen voor wie het bericht is.';
unset($to_send);
$fout['value']['to_send'] = TRUE;
$fout['input']['to_send'] = TRUE;
}
if(empty($naam) || (strlen($naam) < 3) || eregi('[<>]', $naam) )
{
$aFout[] = 'Er is geen naam ingevuld.';
unset($naam);
$fout['text']['naam'] = TRUE;
$fout['input']['naam'] = TRUE;
}
if(empty($email))
{
$aFout[] = 'Er is geen e-mail adres ingevuld.';
unset($email);
$fout['text']['email'] = TRUE;
$fout['input']['email'] = TRUE;
}
elseif(checkmail($email) == 0)
// Wanneer je PHP 5.2 > gebruikt
//elseif(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
$aFout[] = 'Er is geen correct e-mail adres ingevuld.';
unset($email);
$fout['text']['email'] = TRUE;
$fout['input']['email'] = TRUE;
}
if(empty($onderwerp))
{
$aFout[] = 'Er is geen onderwerp ingevuld.';
unset($onderwerp);
$fout['text']['onderwerp'] = TRUE;
$fout['input']['onderwerp'] = TRUE;
}
if(empty($bericht))
{
$aFout[] = 'Er is geen bericht ingevuld.';
unset($bericht);
$fout['text']['bericht'] = TRUE;
$fout['input']['bericht'] = TRUE;
}
if($cfg['CAPTCHA'])
{
if(strtoupper($code) != $_SESSION['captcha_code'])
{
$aFout[] = 'Er is geen correcte code ingevuld.';
$fout['text']['code'] = TRUE;
$fout['input']['code'] = TRUE;
}
}
if(!$cfg['text'])
{
unset($fout['text']);
}
if(!$cfg['input'])
{
unset($fout['input']);
}
if(!empty( $aFout ))
{
$errors = '
<div id='errors'>
<ul>';
foreach($aFout as $sFout)
{
$errors .= ' <li>'.$sFout.'</li>\n';
}
$errors .= '</ul>
</div>';
}
else
{
$formulier = FALSE;
if($cfg['HTML'])
{
// Headers
$headers = 'From: \'Mail Formulier GVT\' <'.$email.'>\r\n';
$headers .= 'Reply-To: \''.$naam.'\' <'.$email.'>\n';
$headers .= 'Return-Path: Mail-Error <'.$to_send.'>\n';
$headers .= 'MIME-Version: 1.0\n';
$headers .= 'Content-Transfer-Encoding: 8bit\n';
$headers .= 'Content-type: text/html; charset=iso-8859-1\n';
$bericht = '
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>
<html>
<head>
</head>
<body>
Hoi '.$to_send.',<br />
<br />
'.$naam.' heeft een bericht gestuurd via 'mail3 formulier' van de site '.$cfg['url'].'<br />
<br />
<br />
-------------------------------------------------------------------------<br />
<br />
<b>Naam:</b> '.$naam.'<br />
<b>Email:</b> <a href='mailto:'.$email.''>'.$email.'</a><br />
<br />
<b><u>Onderwerp:</u></b> '.$onderwerp.'<br />
<br />
<b>Bericht:</b><br />
'.$bericht.'
<br />
<br />
<br />
--------------------------------------------------------------------------<br />
<b>Datum:</b> '.date('d-m-Y @ H:i:s').'<br />
<b>IP:</b> <a href=\'http://sunny.nic.com/cgi-bin/whois?domain='.$_SERVER['REMOTE_ADDR'].'\'>'.$_SERVER['REMOTE_ADDR'].'</a><br />
<b>Host:</b> '.gethostbyaddr($_SERVER['REMOTE_ADDR']).'<br />
</body>
</html>';
}
else
{
$bericht_wrap = wordwrap ($bericht, 40, '\n', 1);
// Headers
$headers = 'From: \'Mail Formulier GTV\' <'.$email.'>\n';
$headers .= 'MIME-Version: 1.0\n';
$headers .= 'Content-type: text/plain; charset='iso-8859-1'\n';
// Bericht
$message = 'Naam: '.$naam.' \n';
$message .= 'E-mail: '.$email.' \n';
$message .= 'Bericht:\n'.$bericht_wrap.' \n ';
$message .= ' \n ';
$message .= 'Datum: '.date('d-m-Y H:i:s').' \n';
$message .= '------------------------------------------------------- \n ';
$message .= 'IP: '.$_SERVER['REMOTE_ADDR'].' \n ';
$message .= 'Host: '.gethostbyaddr($_SERVER['REMOTE_ADDR']).' \n ';
}
if(mail($to_send, $onderwerp, $bericht, $headers))
{
if(isset($_POST['stuurkopie']))
{
$headers = 'From: \'Mail Formulier GTV\' <'.$to_send.'>\r\n';
$headers .= 'Reply-To: \''.$naam.'\' <'.$email.'>\n';
$headers .= 'Return-Path: Mail-Error <'.$email.'>\n';
$headers .= 'MIME-Version: 1.0\n';
$headers .= 'Content-Transfer-Encoding: 8bit\n';
$headers .= 'Content-type: text/html; charset=iso-8859-1\n';
mail($email, $onderwerp, $bericht, $headers);
}
unset($naam, $email, $onderwerp, $bericht);
setcookie('mailformulier', 1, time() + ( $cfg['spam'] * 60 ) );
echo '
<p style=\'color=#682E92\'>
Uw bericht is succesvol verzonden, er word zo snel mogelijk gereageerd.<br />
<br />
Met vriendelijke groeten,<br />
<b>'.$cfg['naam'].'</b>
</p>
';
}
else
{
echo 'Er is een fout opgetreden bij het verzenden van de email';
}
header('refresh:3;url='.$cfg['url'].'');
}
}
{
?>
<h3 align='center'>Mail Formulier GTV</h3>
<form method='post' action=''>
<p> </p>
<table width='100%" border='0'>
<tr>
<td>Aan:</td>
<td><label for='to_send'></label>
<select name='to_send' size='1' id='to_send'>
<option value=''></option>
<option value='[email protected]'>Lucien_1</option>
<option value='[email protected]'>Lucien_2</option>
<option value='[email protected]'>Lucien_3</option>
</select></td>
</tr>
<tr>
<td><strong>Naam:</strong></td>
<td><input type='text' id='naam' name='naam' maxlength='30' value='' /></td>
</tr>
<tr>
<td><strong>Email:</strong></td>
<td><input type='text' id='email' name='email' maxlength='255' value='' /></td>
</tr>
<tr>
<td><strong>Onderwerp:</strong></td>
<td><input type='text' id='onderwerp' name='onderwerp' maxlength='40' value='' /></td>
</tr>
<tr>
<td><strong>Bericht:</strong></td>
<td><textarea id='bericht' name='bericht' cols='35' rows='6'>
</textarea></td>
</tr>
<tr>
<td>
<label></label>
<img src='captcha.php' alt='' /><br /></td>
<td><label >Code:</label>
<input type='text' id='code' name='code' maxlength='4' size='4' /><br /></td>
</tr>
<tr>
<td>
<label for='stuurkopie'><strong>Stuur mij een kopie:</strong></label> <br /></td>
<td>
<input type='checkbox' id='stuurkopie' name='stuurkopie' value='1' /></td>
</tr>
<tr>
<td>
<div align='right'>
<input type='submit' id='verzenden' name='verzenden' value='verzenden' />
</div></td>
<td>
<input type='submit' id='wis' name='wis' value='Wis velden' /></td>
</tr>
</table>
<p><br /><br /><br /><br />
<label></label>
</p>
</form>
</div>
<h2> </h2>
<h2> </h2>
</div>
<div class='sidebar'>
<p><a href='#' onmouseout='MM_swapImgRestore()' onmouseover='MM_swapImage('mail-form','','buttons/a_mail_form1.png',1)'><img src='buttons/p_mail_form1.png' width='100' height='22' border='0' id='mail-form' /></a></p>
<ul>
<li></li>
<li></li>
<li></li>
<script type='text/javascript'>
// BeginWebWidget lightbox_gallery
$(function() {
$('#gallery1 a').lightBox();
});
// EndWebWidget lightbox_gallery
</script>
<p></p>
<p></p>
</ul>
</div>
</div>
<div class='push'></div>
</div>
</div>
<div id='footer'>
<div class='wrap'>
<ul id='links'>
<li><a href='contact'>Contact</a></li>
<li class='sep'>|</li>
<li><a href='http://turningpointtilburg.hyves.nl/' target='_blank'>Hyves</a></li>
</ul>
</div>
</div>
</body>
</html>
Lastiger was de header en de opmerking over ob_start() tussen al de reacties terug te vinden. Nu nog in de pagina frommelen.
PS. Iemand een idee hoe ik het [return-path] van de mail kan aanpassen?
2
3
4
5
6
7
8
9
if (strtolower($_POST['captcha_code']) == strtolower($_SESSION['captcha_code'])) {
}else {
$aFout[] = "Er is geen correcte code ingevuld.";
$fout['text']['code'] = TRUE;
$fout['input']['code'] = TRUE;
}
2
3
4
5
6
7
8
9
10
11
12
if($cfg['CAPTCHA'])
{
?>
<label></label>
<img src="captcha.php" alt="" /><br />
<label <?php if(isset($fout['text']['code'])) { echo 'class="fout"'; } ?>>Code:</label>
<input type="text" id="code" name="code" maxlength="4" size="4" <?php if(isset($fout['input']['code'])) { echo 'class="captcha fout"'; } ?> /><br />
<?php
}
?>
Google bied gratis captcha aan https://www.google.com/recaptcha/intro/index.html
Fatal error: Uncaught Error: Call to undefined function eregi() in /mnt/bigstorage/tjeerd/domains/tjeerdengel.nl/public_html/ontwerp/contact.php:64 Stack trace: #0 {main} thrown in /mnt/bigstorage/tjeerd/domains/tjeerdengel.nl/public_html/ontwerp/contact.php on line 64
Regel 64 ziet er als volgd uit:
if(empty($naam) || (strlen($naam) < 3) || eregi("[<>]", $naam) )
Wat gaat er fout?
Je reageert op een script van 11 jaar oud.
De functie eregi wordt niet meer ondersteund.
Als je nog meer vragen hebt, wil je dan aub een nieuw topic aanmaken op het forum.
Om te reageren heb je een account nodig en je moet ingelogd zijn.
Inhoudsopgave
Labels
- Geen tags toegevoegd.
PHP hulp
0 seconden vanaf nu