Verplichte velden in mailform.php

Status
Niet open voor verdere reacties.

Ed121212

Gebruiker
Lid geworden
1 mrt 2007
Berichten
32
Hallo,

Ik heb een php script (formmail.php) om emails te laten versturen vanaf de website. Het script werkt. Maar ik zou graag het telefoonnummer, dat nu een verplicht veld is, een niet-verplicht veld maken. En het email-adres juist wel als verplicht veld maken. Kan iemand helpen hoe ik het onderstaand php script dan moet aanpassen?

Groetjes,
Ed

<?
//alle velden benoemen. je kan zelf variabelen bijmaken (dan ook bij regel 125 een regel kopieren/bijmaken.
// Naam, Telefoon en Bericht zijn verplichte velden

$salutation=$_POST[salutation]; // aanhef (Dhr. of Mevr.)
$name=$_POST[name]; // naam
$address=$_POST[address]; // adres (straatnaam + huisnr)
$street=$_POST[street]; // straatnaam
$housenr=$_POST[housenr]; // huisnr
$postcode=$_POST[postcode]; // postcode
$postcode=$_POST[place]; // plaats
$subject=$_POST[subject]; // onderwerp
$message=$_POST[message]; // bericht
$number=$_POST[number]; // telefoonnummer
$email=$_POST; // email
$kleur=$_POST[kleur]; // favoriete kleur


$mail='naam@gmail.com'; //Type your mail here
$subject="Email vanaf de website "; //Change subject here
$thank="../confirm.html"; //Your thank you page. Let erop dat je eerst map omhoog moet met ../ als php bestand in submap zit.
$min_size="0"; //Minimum length of message
$max_size="2000"; //Maximum length of message
$telsize=10; //size of tel number
$max_tel_size=18; //maximum size of tel. number.
$banlist=""; //if you do not want some ips to spam you add them here.

// You can change error messages here

$no_number="U bent uw telefoon nummer vergeten!"; //If tel number is forgotten
$no_message="U bent uw bericht vergeten!"; //If message is forgotten
$no_name="U bent uw naam vergeten."; //If no name
$mail_error="Het opgegeven email-adres is ongeldig."; //If mail is wrong
$number_error="Het opgegeven telefoon nummer is te kort."; //If number is wrong
$max_error="Dat nummer is te lang"; //If message is long.
$min_error="Dat nummer is te kort"; //If message is short.
$banned="BANNED!!"; //if banned.

// Opmaak van pagina met foutmelding

$error_title="Fout"; //title of page
$back='#FFFFFF'; //background of error page
$text='#0000FF'; //text colour of error page
$h2='#0000FF'; //heading colour of error page
$error_message="Er gaat iets fout met het formulier. Klik op TERUG in uw internet-browser om de fout te herstellen."; //message for visitor.

// Nothing else to change leave it as is.
// Hieronder worden foutmeldingen gereguleerd; daarna volgen de data die door webbezoeker verstuurd worden.
$result=1;
if($name==""){
$result=0;
$error="<li>$no_name</li>";
}
else{
$mailbody="Name : $name\n";
}
$mailbody.="Formulier: $radio\n";
if($message==""){
$result=0;
$error1="<li>$no_message</li>";
}
$mailbody.=" $radio2\n";
if($message==""){
$result=0;
$error1="<li>$no_message</li>";
}
elseif (strlen($message) <= $min_size) {
$error2="<li>$min_error</li>";
$result=0;
}
elseif (strlen($message) >= $max_size) {
$error3="<li>$max_error</li>";
$result=0;
}
else{
$mailbody.="bericht van: $name\n";
}
if ($email!==""){
if (!eregi("^.+@.+\\..+$", $email)){
$error4="<li>$mail_error</li>";
$result=0;
}
}
else{
$email=trim($email);
}
$ip=$REMOTE_ADDR;
if($number==""){
$error5="<li>$no_number</li>";
$end=1;
}
elseif(!eregi("^[0-9]{{$telsize},{$max_tel_size}}$", $number)){
$error6="<li>$number_error</li>";
$result=0;
$end=1;
}
else{
$mailbody.="Tel. nummer : $number\n";
}
$mailbody.="------------------------------\n";
$mailbody.="Extra informatie\n";
$mailbody.="------------------------------\n";
$mailbody.="Email : $email\n";

$mailbody.="De persoon wordt aangesproken met: $salutation\n";
$mailbody.="Dit is de naam: $name\n";
$mailbody.="Dit is het adres: $address\n";
$mailbody.="Dit is de straat: $street\n";
$mailbody.="Dit is het huisnummer: $housenr\n";
$mailbody.="Dit is de postcode: $postcode\n";
$mailbody.="Dit is de plaats: $place\n";
$mailbody.="------------------------------\n";
$mailbody.="Dit is het onderwerp: $subject\n";
$mailbody.="Dit is de opmerking: $message\n";
$mailbody.="------------------------------\n";
$mailbody.="------------------------------\n";
$mailbody.="------------------------------\n";
$mailbody.="Deze kleur vindt men mooi: $kleur\n";
$mailbody.="USER informatie\n";
$mailbody.="------------------------------\n";
$mailbody.="User use :$HTTP_USER_AGENT";
$mailbody.="Send via :$HTTP_VIA\n";
$mailbody.="ip adress is :$ip\n";
$mailbody.="Remote host is : $REMOTE_HOST\n";
$mailbody.="----------------------------\n";
$date=date("m/d/Y H:i:s");
$mailbody.="SERVER informatie\n";
$mailbody.="send date/time : $date\n";
$mailbody.="Came From web : $HTTP_HOST\n";
$mailbody.="Came from Ip number : $SERVER_ADDR\n";
$mailbody.="FILE name : $SCRIPT_FILENAME\n";
if ($result==1){
mail($mail,$subject,$mailbody,"From: $email\n");
Header ("Location: $thank");
}
if ($result!==1){
echo ("<body bgcolor=$back text=$text><title>$error_title</title>
<center><h2><font color='$h2'>$error_message</font></h2></center><ol>$error$error1$error2$error3$error4
$error5$error6$error7</ol></center></body>");
}
?>
 
Precies dit stukje moet je eruit halen om number niet verplicht te maken.

PHP:
<?php
if($number==""){
$error5="<li>$no_number</li>";
$end=1;
}
else
?>

Om email verplicht te maken kan je deze code

PHP:
<?php
if ($email!==""){
if (!eregi("^.+@.+\\..+$", $email)){
$error4="<li>$mail_error</li>";
$result=0;
}
}
else{
$email=trim($email);
}
?>

vervangen door deze code
PHP:
<?php 
if (empty($email)){
echo "Je moet wel een email adres invullen!"
exit;
}
if (!eregi("^.+@.+\\..+$", $email)){
$error4="<li>$mail_error</li>";
$result=0;
}
else{
$email=trim($email);
}
?>

Dit werkt echter niet met het zo mooi ingebouwde fout meldingssysteem. Omdat je dan, als je het netjes wil doen, je in de hele code alle $errors moet gaan opschuiven...

Voor de rest moet je even de forum tags voor PHP code om je document heen doen...
PHP:
Of op de knop...
 
Laatst bewerkt:
Hoi Jorryt,

Bedankt voor je reactie!:thumb:

Bij nader inzien blijkt het ingevulde telefoonnumer alleen gecontroleerd te worden op 'te kort zijn' (veld leeg laten geeft geen foutmelding), dus dat is eigenlijk geen probleem.

Het script voor verplicht email veld blijkt bij mij niet te werken. Dreamweaver geeft zelf ook al aan dat er een fout zit in de regel:

<?php
4 exit;
?>

(Misschien kan ik beter op zoek gaan naar een ander script...)
 
<?php
4 exit;
?>

uhm, misschien ligt het aan mij maar die kan ik niet vinden in jouw script :confused:

mvg. Ecross

ps. dit script is hier en daar een beetje (erg) omslachtig, maar misschien is dat wel wat duidelijker als beginnende (?) php'er. Één vraagje: snap je zelf hoe het script werkt?
 
Kan je doen, maar je kan er ook zelf eentje maken!

Hier zijn een paar handige dingentjes

PHP:
<?php
$variable = "iets" // Je creert een variable met de naam variable inhoud iets. Let op het dollar teken!

$_POST["iets"] //Zodra je in html op een submit knop drukt, wordt die inhoud verstuurd via de $_POST array. In dit geval was de naam die je in html opgaf voor de input: iets

if(voorwaarde) {wat moet er gebeuren}
else {wat moet er gebeuren als er niet wordt voldaan aan de voorwaarde} // spreekt voor zich.

empty($variable) // kijkt of variable leeg is, in de geval niet. 

!empty($variable) //kijkt of variable niet leeg is. 

//Je kan nu iets ophalen uit de post, en met de empty functie kijken of het leeg is. Hint:

if(!empty($variable)) {iets als die niet leeg is}
else {als die wel leeg is}

! // is het niet teken. empty() en !empty (leeg en niet leeg)
&& //is het en teken. voor als je bijvoorbeeld 2 voorwaarden wil in je if 
|| // is het of teken. bijvoorbeeld, als je 2 voorwaarden wilt en er maar aan 1 voldaan hoeft te worden

?>

Hoop dat je hiermee verder komt! Als er vragen zijn horen we het wel..
 
Laatst bewerkt:
Jorryt, da's wel een handig (begrijpelijk) stukje php! Tekens als "!^||" zijn voor iemand zonder voorkennis niet te interpreteren...

De regel
4 exit
stond overigens in het stukje vervangende code van je.
 
Daar staat gewoon exit?
Maar ik adviseer je nogmaals je eigen script te maken ;)
Als er vragen zijn horen we het wel.
 
Bedankt voor alle reacties. :thumb: Heb nu wel wat waar ik mee uit de voeten kan. Ga me nu maar weer's op andere onderdelen richten...
 
Kan je doen, maar je kan er ook zelf eentje maken!

Hier zijn een paar handige dingentjes

PHP:
<?php
$variable = "iets" // Je creert een variable met de naam variable inhoud iets. Let op het dollar teken!

$_POST["iets"] //Zodra je in html op een submit knop drukt, wordt die inhoud verstuurd via de $_POST array. In dit geval was de naam die je in html opgaf voor de input: iets

if(voorwaarde) {wat moet er gebeuren}
else {wat moet er gebeuren als er niet wordt voldaan aan de voorwaarde} // spreekt voor zich.

empty($variable) // kijkt of variable leeg is, in de geval niet. 

!empty($variable) //kijkt of variable niet leeg is. 

//Je kan nu iets ophalen uit de post, en met de empty functie kijken of het leeg is. Hint:

if(!empty($variable)) {iets als die niet leeg is}
else {als die wel leeg is}

! // is het niet teken. empty() en !empty (leeg en niet leeg)
&& //is het en teken. voor als je bijvoorbeeld 2 voorwaarden wil in je if 
|| // is het of teken. bijvoorbeeld, als je 2 voorwaarden wilt en er maar aan 1 voldaan hoeft te worden

?>

Hoop dat je hiermee verder komt! Als er vragen zijn horen we het wel..

empty() checkt niet of de variabele leeg is. Empty() checkt of de variabele gelijk is aan een van deze waarden:

"" (an empty string)
0 (0 as an integer)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
var $var; (a variable declared, but without a value in a class)

Als je wilt weten of een variabele leeg is, gebruik je trim($x) == ''.
 
x-repeat tegels achter header, navbar, footer

Hallo,

Ik wil m'n template opnieuw bouwen mbv DIV's (en zorgen dat ie nu wel werkt:rolleyes:). Het basisplan ziet er als volgt uit:

#row1 {
height: 80px; /* header */
width: 800px;
background-color: #009; /* later bg-image */
z-index:10; /* content scrollt achter de header door */
/* code voor horizontaal centereren: */
/* methode 1, mbv negatieve marge: */
position: fixed;
left: 50%;
margin-left: -400px;

/* methode 2 - werkt niet:
position: fixed;
margin-right: auto;
margin-left: auto; */

}
#row2 {
height: 36px; /* navbar */
width: 800px;
background-color: #000;
top:80px; /* navbar komt pal onder de header */
z-index:10; /* content scrollt achter de navbar door */
position: absolute;
left: 50%;
margin-left: -400px;

}
#row3 {
height: auto; /* content */
width: 800px;
position: relative;
margin-right: auto;
margin-left: auto;

top:116px; /* komt pal onder navbar */

}
#row4 {
height: 25px; /* footer */
width: 800px;
position: relative;
margin-right: auto;
margin-left: auto;

}

#row-1 div{ margin: 0 0 0 0; padding: 0 0 0 0; border: 0 0 0 0; }
#row-2 div{ margin: 0 0 0 0; padding: 0 0 0 0; border: 0 0 0 0; }
#row-3 div{ margin: 0 0 0 0; padding: 0 0 0 0; border: 0 0 0 0; }
#row-4 div{ margin: 0 0 0 0; padding: 0 0 0 0; border: 0 0 0 0; }

/* grote achtergrondafbeelding */
#bg-image {
position:fixed; /* afbeelding scrollt niet mee */
background-repeat: no-repeat;
width: 100%; /* schaalt mee met de pagina */
top: 120px; /* afbeelding komt onder de navbar, achter row 3 (content) */
overflow:hidden;
right: 0%;
z-index: -10; /* achtergrondafbeelding */
}

</style>
</head>

<body>
<div id="row1">header img</div>
<div id="row2">navbar img</div>
<div id="row3">content</div>
<div id="row4">footer tekst</div>

<!-- grote achtergrondafbeelding -->
<img id="bg-image" src="img/logo/logo-700x700.jpg"/>

</body>
</html>

Header en navbar staan vast bovenaan de pagina. Horizontaal gecentreerd.

Hoofdvraag:
Ik wil tegels gebruiken zodat de header, navbar en footer schermbreed verbreed worden. Background-tegels van header en navbar moeten dus vaste verticale positie krijgen; bg-tegels voor footer moeten verticaal meescrollen met footer.
Grote vraag: Hoe doe ik dat? (Of is dat onmogelijk?)

Noot: Tegels voor header en navbar kunnen evt gecombineerd worden tot 1 tegel.

Nevenvragen:
(1) Ik merk in webbrowser dat volgens het basisplan de header en navbar elkaar elkaar toch gedeeltelijk overlappen. Hoe kan dat? Row2 begint (met top:80px) toch direct onder waar row1 (= 80 px hoog) ophoudt??

(2) Nevenvraag 2:
Waarom werkt horizontaal centreren volgens methode 2 (zie basisplan) niet?

(3) Waarom komt in webbrowser row4 nu niet onder row3 te staan (maar halverwege row-3 er overheen)?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan