Hallo, ik heb een volgende vraag.
Ik kom verschillende php scripts tegen.
Maar zoals ik 'm nu heb......
Ik kom er even niet uit.
Met verplichte velden heb ik alles wel voor elkaar gekregen.
Maar hoe krijg ik nu voor elkaar dat als mensen hun emailadres moeten invullen, dus [email protected] als voorbeeld.....
Nu kunnen ze gewoon maar iets intypen, gewoon iets wat niet eens een emailadres is.
En dat wil ik dus niet.

Dit is mijn script:



<?php

if(function_exists('date_default_timezone_set')) { date_default_timezone_set('Europe/Amsterdam'); }
define('LF', "\n");

// Get a value from the $_POST array (case insensitive!!)
function getPost($key, $trim = false, $lowercase = false, $int = false)
{
if(isset($_POST[$key]))
{
$v = stripslashes($_POST[$key]);

if($trim)
{
$v = trim($v);
}

if($int)
{
$v = intval($v);
}
elseif($lowercase)
{
$v = strtolower($v);
}

return $v;
}

return '';
}

// Default values
$field_1 = '';
$field_2 = '';
$field_3 = '';
$field_4 = '';
$field_5 = '';
$field_6 = '';

$sHtml = '';
$sFormError = '';

// Process form
if(empty($_POST['form']) == false)
{
$field_1 = getPost('field_1', true);
if(strlen($field_1) == 0) { $sFormError = 'Vul a.u.b. alle verplichte velden in.'; }
$field_2 = getPost('field_2', true);
if(strlen($field_2) == 0) { $sFormError = 'Vul a.u.b. alle verplichte velden in.'; }
$field_3 = getPost('field_3', true);
if(strlen($field_3) == 0) { $sFormError = 'Vul a.u.b. alle verplichte velden in.'; }
$field_4 = getPost('field_4', true);
if(strlen($field_4) == 0) { $sFormError = 'Vul a.u.b. alle verplichte velden in.'; }
$field_5 = getPost('field_5', true);
if(strlen($field_5) == 0) { $sFormError = 'Vul a.u.b. alle verplichte velden in.'; }
$field_6 = getPost('field_6', true);
}

// Show form
if(empty($_POST['form']) || $sFormError)
{
$sHtml .= '<form action="" method="post">
<input name="form" type="hidden" value="form1">
<h1>Vul hieronder uw verzoekje in</h1>
' . $sFormError . '
<table border="0" cellpadding="3" cellspacing="0"><tr>
<td align="left" valign="top">aangeboden door *</td>
<td align="left" valign="top"><input name="field_1" type="text" value="' . htmlentities($field_1) . '"></td>
</tr>
<tr>
<td align="left" valign="top">uw emailadres *</td>
<td align="left" valign="top"><input name="field_2" type="$emailadres" value="' . htmlentities($field_2) . '"></td>
</tr>
<tr>
<td align="left" valign="top">artiest *</td>
<td align="left" valign="top"><input name="field_3" type="text" value="' . htmlentities($field_3) . '"></td>
</tr>
<tr>
<td align="left" valign="top">titel *</td>
<td align="left" valign="top"><input name="field_4" type="text" value="' . htmlentities($field_4) . '"></td>
</tr>
<tr>
<td align="left" valign="top">bestemd voor *</td>
<td align="left" valign="top"><input name="field_5" type="text" value="' . htmlentities($field_5) . '"></td>
</tr>
<tr>
<td align="left" valign="top">kleine reactie</td>
<td align="left" valign="top"><input name="field_6" type="text" value="' . htmlentities($field_6) . '"></td>
</tr>
<tr>
<td align="left" valign="top">&nbsp;</td>
<td align="left" valign="top"><input type="submit" value="Verzenden"></td>
</table>
</form>';
}
else // Send form
{
$mail_to = '[email protected]';
$mail_from = '[email protected]';
$mail_subject = 'verzoekje radio';
$mail_message = 'Online verzoek: ' . LF . LF
. 'aangeboden door: ' . $field_1 . LF
. 'uw emailadres: ' . $field_2 . LF
. 'artiest: ' . $field_3 . LF
. 'titel: ' . $field_4 . LF
. 'bestemd voor: ' . $field_5 . LF
. 'kleine reactie: ' . $field_6 . LF
. LF
. 'IP: ' . $_SERVER['REMOTE_ADDR'] . ', Datum: ' . date('d-m-Y') . ', Tijd: ' . date('H:i:s');

mail($mail_to, $mail_subject, $mail_message, 'From: ' . $mail_from);

$sHtml .= '<h1>Formulier verzonden</h1><p>Dankje voor Uw verzoek, deze wordt spoedig gedraaid.</p>';
}

