[RESOLVED] Php input validation - exact input only
I am struggling in trying to find a solution for the above problem. I have a simple html form and have some php code set up to validate the user input. Below is an example of how i am validating one particular field:
So for that field if the user fails to enter anything or if they include anything other than Lower/Uppercase letters, numbers and a space then the script returns false and brings up the error.
Now i am trying to set up some fields where by the user must match their input with an exact string that i will set for it to correctly validate otherwise it will flag an error.
So for example on 'field 2' - the user must enter the input of 'red' or 'blue' or 'green' or 'pink'. Anything other than either 1 of these will not be passed.
Now i know instantly from that it would seem i should just use the 'select name' and 'option' values for my html to just have those 4 options in a drop down list to select but it needs to be a typed user input not selected from a list.
Am i able to add exact terms into the above validation example or do i need to use a different technique? I have a feeling that it might be best to use MySql with this in the form of a database but i unfortunately have no knowledge of this language at present...
First of all, even dropdown lists need to be validated, because in the end, the user does not need to use the actual form in order to send GET or POST information to the script, so ALL fields should be validated (even checkboxes).
Here is my method for form validation, starting with the one you need:
//Only red, green, or blue are ok
if(strtolower($_POST['input1']) == "red" || strtolower($_POST['input1']) == "blue" || strtolower($_POST['input1']) == "green")
$input1 = $_POST['input1'];
//Error handler here
//Only letter and numbers allowed
if( !preg_match("/[^a-zA-Z0-9]/", $_POST['input2']) ) //the ^ inside of brackets is a NOT operator, so if there are any characters other than letters or numbers, the preg_match will return true
"Build a man a fire and he'll be warm for a day. Set a man on fire and he'll be warm for the rest of his life."