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
Pergunta
Alex_DTP
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.
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 Também não entendi porque o código exibe o "nome do usuário" e a "chave" novamente em seguidaObrigado a todos que puderem me ajudar.
Alex
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.