Ir para conteúdo

POWERED BY:

Arquivado

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

AlaorBarroso

Eu sei que não deveria estar acontecendo mas...

Recommended Posts

Eu sei que o PHP é uma linguagem server-side, porém tem um bug que está me chateando bastante, eu tenho um botão que serve para apagar o banco de dados... Quando a pessoa clica nesse botão aparece um campo para verificação de uma string, por questão de segurança, para se evitar que alguém apague acidentalmente. Eu mando para o arquivo PHP que irá apagar o BD o valor digitado e o valor que foi mostrado e os comparo, se forem iguais eu apago o BD, caso o contrário mostro uma mensagem de erro. Até aí tudo bem, o código funciona perfeitamente no firefox mas no IE não, o código nunca é validado... Eu pensei que pudesse ser algum problema com o campo do tipo "hidden" que recebe o valor do número a ser digitado... Mas eu dei um echo mostrando o valor a ser digitado e o valor que foi digitado e a saída foi perfeita, tanto um como outro foram passados pelo form mas o PHP não valida... Lembrando que ele só não valida no IE, no Firefox está tudo funcionando perfeitamente...

 

<?php$fileToOpen = "/var/www/validate.txt";$fileOpen = fopen( $fileToOpen, "r" );$tempData = fread( $fileOpen, filesize( $fileToOpen ) );$arrayData = explode( "\n", $tempData );$foo = rand( 0, 9 );$validate = $arrayData[$foo];?><span class="form">Você irá apagar todos os dados,<br />esse procedimento é irreversível, só continue caso<br />tenha certeza do que está fazendo.<br /><br />Para sua segurança é necessário que você confirme<br />o código abaixo para realizar a operação:<br /><br /><font size="+1"><b><?php echo( $validate ); ?></b></font><br /></span><form action="http://localhost/emptydata.php" method="post">   <input type="text" width="40" name="typed" class="form" /><br />   <input type="hidden" name="validate" value="<?php echo( $validate ); ?>" />   <input type="submit" name="submit" value="Confirmar" class="form" /></form>

Esse é o código do form de confirmação...

 

Agora o código do php que apaga o banco de dados de acordo com o digitado:

 

<?phpfunction apagaDB() {   mysql_connect( "server", "xxx", "xxx" );   mysql_select_db( "bbrelatorio" );   mysql_query( "DELETE FROM relatorio WHERE 1=1" );   echo( "<b>Os dados foram apagados com sucesso!</b><br /><br />" );   echo( "<a href=\"http://localhost/index.php\">Clique aqui</a> para voltar" );   mysql_close();}$typed = $_POST["typed"];$validate = $_POST["validate"];$foo = strcasecmp( $typed, $validate );if( $foo == 0 ){   apagaDB();} else {   echo( "O código de validação <b>não</b> confere!<br />" );   echo( "Os dados <b>NÃO</b> foram apagados! Volte e tente novamente.<br /><br />" );   echo( "<a href=\"http://localhost/index.php\">Clique aqui</a> para voltar" );}?>

Esse validate.txt tem em cada linha um código de validação... O que pode estar acontecendo? Lembrando que no firefox tudo funciona perfeitamente e no IE o arquivo que apaga o BD ESTÁ recebendo tanto o hidden quanto o digitado conforme eu já verifiquei com um echo...

 

Abraços galera, preciso de um help aí, inté!

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra... me diz uma coisa...

 

quando c vai fazer a confirmação, já tento ver o código fonte da página??

tipo ... Exibir > Código fonte

 

bom ... o q deve estar acontecendo é q o "$validate" pode estar retornando uma string com duas " (aspas) ... ae o HTML fica assim oh:

 

<input type="hidden" name="validate" value="fDCc9"78" />
notou q no meio tem uma aspas?? entao ... pode estar ocorrendo isso.

 

agora... se não for isso realmente é estranho não estar funfando no IE.

 

mas diz ae: onde c pego esse exemplo???

 

 

faz o seguinte onde tem isso:

PHP

[*]<?php

[*]        $fileToOpen = "/var/www/validate.txt";

[*]        $fileOpen = fopen( $fileToOpen, "r" );

[*]        $tempData = fread( $fileOpen, filesize( $fileToOpen ) );

[*]        $arrayData = explode( "\n", $tempData );

[*]        $foo = rand( 0, 9 );

[*]        $validate = $arrayData[$foo];

[*]?>

 

poe isso:

PHP

[*]<?php

[*]        $tempData = file( '/var/www/validate.txt');

[*]        $validate = $tempData[ rand( 0, 9 ) ];

[*]?>

 

 

 

dica: não use aspas duplas quando não tiver variável dentro da string: por exemplo: "Seu nome é $nome".

 

Usar aspas simples é ganho de performance no script PHP.

Tb economize nas variáveis p/ ganar memória.

 

abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não peguei o exemplo de lugar nenhum... Foi eu mesmo que fiz rsrsrs por isso ficou essa bizarrisse aí, eu não conhecia o file(), valeu a dica fera. Quanto ao problema com o IE eu vou verificar aqui.

 

EDITANDO: Brother, no código fonte aparentemente está tudo normail... olha um exemplo da linha do hidden:

 

<input type="hidden" name="validate" value="5NHGYTW" />

Valeu pelas dicas, aguardo outras sugestões e enquanto isso vou pesquisando aqui, abraços...

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.