Mail form

Status
Niet open voor verdere reacties.

gast0510

Gebruiker
Lid geworden
8 mei 2015
Berichten
289
Ik heb nu een mail form gemaakt in css alleen met de php kant wilt het niet lukken, ik het echt tientallen soorten geprobeerd maar geen van allen willen ze werken op mijn site, dus nu heb ik er geen een.
Dit is het enigste wat ik heb:
PHP:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Contact me</title>

<link href="../css/contact.css" rel="stylesheet" type="text/css" media="screen" />
</head>

<body>

<div id="mail">

	<div class="left_top">
		Contact me
	</div>

	<div class="left_bot">
		<form id="form" action="mail.php" method="post">
			<div class="row">
			<div class="label">Your name:</div>
				<div class="input">
				<input type="text" class="name" name="name" placeholder="John Smith" />
				</div>
			</div>

			<div class="row">
			<div class="label">Your email:</div>
				<div class="input">
				<input type="text" class="email" name="email" placeholder="john@gmail.com" />
				</div>
			</div>
			
			<div class="row">
			<div class="label">Your message:</div>
				<div class="input">
				<textarea name="message" placeholder="What's on your mind?"></textarea>
				</div>
			</div>

			<div class="row">
			<div class="label">Upload a file:</div>
				<div class="input">
				<input type="file" name="uploaded_file">
				</div>
				<div id="context">For more files compress them into a single ZIP file!</div>
			</div>
			
			<div class="row">
				<input type="submit" name="submit" value="Send message" />
			</div>
			
		</form>
	</div>
	
</div>

</body>
</html>

Hier is een voorbeeldje: Contact pagina

Wat ik graag wil hebben is dat deze pagina een emailtje verstuurd naar mij met daarin: naam, email en boodschap, die moeten verplicht zijn!
Dan kan je als je wilt een bestand uploaden, niet op de site zelf maar als bijlagen in de email zelf.
En wat ik ook graag wil is dat als er iets niet klopt dan moet er rechts in het veld (waar nu staat John Smith) een kruisje staan, iets zoals deze: http://theresistance.heliohost.org/images/x.png

Ik heb echt geen idee hoe ik dit hierin krijg, ik heb alleen verstand van een beetje html, css en php vrijwel niets.

Hier mijn oude script die wel werkte maar nu niet meer na jaren:
PHP:
error_reporting(E_ALL);

