Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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');?>Sim ele cadastra como 0 ao ativar ele fica 1
E falta o q?
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?
sim é possível, mas o que falta?
Enviar o email , verificar o link, colocar a validação de status no login?
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.
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
use o select com um where validado = 1
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.
$query = sprintf("SELECT COUNT(id) FROM users WHERE UPPER(username,email) = UPPER('%s','%s') AND password='%s' AND campo_validacao = '1'",
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?
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.
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...
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