Form werkt niet ?

Status
Niet open voor verdere reacties.

rikietje

Gebruiker
Lid geworden
17 nov 2010
Berichten
154
Hallo, ik wil voor mijn website graag een form maken waarin mensen hun gegevens in moeten vullen en het dan gecontroleerd wordt of het wel ingevuld is. Dit werkt prima kijk maar http://rikbeernink.nl

Het probleem is nu dat de gegevens niet aankomen op de pagina waar de action naar toe gaat. Als ik daar de variabelen echo worden ze niet weergeven.

Dit gebruik ik om het form te controleren:

Code:
echo "<script type='text/javascript'>
function formValidator(){
 var voornaam = document.getElementById('voornaam');
 var achternaam = document.getElementById('achternaam');
 var email = document.getElementById('email');

 if(isAlphabet(voornaam, 'Vul alstublieft uw voornaam in.')){
  if(isAlphabet(achternaam, 'Vul alstublieft uw achternaam in.')){
   if(emailValidator(email, 'Vul alstublieft een geldig e-mail adres in.')){
    return true;
   }
  }
 }
 return false;
}


function isAlphabet(elem, helperMsg){
	var alphaExp = /^[a-zA-Z]+$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function emailValidator(elem, helperMsg){
	var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
	if(elem.value.match(emailExp)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}



</script>


<br /><br />
<div class='div_text_home'>
<form action='process_nieuwsbrief.php' method='POST' onsubmit='return formValidator()' >
Voornaam<input type='text' name='voornaam' id='voornaam' /><br />
Achternaam<input type='text' name='achternaam' id='achternaam' /><br />
E-mail<input type='text' name='email' id='email' /><br />
<input type='submit' />
</form>



</div>";

Op de pagina waar het dan naar toe gestuurd wordt staat het volgende :

Code:
<html>
<head>
<title>Rik Beernink : </title>
<link rel="Stylesheet" type="text/css" href="main_css.css" />
</head>
<body>
<?php
require ("require_menu.php");
require ("require_favicon.php");
require ("require_reclame01.php");
require ("require_connect_database.php");
echo "<br />";

$email = $_POST['email'];
$voornaam = $_POST['voornaam'];
$achternaam = $_post['achternaam'];

echo $achternaam;





?>
</body>
</html>

Wat gaat hier fout, want het script controleert perfect of alle gegevens (juist) zijn ingevuld. Maar het lijkt of ze dan niet aankomen om process_nieuwsbrief.php . Heel raar

Wat gaat er mis?

Alvast bedankt!
 
normaal mag dit niks uitmaken maar ik zou een proberen met dit:
$achternaam = $_POST['achternaam'];

het zou kunnen helpen.

soms zitten fouten echt in zo'n kleine zaken als dit
 
Laatst bewerkt door een moderator:
En wat doet het formulier als je het stukje " onsubmit='return formValidator()'" weg haalt uit de form-tag? :)
 
En wat doet het formulier als je het stukje " onsubmit='return formValidator()'" weg haalt uit de form-tag? :)
Als ik dat zou doen zou het form niet meer gecontroleerd worden he :(
normaal mag dit niks uitmaken maar ik zou een proberen met dit:
$achternaam = $_POST['achternaam'];

het zou kunnen helpen.

soms zitten fouten echt in zo'n kleine zaken als dit



Hartstikke bedankt, op de een of andere manier heeft dit geholpen en werkt hierdoor de rest van mijn code ook weer. Hartstikke bedankt voor de reactie!
 
Als ik dat zou doen zou het form niet meer gecontroleerd worden he :(




Hartstikke bedankt, op de een of andere manier heeft dit geholpen en werkt hierdoor de rest van mijn code ook weer. Hartstikke bedankt voor de reactie!

Als ik dat zou doen zou het form niet meer gecontroleerd worden he :(

het is aangeraden om met php je inputs ook te controleren.
clients kunnen namelijk hun javascript heel makkelijk uitschakelen waardoor je values ook niet meer zouden worden gevallideert.
 
Laatst bewerkt:
Als ik dat zou doen zou het form niet meer gecontroleerd worden he :(
Weet ik, maar dan had je kunnen uitsluiten dat het in de javascript zat. Vandaar mijn opmerking.
Hartstikke bedankt, op de een of andere manier heeft dit geholpen en werkt hierdoor de rest van mijn code ook weer. Hartstikke bedankt voor de reactie!
Opzich is dit logisch, want global variables zijn altijd in hoofdletters. Waarschijnlijk wordt in de config van de php-server afgedwongen dat dit ook het geval moet zijn, vaak kan een php-server hier normaliter wel mee omgaan.

Mooi dat het opgelost is.

ps: Zet om je php-code een if-statement waarmee je checkt of het form wel gesubmit wordt, en escape je $_POST-variablen. Dit is zo lek als een mandje!

Code:
if(isset($_POST['submit']))
{

}

en verander
Code:
<input type='submit' />
in
Code:
<input type='submit' name='submit' />

Meer info over escaping variables:
Google
PHP.net

:thumb:
 
In plaats van
PHP:
if(isset($_POST['submit']))
kan je beter
PHP:
if ($_SERVER['REQUEST_METHOD'] == "POST")
gebruiken. De eerste methode werkt niet altijd, de tweede wel.
 
Weet ik, maar dan had je kunnen uitsluiten dat het in de javascript zat. Vandaar mijn opmerking.
Opzich is dit logisch, want global variables zijn altijd in hoofdletters. Waarschijnlijk wordt in de config van de php-server afgedwongen dat dit ook het geval moet zijn, vaak kan een php-server hier normaliter wel mee omgaan.

Mooi dat het opgelost is.

ps: Zet om je php-code een if-statement waarmee je checkt of het form wel gesubmit wordt, en escape je $_POST-variablen. Dit is zo lek als een mandje!

Code:
if(isset($_POST['submit']))
{

}

en verander
Code:
<input type='submit' />
in
Code:
<input type='submit' name='submit' />

Meer info over escaping variables:
Google
PHP.net

:thumb:

In plaats van
PHP:
if(isset($_POST['submit']))
kan je beter
PHP:
if ($_SERVER['REQUEST_METHOD'] == "POST")
gebruiken. De eerste methode werkt niet altijd, de tweede wel.

Oke en kan iemand me uitleggen wat deze code precies doet?
 
PHP:
if ($_SERVER['REQUEST_METHOD'] == "POST")
controleert of de pagina is opgevraagd via de POST methode, oftewel of de gebruiker het formulier dat als "method" "post" heeft, heeft "gesubmit".

PHP:
if(isset($_POST['submit']))
controleert of de waarde van de knop met "name" "submit" mee is gestuurd. Dit is vaak, maar niet altijd!, het geval als de gebruiker het formulier "submit".
 
PHP:
if ($_SERVER['REQUEST_METHOD'] == "POST")
controleert of de pagina is opgevraagd via de POST methode, oftewel of de gebruiker het formulier dat als "method" "post" heeft, heeft "gesubmit".

PHP:
if(isset($_POST['submit']))
controleert of de waarde van de knop met "name" "submit" mee is gestuurd. Dit is vaak, maar niet altijd!, het geval als de gebruiker het formulier "submit".

Oke en met manier 1 zou ik er dus voor kunnen zorgen dat de $_POST waardes ook daadwerkelijk door het form verkregen zijn?

Dan wordt het dus :

PHP:
if ($_SERVER['REQUEST_METHOD'] == "POST"){
  $email = $_POST['email'];
  $voornaam = $_POST['voornaam'];
  $achternaam = $_post['achternaam'];
 }
else{
 die();
}

Of het ik heb nu verkeerd begrepen?
 
Laatst bewerkt:
Dat klopt. Al moet je op regel 4 wel hoofdletters gebruiken: $_POST.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan