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

Sessão


'ary

Pergunta

Saudações amigos!

Estou com dificuldades para conseguir fazer um simples sistema de login com sessão. Tenho muita pouca experiência com isto e, além de me fazerem essa gentileza de me ajudar com esse problema, gostaria que, enviassem dicas de artigos sobre sessão.

Bom, tenho um site que exibe produtos, a diferença de quem está logado para que está "off" é a exibição dos preços..

Para ve-los, é necessário logar!

o link de teste é: http://www.rosevendas.com.br/

essa index tem o seguinte código de sessão para verificar se há uma sessão aberta:

session_start();
include "conexao.php"; //conexao com o bd
$log=$_SESSION["login"];
$sen=$_SESSION["senha"];
$sql=mysql_query("SELECT * from TB_CADCLIENTE_CLI WHERE COD_CLI='$log' and SENHA_CLI='$sen' ",$db);

$resultado=mysql_num_rows($sql); //verifica se a query retornou algum valor, se retornar, é porque ta logado..


quando eu mando exibir os produtos, faz a mesma coisa, conecta, seleciona dados da tabela que quero e tem essa condição:
// se tiver "logado", exiba preço, senão, não mostre nada..
if(!$resultado>1){
$preço ='R$'.number_format($registro[VALOR_VENDA_PRO], 2, ',', ' ');
}
else {
$preço ='';
}


Bom, já fiz o login aqui, ele ta funcionando também, segue o codigo:
esse é a validação do login:
session_start();
require 'conexao.php';
$login=$_POST["login"];
$senha=$_POST["senha"];
$sql=mysql_query("SELECT * from TB_CADCLIENTE_CLI WHERE COD_CLI='$login' and SENHA_CLI='$senha' ",$db);
$total=mysql_num_rows($sql);

if($total!=0){
session_register("login"); // grava dentro da sessão
session_register("senha");
echo "<meta http-equiv=refresh content='0; url=revenda/index.php'>";
}

else {
echo "erro ao logar";
}[/codebox]

funciona BELEZA.. mas como não entendo muito bem, a sessão não funciona, como posso resolver isso?

Muito obrigada a todos que tiveram a paciência de ler até aqui..^^

Abraços.

Editado por 'ary
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Moça, o que parece estar acontecendo é que quando você loga o user você não define o que ele digitou como sessão você define apenas como varriavel

$login=$_POST["login"];

$senha=$_POST["senha"];

fazendo isto deve revolver

if($total!=0){
session_register("login"); // grava dentro da sessão
session_register("senha");
$_SESSION["login"] = $login // atribui valor digitado pelo usuário a sessão
$_SESSION["senha"] = $senha // atribui senha digitada a sessão
header("location: revenda/index.php");
}

// seria mais seguro se $login e $senha fossem redeclaradas trazendo os valores que estão no banco

Link para o comentário
Compartilhar em outros sites

  • 0

Norivan,

Deu certissimo, obrigada!

Bom, não entendi somente uma coisa..

A sessão LOGIN, em vez de armazenar o valor $login, por algum motivo desconhecido por mim, armazena o nome do banco.. o.O

veja no site: http://www.rosevendas.com.br/into/ login: 3 senha: 000

tem ideia do porque?

bj

Haa.. esqueci de incrementar, veja a tabela TB_CADCLIENTE_CLI:

COD_CLI NOME_CLI SENHA_CLI

3 ABILIO JOSE SOUTO NETO 000

login, quando não está logado:

include "conexao.php";

session_start();

$login=$_SESSION["login"];

$sen=$_SESSION["senha"];

if($login){

echo $login." - "; //aqui exibe ROSEVENDAS > nome do banco... ?????

$sql=mysql_query("SELECT * from TB_CADCLIENTE_CLI WHERE COD_CLI=$login' ",$db);

while($usuario=mysql_fetch_array($sql)){

$user=$usuario['NOME_CLI];

echo $user;}

echo "<a href=user_logout.php>sair do sistema</a>";

}

else{

formulario de login

}

Link para o comentário
Compartilhar em outros sites

  • 0

Moça,

$login é igual ao valor que o cara digitou no form ($_POST['login']) e a sessão login é igual a $login

Logicamente se o login do cara for 3, a sessão dele vai ser 3 e vai imprimir 3 quando você dar echo na sessão login

O login serve somente de filtro pro seu where no comando de select. Logo se você quer exibir o nome do carinha você terá de dar um echo na coluna CLI_NOME

ex:

$row = mysql_fetch_assoc($sql) 
    echo $row['CLI_NOME'];

Obs: No site ao fazer o upload da imagem redimensione elas antes de salvar no seervidor, seus thums estão pesados demais

Link para o comentário
Compartilhar em outros sites

  • 0

Hoo moço.. rs

eu mandei o cod. um tiquim errado..

Eu fiz aqui usando o GET e adicionando isso na hora de verificar se o login existe na tabela:

echo "<meta http-equiv=refresh content='0; url=index.php?id=$login'>";

se você ver la no site, deu certinho.. ^^

EBA!!

Moço... muitoo obrigada viu?! você é 10!

bj

Link para o comentário
Compartilhar em outros sites

  • 0

Nori.. tive um probleminha básico.. rs

Seguinte..

Eu queria saber como eu faço para conservar uma sessão aberta em outras páginas..

Lembra desse site ai que to fazendo, o da Rose Vendas?

quando a pessoa logar, somente irá exbir os preços..

mas isso so acontece na index.. no restante não ta dando certo.. o que posso fazer para ajeitar isso?

bju

Link para o comentário
Compartilhar em outros sites

  • 0

oi ESerra, eu fiz isso..

porem dá erro:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/rosevendas/www/content/meta.html:1) in /home/rosevendas/www/content/meta.html on line 1

entre no link:

http://www.rosevendas.com.br

obrigada!

Link para o comentário
Compartilhar em outros sites

  • 0

rss

ta no topo!

Seguinte, eu chamo meus METAS em todas as páginas via INCLUDE:

<? include "content/meta.html"; ?>
no arquivo meta.html:
<? session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="content-language" content="pt-br">

.....

Editado por 'ary
Link para o comentário
Compartilhar em outros sites

  • 0

Repare onde está o erro session_start() - linha 1!! rs :D

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/rosevendas/www/content/meta.html:1) in /home/rosevendas/www/content/meta.html on line 1

Editado por 'ary
Link para o comentário
Compartilhar em outros sites

  • 0

tente alterar meta.html para meta.php e

<? 
ob_start();
session_start();
ob_end_flush();
 ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="content-language" content="pt-br">

dica: de preferencia salva como utf-8 sem bom

Link para o comentário
Compartilhar em outros sites

  • 0

Nori.. deu a mesma coisa :/

Vou fazer o seguinte.. Vou postar as páginas aqui, pode ser?

O link para o site é: http://www.rosevendas.com.br

Login: aquela barrinha branca, o formulário:

include "conexao.php";  //conexao com o banco de dados.
$log=$_SESSION['login'];

//verifico se há sessão aberta!

  if (isset($_SESSION['login'])){ 
   $sql=mysql_query("SELECT * from TB_CADCLIENTE_CLI WHERE COD_CLI='$log' ",$db);
    while($usuario=mysql_fetch_assoc($sql)){
     $user=$usuario['NOME_CLI'];
      echo "Bem Vindo (a) - <b>".$user."</b>";
}      
      echo "<a href=user_logout.php> sair do sistema</a>";
}
 else{

?>
Exibo saudação e o form para o usuário logar! o action desse form para o código a seguir...
<? } ?>
Processa Login:
<?php
  session_start();
  require 'conexao.php';
   $login=$_POST["login"];
   $senha=$_POST["senha"];
  
   $sql=mysql_query("SELECT * from TB_CADCLIENTE_CLI WHERE COD_CLI='$login' and SENHA_CLI='$senha' ",$db);
   $total=mysql_num_rows($sql);
   
   if($total!=0){
    session_register("login"); // grava dentro da sessão
    $_SESSION["login"] = $login;// atribui valor digitado pelo usuário a sessão
    
    echo "<meta http-equiv=refresh content='0; url=index.php?id=$login'>";  // volta pra proxima INDEX do site.. o que tem de diferente? exbirá o preço se logar!!! 
    }
    
else {
echo "<script> alert('Login Incorreto') </script>";
}
?>
TODAS AS PÁGINAS:
<? include "content/meta.php"; ?>
Meta.php:
<?
ob_start();
session_start();
ob_end_flush();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

Bom, é isso..

se for necessario, eu zipo tudo e mando! rs

Um login válido: 3 senha: 000

Um 2° obs:

A index, funciona!!

se você navegar nos produtos.. desloga.. rs

Link para o comentário
Compartilhar em outros sites

  • 0

beleza.. ta la já!

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/rosevendas/www/content/meta.php:1) in /home/rosevendas/www/content/meta.php on line 3

aparece: 3

Link para o comentário
Compartilhar em outros sites

  • 0

bom agora faz isso em qualquer outra pagina....

se não aparecer é porque tem alguma coisa matando a sessão, dai verifique se tem no seu codigo algum session_destroy() ou similar

se aparecer dai provavelmente é porque em outra parte do codigo tem uma sessão sendo iniciada

dai você coloca um @ antes dela

@session_start()

isso inibe a exibição de alertas

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,2k
    • Posts
      652k
×
×
  • Criar Novo...