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

Problema com código php. Um erro que não consigo encontrar


Alex_DTP

Pergunta

Este é o código original de um curso que estou fazendo (dw+php+mysql do imasters) que está dando erro.

Alguém pode me dizer o que está acontecendo?

O erro é que o link para verificação da chave para criar uma nova senha não está funcionando.

http://localhost:8080/site/login-lembrete.php?action=criar-senha&key=123 //Chave inválida
http://localhost:8080/site/login-lembrete.php?action=criar-senha&key=2bcbe064b85f946cd35g876h4rt567hg //Chave válida que peguei do banco
Testei o link direto no browser com uma chave certa e uma errada e nas duas está exibindo a mensagem 'A chave informada é inválida' que só deve ser exibida quando a chave for inválida. Com a chave válida também aparece a mensagem, mas alterei a senha e o form funcionou. Então o problema não está no link, estou certo? E também, quando a chave é inválida deveria ser exibido o outro formulário, que é para a solicitação de uma nova senha. Mas fica no mesmo formulário e exibe a mensagem de chave inválida. Estou quebrando a cabeça para achar o erro, mas não estou conseguindo. login-lembrete.php
<?php require_once('Connections/connDB.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

$colname_rsVerificaChave = "-1";
if (isset($_POST['strUsrKey'])) {
$colname_rsVerificaChave = $_POST['strUsrKey'];
}
mysql_select_db($database_connDB, $connDB);
$query_rsVerificaChave = sprintf("SELECT COUNT(*) AS total FROM pn_usuarios WHERE strUsrKey = %s", GetSQLValueString($colname_rsVerificaChave, "text"));
$rsVerificaChave = mysql_query($query_rsVerificaChave, $connDB) or die(mysql_error());
$row_rsVerificaChave = mysql_fetch_assoc($rsVerificaChave);
$totalRows_rsVerificaChave = mysql_num_rows($rsVerificaChave);

if ( 1 == $row_rsVerificaChave['total'] ) {
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form")) {
$strKey = md5( uniqid( microtime()));
$updateSQL = sprintf("UPDATE pn_usuarios SET strUsrPassword=%s, strUsrKey = '$strKey' WHERE strUsrKey=%s",
GetSQLValueString($_POST['strUsrPassword'], "text"), // Aqui o autor esqueceu o MD5
GetSQLValueString($_POST['strUsrKey'], "text"));

mysql_select_db($database_connDB, $connDB);
$Result1 = mysql_query($updateSQL, $connDB) or die(mysql_error());
}
} else {
$msg_retorno = 'A chave informada é inválida';
}
$colname_rsDadosUsuario = "-1";
if (isset($_POST['strUsrEmail'])) {
$colname_rsDadosUsuario = $_POST['strUsrEmail'];
}
mysql_select_db($database_connDB, $connDB);
$query_rsDadosUsuario = sprintf("SELECT strUsrName, strUsrEmail, strUsrKey, COUNT(*) AS total FROM pn_usuarios WHERE strUsrEmail = %s GROUP BY strUsrEmail", GetSQLValueString($colname_rsDadosUsuario, "text"));
$rsDadosUsuario = mysql_query($query_rsDadosUsuario, $connDB) or die(mysql_error());
$row_rsDadosUsuario = mysql_fetch_assoc($rsDadosUsuario);
$totalRows_rsDadosUsuario = mysql_num_rows($rsDadosUsuario);


if ( isset( $_POST['action']) and $_POST['action'] == 'solicitar-senha' ) :
if ( 1 == $row_rsDadosUsuario['total'] ) :
$titulo = sprintf( '%s, crie uma nova senha em nosso site', $row_rsDadosUsuario['strUsrName']);
$mensagem = sprintf( '
Olá %s,

Utilize a URL abaixo para acessar nosso site e criar uma nova senha de acesso.

http://localhost:8080/site/login-lembrete....enha&key=%s
', $row_rsDadosUsuario['strUsrName'], $row_rsDadosUsuario['strUsrKey']);
$cabecalho = 'From: Nome do Site <sem-reposta@endereco-site.com.br';
mail( $row_rsDadosUsuario['strUsrEmail'], $titulo, $mensagem, $cabecalho);
else :
$msg_retorno = 'O e-mail informado não está cadastrado em nosso banco de dados.';
endif;
endif;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<?php if ( isset( $_GET['action'], $_GET['key']) and $_GET['action'] == 'criar-senha' ) : ?>
<?php if ( isset( $msg_retorno) ) : ?>
<p><?php echo $msg_retorno; ?></p>
<?php endif; ?><form name="form" method="POST" action="<?php echo $editFormAction; ?>">
<p>
<label for="strUsrPassword">Informe uma senha: </label>
<input type="password" id="strUsrPassword" name="strUsrPassword" />
</p>
<p>
<label for="strUsrPassword2">Confirme a senha: </label>
<input type="password" id="strUsrPassword2" name="strUsrPassword2" />
</p>
<p>
<input type="submit" value="Enviar" />
<input type="hidden" name="strUsrKey" value="<?php echo $_GET['key']; ?>" />
<input type="hidden" name="action" value="criar-nova-senha" />
</p>
<input type="hidden" name="MM_update" value="form" />
</form>
<?php else : ?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<p>
<label for="strUsrEmail">E-mail: </label>
<input type="text" id="strUsrEmail" name="strUsrEmail" />
</p>
<p>
<input type="submit" value="Enviar" />
<input type="hidden" name="action" value="solicitar-senha" />
</p>
</form>
<?php endif; ?>

</body>
</html>
<?php
mysql_free_result($rsDadosUsuario);

mysql_free_result($rsVerificaChave);
?>
Também não entendi porque o código exibe o "nome do usuário" e a "chave" novamente em seguida
http://localhost:8080/site/login-lembrete.php?action=criar-senha&key=%s
', $row_rsDadosUsuario['strUsrName'], $row_rsDadosUsuario['strUsrKey']);

Obrigado a todos que puderem me ajudar.

Alex

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...