This is not safe. "if (! $ username &&! ​​$ password) {" check only "username" and "password" is non-NULL, and can be any value.

To protect against SQL Injection use mysql_real_escape_string

"SELECT * FROM users WHERE username = '". Mysql_real_escape_string ($ username). "' AND password = '". Mysql_real_escape_string ($ password). "'"