Archief - velden toevoegen aan mail die verstuurd wordt

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Rep1

Legacy Member
Geen idee of mijn titel duidelijk genoeg is, maar het gaat om het volgende:

ik heb een php-formulier gedownload van volgende site: Free scripts: Free PHP form mailer script

Formulier werkt, maar in de mail staat nu enkel het bericht.
Graag had ik daar ook nog het e-mail adres en de naam van de "invuller" bij gehad. Indien mogelijk voorafgegaan door: "naam" en "e-mail" (en dan "bericht" voor wat hij nu al doorstuurt)
(eigenlijk dezelfde gegevens die nu op het scherm worden weergegeven als dit formulier wordt verstuurd)

Ik ben alles behalve een php-held. Ik heb al enkele dingen kunnen aanpassen, maar hierbij heb ik blijkbaar enige hulp nodig.

Het stukje waar het volgens mij om gaat is:
PHP:
	$info_notice = $lang_sent;
	$mail_message = stripslashes($mail_message);
	$senders_email = preg_replace("/[^a-zA-Z0-9s.@-_]/", "-", $senders_email);
	$senders_name = preg_replace("/[^a-zA-Z0-9s]/", " ", $senders_name);
	$headers = "From: $senders_name <$senders_email> \r\n";
	$headers .= "X-Mailer: BELLonline.co.uk PHP mailer \r\n";

Ik heb vroeger eens een werkend php-formulier gehad waar ik de verstuurde mail volledig had opgemaakt met de nodige velden enzo. Maar men had mij toen gezegd dat dat script eigenlijk niet zo goed in elkaar zat en ik dus beter op zoek zou gaan naar een ander script.
Eens ik een goed script in bezit heb, kan ik daar in de toekomst altijd mee werken... maar het moet eerst wel in orde zijn natuurlijk.

Alvast bedankt

Rep1

Legacy Member
En dat veld "validation-code" mag eigenlijk ook weg.
Wat moet daar allemaal voor verwijderd worden?
(dat veld verwijderen is niets... maar de errors als het dan niet is ingevuld...)

GregoryCo

Legacy Member
PHP:
<?php
// Website Contact Form Generator 
// http://www.tele-pro.co.uk/scripts/contact_form/ 
// This script is free to use as long as you  
// retain the credit link  

// get posted data into local variables
$EmailFrom = Trim(stripslashes($_POST['EmailFrom'])); 
$EmailTo = "[email protected]";
$Subject = "Contact";
$Naam = Trim(stripslashes($_POST['Ndsdsaam'])); 
$Telefoon = Trim(stripslashes($_POST['Telefoon'])); 
$Vragen = Trim(stripslashes($_POST['Vragen'])); 

// validation
$validationOK=true;
if (Trim($EmailFrom)=="") $validationOK=false;
if (!$validationOK) {
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
  exit;
}

// prepare email body text
$Body = "";
$Body .= "Naam: ";
$Body .= $Naam;
$Body .= "\n";
$Body .= "Telefoon: ";
$Body .= $Telefoon;
$Body .= "\n";
$Body .= "Vragen: ";
$Body .= $Vragen;
$Body .= "\n";

// send email 
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// redirect to success page 
if ($success){
  print "<meta http-equiv=\"refresh\" content=\"0;URL=ok.htm\">";
}
else{
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
}
?>

Dit is het script die ik gebruik, zie bovenaan van waar het komt.
Waarschijnlijk kun je hier iets van gebruiken om meer velden te krijgen

j design

Legacy Member
even a chimp could do it!

Kan je de volledige code eens opzetten? Dan hoef ik niet te downen.

Veel kans dat je de gegevens opvangt met $_POST en dan in de mail ook moet zetten.
Maar ik kijk ernaar als je de volledige code post.

Verder denk ik ook wel dat je best zelf een gaat maken, met check alles erop en eraan, dan is het idd zo dat je die steeds opnieuw kan gebruiken

