if post waarde is niet 9, dan foutmelding, werkt niet :S
Door
Bart Huisman
op 03-10-2010 15:08
gewijzigd op 03-10-2010 16:00
2.379 views
wat is er mis met dit stukje code?
<?php
if(isset($_POST["submit"]) == TRUE){
if(preg_match("/^[-a-zA-Z- ]{1,50}$/", $_POST["naam"]) == FALSE){
$error = "Je naam is niet of verkeerd ingevoerd";
}
else if(preg_match("/^[-^!#$%&'*+\/=?`{|}~.\w]+@[-a-zA-Z0-9]+(\.[-a-zA-Z0-9]+)+$/", $_POST["email"]) == FALSE){
$error = "Je hebt een ongeldig e-mail adres ingevoerd";
}
else if($_POST["commentaar"] == ""){
$error = "Je hebt geen commentaar ingevoerd";
}
else if(!$_POST["som"] == "9"){
$error = "je hebt niet 9 ingevuld bij de spam beveiliging";
}
else{
mysql_query("INSERT INTO gastenboek (naam,email,commentaar,datum,zichtbaar) VALUES ('" . slashes($_POST["naam"]) . "','" . slashes($_POST["email"]) . "','" . slashes($_POST["commentaar"]) . "','" . $datum . "','" . slashes($_POST["zichtbaar"]) . "')") or die(mysql_error());
header("Location: ok.php");
exit();
}
?>
als ik nu 7 invul bij post dan plaatst hij het bericht zonder foutmelding. zou toch niet mogen lijkt me? :S
als ik de code verander en het uitroepteken weghaal, dan geeft hij de foutmelding wel als ik 9 invul, dus dan gaat de vergelijking opeens wel goed.
Wie weet wat hier mis gaat?
Bart
?
Onbekende gebruiker
03-10-2010 15:14
Gebruik s.v.p. [[color=black]code[/color] en [/[color=black]code[/color]] tags hier op het forum.
ik zag geen kop staan voor code, wel voor quote enzo, dus wist niet welk woord er werd gebruikt. zou misschien handig zijn als daar ook een knop voor kwam ;) maar zal m ff aanpassen
else if(!$_POST["som"] == "9"){
moet zijn
else if($_POST["som"] != "9"){
?
Onbekende gebruiker
03-10-2010 15:32
Controleren of een form gepost is met if($_SERVER['REQUEST_METHOD'] == 'POST').
Je kunt niet verschillende checks die niks met elkaar te maken hebben in één stoppen. Dit geheel is niet logisch.
Zie ook [php]operators[/php], regel 15 is vaag.
aaah, ik heb nu ff wt er over gelezen op php.net. ik dacht namelijk al dat ik wel eens dat uitroepteken in het midden van de vergelijking had staan. maar nu tijdens de php les op school moest hij aan het begin van de vergelijking, dus ik vroeg nog, moet hij niet bij de =? zei die leraar van niet, maar het is zo dat een uitroepteken aan het begin van een vergelijking alleen een true / false kan beoordelen. de uitleg van php.net voor het geval googlers op dit topic uitkomen:
You can also write it like this :
<?php
if(!call()==TRUE) // or if(!call())
{
// do something here
}
// here '!' will invert 'FALSE' (from call()) into 'TRUE'
?>
If you want to compare two strings and use '!' be careful how you use it !!!!
<?php
$string1 = "cake";
$string2 = "foo";
if(!$string1==$string2)
{
echo "cake is a lie";
}
//this will ALWAYS fail without exception because '!' is applied to $string1 and not to '$string1==$string2'
//to work, you have to do like this
if(!($string1==$string2))
{
echo "cake is a lie";
}
//it will display 'cake is a lie' because ($string1==$string2) return FALSE and '!' will invert it into TRUE
?>
For array/float, it's the same !
[size=xsmall]Toevoeging op 03/10/2010 15:57:09:[/size]
Karl Karl op 03/10/2010 15:32:54
Controleren of een form gepost is met if($_SERVER['REQUEST_METHOD'] == 'POST').
Je kunt niet verschillende checks die niks met elkaar te maken hebben in één stoppen. Dit geheel is niet logisch.
Zie ook [php]operators[/php], regel 15 is vaag.
wat bedoel je hier precies mee? ik heb
if(isset($_POST["submit"]) == TRUE){
dit is toch maar 1 ding die ik controleer? ik controleer eerst of post sowieso wel bestaat, voordat ik ga controleren of de post waarden wel kloppen...