Mijn if statement werkt niet, als ik het formulier wil verzenden en het niet aan de gestelde criteria voldoet krijg ik deze melding:
De gekozen nickname bevat geen 7 karakters De gekozen tip bevat geen 10 karakters U bent nu geregistreerd
en toch zet hij het in de database!
wat te doen?
Script:
<?php
$con=mysqli_connect("***","***","***","***");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql="INSERT INTO Tips (nickname, tip)
VALUES
('$_POST[nickname]','$_POST[tip]')";
Je maakt geen "fatale error" oftewel die if statement word voldaan maar hij gaat door met het script omdat je geen else hebt,
oplossing:
<?php
$con=mysqli_connect("***","***","***","***");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql="INSERT INTO Tips (nickname, tip)
VALUES
('$_POST[nickname]','$_POST[tip]')";
Ik geef de voorkeur aan eerst alle fouten opsommen dan kijken of er geen zijn en inloggen of de fouten tonen
<?php
$con=mysqli_connect("***","***","***","***");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql="INSERT INTO Tips (nickname, tip)
VALUES
('$_POST[nickname]','$_POST[tip]')";
[quote="- Aar - op 30/10/2013 19:24:07"]
variabelen horen buiten quotes op lijn 9
verder is er SQL injection mogelijk. Dus gebruik mysqli_real_escape_string()
Word aan gewerkt, het is nog een beta versie ;)
Héél erg bedankt allemaal!!
[/quote]
FOUT! Begin gelijk goed met programmeren. Variabelen buiten quotes moet je gelijk doen en niet toestaan in een beta versie. Veiligheid gewoon gelijk eraan toevoegen. Naderhand vergeet je dit heel makkelijk omdat je dan zoveel input hebt die je allemaal moet gaan checken. Jij gaat alles weer herschrijven zodra het klaar is?
// controleer of alle velden ingevuld zijn
if (empty($_POST)=== false){
$required_fields = array('number','postcode');//hier kun je makkelijk de verplichte velden beheren door toe te voegen of verwijderen
$errors = array();
//echo '<pre>',print_r($_POST,true),'</pre>';
foreach ($_POST as $key=>$value){
if(empty($value) && in_array($key, $required_fields) === true){
$errors[] = "alle velden zijn verplicht ";
break 1;
}
}
}
// als alle velden ingevuld zijn gaan we controleren op juiste invoer
if(empty($errors) === true){
if(PostcodeCheck(sanitize($_POST['postcode'])) === false){
$errors[] = "foute invoer postcode ";
}
if(strlen(sanitize($_POST['postcode'])) !== 7 ){
$errors[] = "postcode dient anders ingevoerd te worden!"."<br>"."Gebruik een spatie tussen de cijfers en letters :1234 KK ";
}
}
// nu gaan we de formuliergegevens verwerken zodra er op de bevestigingsknop is gedrukt
if(isset($_POST["calculate"]) === true){
if (empty($_POST) === false && empty($errors) === false){
echo output_errors($errors);
}else{
//formuliergegevens opslaan in db tabel
}
}
if (isset($_POST['annuleren']) === true){
// doe iets
}