edit: bovenstaand ziet er behoorlijk mooi uit

Dit is de mijne, enkel zelf aangepast
PHP:
<?php

$yourName = 'Jonas T';
$yourEmail = '[email protected]';
$yourSubject = $_POST['onderwerp']." ".$_POST['naam']." ".$_POST['voornaam'];
$referringPage = 'http://www.jdesign.be';

function cleanPosUrl ($str) {
return stripslashes($str);
}
	if ( isset($_POST['sendContactEmail']) )
	{
	$to = $yourEmail;
	$subject = $yourSubject.': '.$_POST['posRegard'];
	$message = cleanPosUrl($_POST['bericht']);
	$headers = "From: ".cleanPosUrl($_POST['naam'])." ".cleanPosUrl($_POST['voornaam'])." <".$_POST['mail'].">\r\n";
	$headers .= 'To: '.$yourName.' <'.$yourEmail.'>'."\r\n";
	
	
	$mailit = mail($to,$subject,$message,$headers);
		if ( @$mailit ) {
		header('Location: http://www.jdesign.be/testserver/concept/');
		}
		else {
		echo 'FOUT';
		}
	}
?>

Staat op J Design | contact - web print motion java - "so actually everything you desire.."
Je mag het gerust overnemen, bekijk ook eens de JS

Rep1

Legacy Member
PHP:
<?php
/* 
	BELLonline PHP MAILER SCRIPT v1.5
	Copyright 2006 Gavin Bell 
	http://www.bellonline.co.uk 
	[email protected]

	Set up an email form on your website within minutes - see readme.txt for installation.
*/

extract($_POST);

if (!file_exists("config.php")) 
	{
$host = $_SERVER[HTTP_HOST ];
$path = pathinfo($_SERVER['PHP_SELF']);
$file_path = $path['dirname'];
print "<h1>BELLonline PHP mailer script</h1>
	<h2>There is a problem with your PHP mailer script installation</h2>
	<p>The config.php file seems to be missing!</p>
	<p>For this script to work, you need to upload the config.php file that came with the download of the BELLonline <a href=\"http://www.bellonline.co.uk/web-services/free/scripts/php-mailer-script/\">PHP mailer script</a>.</p>
	<p>The file must be in the following directory of your website:</p>
	<p>$host<span style=\"font-weight: bold; font-size: 150%;\">$file_path/</span></p>
	<p>If you need help installing the script, then feel free to email me at <a href=\"&#x6d;&#x61;&#105;&#108;&#116;&#x6f;&#58;&#x67;&#x61;&#118;&#x69;&#110;&#64;&#98;&#x65;&#x6c;&#x6c;&#x6f;&#110;&#x6c;&#105;&#110;&#101;&#46;&#x63;&#111;&#46;&#x75;&#x6b;\">&#x67;&#x61;&#118;&#x69;&#110;&#64;&#98;&#x65;&#x6c;&#x6c;&#x6f;&#110;&#x6c;&#105;&#110;&#101;&#46;&#x63;&#111;&#46;&#x75;&#x6b;</a></p>";
exit;
	}
include "config.php";


if ($sendto_email == "[email protected]")
	{
print "<h1>BELLonline PHP mailer script</h1>
	<h2>Installation nearly complete!</h2>
	<p>Thank you for downloading the <a href=\"http://www.bellonline.co.uk/web-services/free/scripts/php-mailer-script/\" title=\"free PHP mailer script\">free PHP mailer script</a> from <a href=\"http://www.bellonline.co.uk\">BELLonline web services</a>. </p>
	<p>To start using the script, open config.php in a text editor and change the <b>&#36;sendto_email</b> variable to your email address.</p>
	<p>If you did not get a config.php file with this script, then go to the <a href=\"http://www.bellonline.co.uk/web-services/free/scripts/php-mailer-script/\">PHP mailer script page</a> and download the full script.</p>
	<p>If you need help installing the script, then feel free to email me at <a href=\"&#x6d;&#x61;&#105;&#108;&#116;&#x6f;&#58;&#x67;&#x61;&#118;&#x69;&#110;&#64;&#98;&#x65;&#x6c;&#x6c;&#x6f;&#110;&#x6c;&#105;&#110;&#101;&#46;&#x63;&#111;&#46;&#x75;&#x6b;\">&#x67;&#x61;&#118;&#x69;&#110;&#64;&#98;&#x65;&#x6c;&#x6c;&#x6f;&#110;&#x6c;&#105;&#110;&#101;&#46;&#x63;&#111;&#46;&#x75;&#x6b;</a></p>";
exit;
	} 
if (empty ($senders_name)) 
	{
	$error = "1";
	$info_error .= $lang_noname . "<br>"; 
	}
if (empty ($senders_email)) 
	{
	$error = "1";
	$info_error .= $lang_noemail . "<br>";  
	}
if (empty ($mail_subject)) 
	{
	$error = "1";
	$info_error .= $lang_nosubject . "<br>";  
	}
if (empty ($mail_message))  
	{
	$error = "1";
	$info_error .= $lang_nomessage . "<br>";  
	}
if (!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,6}$", $senders_email))
	{
	$error = "1";
	$info_error .= $lang_invalidemail . "<br>"; 
	}
if (empty ($security_code))  
	{
	$error = "1";
	$info_error .= $lang_nocode . "<br>";  
	}
elseif ($security_code != $randomness)  
	{
	$error = "1";
	$info_error .= $lang_wrongcode . "<br>";  
	}
if ($showlink != "no")
	{
	$link = "<br><span style=\"font-size: 10px;\">Powered by <a href=\"http://www.bellonline.co.uk/web-services/free/scripts/php-mailer-script/\" title=\"free PHP mailer script\">BELLonline PHP mailer script</a></span>";
	}
if ($error == "1") 
	{
	$info_notice = "<span style=\"color: " . $error_colour . "; font-weight: bold;\">" . $lang_error . "</span><br>"; 
	
	if (empty ($submit)) 
		{
		$info_error = "";
		$info_notice = $lang_notice;
		}	

	function Random() 
		{
		$chars = "ABCDEFGHJKLMNPQRSTUVWZYZ23456789";
		srand((double)microtime()*1000000);
		$i = 0;
		$pass = '' ;
		while ($i <= 4) 
			{
			$num = rand() % 32;
			$tmp = substr($chars, $num, 1);
			$pass = $pass . $tmp;
			$i++; 
			} 
		return $pass; 
		}
	$random_code = Random();
	$mail_message = stripslashes($mail_message);

	print "<form name=\"BELLonline_email\" method=\"post\" style=\"margin: 0;\" action=\"\">
  <table  border=\"0\" cellspacing=\"2\" cellpadding=\"2\">
    <tr align=\"$title_align\" valign=\"top\">
      <td colspan=\"2\"><span style=\"$title_css\">$lang_title</span></td>
    </tr>
    <tr align=\"left\" valign=\"top\">
      <td colspan=\"2\">$info_notice$info_error</td>
    </tr>
    <tr valign=\"top\">
      <td align=\"right\">$lang_name</td>
      <td align=\"left\"><input name=\"senders_name\" type=\"text\" class=\"mailform_input\" id=\"senders_name\" style=\"width: $input_width;\" value=\"$senders_name\" maxlength=\"32\"></td>
    </tr>
    <tr valign=\"top\">
      <td width=\"100\" align=\"right\">$lang_youremail</td>
      <td align=\"left\"><input name=\"senders_email\" type=\"text\" class=\"mailform_input\" id=\"senders_email\" style=\"width: $input_width;\" value=\"$senders_email\" maxlength=\"64\"></td>
    </tr>
    <tr valign=\"top\">
      <td width=\"100\" align=\"right\">$lang_subject</td>
      <td align=\"left\"><input name=\"mail_subject\" type=\"text\" class=\"mailform_input\" id=\"mail_subject\" style=\"width: $input_width;\" value=\"$mail_subject\" maxlength=\"64\"></td>
    </tr>
    <tr valign=\"top\">
      <td width=\"100\" align=\"right\">$lang_message</td>
      <td align=\"left\"><textarea name=\"mail_message\" cols=\"36\" rows=\"5\" style=\"width: $input_width;\" class=\"mailform_input\">$mail_message</textarea></td>
    </tr>
    <tr align=\"left\" valign=\"top\">
      <td width=\"100\">$lang_confirmation</td>
      <td><input name=\"security_code\" type=\"text\" id=\"security_code\" size=\"5\"> 
        &nbsp;&nbsp;&nbsp;&nbsp;<b>$random_code</b></td>
    </tr>
    <tr valign=\"top\">
      <td colspan=\"2\" align=\"right\"><input name=\"randomness\" type=\"hidden\" id=\"randomness\" value=\"$random_code\">
      <input name=\"submit\" type=\"submit\" id=\"submit\" value=\"$lang_submit\" class=\"mailform_button\"></td>
    </tr>
  </table>
</form>";
	}
