Dates are tricky things. Well, not dates as such, but the eighteen thousand different ways that users have come up with to express dates as text. Most Americans will use the format "mm/dd/yyyy" or "m/d/yyyy"; the English and some English Canadians tend to use "dd/mm/yyyy" (the rest of English Canada has gotten rather used to the default US settings for Windows); French Canadians and most Europeans will use "yyyy-mm-dd" (though some will use "yyyy.mm.dd" just to annoy programmers); and some people just plain like to spell out the month, either in full or abbreviated and may decide to throw the weekday in just for kicks. For the sake of your own sanity, pick one and only one format that you'd be willing to accept, and enforce that decision with an iron fist.
As for validation, you want both JavaScript and PHP, not one or the other. JavaScript validation happens immediately in the browser, so the user doesn't have to wait for several seconds while your server-side code decides whether the values they entered are acceptable. It's much more user-friendly to give them immediate feedback when you can. (There are some things that can only be validated at the server. You can tell whether a field has been filled in or not, but you have to ask the server if the value is a duplicate, for instance.) But JavaScript validation is only a user convenience -- there is no guarantee that the user has JavaScript enabled, or that s/he might not be the type to fire up a JS debugger and skip through your validation for some reason (usually malicious or, in the case of corporate apps, in order to "time travel" and sign off on something they were supposed to have done last week). So you need to do real validation at the server as well.
In both cases, you are going to want to do two things. First, you'll want to check the value the user enters against a regular expression to make sure that it meets your desired format. Then you'll want to pull the text apart into its component parts (the day, the month, and the year) and create a real date object from those values. Both the JavaScript constructor "new Date()" and the PHP function "mktime()" let you build a date using parts. If you don't use any time components (just the day, month and year, with zeros in the hour, minute and second slots), the date you create will be at the stroke of midnight at the beginning of the day. You can compare that against a simple value (new Date() with no arguments in JavaScript, date() in PHP). Actually writing the code to do that would require knowing what date format you are using.
Give it a shot, and if you have problems, post your code. We'll be happy to help.