Some extra phone validation - server side

pcpros2go 08 May, 2010
Don't know if this will be useful for anyone or not. But I had an issue of people plugging in 0000000000 or just some junk numbers into my phone field. So put some code together to help combat that.

This code uses phone for the phone number field name. It checks the first 3 numbers of the phone field against an array of area codes. And it also checks the 4th number in the phone number and makes sure its not a 0 or a 1.

And for anyone who don't know, this code goes into the ServerSide Validation code area found on the Validation tab.

My forte is not arrays so there might be a better way to code it.

<?php
$phone = $_POST['phone'];
$areacoeds = array();
	$areacodes[] = 201;
	$areacodes[] = 202;
	$areacodes[] = 203;
	$areacodes[] = 204;
	$areacodes[] = 205;
	$areacodes[] = 206;
	$areacodes[] = 207;
	$areacodes[] = 208;
	$areacodes[] = 209;
	$areacodes[] = 210;
	$areacodes[] = 212;
	$areacodes[] = 213;
	$areacodes[] = 214;
	$areacodes[] = 215;
	$areacodes[] = 216;
	$areacodes[] = 217;
	$areacodes[] = 218;
	$areacodes[] = 219;
	$areacodes[] = 224;
	$areacodes[] = 225;
	$areacodes[] = 227;
	$areacodes[] = 228;
	$areacodes[] = 229;
	$areacodes[] = 231;
	$areacodes[] = 234;
	$areacodes[] = 239;
	$areacodes[] = 240;
	$areacodes[] = 242;
	$areacodes[] = 246;
	$areacodes[] = 248;
	$areacodes[] = 250;
	$areacodes[] = 251;
	$areacodes[] = 252;
	$areacodes[] = 253;
	$areacodes[] = 254;
	$areacodes[] = 256;
	$areacodes[] = 260;
	$areacodes[] = 262;
	$areacodes[] = 264;
	$areacodes[] = 267;
	$areacodes[] = 268;
	$areacodes[] = 269;
	$areacodes[] = 270;
	$areacodes[] = 276;
	$areacodes[] = 281;
	$areacodes[] = 283;
	$areacodes[] = 284;
	$areacodes[] = 289;
	$areacodes[] = 301;
	$areacodes[] = 302;
	$areacodes[] = 303;
	$areacodes[] = 304;
	$areacodes[] = 305;
	$areacodes[] = 306;
	$areacodes[] = 307;
	$areacodes[] = 308;
	$areacodes[] = 309;
	$areacodes[] = 310;
	$areacodes[] = 312;
	$areacodes[] = 313;
	$areacodes[] = 314;
	$areacodes[] = 315;
	$areacodes[] = 316;
	$areacodes[] = 317;
	$areacodes[] = 318;
	$areacodes[] = 319;
	$areacodes[] = 320;
	$areacodes[] = 321;
	$areacodes[] = 323;
	$areacodes[] = 330;
	$areacodes[] = 331;
	$areacodes[] = 334;
	$areacodes[] = 336;
	$areacodes[] = 337;
	$areacodes[] = 339;
	$areacodes[] = 340;
	$areacodes[] = 345;
	$areacodes[] = 347;
	$areacodes[] = 351;
	$areacodes[] = 352;
	$areacodes[] = 360;
	$areacodes[] = 361;
	$areacodes[] = 386;
	$areacodes[] = 401;
	$areacodes[] = 402;
	$areacodes[] = 403;
	$areacodes[] = 404;
	$areacodes[] = 405;
	$areacodes[] = 406;
	$areacodes[] = 407;
	$areacodes[] = 408;
	$areacodes[] = 409;
	$areacodes[] = 410;
	$areacodes[] = 412;
	$areacodes[] = 413;
	$areacodes[] = 414;
	$areacodes[] = 415;
	$areacodes[] = 416;
	$areacodes[] = 417;
	$areacodes[] = 418;
	$areacodes[] = 419;
	$areacodes[] = 423;
	$areacodes[] = 424;
	$areacodes[] = 425;
	$areacodes[] = 434;
	$areacodes[] = 435;
	$areacodes[] = 440;
	$areacodes[] = 441;
	$areacodes[] = 443;
	$areacodes[] = 445;
	$areacodes[] = 450;
	$areacodes[] = 464;
	$areacodes[] = 469;
	$areacodes[] = 470;
	$areacodes[] = 473;
	$areacodes[] = 475;
	$areacodes[] = 478;
	$areacodes[] = 479;
	$areacodes[] = 480;
	$areacodes[] = 484;
	$areacodes[] = 501;
	$areacodes[] = 502;
	$areacodes[] = 503;
	$areacodes[] = 504;
	$areacodes[] = 505;
	$areacodes[] = 506;
	$areacodes[] = 507;
	$areacodes[] = 508;
	$areacodes[] = 509;
	$areacodes[] = 510;
	$areacodes[] = 512;
	$areacodes[] = 513;
	$areacodes[] = 514;
	$areacodes[] = 515;
	$areacodes[] = 516;
	$areacodes[] = 517;
	$areacodes[] = 518;
	$areacodes[] = 519;
	$areacodes[] = 520;
	$areacodes[] = 530;
	$areacodes[] = 540;
	$areacodes[] = 541;
	$areacodes[] = 551;
	$areacodes[] = 557;
	$areacodes[] = 559;
	$areacodes[] = 561;
	$areacodes[] = 562;
	$areacodes[] = 563;
	$areacodes[] = 564;
	$areacodes[] = 567;
	$areacodes[] = 570;
	$areacodes[] = 571;
	$areacodes[] = 573;
	$areacodes[] = 574;
	$areacodes[] = 580;
	$areacodes[] = 585;
	$areacodes[] = 586;
	$areacodes[] = 601;
	$areacodes[] = 602;
	$areacodes[] = 603;
	$areacodes[] = 604;
	$areacodes[] = 605;
	$areacodes[] = 606;
	$areacodes[] = 607;
	$areacodes[] = 608;
	$areacodes[] = 609;
	$areacodes[] = 610;
	$areacodes[] = 612;
	$areacodes[] = 613;
	$areacodes[] = 614;
	$areacodes[] = 615;
	$areacodes[] = 616;
	$areacodes[] = 617;
	$areacodes[] = 618;
	$areacodes[] = 619;
	$areacodes[] = 620;
	$areacodes[] = 623;
	$areacodes[] = 626;
	$areacodes[] = 630;
	$areacodes[] = 631;
	$areacodes[] = 636;
	$areacodes[] = 641;
	$areacodes[] = 646;
	$areacodes[] = 647;
	$areacodes[] = 649;
	$areacodes[] = 650;
	$areacodes[] = 651;
	$areacodes[] = 660;
	$areacodes[] = 661;
	$areacodes[] = 662;
	$areacodes[] = 664;
	$areacodes[] = 667;
	$areacodes[] = 670;
	$areacodes[] = 671;
	$areacodes[] = 678;
	$areacodes[] = 682;
	$areacodes[] = 701;
	$areacodes[] = 702;
	$areacodes[] = 703;
	$areacodes[] = 704;
	$areacodes[] = 705;
	$areacodes[] = 706;
	$areacodes[] = 707;
	$areacodes[] = 708;
	$areacodes[] = 709;
	$areacodes[] = 712;
	$areacodes[] = 713;
	$areacodes[] = 714;
	$areacodes[] = 715;
	$areacodes[] = 716;
	$areacodes[] = 717;
	$areacodes[] = 718;
	$areacodes[] = 719;
	$areacodes[] = 720;
	$areacodes[] = 724;
	$areacodes[] = 727;
	$areacodes[] = 731;
	$areacodes[] = 732;
	$areacodes[] = 734;
	$areacodes[] = 737;
	$areacodes[] = 740;
	$areacodes[] = 754;
	$areacodes[] = 757;
	$areacodes[] = 758;
	$areacodes[] = 760;
	$areacodes[] = 763;
	$areacodes[] = 765;
	$areacodes[] = 767;
	$areacodes[] = 770;
	$areacodes[] = 772;
	$areacodes[] = 773;
	$areacodes[] = 774;
	$areacodes[] = 775;
	$areacodes[] = 778;
	$areacodes[] = 780;
	$areacodes[] = 781;
	$areacodes[] = 784;
	$areacodes[] = 785;
	$areacodes[] = 786;
	$areacodes[] = 787;
	$areacodes[] = 801;
	$areacodes[] = 802;
	$areacodes[] = 803;
	$areacodes[] = 804;
	$areacodes[] = 805;
	$areacodes[] = 806;
	$areacodes[] = 807;
	$areacodes[] = 808;
	$areacodes[] = 809;
	$areacodes[] = 810;
	$areacodes[] = 812;
	$areacodes[] = 813;
	$areacodes[] = 814;
	$areacodes[] = 815;
	$areacodes[] = 816;
	$areacodes[] = 817;
	$areacodes[] = 818;
	$areacodes[] = 819;
	$areacodes[] = 828;
	$areacodes[] = 830;
	$areacodes[] = 831;
	$areacodes[] = 832;
	$areacodes[] = 835;
	$areacodes[] = 843;
	$areacodes[] = 845;
	$areacodes[] = 847;
	$areacodes[] = 848;
	$areacodes[] = 850;
	$areacodes[] = 856;
	$areacodes[] = 857;
	$areacodes[] = 858;
	$areacodes[] = 859;
	$areacodes[] = 860;
	$areacodes[] = 862;
	$areacodes[] = 863;
	$areacodes[] = 864;
	$areacodes[] = 865;
	$areacodes[] = 867;
	$areacodes[] = 868;
	$areacodes[] = 869;
	$areacodes[] = 870;
	$areacodes[] = 872;
	$areacodes[] = 876;
	$areacodes[] = 878;
	$areacodes[] = 901;
	$areacodes[] = 902;
	$areacodes[] = 903;
	$areacodes[] = 904;
	$areacodes[] = 905;
	$areacodes[] = 906;
	$areacodes[] = 907;
	$areacodes[] = 908;
	$areacodes[] = 909;
	$areacodes[] = 910;
	$areacodes[] = 912;
	$areacodes[] = 913;
	$areacodes[] = 914;
	$areacodes[] = 915;
	$areacodes[] = 916;
	$areacodes[] = 917;
	$areacodes[] = 918;
	$areacodes[] = 919;
	$areacodes[] = 920;
	$areacodes[] = 925;
	$areacodes[] = 928;
	$areacodes[] = 931;
	$areacodes[] = 936;
	$areacodes[] = 937;
	$areacodes[] = 939;
	$areacodes[] = 940;
	$areacodes[] = 941;
	$areacodes[] = 947;
	$areacodes[] = 949;
	$areacodes[] = 952;
	$areacodes[] = 954;
	$areacodes[] = 956;
	$areacodes[] = 959;
	$areacodes[] = 970;
	$areacodes[] = 971;
	$areacodes[] = 972;
	$areacodes[] = 973;
	$areacodes[] = 975;
	$areacodes[] = 978;
	$areacodes[] = 979;
	$areacodes[] = 980;
	$areacodes[] = 984;
	$areacodes[] = 985;
	$areacodes[] = 989;