else
	{
	
	
	
	if ($checkdomain == "yes") 
		{
		$sender_domain = substr($senders_email, (strpos($senders_email, '@')) +1);
		$recipient_domain = substr($sendto_email, (strpos($sendto_email, '@')) +1);
		if ($sender_domain == $recipient_domain)
			{
			print "Sorry, you cannot send messages from this domain ($sender_domain)";
			exit;
			}		
		}
		
		
	$info_notice = $lang_sent;
	$mail_message = stripslashes($mail_message);
	$senders_email = preg_replace("/[^a-zA-Z0-9s.@-_]/", "-", $senders_email);
	$senders_name = preg_replace("/[^a-zA-Z0-9s]/", " ", $senders_name);
	$headers = "From: $senders_name <$senders_email> \r\n";
	$headers .= "X-Mailer: BELLonline.co.uk PHP mailer \r\n";
	mail($sendto_email, $mail_subject, $mail_message, $headers);
	print "  <table  border=\"0\" cellspacing=\"2\" cellpadding=\"2\">
    <tr align=\"$title_align\" valign=\"top\">
      <td colspan=\"2\"><span style=\"$title_css\">$lang_title</span></td>
    </tr>
    <tr align=\"$title_align\" valign=\"top\">
      <td colspan=\"2\">$info_notice</td>
    </tr>
    <tr valign=\"top\">
      <td width=\"100\" align=\"right\">$lang_name</td>
      <td align=\"left\"><b>$senders_name</b></td>
    </tr>
    <tr valign=\"top\">
      <td width=\"100\" align=\"right\">$lang_youremail</td>
      <td align=\"left\"><b>$senders_email</b></td>
    </tr>
    <tr valign=\"top\">
      <td width=\"100\" align=\"right\">$lang_subject</td>
      <td align=\"left\"><b>$mail_subject</b></td>
    </tr>
    <tr valign=\"top\">
      <td width=\"100\" align=\"right\">$lang_message</td>
      <td align=\"left\"><b>$mail_message</b></td>
    </tr>
  </table>";
	}
print $link;
?>

j design

Legacy Member
Ik stel je voor een van de voorgaande oplossingen te gebruiken.
Deze is volgens mij veeeeel te veeeel

Rep1

Legacy Member
Het formulier dat ik gebruikt heb, is duidelijk stukken uitgebreider dan jullie formulieren.

Verschil:
Melding per veld als het niet juist is ingevuld
Boodschap op het scherm met de ingevulde gegevens
...



Niet dat dat allemaal absoluut nodig is natuurlijk.
Een pagina met "bericht verstuurd" zegt op zich voldoende.
Ook "u hebt niet alle velden ingevuld" lijkt me duidelijk.

