A mon avis, il n'y a pas d'erreur ds le code, regarde bien la source complète du passage en question :
$sql = "SELECT password FROM tadmin WHERE pseudo='".$login."'";
$req = mysql_query($sql) or die($sql."<br />".mysql_error());
// Si le login n'existe pas dans la base, on envoie sur une page d'erreur
if (mysql_num_rows($req) == 0)
{
header("Location: ./erreur_login.htm");
mysql_close();
return;
}
else
{
$rep = mysql_fetch_array($req, MYSQL_ASSOC);
}
// Sinon on compare le pass fourni avec celui de la base
if ($pass != $rep["password"])
{
$rep est bien défini avec le mysql_fetch_array. Donc amha il n'y a pas d'erreur

Pr ton autre méthode, envoie la moi par mail, je te dirai si c faisable ou pas. Si je penses à la même que toi, alors oui effectivement cela aurait pu être une autre méthode plus rapide, mais je l'ai bloquée volontairement :p
Dis moi ça par mail, je te dirai si on parle de la même idée.

P.S. : register_globals est activé sur free
