è capitato più volte e sottolineo qui... usando "=" nei confronti anzichè "==" (sono due operatori diversi, in PHP) succede p.es.:

if ($a='7') { print 'ok'; } else { print 'no'; };

$a=7 è un'assegnamento, non un confronto, quindi ad $a è assegnato il valore 7 e l'intera operazione è considerata "valida", quindi TRUE e non può in pratica mai essere FALSE (in questo caso)

if ($a=='7') { print 'ok'; } else { print 'no'; };

$a==7 è un confronto e sarà TRUE se $a vale 7, FALSE altrimenti.