Ir para conteúdo
Fórum Script Brasil
  • 0

Loop com a variável


Hildds

Pergunta

Olá pessoal, boa tarde. Estou fritando aqui por que há um erro que não consigo enchergar no meu script, usei um sistema simples que se houver erro o cadastro não é continuado mais o script já inicia com o erro setado, segue meu script:

//---------------------------------------
include("config.php");
//---------------------------------------
function anti_injection($anti) {
$anti = get_magic_quotes_gpc() == 0 ? addslashes($$anti) : $anti;
$anti = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$anti);
$anti = strip_tags($anti);
return $anti;
}
//---------------------------------------
$login    = anti_injection($_POST["login"]);
$senha    = anti_injection($_POST["exA_Password"]);
$senha2    = anti_injection($_POST["exA_cPassword"]);
$email    = anti_injection($_POST["email"]);
$sexo    = anti_injection($_POST["sexo"]);
$erro = 0;
//---------------------------------------
$datab = mysql_connect  ($CONF['db_serv'], $CONF['db_user'], $CONF['db_pass']);
mysql_select_db($CONF['rag_db']);
//---------------------------------------
$checkuser = (mysql_num_rows(mysql_query("SELECT `userid` FROM `login` WHERE userid = '$login'")) != 0); {
$erro = 1;
}
if ($erro == 0) {
mysql_query("INSERT INTO login (userid,user_pass,sex,email) VALUES ('$login','$senha','$sexo','$email')");
header('Location: index2.php');
} else {
echo "erro";
if($logi == 1) {
$conf2 = "Já existe um usuário utilizando esse nome";
    }
}
mysql_close($datab);
?>

Exemplo, ele fica em um loop infinito no echo "erro"; se tiro todos os "sets" de erro ele apresenta erro no header por que acho que ficaria em um loop infinito com ele também, se colocar um meta tag lá fica mudando de página direto em loop, acho que é um erro besta que não estou vendo.

Obrigado ~

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0
Pra que isso? Ou melhor, que construção é essa?

$checkuser = (mysql_num_rows(mysql_query("SELECT `userid` FROM `login` WHERE userid = '$login'")) != 0); {
$erro = 1;
}

Mesma coisa que:

$checkuser = mysql_query("SELECT `userid` FROM `login` WHERE userid = '$login'");

$checkuser2 = mysql_num_rows($checkuser);

if($checkuser2 != 0) { $erro = 1;}

Mais o erro não é isso, já mudei. Tem mais alguma idéia ESerra?

Link para o comentário
Compartilhar em outros sites

  • 0

Mesma coisa que isso? Tem certeza? Então me explica porque as duas estruturas não dão o mesmo resultado mesmo, supostamente, sendo idênticas...

<?php
$erro = '';
$aa = 2;
$bb = 2;
$checkuser = ($aa != $bb);
{
$erro = 1;
}

echo $erro;

echo "<BR><BR><BR><BR><BR>";

$erro = '';
$aa = 2;
$bb = 2;
if($aa != $bb)
{
$erro = 1;
}

echo $erro;
?>
Na dúvida, olhe as estruturas de controle no manual... De qualquer maneira o que você fez foi misturar o operador ternário, o correto seria:
$erro = (mysql_num_rows(mysql_query("SELECT `userid` FROM `login` WHERE userid = '$login'")) != 0)?'1':'0';

Link para o comentário
Compartilhar em outros sites

  • 0
Mesma coisa que isso? Tem certeza? Então me explica porque as duas estruturas não dão o mesmo resultado mesmo, supostamente, sendo idênticas...

<?php
$erro = '';
$aa = 2;
$bb = 2;
$checkuser = ($aa != $bb);
{
$erro = 1;
}

echo $erro;

echo "<BR><BR><BR><BR><BR>";

$erro = '';
$aa = 2;
$bb = 2;
if($aa != $bb)
{
$erro = 1;
}

echo $erro;
?>
Na dúvida, olhe as estruturas de controle no manual... De qualquer maneira o que você fez foi misturar o operador ternário, o correto seria:
$erro = (mysql_num_rows(mysql_query("SELECT `userid` FROM `login` WHERE userid = '$login'")) != 0)?'1':'0';

ESerra obrigado pela dica mas estava usando a forma que postei pela segunda vez, só estava testando formas diferentes antes de postas para ver se resolvia meus problemas.