echo $sHtml;

?>


En op http://www.radio-happystar.nl/verzoekje.php
vind u een voorbeeld, dat u gewoon wat in kunt typen.
Blanche schreef op 19.06.2009 23:47
Esther, het script dat je daar hebt zit niet echt lekker in elkaar. Ik weet niet of je het zelfs geschreven hebt of dat je het ergens vandaan hebt, maar eigenlijk zou dit niet meer verdienen dan een enkele reis prullenbak.

http://www.phptuts.nl/view/34/

Kijk eens naar bovenstaande link. Dat is een voorbeeld van een uitgebreide formuliercontrole die je zou kunnen hanteren. In dat script kun je het voorstel van Rens, dat overigens een goed voorstel is, prima toepassen. Waar je dat moet doen, spreekt redelijk voor zich.

Ik zou zeggen kijk er zelf even naar, en mocht je er toch niet uit komen dan horen we dat wel.

Succes!


Ik zal gaan kijken op de link die je hier in gezet hebt.
Maar deze heb ik ergens vandaan ja, weet alleen ff niet meer waar, hihi.
En het werkt verder perfect, maar goed.....
Omdat ik 0,0% verstand heb van php....is het gewoon ontzettend moeilijk.
Esther schreef op 19.06.2009 23:52
Omdat ik 0,0% verstand heb van php....is het gewoon ontzettend moeilijk.
Dan is het misschien verstandig om eens een keer naar deze PHP beginnershandleiding te kijken. Daarin wordt de basis van PHP uitgelegd en kom je onder andere ook tegen hoe je met formulieren kunt werken.
Die tut is alleen niet aan te raden voor high traffic websites, maar hoeveel mensen zouden daarmee bezig zijn... niet veel.
Oke inmiddels heb ik via een website iets kunnen maken http://cssproperty.com/php-mail-form/
Dit waren 2 bestanden en via http://www.html-site.nl/htmltophp.php heb ik html om kunnen zetten naar php en op deze manier heb ik toch weer 1 bestand als php.

nu heb ik het volgende:

