mail form komt leeg aan

Status
Niet open voor verdere reacties.

beertje

Gebruiker
Lid geworden
14 dec 2000
Berichten
500
Hoi,

Ik heb een php scriptje voor het verzenden van mail via een site.
Nu wil het geval dat als mensen een mail versturen vanaf mijn site, de mail leeg aan komt.
Nu ik maar weinig ervaring heb met php, wil ik jullie vragen om even naar het scriptje te kijken en vertellen wat er mis mee is, en wat ik evt.moet verbeter.

Alvast bedankt....

<html>
<head>
<META HTTP-EQUIV=Refresh CONTENT="8; URL=index.htm">
<title><a href="http://www.msite.nl" target="_blank">www.msite.nl</a> - mailformscript</title>
<body bgcolor="#000000">
<font color="#FFCC66">
<center>
<img src="computer.gif" width="107" height="98"><p>
<script>

function hidestatus(){
window.status=''
return true
}

if (document.layers)
document.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT)

document.onmouseover=hidestatus
document.onmouseout=hidestatus
</script>
</head>
<?

$joumail = "info@msite.nl";

mail($joumail, $onderwerp, "
Beste " . $joumail . ",

Je hebt een bericht ontvangen van " . $naam . ", " . $email . ".

Dit was zijn bericht:

" . $bericht . "




Groetjes,
" . $joumail, "From: " . $naam . "<" . $email . ">\nReturn-path: " . $email);

echo "<b>Je bericht wordt verstuurd<br>";
echo "Je krijgt zo snel mogelijk bericht terug!<br>";
echo "------------------------------------------------------------------------------<br>";
echo "Dit venster sluit na 8 seconden";

?>
 
Laat je formulierpagina eens zien. Je mail komt leeg aan en het onderwerp, klopt dat?
 
Ja klopt....

<html>
<head>
<title>www.msite.nl</title>
<script>
<!--
if (window.Event)
document.captureEvents(Event.MOUSEUP);
function nocontextmenu()
{
event.cancelBubble = true
event.returnValue = false;
return false;
}
function norightclick(e)
{
if (window.Event)
{
if (e.which == 2 || e.which == 3)
return false;
}
else
if (event.button == 2 || event.button == 3)
{
event.cancelBubble = true
event.returnValue = false;
return false;
}
}
document.oncontextmenu = nocontextmenu;
document.onmousedown = norightclick;
function disableselect(e){
return false
}
function reEnable(){
return true
}
document.onselectstart=new Function ("return false")
if (window.sidebar){
document.onmousedown=disableselect
document.onclick=reEnable
}

//-->
</script>
<script>

function hidestatus(){
window.status=''
return true
}

if (document.layers)
document.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT)

document.onmouseover=hidestatus
document.onmouseout=hidestatus
</script>
</head>
<div align="center">

<body bgcolor="#000000">
<form name="form1" method="post" action="mailformsend.php">
<table width="400" border="0">
<tr>
<td colspan="2">
<p align="center"><font color="#FFCC66"><b><font face="Arial" size="2">Voor vragen of suggesties kunt u gebruik maken van het onderstaande formulier</font></p>
<hr>
<p align="center"><font color="#FFCC66"><b><font face="Arial" size="2">Contact</font></p>
</b></td>
</tr>
<tr>
<td width="30%"><font face="Arial" size="2"><font color="#FFCC66">Naam</font></td>
<td width="70%">
<input type="text" name="naam" size="36">
</td>
</tr>
<tr>
<td width="30%"><font face="Arial" size="2"><font color="#FFCC66">Email</font></td>
<td width="70%">
<input type="text" name="email" size="36">
</td>
</tr>
<tr>
<td width="30%"><font face="Arial" size="2"><font color="#FFCC66">Onderwerp</font></td>
<td width="70%">
<input type="text" name="onderwerp" size="36">
</td>
</tr>
<tr>
<td width="30%" height="51"><font face="Arial" size="2"><font color="#FFCC66">Bericht</font></td>
<td width="70%" height="51">
<textarea rows="5" name="bericht" cols="36"></textarea>
</td>
</tr>
<tr>
<td colspan="2">
<font face="Arial" size="2">
&nbsp;<input type="submit" name="submit" value="Verstuur"></font>
&nbsp;<input type="reset" value="wissen"></td>