Link para o comentário
Compartilhar em outros sites

  • 0

@ESerra

Fiz o que você mandou e pela surpresa eu entrei diretamente ( Digitando no console /sistema.php sem mexer nos formulários ) ele acusou como resposta 4.

Ou seja ele não está pegando o value do $_POST ( eu acho ), agora o que fazer?

Obrigado pela ajuda.

Código:

//---------------------------------------

include("config.php");

//---------------------------------------

function anti_injection($anti) {

$anti = get_magic_quotes_gpc() == 0 ? addslashes($$anti) : $anti;

$anti = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$anti);

$anti = strip_tags($anti);

return $anti;

}

//---------------------------------------

$login = anti_injection($_POST["login"]);

$senha = anti_injection($_POST["exA_Password"]);

$senha2 = anti_injection($_POST["exA_cPassword"]);

$email = anti_injection($_POST["email"]);

$sexo = anti_injection($_POST["sexo"]);

//---------------------------------------

$datab = mysql_connect ($CONF['db_serv'], $CONF['db_user'], $CONF['db_pass']);

mysql_select_db($CONF['rag_db']);

//---------------------------------------

$checkuser = mysql_query("SELECT `userid` FROM `login` WHERE userid = '$login'");

$checkuser2 = mysql_num_rows($checkuser);

echo $checkuser2;

if($checkuser2 != 0) { $erro = 1;}

if ($erro == 0) {

mysql_query("INSERT INTO login (userid,user_pass,sex,email) VALUES ('$login','$senha','$sexo','$email')");

header('Location: index2.php');

} else {

echo "erro";

if($logi == 1) {

$conf2 = "Já existe um usuário utilizando esse nome";

}

}

mysql_close($datab);

?>

Vermelho - Pegar resposta do $checkuser2 .

Editado por Hildds
Link para o comentário
Compartilhar em outros sites

  • 0

@ESerra

Muito obrigado, consegui corrigir o erro do script ( parcialmente ), segue o código:

<?php
include("config.php");
//---------------------------------------
function anti_injection($anti) {
$anti = get_magic_quotes_gpc() == 0 ? addslashes($$anti) : $anti;
$anti = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$anti);
$anti = strip_tags($anti);
return $anti;
}
//---------------------------------------
$login    = anti_injection($_POST["login"]);
$senha    = anti_injection($_POST["senha"]);
if($CONF['md5_pass'] == 1) {$senha = md5($senha);}
$senha2    = anti_injection($_POST["senha2"]);
if($CONF['md5_pass'] == 1) {$senha2 = md5($senha2);}
$email    = anti_injection($_POST["email"]);
$sexo    = $_POST["sex"];
//---------------------------------------
$datab = mysql_connect  ($CONF['db_serv'], $CONF['db_user'], $CONF['db_pass']);
mysql_select_db($CONF['rag_db']);
//---------------------------------------
$checkuser = mysql_query("SELECT `userid` FROM `login` WHERE userid = '$login'");
$checkuser2 = mysql_num_rows($checkuser);
if($checkuser2 != 0) { $erro = 1; $logig = 1;}
if (empty($login)) {$erro = 1; }
if (empty($senha)) {$erro = 1; }
if ($erro == 0) {
mysql_query("INSERT INTO login (userid, user_pass, sex, email) VALUES ('$login','$senha','$sexo','$email')");
header('Location: index2.php');
} else {
header('Location: index3.php');
$msgcheck = "Ocorreu um erro no cadastro.";
if($logig == 1) {
$msgcheck = "Já existe um usuário com esse login.";
    }
}
mysql_close($datab);
?>

Eu usei o include dessa página em outra para poder mostrar o $msgcheck mas ele acusa o seguinte erro no topo da página:

Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files (x86)\VertrigoServ\www\cp\2.0\index3.php:3) in C:\Program Files (x86)\VertrigoServ\www\cp\2.0\sistema.php on line 38

Há alguma maneira de desabilitar essa mensagem já que de olho não há nenhum erro.

Editado por Hildds
Link para o comentário
Compartilhar em outros sites

  • 0

Esse erro ocorre porque você quer redirecionar (header('Location....) após enviar dados para o navegador.. o que você pode tentar fazer é colocar ob_start() antes de tudo (na página que recebe o include dessa) e depois de tudo colocar ob_end_flush(), note que um simples espaço em branco já gera essa mensagem de erro...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...