$areacode = substr($phone, 0, 3);
 $clean = true;
 foreach($areacodes as $findcode)
 {
   preg_match("/".$findcode."/", $areacode, $matches);
   if(count($matches) > 0)
   {
     $clean = false;
   }
 }
 if($clean)
 {
   return 'The area code you entered was invalid. Please verify your phone number.';
 }
 if(substr($phone, 3, 1) == '0' || substr($phone, 3, 1) == '1') {
	return 'The phone number you entered was invalid. Please verify your phone number.';
 };

 ?>
pcpros2go 08 May, 2010
I ran into a couple of things using this. It's not broke or anything. Being that this is serverside validation, if there was an error I wanted it to republish the stuff that the person initially put in.

Upon setting the Republish fields if error occured to Try to Republish, the email field was filled in with javascript. This is due to the Email Cloaking plugin in Joomla. So that needed to be turned off.

The other minor issue is that I also use the Captcha feature. If I had the Captcha setup to use fonts then I couldn't re-submit the form as it kept telling me that the Captcha code was incorrect. Setting Captcha to use "Without Fonts" fixed the problem.
GreyHead 08 May, 2010
Hi pcpros2go,

There's also a 'Skip on republish' box that you can use to avoid republishing the Captcha code.

Bob
pcpros2go 09 May, 2010
I see the skip on republish, two things though.

I don't see a name for the captcha item and the captcha doesn't show on republish. I do get a new captcha code but it won't accept it when I type it in.
This topic is locked and no more replies can be posted.