Jump to content


Photo

Problema Com Página De Login Em Php


  • Faça o login para participar
Nenhuma resposta neste tópico

#1 Alex_DTP

Alex_DTP

    Novato no fórum

  • Usuários
  • 7 posts
  • Sexo:Não informado
  • Localidade:São Paulo ] SP

Posted 28/08/2008, 21:30

Pessoal, estou começando em programação web e me deparei com um problema. Será que alguém pode me ajudar?

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

O código é de uma página onde o usuário solicita uma nova senha. Ele insere o e-mail num formulário, é enviado um e-mail com um link com uma chave que através dele remete novamente a mesma página. O código confere a chave. Se estiver errada exibe uma mensagem de erro, se estiver correta exibe o outro formulário que é para a alteração da senha.

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

Não tem segredo, é um código simples, mas não estou achando o erro.

Será que alguém pode me dizer o que está acontecendo?

Ex.:
http://localhost:8080/site/login-lembrete.php?action=criar-senha&key=123 //Chave inválida[url="http://localhost:8080/site/login-lembrete.php?action=criar-senha&key=2bcbe064b85f946cd35g876h4rt567hg"]http://localhost:8080/site/login-lembrete....35g876h4rt567hg[/url] //Chave válida que peguei do banco

Testei o link direto no browser com uma chave certa e uma errada mas 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'); ?><?phpif (!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"),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.[url="http://localhost:8080/site/login-lembrete....enha&key=%s"]http://localhost:8080/site/login-lembrete....enha&key=%s[/url]', $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><?phpmysql_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




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq