Ir para conteúdo

POWERED BY:

Arquivado

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

ava.rj

Não acha asessão

Recommended Posts

Fiz um sistema de autenticação, e na hora de acessar a página restrita, não reconhece a sessão:

 

Arquivo verifica_login.php:

 

PHP

[*]<?

[*]if(($_POST[login]) AND ($_POST[senha])){

[*] $login = $_POST[login];

[*] $senha = $_POST[senha];

[*]

[*] session_start();

[*] $conec;

[*] $bco;

[*] $conectou = 0;

[*] include "conecta.php";

[*] if ($conectou){

[*] $stgsql="SELECT nome, nivel FROM users_priscila

[*]  WHERE

[*]  login='$login' AND senha='$senha'";

[*] $res=mysql_query($stgsql,$conec);

[*] if(mysql_num_rows($res)>0){

[*] $_SESSION[nome] = $nome;

[*] $_SESSION[nivel] = $nivel;

[*] $link="logado.php";

[*] header("Location:$link");

[*] } else {

[*] header("Location:erro_login.php");

[*] }

[*] }

[*]}

[*]?>

 

Ele aceita a consulta e direciona para o logado.php

 

Arquivo logado.php:

 

PHP

[*]<?

[*]session_start();

[*]

[*]// Use $HTTP_SESSION_VARS with PHP 4.0.6 or less