<? 
error_reporting(E_ALL);
if (isset($_POST['submit'])) 
{   
  if (empty($_POST['naam']) OR empty($_POST['replyemail']) OR empty($_POST['inhoud']))
  { 
    print("Vul het veld helemaal in. <br />[<a href=\"JavaScript:history.back(-1)\">terug</a>]"); 
  } 
  elseif(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$",$_POST['replyemail'])) 
  { 
    print("Vul een geldig emailadres in"); 
  } 
  else 
  { 
    $headers .= "From: <Mijn naam - Website >\n";   
    $headers .= "X-Sender: <$replyemail>\n";   
    $headers .= "X-Mailer: PHP\n";   
    $headers .= "X-Priority: 1\n";  
    $headers .= "Return-Path: <$replyemail>\n";   
    $ip = $_SERVER['REMOTE_ADDR'];  
    $inhoud = "  
    De Gegevens: 
     
    Naam:       ".$_POST['naam']." 
    Emailadres: ".$_POST['replyemail']." 
    IP adres:   $ip 
     
    Het Bericht:  
     
    $bericht"; 
     
    mail ("mijnemail@live.nl","Het Gastenboek.",$inhoud,$headers); 
     
    echo "<script language=\"javascript\"> 
    window.alert ('Verzonden'); 
    </script>"; 
     
     
    //automatisch een mailtje terugzenden... 
     
    $headers2 .= "From: <mijn naam - Website>\n"; 
    $headers2 .= "X-Sender: <mijn email>\n"; 
    $headers2 .= "X-Mailer: PHP\n"; 
    $headers2 .= "X-Priority: 1\n"; 
    $headers2 .= "Return-Path: <mijn email>\n"; 
    $onderwerp2 .= "Bevestigings Email."; 
    $bericht2 .= "Beste $naam, 
     
    Je bericht is ontvangen! Het wordt eerst gelezen door mij. 
    Als het een GOED bericht is, zal het worden geplaatst in Het Gastenboek. 
     
     
    Met vriendelijke groeten, 
     
    Mijn naam
    http://www.site.tk"; 
     
    mail ($_POST['replyemail'],$onderwerp2,$bericht2,$headers2); 
  } 
} 
?>
 
Laatst bewerkt:
OK thanks, maar het echte probleem is, welke script in php ik ook gebruik ik ontvang geen mail. op een ander forum (niet zo goed lopend meer) weten ze het niet.
 
die zin begrijp ik ff niet ik zit i chat voor iets meer duidelijkheid
 
Ondersteunt je hosting wel mailen via PHP? Vraag dat eens na?
 
Ja dat doet die want dit werkt dan weer wel.

PHP:
<?php
$to = "mijn email adres";
$subject = "Test Mail";
$message = "Hello world!";
$headers = "From: raingirl@raingirl82.heliohost.org";
mail($to, $subject, $message, $headers);
echo "The email was sent";
?>

@ciske de rat: ik bedoelde te zeggen dat een dergelijke php script om de mail te verzenden het bij mij niet wilt doen om een of andere reden.
 
@Ciske: Rotzooi? Huh? Is een normaal script verder.
Respect dat je wilt helpen via de chat (ik meen zelf dat er forums voor zijn, maar goed), maar zelf loop je ook vast op basis-dingen van PHP. Dus ik betwijfel of de hulp, goed goed bedoeld het is, wel goed zal uitpakken?

Ik zou dit doen:
Code:
<?php
// Geef GELDIGE adressen op
// Een korte benaming voor jouw website
$website_naam = 'Mijn Site';
// Jouw eigen geldige emailadres
$eigen_emailadres = 'mijn_emailadres@mijn_domein.nl';
// Een geldig emailadres voor errors
$error_emailadres = 'mijn_emailadres@mijn_domein.nl';
// De naam van de verzender
$naam_verzender = 'Afzender';
// Het geldige emailadres van de afzender
$email_verzender = 'emailadres_van_verzender@zijn_domein.nl';
// Een geldig emailadres of helemaal leeg laten
$bcc_emailadres = 'geldig_emailadres@geldig_domein.nl';
// HTML mail? True/False
$html = true;

// De headers samenstellen
$headers	 = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . "\r\n";
$headers	.= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . "\r\n";
$headers	.= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . "\r\n";
$headers	.= ($bcc_emailadres != '') ? 'Bcc: ' . $bcc_emailadres . "\r\n" : '';
$headers	.= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$headers	.= 'X-Priority: Normal' . "\r\n";
$headers	.= ($html) ? 'MIME-Version: 1.0' . "\r\n" : '';
$headers	.= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . "\r\n" : '';

if(mail($to, $subject, $message, $headers)) {
echo "The email was sent";
} else {
 echo "The mail wasn't sent. Probably is mail disabled!";
}
?>
 
Laatst bewerkt:
zover ben ik nog niet eens, het wil niet eens werken zonder een bijlagen.
die links die je mij gaf moet ik nog wel even testen hierop.
 
probeer eens is wat ander

probeer eens op je heb site aan tal script

ik heb wel een script voor je zelf aan passen maar eerst eens testen
opslaan als opmaakformulier.css
PHP:
body {
	font-family: Georgia, "Times New Roman", Times, serif;
	font-size: 12px;
	color: #376FA6;
	margin-top: 50px;
}
.velden {
	background-color: #DAE7F3;
	width: 200px;
	font-family: Georgia, "Times New Roman", Times, serif;
	font-size: 12px;
	color: #376FA6;
	border-top-width: 1px;
	border-top-style: inset;
	border-top-color: #6699CC;
	border-left-color: #6699CC;
	border-left-width: 1px;
	border-left-style: inset;
	line-height: 1.7em;
}
a {
	text-decoration: none;
	color: #6699CC;
}


.verzend {
	font-family: Georgia, "Times New Roman", Times, serif;
	font-size: 12px;
	color: #376FA6;
}

op slaan als contactformulier.html
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Contactformulier script</title>
<link href="opmaakformulier.css" rel="stylesheet" type="text/css" />
</head>

<body>
<form name="contactform" method="post" action="verzenden.php">
<table width="340" align="center">
</tr>
<tr>
 <td height="27" valign="top">
  <label for="first_name">Voornaam *</label> </td>
 <td height="27" valign="top">
  <input name="first_name"  type="text" class="velden" size="30" maxlength="50"> </td>
</tr>
<tr>
 <td height="27" valign="top"">
  <label for="last_name">Achternaam *</label> </td>
 <td height="27" valign="top">
  <input name="last_name"  type="text" class="velden" size="30" maxlength="50"> </td>
</tr>
<tr>
 <td height="27" valign="top">
  <label for="email">Email Adres *</label> </td>
 <td height="27" valign="top">
  <input name="email"  type="text" class="velden" size="30" maxlength="80"> </td>
</tr>
<tr>
 <td height="27" valign="top">
  <label for="telephone">Telefoonnummer</label> </td>
 <td height="27" valign="top">
  <input name="telephone"  type="text" class="velden" size="30" maxlength="30"> </td>
</tr>
<tr>
 <td height="27" valign="top">
  <label for="comments">Bericht *</label> </td>
 <td height="27" valign="top">
  <textarea  name="comments" cols="25" rows="6" class="velden" maxlength="1000"></textarea> </td>
</tr>
<tr>
 <td height="27"><a href="http://theresistance.heliohost.org/" target="_blank">Help</a></td>
 <td height="27"><input name="submit" type="submit" class="verzend" value="Verzenden" /></td>
</tr>
</table>
</form>
</body>
</html>

opslaan als verzenden.php
PHP:
<?php 

	#**********************************************
	#*****  Contact Formulier moffia.nl       *****
	#**********************************************

if(isset($_POST['email'])) {
	
	// Pas deze twee regels aan.
	$email_to = "erik-blok@live.nl";
	$email_subject = "Bericht van een bezoeker";
	
	
	function died($error) {
		// je foutbericht staat hier
		echo "Het spijt ons, vanwege een fout is het formulier niet verzonden. ";
		echo "Deze fout(en) tonen zich hieronder.<br /><br />";
		echo $error."<br /><br />";
		echo "Ga aub terug om de velden correct in te vullen.<br /><br />";
		die();
	}
	
	// validation expected data exists
	if(!isset($_POST['first_name']) ||
		!isset($_POST['last_name']) ||
		!isset($_POST['email']) ||
		!isset($_POST['telephone']) ||
		!isset($_POST['comments'])) {
		died('Het spijt ons, er is een probleem opgetredn bij het verzenden van het formulier.');		
	}
	
	$first_name = $_POST['first_name']; // verplicht
	$last_name = $_POST['last_name']; // verplicht
	$email_from = $_POST['email']; // verplicht
	$telephone = $_POST['telephone']; // niet verplicht
	$comments = $_POST['comments']; // verplicht
	
	$error_message = "";
	$email_exp = "^([a-zA-Z0-9]+[a-zA-Z0-9._%\-\+]*@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4})$";
  if(!mb_ereg($email_exp,$email_from)) {
  	$error_message .= 'Het emailadres is niet geldig.<br />';
  } 
  
	$string_exp = "^[a-z .'-]+$";
  if(!mb_ereg($string_exp,$first_name)) {
  	$error_message .= 'De voornaam is niet geldig.<br />';
  }
  if(!mb_ereg($string_exp,$last_name)) {
  	$error_message .= 'De achternaam is niet geldig.<br />';
  }
  if(strlen($comments) < 2) {
  	$error_message .= 'Het bericht is niet geldig.<br />';
  }
  $string_exp = "^[0-9 .-]+$";
  if(!mb_ereg($string_exp,$telephone)) {
  	$error_message .= 'Het telefoonnummer is niet geldig.<br />';
  }
  if(strlen($error_message) > 0) {
  	died($error_message);
  }
	$email_message = "Gegevens formulier.\n\n";
	
	function clean_string($string) {
	  $bad = array("content-type","bcc:","to:","cc:","href");
	  return str_replace($bad,"",$string);
	}
	
	$email_message .= "Voornaam: ".clean_string($first_name)."\n";
	$email_message .= "Achternaam: ".clean_string($last_name)."\n";
	$email_message .= "Email: ".clean_string($email_from)."\n";
	$email_message .= "Telefoon: ".clean_string($telephone)."\n";
	$email_message .= "Bericht: ".clean_string($comments)."\n";
	
	
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);  
?>

<!-- Creeer je eigen succes pagina hier -->

Bedankt voor uw bericht. U krijgt zo spoedig mogelijk een reactie.

<?
}
?>
 
