Beste SD'ers,
Ik ben momenteel bezig met een site voor een klant. Het mailformulier (bestaande uit php en html) wat ik hiervoor gebruik, heb ik al meerdere malen op andere sites gebruikt (soms met aanpassingen). Op die sites werkt het gewoon prima.
Op de website waar ik momenteel mee bezig ben, werkt het script echter niet. Hij blijft de foutmelding geven dat niet alles correct is ingevuld en verstuurt dus niet een e-mail. Wanneer ik het hele bestand op mijn eigen server upload, werkt het wel gewoon goed! Hoe kan dit?
Ik ben geen diehard programmeur. De enige conclusie die ik kan trekken, is dat het te maken heeft met de webhost. De sites waarbij het wel werkt zijn ergens anders gehost (Domeinhuis) dan de site waarmee ik nu bezig ben (MijnDomein.nl).
Mijn vraag: kan de webhost er inderdaad voor zorgen dat het script het niet doet?
MijnDomein.nl ondersteunt PHP 5.2, Domeinhuis PHP 5. Kan daar wellicht het verschil liggen? Of zijn PHP 5 en 5.2 vrijwel identiek?
Alvast bedankt!!
Groeten Quinten
- Mailform werkt op bepaald domein niet
-
19-10-2009, 14:39 #1
- Berichten
- 220
- Lid sinds
- 16 Jaar
Mailform werkt op bepaald domein niet
-
-
19-10-2009, 15:08 #2
- Berichten
- 2.392
- Lid sinds
- 17 Jaar
Sterker nog, je zou zo langzamerhand moeten zitten op 5.2.11 of 5.3 ;-)
Zoiezo is mijndomein.nl geen goede hoster, maar dat kun je beter zelf even opzoeken.
Wellicht dat de programmering is verouderd of gewoon slecht is? Je kan hem eventueel hier plaatsen :)
-
19-10-2009, 15:19 #3
- Berichten
- 220
- Lid sinds
- 16 Jaar
Beste Chris,
Bedankt voor je reactie! Ik weet inderdaad dat mijndomein.nl niet erg goed is, maar m'n klant had dat al geregeld. Dit is de desbetreffende code:
Code:<?php /* * mailform.php v20080331.1430 * * Copyright 2004 - 2008 VEVIDA Services B.V. - Bert Jan Wezeman <info@vevida.com> * Last change: Jan Reilink <info@vevida.com>: * */ // email adres van de ontvanger $to = "info@fantasma-media.nl"; // Set-up error reporting, in productieomgevingen: // schakel UIT (= "false") $_DEBUG_MODE = "false"; error_reporting( ($_DEBUG_MODE ? E_ALL : 0) ); // niet wijzigen, wordt gebruikt voor foutafhandeling $strMessage ="<p></p>"; $sendMail = ""; $phpSelf = htmlentities(strip_tags($_SERVER['REQUEST_URI'])); // Hieronder hoeft u niets te wijzigen. // controle of het formulier gesubmit is if (isset($_POST['set'])) { $secret_code = $_POST['code']; $our_code = "6a5949b7fc4a23136f2bbfdbbaf2f1c6"; /* * controle of de geheime codes met elkaar overeen komen. * wijzig de codes niet! Niet in de PHP code, niet in de * HTML code! Anders zal het script niet werken! */ if (md5("geheim".$secret_code) != $our_code) { /* * de geheime codes om Email Injection tegen te gaan * komen niet met elkaar overeen. Het script is derhalve * direct aangeroepen en een nette foutmelding is niet * nodig. */ exit(); } /* * De trim() functie verwijdert o.a. spaties en line feeds / * carriage returns, aan het begin en aan het einde. * De eregi() functie controleert op eventueel toegevoegde * line feeds / carriage returns. */ $fromEmail = trim($_POST['fromEmail']); if (eregi("\r",$fromEmail) || eregi("\n",$fromEmail) || eregi("%0A",$fromEmail) || eregi("%0D",$fromEmail) ) { exit(); } // zeer eenvoudige controle om te valideren dat het e-mailadres // een @-teken bevat if (!preg_match("/@/",$fromEmail)) { $strMessage ="<p>U heeft geen geldig e-mailadres ingevuld.</p>"; $sendMail = "0"; } $fromName = trim($_POST['fromName']); if (eregi("\r",$fromName) || eregi("\n",$fromName) || eregi("%0A",$fromName) || eregi("%0D",$fromName) ) { exit(); } $subject = trim($_POST['subject']); if (eregi("\r",$subject) || eregi("\n",$subject) || eregi("%0A",$subject) || eregi("%0D",$subject) ) { exit(); } $body = "Geslacht: " .$_POST['fromGeslacht']; $body .= "\r\n"; $body .= "\r\n"; $body .= "Voorletters en naam: " .$_POST['fromName']; $body .= "\r\n"; $body .= "\r\n"; $body .= "Telefoonnummer: " .$_POST['fromPhone']; $body .= "\r\n"; $body .= "\r\n"; $body .= "E-mail: " .$_POST['fromEmail']; $body .= "\r\n"; $body .= "\r\n"; $body .= "Onderwerp: " .$_POST['subject']; $body .= "\r\n"; /* * Een '.' (dot) is een concatenation of operator die verschillende * strings aan elkaar koppelt. Zodoende wordt $body niet vervangen * met een nieuwe waarde (\r\n), maar wordt deze waarde aan $body * toegevoegd. */ // Een blanke regel aan de body toevoegen $body .= "\r\n"; // het ingetypte bericht aan de body toevoegen $body .= "Bericht: " .$_POST['body']; $body .= "\r\n"; $body .= "\r\n"; /* * Optioneel om de body van de e-mail af te korten op 72 * tekens per regel. Omdat alle samenvoegingen in de * variabele $body zit, hoeft hier niet gebruik gemaakt te * worden van een samenvoeging (concatenation) */ // $body = wordwrap($body, 72); // Extra header informatie $xorigip = "X-Originating-IP: " .$_SERVER["REMOTE_ADDR"] ."\r\n"; $xmailer = "X-Mailer: PHP/" .phpversion() ."\r\n"; /* * Hier wordt gecontroleerd of alle waardes ingevuld zijn. * Is dit niet het geval dan verschijnt een foutmelding. * * Eventueel toegevoegde (of verwijderde) HTML formulier waarden moeten * hier ook toegevoegd of verwijderd worden. */ if (empty($subject)|| empty($fromEmail) || empty($fromName) || empty($fromPhone) || empty($body) || empty($fromGeslacht)) { // formuleer een foutmelding $strMessage ="<h2><span>U dient alle velden correct in te vullen</span></h2>"; $sendMail = "0"; } // De volgende regel is enkel voor geavanceerde gebruikers, // bedoelt voor het debugging van fouten. // ini_set('sendmail_from', $fromEmail ); if ($sendMail != "0") { if (mail( $to, $subject, $body, "From: $fromName <$fromEmail>\r\n" .$xorigip .$xmailer)) { // formuleer een bevestigingsbericht $strMessage = "<p>Het bericht is succesvol verstuurd.</p>"; } } else { $strmessage = "<p>Het bericht is niet verstuurd. Neem a.u.b. contact op met xxx om dit probleem door te geven.</p>"; } } // display form ?> <p>U kunt dit onderstaande formulier invullen om een bestelling te plaatsen of om contact op te nemen met xxxx. U dient alle velden correct in te vullen. Uiteraard kunt u ook gewoon contact opnemen via de telefoon.</p> <?php if (isset($strMessage)) { echo "" .$strMessage .""; } ?> <br /> <form name="phpMailForm" method="post" action="<? echo $phpSelf; ?>"> <input type="hidden" name="code" value="V3v1DaSriNg0" /> <table border="0" cellspacing="0" cellpadding="0" width="550"> <tr> <td width="150" valign="top"></td> <td width="400" valign="top"><p><input type="radio" value="Man" name="fromGeslacht" checked="checked" />Dhr<input type="radio" value="Vrouw" name="fromGeslacht" />Mw</p></td> </tr> <tr> <td valign="top"><p>Voorletters en naam:</p></td> <td valign="top"><input type="text" name="fromName" /></td> </tr> <tr> <td valign="top"><p>Telefoonnummer:</p></td> <td valign="top"><input type="text" name="fromPhone" /></td> </tr> <tr> <td valign="top"><p>E-mail:</p></td> <td valign="top"><input type="text" name="fromEmail" /></td> </tr> <tr> <td valign="top"><p>Onderwerp:</p></td> <td valign="top"><input type="text" name="subject" /></td> </tr> <tr> <td valign="top"><p>Bericht:</p></td> <td valign="top"><textarea name="body" cols="45" rows="8"></textarea></td> </tr> <tr> <td valign="top"> </td> <td valign="top"><br /><input type="submit" name="set" value="verzenden" /> <input type="reset" name="reset" value="reset" /></td> </tr> </table> </form>
-
19-10-2009, 15:27 #4
- Berichten
- 2.392
- Lid sinds
- 17 Jaar
" // controle of het formulier gesubmit is
if (isset($_POST['set'])) {
"
Verouderd script, hierboven begint het al. Verder is de e-mail validatie zeer outdated, eregi zal een waarschuwing geven in PHP 5.3. Ziet er meer uit alsof het uit 2004 komt...
Anyway, wellicht dat dit iets is om naar te kijken?
$secret_code = $_POST['code'];
$our_code = "6a5949b7fc4a23136f2bbfdbbaf2f1c6";
en verderop
<input type="hidden" name="code" value="V3v1DaSriNg0" />
-
19-10-2009, 15:35 #5
- Berichten
- 220
- Lid sinds
- 16 Jaar
Bedankt voor je snelle analyse, die codes hetzelfde maken helpt niet. Helaas, toch maar opzoek naar wat anders of het uitbesteden.
Groeten Quinten
-
19-10-2009, 15:41 #6
- Berichten
- 359
- Lid sinds
- 18 Jaar
tuurlijk zijn die codes niet hetzelfde... :)
Bij de vergelijking wordt de één namelijk gehasht (én nog de string "geheim" ervoor) en de andere niet...
Aanvullend bericht:
tipje: vraag iemand hier even een kort, nieuw scriptje te maken. Voor de nerds onder ons, is dat 10 minuten werk, kost je 25 euro... Iedereen blij... Kost minder tijd dan proberen dit oude script te laten werken...
Just my 2 cents...Laatst aangepast door JeroenF : 19-10-2009 om 15:43 Reden: Automatisch samengevoegd.
-
19-10-2009, 15:43 #7
- Berichten
- 2.392
- Lid sinds
- 17 Jaar
Hm, zijn inderdaad goed anders krijg je een (hele foute, lelijke) exit..
-
19-10-2009, 15:44 #8
- Berichten
- 220
- Lid sinds
- 16 Jaar
Tsjah daar schiet ik dan toch te kort met m'n beperkte PHP kennis =)
Zou het veel tijd kosten om dit te laten maken?
EDIT
Bedankt voor je bericht Jeroen =)
-
19-10-2009, 15:46 #9
- Berichten
- 263
- Lid sinds
- 18 Jaar
Als je opnieuw begint, zorg voor javascript client side form validation ipv dat je php code na versturen alles gaat checken.
Succes!
-
19-10-2009, 15:48 #10
- Berichten
- 220
- Lid sinds
- 16 Jaar
Bedankt Alexander, zal je tip meenemen!
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic