Ora bem... depois do Ryu^ me ter falado do teu caso, e me ter dito que fizeste validação javascript, decidi dar uma vista de olhos.
Como podes ver, tanto eu como ele estamos como administradores de novo e ainda estive a ver o que descobria das apostas, e eis as dicas que tenho para te dar:
As validações javascript que usaste, sozinhas, não servem de muito. O javascript corre no lado do cliente e pode ser alterado. Eu simplesmente apaguei os dois "ifs" que colocaste e o mysql injection corre 5*.
Solução? Simples. Uma validação que não possa ser alterada, ou seja, no php!
Quando estás a receber os dados no php ficas com, faz de conta
PHP:
$username = $_POST['username'];
E guardas na variável o valor que é enviado, certo? (Atencão que tanto o nome da variável como a key usada no POST são arbitrárias e servem para exemplo aqui.)
Ora agora, devias de ter uma validação como a que tinhas no javascript, mas desta vez aqui!
Podes optar pela solução que tinhas de encontrar valores não alfanuméricos, ou podes utilizar uma função que aconselho a googlares sobre ela chamada mysql_real_escape_string(). Existem outras maneiras de te protegeres contra estes ataques, umas mais avançadas que outras e então se entrares pelos lados do mysqli ainda mais tens para ver, mas começa pelo básico.
Por isso, resumidamente, aconselho algo do género...
PHP:
$username = $_POST['username'];
$username = mysql_real_escape_string($username);
Ou isso ou em vez da funcao de escape algo tipo isto:
PHP:
if ( ereg('[^a-zA-Z0-9]',$username) ) {
//Não é alfanumérico, termina aqui o processamento com um exit e mensagem de erro ou como quiseres.
}
Se aplicares isto a todas as variáveis de entrada em principio estás safo.
Lembra-te deste principio: Tudo o que vem do utilizador, tu não controlas e pode ter "malicias" agarradas, logo há que desconfiar de tudo o que o utilizador possa enviar. Seja username. Seja password. Ou a aposta por exemplo.
Até a cara ou coroa pode ser manipulada.
Bom trabalho e continua!
Gosto de ver pessoas entusiasmadas com projectos destes.