<?
print "<script language=\"javascript\">
function CheckAll(x)
{

if (ISBLANK(x.fieldnm_1.value))
{
alert(\"Please define value for Aangeboden door field !!\");
return false;
}

if (ISBLANK(x.fieldnm_2.value))
{
alert(\"Please enter Emailadres field !!\");
return false;
}
if(checkemail(x.fieldnm_2.value)==false)
{
alert(\"Please enter a valid email address for Emailadres field !!\");
return false;
}

if (ISBLANK(x.fieldnm_3.value))
{
alert(\"Please define value for Artiest field !!\");
return false;
}

if (ISBLANK(x.fieldnm_4.value))
{
alert(\"Please define value for Titel field !!\");
return false;
}

if (ISBLANK(x.fieldnm_5.value))
{
alert(\"Please define value for Bestemd voor field !!\");
return false;
}


return true;
}

/// email check

function checkemail(myemail)
{
var str=myemail;
var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
if (filter.test(str))
{
testresults=true
}
else
{
testresults=false
}
return (testresults)
}

/// to check that perticular value is EMPTY OR NOT
function ISBLANK(xx)
{
var cc=0,tt;
for(tt=0; tt<xx.length; tt++)
{
if (xx.charAt(tt)==' ')
{
cc=cc+1; // count blank character
}
}
if (cc==xx.length)
{
return true; //// means it is BLANK
}
return false; //// means it is NOT BLANK
}

function is_radio_button_selected(fieldnm)
{
// set var radio_choice to false
var radio_choice = false;

// Loop from zero to the one minus the number of radio button selections
for (counter = 0; counter < fieldnm.length; counter++)
{
// If a radio button has been selected it will return true
// (If not it will return false)
if (fieldnm[counter].checked)
radio_choice = true;
}

if (!radio_choice)
{
return (false); /// means not selected
}
return (true); /// means selected
}
</script>

<form name=\"form1\" method=\"POST\" action=\"_sendmail.php\" onSubmit=\"return CheckAll(this);\">
<table width=\"708\" border=\"0\" cellspacing=\"1\" cellpadding=\"2\">


<tr>
<td width=\"165\" align=\"right\" valign=\"top\">Aangeboden door *: </td>
<td width=\"565\" align=\"left\" valign=\"top\"><input name=\"fieldnm_1\" type=\"text\" size=\"33\" /></td>
</tr>

<tr>
<td width=\"165\" align=\"right\" valign=\"top\">Emailadres *: </td>
<td width=\"565\" align=\"left\" valign=\"top\"><input name=\"fieldnm_2\" type=\"text\" size=\"33\" /></td>
</tr>

<tr>
<td width=\"165\" align=\"right\" valign=\"top\">Artiest *: </td>
<td width=\"565\" align=\"left\" valign=\"top\"><input name=\"fieldnm_3\" type=\"text\" size=\"33\" /></td>
</tr>

<tr>
<td width=\"165\" align=\"right\" valign=\"top\">Titel *: </td>
<td width=\"565\" align=\"left\" valign=\"top\"><input name=\"fieldnm_4\" type=\"text\" size=\"33\" /></td>
</tr>

<tr>
<td width=\"165\" align=\"right\" valign=\"top\">Bestemd voor *: </td>
<td width=\"565\" align=\"left\" valign=\"top\"><input name=\"fieldnm_5\" type=\"text\" size=\"33\" /></td>
</tr>

<tr>
<td width=\"165\" align=\"right\" valign=\"top\">Kleine reactie : </td>
<td width=\"565\" align=\"left\" valign=\"top\">
<textarea name=\"fieldnm_6\" cols=\"55\" rows=\"7\"></textarea>
</td>
</tr>

<tr>
<td>&nbsp;</td>
<td><input type=\"submit\" name=\"Submit\" value=\"Submit\">
<input type=\"reset\" name=\"Submit2\" value=\"Reset\"></td>
</tr>
</table>
</form>
";
?>

<?php ob_start();
$fromemail="[email protected] <[email protected]>"; // change here if you want
$toemail="[email protected]"; // change here if you want
$sub="Verzoekje"; // change here if you want
$success_page_name="thanks.html";
////// do not change in following
if($_SERVER['REQUEST_METHOD']=="POST")
{
$fieldnm_1=str_replace ( array("\n"), array("<br>"),trim($_REQUEST['fieldnm_1']));
$fieldnm_2=str_replace ( array("\n"),

array("<br>"),trim($_REQUEST['fieldnm_2']));
$fieldnm_3=str_replace ( array("\n"),

array("<br>"),trim($_REQUEST['fieldnm_3']));
$fieldnm_4=str_replace ( array("\n"),

array("<br>"),trim($_REQUEST['fieldnm_4']));
$fieldnm_5=str_replace ( array("\n"),

array("<br>"),trim($_REQUEST['fieldnm_5']));
$fieldnm_6=str_replace ( array("\n"),

array("<br>"),trim($_REQUEST['fieldnm_6']));


$contentmsg=stripslashes("<br><b><font

style=color:#CC3300>$sub</font></b><br>
<table width=708 border=0 cellpadding=2 cellspacing=1 bgcolor=#CCCCCC>

<tr>


<td width=165 align=right valign=top bgcolor=#FFFFFF><B>Aangeboden door *:</b> </td>
<td width=565 align=left

valign=top bgcolor=#FFFFFF>$fieldnm_1</td>
</tr>

<tr>
<td width=165 align=right valign=top

bgcolor=#FFFFFF><B>Emailadres *:</b> </td>
<td width=565 align=left valign=top bgcolor=#FFFFFF>$fieldnm_2</td>
</tr>

<tr>
<td width=165 align=right valign=top bgcolor=#FFFFFF><B>Artiest *:</b> </td>
<td width=565 align=left

valign=top bgcolor=#FFFFFF>$fieldnm_3</td>
</tr>

<tr>
<td width=165 align=right valign=top bgcolor=#FFFFFF><B>Titel

*:</b> </td>
<td width=565 align=left valign=top bgcolor=#FFFFFF>$fieldnm_4</td>
</tr>

<tr>
<td width=165

align=right valign=top bgcolor=#FFFFFF><B>Bestemd voor *:</b> </td>
<td width=565 align=left valign=top

bgcolor=#FFFFFF>$fieldnm_5</td>
</tr>

<tr>
<td width=165 align=right valign=top bgcolor=#FFFFFF><B>Kleine reactie

:</b> </td>
<td width=565 align=left valign=top bgcolor=#FFFFFF>$fieldnm_6</td>
</tr>

</table>
");

////
$headers =

"MIME-Version: 1.0
";
$headers .= "Content-type: text/html; charset=iso-8859-1
";

$from=$fromemail;

$headers .= "From: ".$from."
";

@mail($toemail,$sub,$contentmsg,$headers);




header("Location:$success_page_name");

}
?>

.


Op www.radio-happystar.nl/testverzoek.php kunt u de 1ste opzet zien.
En deze werkt :-D

Maar nu zit ik met het volgende......
Ik wil graag een ip nummer en datum en tijd mee laten sturen, zodat je het volgende er bij krijgt te zien:

IP: xx.xx.xx.xx, Datum: 20-06-2009, Tijd: 14:43:59

Want dat had ik namelijk wel in het voorgaande.
Hoe doe ik dat??
Met eerdere code

. 'IP: ' . $_SERVER['REMOTE_ADDR'] . ', Datum: ' . date('d-m-Y') . ', Tijd: ' . date('H:i:s');

heb ik er al eens in gezet....maar hij pakt 'm niet.
Zet ie gewoon in het veld dat het zichtbaar is, dus deze heb ik al weer verwijderd.
Een aantal opmerkingen:

1. ob_start() hoort niet thuis in deze code, het dient hier geen doel en als het gebruikt wordt als lapmiddel om 'headers already sent' foutmeldingen te voorkomen, ben je al helemaal fout bezig.

2. Gebruik geen $_REQUEST. Dat is een samenraapsel van $_GET, $_POST en $_COOKIE variabelen. Je weet nu dus niet meer uit welke van de drie de ingevulde waarde komt, terwijl je dat wel wilt weten. Het zijn 3 compleet verschillende variabelen.

3. Geef de velden in je formulier logische namen. Namen als 'fieldnm_1' zeggen niets over de inhoud ervan en maken het voor jou alleen maar onduidelijker.

4. De str_replace() die je keer op keer gebruikt om een \n te vervangen door een <br> is overbodig. PHP kent daar de functie [php]nl2br()[/php] voor. Gebruik die dus.

5. Haal variabelen altijd buiten quotes. Dus ook in je $contentmsg.

6. Onderdruk mogelijke fouten niet door het gebruik van @ in je code. Als er iets fout gaat (in dit geval bij het versturen van de mail) wil je dat weten en er iets mee doen. Je gaat een gebruiker geen succespagina laten zien als er niet daadwerkelijk een mailtje verstuurd is!

7. Veel mailtjes zullen als spam aangezien worden omdat niet alle headers correct meegegeven worden. Gebruik liever een klasse als Swiftmailer om email te versturen vanuit PHP.

Al me al kan ik je eigenlijk maar 1 goed advies geven: vergeet dat je dit script gevonden hebt en gooi het zo snel mogelijk weer weg. Het grote aantal fouten dat in dit script zit is uniek. Om nog maar niet te beginnen over de manier waarop het gescript is.
Blanche schreef op 20.06.2009 15:42
Een aantal opmerkingen:

1. ob_start() hoort niet thuis in deze code, het dient hier geen doel en als het gebruikt wordt als lapmiddel om 'headers already sent' foutmeldingen te voorkomen, ben je al helemaal fout bezig.

2. Gebruik geen $_REQUEST. Dat is een samenraapsel van $_GET, $_POST en $_COOKIE variabelen. Je weet nu dus niet meer uit welke van de drie de ingevulde waarde komt, terwijl je dat wel wilt weten. Het zijn 3 compleet verschillende variabelen.

3. Geef de velden in je formulier logische namen. Namen als 'fieldnm_1' zeggen niets over de inhoud ervan en maken het voor jou alleen maar onduidelijker.

4. De str_replace() die je keer op keer gebruikt om een \n te vervangen door een <br> is overbodig. PHP kent daar de functie [php]nl2br()[/php] voor. Gebruik die dus.

5. Haal variabelen altijd buiten quotes. Dus ook in je $contentmsg.

6. Onderdruk mogelijke fouten niet door het gebruik van @ in je code. Als er iets fout gaat (in dit geval bij het versturen van de mail) wil je dat weten en er iets mee doen. Je gaat een gebruiker geen succespagina laten zien als er niet daadwerkelijk een mailtje verstuurd is!

7. Veel mailtjes zullen als spam aangezien worden omdat niet alle headers correct meegegeven worden. Gebruik liever een klasse als Swiftmailer om email te versturen vanuit PHP.

Al me al kan ik je eigenlijk maar 1 goed advies geven: vergeet dat je dit script gevonden hebt en gooi het zo snel mogelijk weer weg. Het grote aantal fouten dat in dit script zit is uniek. Om nog maar niet te beginnen over de manier waarop het gescript is.


mag ik even zeggen
deze script heb ik NIET zelf gemaakt
deze script heb ik van http://cssproperty.com/php-mail-form/ vandaan
dat je zelf dus een mailformulier kunt aanmaken
en dit bestond uit een html en uit een php document
de html heb ik omgezet naar php en dat uiteindelijk in de andere php script gezet.
dus zodat ik gewoon 1 geheel heb.

dus zelf heb ik nogmaals helemaal niks geschreven.
want ik heb 0,0 % verstand van php taal
het gaat mij er dus om dat ik nu alleen een ipadres mee wil zenden
en dat ik weet welke code en waar die geplaatst moet worden

wat jullie van de rest van de script vinden......jammer dan
deze heb ik nogmaals NIET zelf gemaakt

emailadres kun je niet zien
en het gaat mij om dat mijn dj's hun verzoekje binnen krijgen voor Radio Happystar, maar wel dat ipnummer mee gestuurd wordt
dat ik indien nodig is deze kan blokkeren, mocht een luisteraars moeilijkheden gaan veroorzaken, schelden, discriminatie bla bla bla
Esther schreef op 20.06.2009 15:46
dus zelf heb ik nogmaals helemaal niks geschreven.
want ik heb 0,0 % verstand van php taal
Tja, dan nogmaals het advies om je eerst eens in de basis van PHP te gaan verdiepen (zie handleiding waarvan ik de link al eerder gaf). Als je de basis van PHP niet beheerst is het zo goed als onmogelijk om zo'n script naar eigen wensen aan te passen.

Als je de tijd, die je nu besteed hebt aan het zoeken en proberen werkend te krijgen van deze mailscripts, gebruikt had om die handleiding eens door te werken, had je waarschijnlijk zelf al een mail scriptje kunnen schrijven! Kortom, doe jezelf een plezier en trek wat tijd uit om eerst de basis van PHP onder de knie te krijgen.
Blanche schreef op 20.06.2009 15:51
[quote='Esther schreef op 20.06.2009 15:46']dus zelf heb ik nogmaals helemaal niks geschreven.
want ik heb 0,0 % verstand van php taal
Tja, dan nogmaals het advies om je eerst eens in de basis van PHP te gaan verdiepen (zie handleiding waarvan ik de link al eerder gaf). Als je de basis van PHP niet beheerst is het zo goed als onmogelijk om zo'n script naar eigen wensen aan te passen.

Als je de tijd, die je nu besteed hebt aan het zoeken en proberen werkend te krijgen van deze mailscripts, gebruikt had om die handleiding eens door te werken, had je waarschijnlijk zelf al een mail scriptje kunnen schrijven! Kortom, doe jezelf een plezier en trek wat tijd uit om eerst de basis van PHP onder de knie te krijgen.[/quote]

maarre....gezien wat jij allemaal fout vind
maak jij dan maar eens een script voor mij, als jij het allemaal zo goed weet.

dit moet er in staan:

aangeboden door (verplicht)
emailadres (verplicht en dat het ook een emailadres is)
artiest (verplicht
titel (verplicht)
bestemd voor (verplicht)
kleine reactie

ik wil alles in 1 script hebben
en idd zoals ik al zei....met ipnummer en datum mee zenden

zodat je zoiets krijg in je mailbox
--------------------------------------------
Online verzoek:

aangeboden door: jouw naam
uw emailadres: [email protected]
artiest: jannes
titel: amore van jannes
bestemd voor: alle luisteraars
kleine reactie: het gaat toppie

IP: xx.xx.xx.xx, Datum: 20-06-2009, Tijd: 14:43:59

Reageren