Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pedro Silva_85657

Comparação de Strings

Recommended Posts

Partes do código importantes:

    function Encrypt($string)
    {
	    for($x = 0; $x < strlen($string); $x++)
	    {
            $value = ord($string[$x]);
		    $value += (4^$x) * ($x % 20);

		    if($value > (0xff))
			    $value -= 256;
            
            $string[$x] = chr($value);
	    }
	    return $string;
    }


        while (!feof ($arquivo)) 
        {
            $linha = fgets($arquivo, 4096);
            if(strstr($linha,"Key"))
            {
                $explodido = explode(" = ", $linha);
                $key = $explodido[1];
                continue;
            }
        }


        $senhanha =  Encrypt($senha);
        echo Encrypt($senha);        
        echo $key;
        
        if(strcmp($senhanha, $key) == 0)
        {
		    header("Location: ucp.php");
		    if(isset($_POST['lembrar']))
		    {
			    setcookie("nome", $usuario);
                setcookie("senha", $senha);
		    }
		    else
		    {
			    setcookie("nome", $usuario, 3600 + time());
                setcookie("senha", $senha, 3600 + time());
		    }
	    }
        else
        {
            unset($_SESSION['usuario'], $_SESSION['senha']);
            header("Location: erro.html");
        }

O resultado é esse:@H{yewO}ÅÖ@H{yewO}ÅÖ .

 

Notei que há um espaço no final, porém nenhuma parte do código insere esse caractere.

Alguém consegue me ajudar? No caso, a página acusa o teste "if(strcmp($senhanha, $key) == 0)" como falso, quando na verdade, é verdadeiro.

 

Grato.


Alguém?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sua função Encrypt gera além de espaços, quebras de linha.

 

Faça o teste:

var_dump( Encrypt( '01234567890abcdefghijklmnopqrstuvxwyz!@#$%¨&*()?,.<>:;\'"][{}-_=+ºª/' ) );

Saída:

string '06>H4:BL˜®¼ÂØð
¦Ìôj|¦Þ$J2Txž&Y‹ÂzR¤¼$R5Æ÷$Vß	J™~·÷$âj·(}fÓî;^³ªx' (length=70)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como sua "key" ocupa apenas um linha e a senha pode conter quebra de lina, é certo que nunca vai combinar [inline]strcmp( $senhanha, $key )[/inline]

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.