nog simpeer deze doet bij mijn altijd

deze goed al 8 jaar bij mijn
alleen hij check niks
opslaan als contact.php
PHP:
<!------Created by www.moffia.nl------->
<form method="post" action="js/process.php">
<table width="455"  border="0">
<tr>
<td valign="top">Naam :</td>
<td valign="top">
<input type="text" name="t1"></td>
</tr>
<tr>
<td valign="top">Email :</td>
<td valign="top">
<input type="email" name="t2"></td>
</tr>
<tr>
<td valign="top">Onderwerp :</td>
<td valign="top"><input type="text" name="t3"></td>
</tr>
<tr>
<td valign="top">opmerking</td>
<td valign="top"><textarea name="t4" cols="20" rows="10">plaats uwe bericht</textarea>
</td>
</tr>
<tr>
<td>gemaakt door  <a href="www.moffia.nl/">John pagina</a></td><td><input type="submit" value="Verzenden"></td>
</tr>
</table>


opslaan als process.php

PHP:
<?php 
//This script is created by http://www.helpmij.nl 
//You can remain use this free service as long as you retain the credit link 

$mailTo = 'vergeefjehetme@hotmail.com'; 
$mailSubject = 'http://start.moffia.nl'; 

$mailMessage = 
'Naam:: '. $_POST['t1'] ."\r\n". 
'E-mail :: '. $_POST['t2'] ."\r\n". 
'Onderwerp :: '. $_POST['t3'] ."\r\n". 
'Opmerking :: '. $_POST['t4']; 