</tr>
<tr>
<td colspan="2">
&nbsp;</td>
</tr>
</table>
</form>
<hr>
<font face="Arial" size="2"><font color="#FFCC66">© www.msite.nl</font>
 
PHP:
<?

$joumail = "info@msite.nl";

mail($joumail, $onderwerp, "
Beste " . $joumail . ",

Je hebt een bericht ontvangen van " . $naam . ", " . $email . ".

Dit was zijn bericht:

" . $bericht . "




Groetjes,
" . $joumail, "From: " . $naam . "<" . $email . ">\nReturn-path: " . $email);

echo "<b>Je bericht wordt verstuurd<br>";
echo "Je krijgt zo snel mogelijk bericht terug!<br>";
echo "------------------------------------------------------------------------------<br>";
echo "Dit venster sluit na 8 seconden";

?>

Veranderen in

PHP:
<?

$joumail = "info@msite.nl";

mail($joumail, $_POST['onderwerp'], "
Beste " . $joumail . ",

Je hebt een bericht ontvangen van " . $_POST['naam'] . ", " . $_POST['email']. ".

Dit was zijn bericht:

" . $_POST['bericht'] . "




Groetjes,
" . $joumail, "From: " . $_POST['naam'] . "<" . $_POST['email']. ">\nReturn-path: " . $_POST['email']);

echo "<b>Je bericht wordt verstuurd<br>";
echo "Je krijgt zo snel mogelijk bericht terug!<br>";
echo "------------------------------------------------------------------------------<br>";
echo "Dit venster sluit na 8 seconden";

?>

Let wel op met hetgene dat ik je nu geef, want dmv deze code kan men wel spammen (en met de jouwe die niet werkt zou dat ook mogelijk geweest zijn mocht dat lukken). Gebruik daarom:

PHP:
$naam = htmlentities($_POST['naam'],ENT_QUOTES);

en in je bericht dat $naam ipv $_POST['naam'] ($naam bestaat dan wel, je hebt hem net aangemaakt). Als je deze code gebruikt ben je ook vrij veilig tegen XSS en SQL injection (mocht je ooit uitbreiden), controleer steeds $_GET, $_POST en $_COOKIE. (soms is http://www.php.net/is_numeric beter als je urls als ?id= hebt).

Overigens raad ik je aan helemaal bovenin je scripts dit te zetten:

PHP:
error_reporting(E_ALL);

Dan zou je de error krijgen dat $naam niet bestaat, zo wist je dat er iets fout was.

Meer info over die $_POST is te vinden op

http://be2.php.net/manual/en/ini.core.php#ini.register-globals en op http://be2.php.net/manual/en/reserved.variables.php

Veel succes!

Mvg, Voldemort.
 
Hoi Voldemort,

Het werkt, dank je wel daarvoor.
Maar toch een vraagje,
$naam = htmlentities($_POST['naam'],ENT_QUOTES);
waar moet ik die precies zetten?
en
error_reporting(E_ALL);
Moet daar niets voor?

Zoals je begrijpt heb ik niet zoveel verstand van PHP, vandaar deze vraag.
 
Die error_reporting(E_ALL); plaats je gewoon helemaal bovenin je pagina (boven je doctype) en eventuele PHP die daar nog voor zou staan. Deze code zal je alle fouten laten zijn, heel handig tijden het debuggen.

Die andere code zet je voordat je iets doet met je verzonden zaken. Dus meestal in het begin. Ik maak m'n pagina zo:

PHP:
/*Als $_POST['submit'] bestaat, dit is dus je submit button en de name="submit", anders verander je het gedeelte tussen ['']*/
if(isset($_POST['submit'])) /*Beter is: if($_SERVER['REQUEST_METHOD'] == 'POST')*/
{
/*HIER BEVEILIG JE ALLES DMV htmlentities($var,ENT_QUOTES)
Voorbeeld:
$naam = htmlentities($_POST['naam'],ENT_QUOTES);

Hier doe je al de rest en gebruik geen $_POST['naam'], maar $naam, anders gebruik je de originele waarde en niet de beschermde, maar dat snap je wel denk ik*/
}
else
{
/*Toon het formulier, de form: <form method="post" action=""> ziet er zo uit en als je JS gebruik moet je ook nog een name weergeven*/
}

Zo maak ik het altijd op, uitleg zit erbij.
 
ok Voldemort,

is duidelijk.
nogmaals kei bedankt.....



groetjes beertje
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan