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

Session - Iniciante


Guest - Paulo Vitor -

Pergunta

Guest - Paulo Vitor -

Galera sou iniciante em php e estou com o seguinte problema,

coloquei em meu site um sistema em php de newletter, acontece o seguinte :

o sistema está instalado e funciona direitinho, sendo que meu site é de fotos

ou seja queria que quando o usuario clicasse para ver alguma galeria de fotos, ele so deixaria o usuario visualizar as fotos se o usuario já for cadastrado no sistema de newsletter.

e clarow so solicitar uma vez o email e ele podera olhar quando voltar ao site...

assim evitando que toda hora que ele entrar no site digite o email dele...

me de uma luz ai o que devo fazer ???

tipow andei dando umas olhadas sobre session acho que seria o melhor caminhu não é? ???

me explica como faria ai galera... abraços a todos...

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Isso, se for para ele não precisar logar cada vez que entrar no site, terá que usar cookies. Session será usado para ver se ele está logado enquanto ele estiver no site.

Em todas sessões que você for usar session, dê um 'session_start();' no começo da página.

Depois é simples, quando ele se logar, depois de verificado a senha... diga que $_SESSION['logado'] é igual a 1. Sendo que por padrão o valor é 0 e se ele digitar login e senha errados também será 0.

$_SESSION['logado'] = 1;
Agora, nas páginas que você quer exigir que ele precise estar logado, basta:
if ($_SESSION['logado'] == 1) { echo "conteudo da página"; } // ou então dê um include (não tão seguro, uma vez que se ele souber o nome do arquivo que é incluído poderá acessar manualmente)... bom, no geral aqui você põe o que acontece se ele estiver logado.

else { 
echo "<script language=javascript>alert('Você não está logado');</script>"; } // aqui o que acontece caso ele não esteja logado.

Espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

Isso, se for para ele não precisar logar cada vez que entrar no site, terá que usar cookies. Session será usado para ver se ele está logado enquanto ele estiver no site.

Em todas sessões que você for usar session, dê um 'session_start();' no começo da página.

Depois é simples, quando ele se logar, depois de verificado a senha... diga que $_SESSION['logado'] é igual a 1. Sendo que por padrão o valor é 0 e se ele digitar login e senha errados também será 0.

$_SESSION['logado'] = 1;
Agora, nas páginas que você quer exigir que ele precise estar logado, basta:
if ($_SESSION['logado'] == 1) { echo "conteudo da página"; } // ou então dê um include (não tão seguro, uma vez que se ele souber o nome do arquivo que é incluído poderá acessar manualmente)... bom, no geral aqui você põe o que acontece se ele estiver logado.

else { 
echo "<script language=javascript>alert('Você não está logado');</script>"; } // aqui o que acontece caso ele não esteja logado.

Espero ter ajudado.

está mas no caso eu keru que ele redirecione para uma pagina .htm e não para uma php

o que devo fazer ???

como vou fazer com que a pagina leia antes essa funcao em php ???

abs grato.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

você quer que a página restrita seja em HTML? Daí qualquer um acessa.

me ajuda ai lek... plz... olha o codigo do meu login.php

<?php

//to startando a sessao !!! aí !!!
session_start();

require ("config.php");

function abre_conexao_db() {
global $db; global $TableNome; global $conexao; global $erro; global $n_erros;
$conexao = mysql_connect($db[host], $db[user], $db[senha]);
    if (!$conexao) { $erro.= "ERRO - Não foi possível conectar com o Banco de Dados" . mysql_erro();
    $n_erros++; exit;
    }
mysql_select_db($db[nome],$conexao);
    if (!mysql_select_db($db[nome],$conexao)) { $erro.= "ERRO - Não foi possível selecionar a tabela no Banco de Dados" . mysql_erro();
    $n_erros++; exit;
    }
}

function fecha_conexao_db() {
global $conexao;
mysql_close($conexao);
}

    abre_conexao_db();
    $jaexiste = mysql_query("select email from $TableNome WHERE (email='" . $ListaEmail . "')");
    $simjaexite = mysql_fetch_assoc($jaexiste);
           if ($simjaexite)  { $HTTP_SESSION_VARS['logado'] = 1;
        header("Location: fotos.php");
        }
        else
        {$HTTP_SESSION_VARS['logado'] = 0;
        echo "<script language=javascript>alert('Seu email não está cadastrado em nosso banco de dados.<br>Você será redirecionado para a tela de cadastro.');</script>";
        //header("Location: branco.php");
        }
        
fecha_conexao_db();
print ("<form method=post action='$PHP_SELF'>
<div align=\"center\">
<center>
<table width=$TableConfig[1] border=$TableConfig[2] bordercolor=$TableConfig[4] cellpadding=$TableConfig[7] cellspacing=$TableConfig[7] bgcolor=$TableConfig[3]>
<tr><td width='100%' align='center' valign='middle' bordercolorlight=$TableConfig[5] bordercolordark=$TableConfig[6] style=$TableConfig[9]>
$CabLista</td></tr>
<tr><td width='100%' align='center' valign='middle' bordercolorlight=$TableConfig[5] bordercolordark=$TableConfig[6] style=$TableConfig[9]>
<b>E-mail:</b><BR><input type=\"text\" name=\"ListaEmail\" size=$TableConfig[8] style=$TableConfig[10]><br>
<center><table border='0' cellpadding='0' cellspacing='0'>
<tr><td valign='middle' align='left' width='30' height='25'>
<td valign='middle' align='center'>
<input type=\"submit\" value=\" Enviar \" style=$TableConfig[11]></td>
<td valign='middle' align='right' width='30' height='25'>
</tr></table></center>
<font color=red size=1>$erro</font></form></td></tr></table></center></div>");

?>

Link para o comentário
Compartilhar em outros sites

  • 0

Hoje em dia não se use mais essas funções:

$HTTP_SESSION_VARS['logado'] = 0;
Mude pra isso:
$_SESSION['logado'] = 0;
galera funcionou mas não como eu keria... é o seguinte, eu keria que quando a pessoa clicasse em fotos ele faria lá o bendito teste se tiver com session logado =1 então ele aparece a tela de fotos senao ele aparece a tela de login, ateh ai tudo bem, ai quando chega na tela de login que tem o seguinte codigo
                    if ($Entrada == 1) {
        $_SESSION['logado'] = 1;
        header("Location: fotos.php");
        }else{
        $_SESSION['logado'] = 0;
        header("Location: cadastro.php");
        }

quando o usuario clica em fotos e não fez o login com email ainda , ele pula direto para o else, que no caso vai para a tela de cadastro, mas não keria assim, keria que ele mostrasse o form de login ai depois que testasse sim se email não existe no banco de dados ai sim ele vai pra tela de cadastro, mas parece que ele está indu direto... o que tem de errado ai ???

grato a todos...

Link para o comentário
Compartilhar em outros sites

  • 0

coé galera o codigo abaixo é o codigo do meu login.php, é o seguinte quando eu entro em fotos.php ele testa pra ver se a sessao 1 já está criada, se tiver ele visualiza a pagina de fotos se não ele teria que me direcionar para essa tela de login, sendow que ele está me direcionando direto pra tela de cadastra.php ...

me ajudem plz... que que eu fiz de errado ??? o problema deve está la no if de baixo agora onde nem sei...

abs me ajudem plz...

muito grato...

<?php
session_start();
require ("config.php");
function abre_conexao_db() {
global $db; global $TableNome; global $conexao; global $erro; global $n_erros;
$conexao = mysql_connect($db[host], $db[user], $db[senha]);
    if (!$conexao) { $erro.= "ERRO - Não foi possível conectar com o Banco de Dados" . mysql_erro();
    $n_erros++; exit;
    }
mysql_select_db($db[nome],$conexao);
    if (!mysql_select_db($db[nome],$conexao)) { $erro.= "ERRO - Não foi possível selecionar a tabela no Banco de Dados" . mysql_erro();
    $n_erros++; exit;
    }
}

function fecha_conexao_db() {
global $conexao;
mysql_close($conexao);
}
    
    abre_conexao_db();
    $Consultar = mysql_query("select email from $TableNome WHERE (email='" . $ListaEmail . "')");
    $Entrada = mysql_num_rows($Consultar);
                
                if ($Entrada == 1)
                { $_SESSION['logado'] = 1; } 
                    
                    if ($_SESSION['logado'] == 1){
                    header("Location: fotos.php");}
                    elseif ($_SESSION['logado'] == 0) {
                    header("Location: cadastra.php");}
                
print ("<form method=post action='$PHP_SELF'>
<div align=\"center\">
<center>
<table width=$TableConfig[1] border=$TableConfig[2] bordercolor=$TableConfig[4] cellpadding=$TableConfig[7] cellspacing=$TableConfig[7] bgcolor=$TableConfig[3]>
<tr><td width='100%' align='center' valign='middle' bordercolorlight=$TableConfig[5] bordercolordark=$TableConfig[6] style=$TableConfig[9]>
$CabLista</td></tr>
<tr><td width='100%' align='center' valign='middle' bordercolorlight=$TableConfig[5] bordercolordark=$TableConfig[6] style=$TableConfig[9]>
<b>E-mail:</b><BR><input type=\"text\" name=\"ListaEmail\" size=$TableConfig[8] style=$TableConfig[10]><br>
<center><table border='0' cellpadding='0' cellspacing='0'>
<tr><td valign='middle' align='left' width='30' height='25'>
<td valign='middle' align='center'>
<input type=\"submit\" value=\" Enviar \" style=$TableConfig[11]></td>
<td valign='middle' align='right' width='30' height='25'>
</tr></table></center>
<font color=red size=1>$erro</font></form></td></tr></table></center></div>");
?>

Link para o comentário
Compartilhar em outros sites

  • 0

quando entra no login ele está fazendo o if automaticamente keria que ele fizesse o if so se eu apretasse o botao enviar, como faço isso ??? abs gratooo d +++ avcs !!!!

coé galera o codigo abaixo é o codigo do meu login.php, é o seguinte quando eu entro em fotos.php ele testa pra ver se a sessao 1 já está criada, se tiver ele visualiza a pagina de fotos se não ele teria que me direcionar para essa tela de login, sendow que ele está me direcionando direto pra tela de cadastra.php ...

me ajudem plz... que que eu fiz de errado ??? o problema deve está la no if de baixo agora onde nem sei...

abs me ajudem plz...

muito grato...

<?php
session_start();
require ("config.php");
function abre_conexao_db() {
global $db; global $TableNome; global $conexao; global $erro; global $n_erros;
$conexao = mysql_connect($db[host], $db[user], $db[senha]);
    if (!$conexao) { $erro.= "ERRO - Não foi possível conectar com o Banco de Dados" . mysql_erro();
    $n_erros++; exit;
    }
mysql_select_db($db[nome],$conexao);
    if (!mysql_select_db($db[nome],$conexao)) { $erro.= "ERRO - Não foi possível selecionar a tabela no Banco de Dados" . mysql_erro();
    $n_erros++; exit;
    }
}

function fecha_conexao_db() {
global $conexao;
mysql_close($conexao);
}
    
    abre_conexao_db();
    $Consultar = mysql_query("select email from $TableNome WHERE (email='" . $ListaEmail . "')");
    $Entrada = mysql_num_rows($Consultar);
                
                if ($Entrada == 1)
                { $_SESSION['logado'] = 1; } 
                    
                    if ($_SESSION['logado'] == 1){
                    header("Location: fotos.php");}
                    elseif ($_SESSION['logado'] == 0) {
                    header("Location: cadastra.php");}
                
print ("<form method=post action='$PHP_SELF'>
<div align=\"center\">
<center>
<table width=$TableConfig[1] border=$TableConfig[2] bordercolor=$TableConfig[4] cellpadding=$TableConfig[7] cellspacing=$TableConfig[7] bgcolor=$TableConfig[3]>
<tr><td width='100%' align='center' valign='middle' bordercolorlight=$TableConfig[5] bordercolordark=$TableConfig[6] style=$TableConfig[9]>
$CabLista</td></tr>
<tr><td width='100%' align='center' valign='middle' bordercolorlight=$TableConfig[5] bordercolordark=$TableConfig[6] style=$TableConfig[9]>
<b>E-mail:</b><BR><input type=\"text\" name=\"ListaEmail\" size=$TableConfig[8] style=$TableConfig[10]><br>
<center><table border='0' cellpadding='0' cellspacing='0'>
<tr><td valign='middle' align='left' width='30' height='25'>
<td valign='middle' align='center'>
<input type=\"submit\" value=\" Enviar \" style=$TableConfig[11]></td>
<td valign='middle' align='right' width='30' height='25'>
</tr></table></center>
<font color=red size=1>$erro</font></form></td></tr></table></center></div>");
?>

Link para o comentário
Compartilhar em outros sites

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...