[*]if( (!isset($_SESSION[nome])) AND (!isset($_SESSION[nivel])) ) {

[*]  include "restrito.php";

[*]} else {

[*] $nome = $_SESSION[nome];

[*] $nivel = $_SESSION[nivel];

[*]?>

[*]... restante do site ...

 

Aqui, ele não reconhece a sessão e manda o script para o restrito.php.

 

O q tá eerado?

 

Grato.

Anderson

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum... talvez o registers globais esteve off... procura usar string dentro de aspas...

 

$_SESSION["nome"]

 

mais gravar sessao e dar header() tem um bugzin... as vezes nao grava a sessao (eu ja tive esse problema com um sistema para uma cliente, me deu muitaaa dor de cabeca) mais gracas a Deus eu consegui resolver

 

leia essa function

http://br.php.net/manual/pt_BR/function.se...write-close.php

 

ve se ela te ajuda

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

... mas pior é que eu uso um sistema igual em outro site que funciona !!! Está hospedado em outro servidor.Vou tentar fazer da mosa antiga, pra ver se funfa:session_register()[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usei o modo antigo com session_register e funcionou ...PHP Version 4.3.11Nessa versão não aceita o $_SESSION não?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso daí é o seguinte:Coloque o session_start() na primeira linha depois de <?Ou seja:<?session_start();Quando você passa valores em variaveis antes do session_start, ele dá erros como "headers already sent". Mas provavelmente o modo de "debug" do seu PHP está desabilitado!Tenta fazer isso e diz se funciona :) AbraçoeLoC

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara aki no trabalho eu tive problema com session tb.... e o meu problema tava pq tinha a linha de comentário antes, naum sei pq deu esse problema, mas tirei a linha e funcionou certinho aki....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso daí é o seguinte:

 

Coloque o session_start() na primeira linha depois de <?

 

Ou seja:

 

<?

session_start();

 

<{POST_SNAPBACK}>

Fiz isso e não adianta.

 

O lance é o seguinte... A consulta do banco dá positiva, então mando exibir o conteudo das variaveis e não aparece nada.

 

PHP

[*]<?

[*]session_start();

[*]

[*]if(($_POST[login]) AND ($_POST[senha])){

[*] $login = ($_POST["login"]);

[*] $senha = ($_POST["senha"]);

[*]

[*] $conec;

[*] $bco;

[*] $conectou = 0;

[*] include "conecta.php";

[*] if ($conectou){

[*] $stgsql="SELECT nome, nivel FROM users

[*]  WHERE

[*]  login='$login' AND senha='$senha'";

[*] $res=mysql_query($stgsql,$conec);

[*] if(mysql_num_rows($res)>0){

[*] $_SESSION[nome] = $nome;

[*] $_SESSION[nivel] = $nivel;

[*] echo "Nome: ".$nome;

[*] echo "<br>Nivel: ".$nivel;

 

Não exibe nada, aparece só:

 

Nome:

Nivel:

 

[]s

 

http://forum.imasters.com.br/public/style_emoticons/default/cry.gif vou chorar ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha seu codigo

 

PHP

[*]if(($_POST[login]) AND ($_POST[senha])){ 

[*] $login = ($_POST["login"])

[*] $senha = ($_POST["senha"])

usa assim

 

PHP

[*]if(($_POST["login"]) AND ($_POST["senha"])){ 

[*] $login = ($_POST["login"])

[*] $senha = ($_POST["senha"])

 

testa ai ... qualquer coisa posta ah da um echo nas variaveis $login e $senha para ver o conteudo delas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

PHP

[*]<?php

[*]

[*]session_start();

[*]

[*]if (($_POST['login']) && ($_POST['senha']))

[*]{

[*] $login = $_POST["login"];

[*] $senha = $_POST["senha"];

[*]

[*] $conectou = 0;

[*] include "conecta.php";

[*]

[*] if ($conectou)

[*] {

[*] $stgsql = "SELECT nome, nivel FROM users

[*] WHERE login='$login' AND senha='$senha'";

[*]

[*] $res = mysql_query($stgsql, $conec) or die(mysql_error());

[*]

[*] if (mysql_num_rows($res) > 0)

[*] {

[*] $rs = mysql_fetch_assoc($res);

[*] extract($rs);

[*]

[*] $_SESSION['nome'] = $nome;

[*] $_SESSION['nivel'] = $nivel;

[*] echo "Nome: ".$nome;

[*] echo "

Nivel: ".$nivel;

[*] }

[*] else

[*] {

[*] echo "Dados inválidos!";

[*] }

[*] }

[*] else

[*] {

[*] echo "Não conectou!";

[*] }

[*]}

[*]else

[*]{

[*] echo "Campo(s) em branco!";

[*]}

[*]

[*]?>

 

Testa ae...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Castor Jr.

Não adiantou, continua a mesma coisa, valeu http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Felipe Pena:

 

 

PHP

[*]if (mysql_num_rows($res) > 0)<br /><br /> $rs = mysql_fetch_assoc($res);<br /> extract($rs);<br /> <br /> $_SESSION['nome'] = $nome;<br /> $_SESSION['nivel'] = $nivel;<br />?>

 

Testa ae...

<{POST_SNAPBACK}>

Agora funcionou !!! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

Dá uam explicada na diferença que estas linhas fizeram !! Valeu http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma que realmente você estava com problema nas aspas para receber o conteúdo foi onde eu mexi .... mas enfim, você estava apenas comparando o resultado da query para saber se estava retornando alum registro da base nessa linha

 

if(mysql_num_rows($res)>0){

 

ai nosso amigo pena colocou o resultado da consulta num array associativo

 

$rs = mysql_fetch_assoc($res);

 

ai ele usou a função extract para importar variáveis a partir de um array

 

extract($rs);

 

segue o link para estudo da função extract

http://www.php.net/manual/pt_BR/function.extract.php

 

do resto era aspa mesmo

 

 

mas nada melhor que nosso amigo Felipe para comentar seu proprio codigo tente só ajudar ai falou

Compartilhar este post


Link para o post
Compartilhar em outros sites

É isso mesmo...

 

$rs = mysql_fetch_assoc($res); extract($rs);

Se $rs retorna um Array:

Array ( [nome] => 'Valor do nome no bd',           [nivel] => 'Valor do nivel do bd'         )

Como é o de costume, chamar-mos: $rs['nomeDoCampo'];, mas com extract() a chave passa a ser a variavel contendo o valor referente a chave. Exemplo: $nomeDoCampo.

 

É como fazem com 'variáveis variáveis'

foreach ($_GET as $chave => $valor)    $$chave = $valor;

Daí ao invés de eu usar $_GET['var'] uso apenas $var, é como simulasse neste caso o register_globals=On.

 

 

Espero ter conseguido explicar.

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

O lance era este!!

 

A consulta dava como dados válidos, mas na hora de printar não aparecia nada.

 

Como eu fazia assim em outros provedores e funcionava, nunca tentei desta maneira.

 

Brigado a todos !!

 

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

[]s

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.