In een vorig formulier (datgene wat niet helemaal goed was) zat ook een stukje dat ervoor zorgde dat de invuller ook een mail kreeg met de gegevens.
Kon wel handig zijn voor bepaalde dingen, maar is dus ook niet echt nodig.

j design

Legacy Member
Op mijn formulier zie je door een JS controle wel degelijk wat fout is.
De blauwe kadertjes staan errond.
Zelf met perfecte emailmask

Een extra mail naar de client verzenden is niet moeilijk, juist hetzelfde maar dan naar zijn email.

Verder kan je ipv naar een header location gaan alles eens echo'en.
Dan heb je alles getoond.
Maar als ze toch een kopie krijgen van de mail lijkt me dat immo onnodig

Rep1

Legacy Member
j design zei:
Op mijn formulier zie je door een JS controle wel degelijk wat fout is.
De blauwe kadertjes staan errond.
Als ik mij aan een nieuw formulier zet, zal ik jouw contact-pagina eens bestuderen.
(maw, veel kans dat je nog een PM gaat krijgen met een vraag ofzo :unsure: )

j design zei:
Verder kan je ipv naar een header location gaan alles eens echo'en
you're talking chinese man ;)

j design

Legacy Member
Tutorial mail form met formcheck :)

1) het formulier
HTML:
<form action="code/mail.php" method="post" class="contact" onsubmit="if(isFormValid())alert('Vezenden?'); else { alert('Fout ingevuld?');return false; }"> 
	<table> 
		<tr> 
			<td><label for="naam">Naam:</label></td> 
			<td><input name="naam" id="naam" type="text" required="1" value=""></td> 
		</tr> 
		<tr> 
			<td><label for="voornaam">Voornaam:</label></td> 
			<td><input name="voornaam" id="voornaam" type="text" required="1" value=""></td> 
		</tr> 
		<tr> 
			<td><label for="mail">Email:</label></td> 
			<td><input name="mail" id="mail" mask="email" type="text" size="30" required="1" value=""></td> 
		</tr> 
		<tr> 
			<td>Onderwerp:</td> 
			<td><select name="onderwerp" required="1"> 
				<option value=""></option> 
				<option value="info">info</option> 
				<option value="offerte">offerte</option> 
				<option value="andere">andere</option> 
				</select> 
			</td> 
        </tr> 
        <tr> 
            <td colspan="2"><br />Bericht:</td> 
         </tr> 
         <tr> 
         	<td colspan="2"><textarea id="bericht" name="bericht" cols="40" rows="5"></textarea></td> 
 
		</tr> 
		<tr> 
			<td><br /><input type="reset" value="Reset" /></td><td><br /><input type="submit" value="Verzenden" name="sendContactEmail" id="sendContactEmail" /></td> 
		</tr> 
	</table> 
 </form>


2) de JS
http://www.jdesign.be/testserver/concept/code/contact.js


3) de mail ft
PHP:
<?php

$yourName = 'Jonas T';
$yourEmail = '[email protected]';
$yourSubject = $_POST['onderwerp']." ".$_POST['naam']." ".$_POST['voornaam'];
$referringPage = 'http://www.jdesign.be';

function cleanPosUrl ($str) {
return stripslashes($str);
}
	if ( isset($_POST['sendContactEmail']) )
	{
	$to = $yourEmail;
	$subject = $yourSubject.': '.$_POST['posRegard'];
	$message = cleanPosUrl($_POST['bericht']);
	$headers = "From: ".cleanPosUrl($_POST['naam'])." ".cleanPosUrl($_POST['voornaam'])." <".$_POST['mail'].">\r\n";
	$headers .= 'To: '.$yourName.' <'.$yourEmail.'>'."\r\n";
	
	
	$mailit = mail($to,$subject,$message,$headers);
		if ( @$mailit ) {
		header('Location: http://www.jdesign.be/testserver/concept/');
		}
		else {
		echo 'FOUT';
		}
	}