$mailHeaders = 'From '. $_POST['t1'] .' <'. $_POST['t2'] .'>'. "/r/n"; 
$mailHeaders .= 'X-Mailer: PHP/' . phpversion(); 

if(mail($mailTo, $mailSubject, $mailMessage, $mailHeaders)) { 
  echo '<html><head>'; 
  echo '<meta http-equiv="refresh" content="0;URL=http://start.moffia.nl/">'; 
  echo '</head><body>Email send....'; 
  echo '</body></html>'; 
} 
?>
 
Gebruik mijn headers (die ik op internet vond) en probeer eens.
 
@PHP4U: ik krijg dit op als ik de link open: The mail wasn't sent. Probably is mail disabled!
 
@siske de rat: Dit is jouw eerste voorbeeldje: http://theresistance.heliohost.org/123.php
Als je alles invult dan krijg je nog de melding dat de voor en achternaam niet kloppen.

En de 2e die je al 8 jaar gebruikt die werkt wel: http://theresistance.heliohost.org/contact2.php
Maar is vrij basis zonder controlle etc..
Maar nu kunnen we misschien iets wijzer worden waarom alle andere het niet doen.

Die je mij in de chat stuurde gisteren: http://www.phptuts.nl/view/34/
Waar vul ik dan mijn eigen email in?
 
Laatst bewerkt:
@PHP4U: ik krijg dit op als ik de link open: The mail wasn't sent. Probably is mail disabled!
Dat zegt genoeg. Neem contact op met je webhosting. De mail-functie() is uitgezet, en andere mailscripts zullen uiteraard ook niet werken.

Misschien PHPmailer nog wel, maar ik raad toch echt aan contact op te nemen met je webhosting.

Ciskes script zou ik sowieso niet gebruiken, er zit geen validatie in wat kan zorgen voor header-injections, met gevolg dat je script erg makkelijk vatbaar is voor spamruns, met mogelijke blokkades tot gevolg. Lees ook dit: http://foundationphp.com/blog/2010/12/31/preventing-email-header-injection/
 
Laatst bewerkt:
mail functie wordt wel ondersteund: http://www.heliohost.org/home/features/languages/php

Ik heb ook PHP opties als ik inlog:

Language Options asp_tags Allow ASP-style <% %> tags. Off
File Uploads file_uploads Whether to allow HTTP file uploads. On
Paths and Directories include_path Windows: "\path1;\path2" c:\php\includes" .:/usr/lib/php:/usr/local/lib/php
Resource Limits max_execution_time 30
Resource Limits max_input_time 60
Resource Limits memory_limit 128M
Data Handling register_globals You should do your best to write your scripts so that they do not require register_globals to be on; Using form variables as globals can easily lead to possible security problems, if the code is not very well thought of. Off
Language Options safe_mode Off
File Uploads upload_max_filesize Maximum allowed size for uploaded files. 20M
main session.save_path Argument passed to save_handler. In the case of files, this is the path where data files are stored. Note: Windows users have to change this variable in order to use PHP's session functions. As of PHP 4.0.1, you can define the path as: session.save_path = "N;/path" where N is an integer. Instead of storing all the session files in /path, what this will do is use subdirectories N-levels deep, and store the session data in those directories. This is useful if you or your OS have problems with lots of files in one directory, and is a more efficient layout for servers that handle lots of sessions. NOTE 1: PHP will not create this directory structure automatically. You can use the script in the ext/session dir for that purpose. NOTE 2: See the section on garbage collection below if you choose to use subdirectories for session storage /tmp
 
Laatst bewerkt:
Als mail() niet werkt, zoals in mijn voorbeeld, dan is er toch iets met de server.
Wend je je gewoon even tot de webhostingbedrijf, kleine moeite.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan