Great tutorial, I enjoyed reading it very much =)
I know PHP security is not the main topic of this tutorial and I also have no idea about this in 2011, but I just wanted to point out that today:
Instead of doing:
$variable = $_GET['Some_user_input_name'];
Do:
$variable = mysql_real_escape_string($_GET['Some_user_input_name']);
is not considered best practice for handling user input sent to SQL. While escaping characters that have special meaning in whichever SQL engine and version you are using is good, it is an approach where one mistake means SQL injection is possible. Instead,
prepared statements should be used. This way, SQL knows what the statement is and what kind of data to expect. So if there is something wrong with the data, SQL can reject it rather than execute arbitrary command.
If you read this and have the time, please add a note to the quoted code above that prepared statements are best practice in such contexts. If you don't agree, feel free to disregard this comment.