?>


4) css aanpassen
Eens kijken welke klassen er gebruikt worden en hoe die kunnen aangepast worden.
Of in mijn css neuzen


5) controle
Bekijk alle url's eens zoals waar je JS staat

j design

Legacy Member
Ik heb deze code enkel aangepast naar mijn wensen. De echte credits gaan dus naar anderen. Wie weet ik jammer genoeg niet meer.

En in de php file staat iets als.
PHP:
header('Location: http://www.jdesign.be/testserver/concept/');
Deze zorgt ervoor dat je na verzenden naar een url wordt doorverwezen.
Als je daar nu alles wat ingevuld is afprint op het scherm zien ze ook wat verstuurd is.
De common way om iet af te drukken op het scherm is een echo.

Aan de boodschap op zich kunnen gemakkelijk onderdelen toegevoegd worden door:

$message.=" "; toe te voegen (let op de punt)


Als er verbeteringen aan het script kunnen gebeuren hoor ik het graag.

FurtiveDuck

Legacy Member
Hmm,

Kan er iemand mij eventjes helpen? Ik heb dus dat script identiek gedownload. De $send_mail verandert naar mijn @gmail.com adres en dan het scriptje eventjes getest. Ik krijg het bericht van mail verstuurd en co, maar ik ontvang niets in m'n mailbox van gmail. Hulp!

Rep1

Legacy Member
Het formulier van j design werkt, op een probleemke na:

Nu het testen van de website en het formulier achter de rug is, wilde ik het officiële e-mail adres gebruiken in het mailformulier, maar dat geeft dus blijkbaar een conflict.

Alles werkt perfect als ik het laat sturen naar mijn @telenet.be, maar als ik het laat sturen naar @domeinnaam.be geeft het formulier "FOUT"
Dit staat in de mail.php onderaan:
PHP:
PHP-code:
$mailit = mail($to,$subject,$message,$headers);  
        if ( @$mailit ) {  
        header('Location: http://www.domeinnaam.be/paginametbevestigingvanverzending.htm/');  
        }  
        else {  
        echo 'FOUT';  
        }  
    }

En het is die "FOUT" die als boodschap verschijnt.

Is dit inderdaad een conflict?
Of wijst die "FOUT" op iets wat aangepast moet worden?

Bij een vorig formulier had ik een gelijkaardig probleem. Alleen kon ik daar zelfs niets laten sturen naar @telenet.be. Enkel @hotmail.com werkte toen (en misschien ook gmail, live,...) Vandaar ook dat ik op zoek ben gegaan naar een ander php-formulier.

De volledige mail.php staat een paar berichten hiervoor (post van j design) Want het zou natuurlijk kunnen dat deze fout toch ergens anders zit.

Is er een php-held die ter hulp komt snellen? :lol:

FurtiveDuck

Legacy Member
Kan het ook zijn dat een form een e-mail niet kan verzenden omdat de hosting het niet toelaat? De hosting ondersteunt wel PHP. 100webspace.net (suckt, maar 't was maar om te testen ejh!)

el shorty

Legacy Member
100webspace ondersteunt idd geen mail sends.
Ik ken geen enkele free host die dat doet. reden (denk ik): zou veel te snel misbruikt worden voor spammails.

Rep1

Legacy Member
Ik denk dat de php-mannen allemaal met verlof zijn :)

Nu, de titel van deze thread is ook niet meer waar het over gaat natuurlijk.
Het probleem is: de post met omschrijving van het probleem

Een oplossing zou handig zijn, of anders iemand die zijn/haar formulier wil delen met dit forum. Dat kan dan ineens omgedoopt worden tot "het 9Lives contactformulier" :D

Rep1

Legacy Member
Niemand die kan helpen?
(oplossing voor de fout-melding of het delen van een perfect werkend formulier)

:help:
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan