Ik wil een formulier controleren , en bij fouten de gebruiker naar een nieuwe pagina sturen , maar ik zit met 2 vragen.

1.
if(strlen($name) < 4){ :: hoe controleer ik meerdere velden op deze manier?

2. als ik als actie ::: header("Location: bedankt.php3"); ::: doe dan krijg ik een error dat headers al zijn verstuurd .. hoe los ik dat op?
Als je formulier als method post heeft en je submit button als name 'go', doe je:

<?php
if (isset ($_POST['go'])) {
foreach ($_POST as $key => $value) {
if (strlen ($value) < 4) {
// error
}
}
}
?>
Als je niet alle velden wil controleren is dat natuurlijk niet handig. Je kunt bijvoorbeeld een array maken met alle velden die gecontroleerd dienen te worden en bovenstaande techniek van Jan gebruiken. Of je kunt simpelweg (als het om slechts een paar controles gaat) het volgende doen:

if (strlen($iets) < 4 || strlen($ietsanders) < 4)


Verder raad ik je aan dit artikel over headers already sent te lezen: http://www.phpfreakz.nl/artikelen.php?aid=109


En nog een korte, minder belangrijke opmerking: je kunt beter niet
if(isset($_POST['de_submit_button'])) gebruiken, omdat men dan niet op ENTER kan drukken maar per sé moet klikken op de knop. Gebruik dus liever
if ($_SERVER['REQUEST_METHOD'] == "POST")

Succes
PHPerik schreef op 05.11.2005 14:19
En nog een korte, minder belangrijke opmerking: je kunt beter niet
if(isset($_POST['de_submit_button'])) gebruiken, omdat men dan niet op ENTER kan drukken maar per sé moet klikken op de knop. Gebruik dus liever
if ($_SERVER['REQUEST_METHOD'] == "POST")


Maakt dit het niet juist makkelijker voor de spamrobots?
bedankt allebei heb hem nu goed werkende :D
SanThe schreef op 05.11.2005 14:24
[quote=PHPerik schreef op 05.11.2005 14:19]En nog een korte, minder belangrijke opmerking: je kunt beter niet
if(isset($_POST['de_submit_button'])) gebruiken, omdat men dan niet op ENTER kan drukken maar per sé moet klikken op de knop. Gebruik dus liever
if ($_SERVER['REQUEST_METHOD'] == "POST")


Maakt dit het niet juist makkelijker voor de spamrobots?[/quote]

Ja, dat wel. Maar dat weegt over het algemeen niet op tegen functionaliteit. En een beetje spambot zal de naam van je submit-input nog gewoon eruit knippen en in een hidden-veld zetten.
Zit toch nog ,met 1 probleem... namelijk de header-sent.

<?php
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ){
if (strlen($login_name) < 4 || strlen($login_pass) < 4){
echo "fout ingevuld";
?>

Ik wil in plaats van die "echo" dus naar een nieuwe pagina gaan met 'header location' , maar dan krijg ik dus zon error.. ik heb het artikel op phpfreakz al bekeken .. maar zie geen oplossing hiervoor.. en ik wil niet obj flush gebruiken ( das niet zo netjes..)

Wil niet brutaal doen PHPerik, maar bij mij werkt het altijd gewoon hoor :S
En ik gebruik echt nooit (oke, bijna nooit) mijn muis...

Edit:
Header probleem:
<?
echo '<meta http-equiv="refresh" content=0;jouwpagina.php">';
?>
Ja idd. Het werkt gewoon.

Reageren