Not really a question for here I guess, but here's the answer.
First come first go, the page that loads the fastest will get the bid and the other will be notified that his/her bid is too low.
Programming language doesn't mather, ASP, PHP, everything will work if you programm it the right way. Cronjobs are not needed, if there's a datetime field in the database you are able to check the current time against the end time and thus allowing a bid or not (and for viewing all auctions this is used to display an auction or not). However, you could use a cronjob that scans your database for ended auctions and perhaps archive them in another table to keep your active auction database clean (same for all bid-logs etc)
Im not sure what you WOULDN'T do for safety,.. if your sending peoples data across the website, you might consider an SSL certificate to secure their personal details. And ofcourse all default security like checking values, integers, escaping database values etc.
Also, there are a lot of sites making use of jQuery/javascript right now. This way you can see the auction live. It's nothing more than having a javascript function running on an interval making a request to a PHP file which fetches the current bid/bid end and perhaps other information and displaying it every X second(s) to the screen.