Brentley_11 Posted October 2, 2006 Share Posted October 2, 2006 I'm pretty new to PHP and I was wondering how I can verify that the data that was submited via POST from a form that it only contains letters, numbers, or the underscore charater. I've tried a few things but sofar I haven't had any luck. Quote Link to comment Share on other sites More sharing options...
Zane Posted October 2, 2006 Share Posted October 2, 2006 [code]if(!ereg("[A-Za-z0-9_-]*",$_POST['yourVar])) echo "Your POST var doesn't validate";[/code] Quote Link to comment Share on other sites More sharing options...
Brentley_11 Posted October 2, 2006 Author Share Posted October 2, 2006 Is there a chance that I have php configured wrong? I just tested what you said and it didn't work.[code]$test = array("Test","Test_11","Test.11","TEST","test","()Test");foreach ($test as $var){ echo $var." - "; if(!ereg("[A-Za-z0-9_-]*",$var)) echo "Doesn't validate"; else echo "Does validate"; echo "<br>";}[/code]This was the output:[code]Test - Does validateTest_11 - Does validateTest.11 - Does validateTEST - Does validatetest - Does validate()Test - Does validate[/code]The third and last one shouldn't validate. Quote Link to comment Share on other sites More sharing options...
Zane Posted October 2, 2006 Share Posted October 2, 2006 my bad...instead of[A-Za-z0-9_-]*use[A-Za-z0-9_-]+ Quote Link to comment Share on other sites More sharing options...
Brentley_11 Posted October 2, 2006 Author Share Posted October 2, 2006 Everything still validates. ???Code:[code]$test = array("Test","Test_11","Test.11","TEST","test","()Test");echo "Test2 <br>";foreach ($test as $var){ echo $var." - "; if(!ereg("[A-Za-z0-9_-]+",$var)) echo "Doesn't validate"; else echo "Does validate"; echo "<br>";}[/code]Output:[code]Test2 Test - Does validateTest_11 - Does validateTest.11 - Does validateTEST - Does validatetest - Does validate()Test - Does validate[/code] Quote Link to comment Share on other sites More sharing options...
manmanman Posted October 2, 2006 Share Posted October 2, 2006 [quote author=zanus link=topic=110288.msg445576#msg445576 date=1159820889][code]if(!ereg("[A-Za-z0-9_-]*",$_POST['yourVar])) echo "Your POST var doesn't validate";[/code][/quote]Hmm... There is a missing quote on the end of yourVar, and also missing curly brackets. Also, I think you should use die() instead of echo.[code]<?phpif(!ereg("[A-Za-z0-9_-]*",$_POST['yourVar'])) { die("Your POST var doesn't validate");}?>[/code] Quote Link to comment Share on other sites More sharing options...
alpine Posted October 2, 2006 Share Posted October 2, 2006 And also a [color=red]-[/color] is currently allowed,[code] <?phpfunction Check($string){if(preg_match("/^[_a-zA-Z0-9]+$/", $string)){return true;}else{return false;}}$test = array("Test","Test_11","Test.11","TEST","test","()Test","test-this");foreach ($test as $var){ echo $var." - "; if(!Check($var)) echo "Doesn't validate"; else echo "Does validate"; echo "<br>";}?>[/code] Quote Link to comment Share on other sites More sharing options...
manmanman Posted October 2, 2006 Share Posted October 2, 2006 [quote author=Brentley_11 link=topic=110288.msg445580#msg445580 date=1159821415]Is there a chance that I have php configured wrong? I just tested what you said and it didn't work.[code]$test = array("Test","Test_11","Test.11","TEST","test","()Test");foreach ($test as $var){ echo $var." - "; if(!ereg("[A-Za-z0-9_-]*",$var)) echo "Doesn't validate"; else echo "Does validate"; echo "<br>";}[/code]This was the output:[code]Test - Does validateTest_11 - Does validateTest.11 - Does validateTEST - Does validatetest - Does validate()Test - Does validate[/code]The third and last one shouldn't validate.[/quote]Ok, reviewing this code, you have missing curly brackets.Also, doing what alpnie did, removing the [b]-[/b], your code should be like this:[code]<?php$test = array("Test","Test_11","Test.11","TEST","test","()Test");foreach ($test as $var){ echo $var." - "; if(!ereg("[_A-Za-z0-9]*",$var)) { echo "Doesn't validate"; } else { echo "Does validate"; } echo "<br>";}?>[/code] Quote Link to comment Share on other sites More sharing options...
Zane Posted October 2, 2006 Share Posted October 2, 2006 this should do it[code]if(ereg("[^A-Za-z0-9_-]+", $var)[/code]been out of practice of regex for a while[quote]Ok, reviewing this code, you have missing curly brackets.[/quote]notice his IF statements only have one statement...When your IF statements only do one thing...you don't need curly braces Quote Link to comment Share on other sites More sharing options...
manmanman Posted October 2, 2006 Share Posted October 2, 2006 Try this; it works on my server:[code]<?php$test = array("Test","Test_11","Test.11","TEST","test","()Test");foreach ($test as $var){ echo $var." - "; if(!preg_match("/^[A-Za-z0-9_]+$/", $var)) { echo "Doesn't validate"; } else { echo "Does validate"; } echo "<br>";}?>[/code]One using regex:[code]<?php$test = array("Test","Test_11","Test.11","TEST","test","()Test");foreach ($test as $var){ echo $var." - "; if(ereg("[^A-Za-z0-9_-]+", $var)) { echo "Doesn't validate"; } else { echo "Does validate"; } echo "<br>";}?>[/code] Quote Link to comment Share on other sites More sharing options...
manmanman Posted October 2, 2006 Share Posted October 2, 2006 [quote author=zanus link=topic=110288.msg445591#msg445591 date=1159822713]this should do it[code]if(ereg("[^A-Za-z0-9_-]+", $var)[/code]been out of practice of regex for a while[quote]Ok, reviewing this code, you have missing curly brackets.[/quote]notice his IF statements only have one statement...When your IF statements only do one thing...you don't need curly braces[/quote]I'm a bit forgetful sometimes... Quote Link to comment Share on other sites More sharing options...
Brentley_11 Posted October 2, 2006 Author Share Posted October 2, 2006 Thank you for all the help. It works great. :) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.