Ir para conteúdo

POWERED BY:

Arquivado

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

Hulkstar

logar apenas com e-mail ativado

Recommended Posts

Então a questão é o seguinte,eu queria liberar para o usuário logar apenas se o e-mail for ativado,sem o e-mail,se o e-mail não for ativado ele não conseguira logar..

 

* Alguém poder me ajudar e ver no que ta faltando no meu código,tentei varias coisas mais não deu muito certo,continuou logando normalmente

 

 
 <?php include "smarty/libs/Smarty.class.php";$smarty = new Smarty(); $smarty->template_dir = "smarty/templates";$smarty->compile_dir = "smarty/templates_c";$smarty->config_dir = "smarty/configs";$smarty->cache_dir = "smarty/cache"; session_start(); if($_POST) {require_once 'config.php';$username = $_POST['username'];$password = $_POST['password']; $conn = mysql_connect($dbhost,$dbuser,$dbpass)or die ('Error connecting to mysql');mysql_select_db($dbname);$query = sprintf("SELECT COUNT(id) FROM users WHERE UPPER(username) = UPPER('%s') AND password='%s'",mysql_real_escape_string($username),mysql_real_escape_string(md5($password)));$result = mysql_query($query);list($count) = mysql_fetch_row($result);if($count == 1) { $_SESSION['authenticated'] = true;$_SESSION['username'] = $username; $query = sprintf("UPDATE users SET last_login = NOW() WHERE UPPER(username) = UPPER('%s') AND password = '%s'",mysql_real_escape_string($username),mysql_real_escape_string(md5($password)));mysql_query($query); $query = sprintf("SELECT is_admin FROM users WHERE UPPER(username) = UPPER('%s') AND password='%s'",mysql_real_escape_string($username),mysql_real_escape_string(md5($password)));$result = mysql_query($query);list($is_admin) = mysql_fetch_row($result);if($is_admin == 1) {header('Location:admin.php'); } else { print"<script> window.location='';</script>"; } } else { $error = 'Senha ou login estão incorretos'; }} $smarty->assign('error',$error);$smarty->display('login.tpl');?>
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um campo status onde 0 -> inativo e 1 -> ativo, antes de logar verifica o status também.

 

Quando ele se cadastrar se for o caso, se cadastra com o status 0 e você envia um email de confirmação, quando confirmado muda o status dinamicamente para 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

então no caso so queria deixar o usuário logar,apenas se ele ativar o e-mail,sem ativar ele loga com sucesso



seria possível fazer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

então o que ta acontecendo é o seguinte,cadastrar envia o link certinho para o e-mail,ao clicar no link valida o e-mail tudo blz,mais ai vem o problema eu queria arrumar uma maneira de liberar a conta para o usuário somente depois de o link ser validado,mais validando ou não o e-mail ele consegue acessar a conta.



No caso creio que sim,queria uma forma, tipo assim valido o e-mail = consegue acessar conta,não valido e-mail = não consegue acessar conta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloca a validação do status na página de login

 

se o email digitado for correto

 

// valida

 

senão se a senha digitada for correta

 

// valida

 

senão se o status != '1'

 

// erro sua conta não está ativa

 

---

Tudo baseado no que você disse aqui

 

Sim ele cadastra como 0 ao ativar ele fica 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

use o select com um where validado = 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rogério Santana fiz algumas alterações e talzs..mais continua logando,olha como esta o código...

 

 $query = sprintf("SELECT COUNT(id) FROM users WHERE UPPER(username,email) = UPPER('%s','%s') AND password='%s'",mysql_real_escape_string($username),mysql_real_escape_string($email),mysql_real_escape_string(md5($password)));$result = mysql_query($query);list($count) = mysql_fetch_row($result);if($count == 1) {



webdevbr se estiver ai da uma olhada para ver se é algo do jeito que estou fazendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites


$query = sprintf("SELECT COUNT(id) FROM users WHERE UPPER(username,email) = UPPER('%s','%s') AND password='%s' AND campo_validacao = '1'",

Compartilhar este post


Link para o post
Compartilhar em outros sites

então tentei assim e outras maneiras,mais agora ta dando um erro na linha 26,não sei o que possa ser,alguém tem algum palpite?

 

$query = sprintf("SELECT COUNT(id) FROM users WHERE UPPER(username,email) = UPPER('%s','%s') AND password='%s' AND confirmed = '1'",
mysql_real_escape_string($username),
mysql_real_escape_string($email),
mysql_real_escape_string(md5($password)));
$result = mysql_query($query);
list($count) = mysql_fetch_row($result);
if($count == 1) {

 

 

a linha 26 é a:

 

 

 

list($count) = mysql_fetch_row($result);

 

 

lol ninguém aqui no fórum tem uma sugestão para o meu caso não?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sugestão? Sim, comece estudando lógica de algoritmos, sem isto você não programa nada...

 

No seu último erro, o problema é na query, use OR DIE(mysql_error()) para ver qual o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta mais em cima do que estou trabalhando,seria possível alguém me ajudar a desenvolver ou não tem como?

 

 

Enfim consegui resolver meu problema,muito feliz por ter conseguido exito,agradeço a todos que colocaram boa vontade para me ajudar...

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.