L'if è corretto, prova così:

Codice PHP:
if(strcmp(trim($opwd), trim($npwd)) == 0)
{
$errore=1;$str_errore.="le password non coincidono
"
;} 
probabilmente la differenza tra le stringhr è data dal fatto che la funzione strcmp() effettua un confronto binary safe e magari nelle stringhe di sono caratteri di new line (\n).