APD1993 Posted March 26, 2012 Share Posted March 26, 2012 I am creating a form that collects the details of users and then any errors cause for the error log to have errors noted and added to it. Part of my coding is this: else if (is_numeric($name)||is_int($name) && is_numeric($surname)||is_int($surname)) { echo "It seems that you have entered numerical values for the First Name and Surname fields. This has been added to the error log.<br><br>"; error_log("<br><br><b><u>Presence Error</b></u><br>The user has entered numerical values for First Name and Surname fields!<br>First Name entered: " . $name . "<br>Surname entered: " . $surname . "<br>Age entered: " . $age . "<br>Number Of Complete Weeks Since Accident entered: " . $weeks . "<br>Time that form was submitted: " . $subtime . "<br><br>", 3, "C:/xampp/htdocs/errorlog.txt"); } else if (is_numeric($name)||is_int($name)) { echo "It seems that you have entered a numerical value for the First Name field. This has been added to the error log.<br><br>"; error_log("<br><br><b><u>Presence Error</b></u><br>The user has entered a numerical value for First Name fields!<br>First Name entered: " . $name . "<br>Surname entered: " . $surname . "<br>Age entered: " . $age . "<br>Number Of Complete Weeks Since Accident entered: " . $weeks . "<br>Time that form was submitted: " . $subtime . "<br><br>", 3, "C:/xampp/htdocs/errorlog.txt"); } else if (is_numeric($surname)||is_int($surname)) { echo "It seems that you have entered a numerical value for the Surname field. This has been added to the error log.<br><br>"; error_log("<br><br><b><u>Presence Error</b></u><br>The user has entered a numerical value for the Surname field!<br>First Name entered: " . $name . "<br>Surname entered: " . $surname . "<br>Age entered: " . $age . "<br>Number Of Complete Weeks Since Accident entered: " . $weeks . "<br>Time that form was submitted: " . $subtime . "<br><br>", 3, "C:/xampp/htdocs/errorlog.txt"); } so that if a user enters in numerical values when letters need to be entered, then this gets added to the error log. However, even if I enter in a suitable surname (i.e. Jones), the first path (where both the first name and surname are detected as being numerical) runs when I want the path where only the first name contains just digits to be run. Any idea how to fix this? Any help is appreciated! Thanks! Link to comment https://forums.phpfreaks.com/topic/259724-how-to-fix-these-else-if-logical-branches/ Share on other sites More sharing options...
requinix Posted March 26, 2012 Share Posted March 26, 2012 That's a rather paranoid approach to input validation. You really have to log it? What are you going to do with it, send a nasty letter? && has higher precedence than ||. If your condition had parentheses it'd look like (numeric $name) or (integer $name and numeric $surname) or (integer $surname) That's not what you want. I'd tell you to add parentheses but the facts are that form input is always a string and that is_int() checks the type of variable, not its contents. That means it will never return true for something from a form (eg, $_GET or $_POST). So just get rid of them. numeric $name or numeric $surname Link to comment https://forums.phpfreaks.com/topic/259724-how-to-fix-these-else-if-logical-branches/#findComment-1331166 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.