• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Umbus

Erro de sessao

27 mensagens neste tópico

Boas nao sei o que se passa no servidor antigo, nao me fazia isto e aqui esta a fazer, o caso e o seguinte, eu inicio a secçao, mas parece que ela nao fica quando vou para o backoffice e volta a uma pagina de erro :S:

Login

<?
    include("config.php");
$f_user = mysql_real_escape_string($_POST[f_user]);
$f_pass = mysql_real_escape_string($_POST[f_pass]);
$f_pass  = md5($f_pass);
$status = authenticate($f_user, $f_pass);

if ($status == 1)
{
session_start();

session_register("SESSION");

session_register("SESSION_USERNAME");
$SESSION_USERNAME = $f_user;

header("Location: admin.php");
exit();
}
else

{
header("Location: erro.php");
exit();
}

function authenticate($theuser, $thepass)
{
include("config.php");
global $ligar;

$ligar = @mysql_connect($host, $user, $pass) or die("Incapaz de conectar à base de dados!");

@mysql_select_db($db, $ligar) or die("Incapaz de selecionar à base de dados!");

$query = "SELECT id from blogumbus_utilizador WHERE utilizador = '$theuser' AND password = '$thepass'";

$result = @mysql_query($query, $ligar) or die ("Erro na query: $query. " . mysql_error());


if (mysql_num_rows($result) == 1)
	{
	return 1;
       		}

else
	{
	return 0;
	}
}
?>

admin

<?php
session_start();
if (!session_is_registered("SESSION"))
{
header("Location: erro2.php");
exit();
}
?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

essas funções tipo session_register() estão ultrapassadas.

Para guardares variaveis de sessão basta guarda-las no  array $_SESSION

Vê os exemplos de código aqui:

http://se2.php.net/session

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Lês o manual! :D

Se fores perguiçoso podes fazer scroll down até aparecer o código que se explica a si proprio.

ok... vou ser amigo... mas habitua-te a ler a documentação...

em vez de

session_register("variavel");
$variavel = "xpto";

basta-te fazeres isto...

$_SESSION["variavel"] = "xpto";

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Lês o manual! :D

Se fores perguiçoso podes fazer scroll down até aparecer o código que se explica a si proprio.

ok... vou ser amigo... mas habitua-te a ler a documentação...

em vez de

session_register("variavel");
$variavel = "xpto";

basta-te fazeres isto...

$_SESSION["variavel"] = "xpto";

Por a caso foi um pouco perguiça quando vi aquele texto todo :-[. Obrigado pela dica, vou tentar fazer isso a noite e depois digo qualquer coisa :).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nao funciona, ele entra no admin.php, so que vai automaticamente para a pagina erro2.php:

Mudifiquei isto (o resto esta tudo igual ao que ja mustrei):

     

  if ($status == 1)
{
session_start();
$_SESSION["SESSION"];
        $_SESSION_USERNAME["SESSION_USERNAME"] = "f_user";
header("Location: admin.php");
exit();
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nao funciona, ele entra no admin.php, so que vai automaticamente para a pagina erro2.php:

Mudifiquei isto (o resto esta tudo igual ao que ja mustrei):

     

  if ($status == 1)
{
session_start();
$_SESSION["SESSION"];
        $_SESSION_USERNAME["SESSION_USERNAME"] = "f_user";
header("Location: admin.php");
exit();
}

aahh...

  if ($status == 1)
{
session_start();
$_SESSION["SESSION"]; // <--- esta linha não serve para nada
        $_SESSION_USERNAME["SESSION_USERNAME"] = "f_user"; // <--- aqui tens que por a tua variavel e $f_user e não  a string "f_user"
header("Location: admin.php");
exit();
}

Uma coisa... não foste tu que escreveste esse código pois nao?

não era má ideia tentares percebe-lo ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Correcção, não é $_SESSION_USERNAME["SESSION_USERNAME"] mas sim $_SESSION["SESSION_USERNAME"]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma coisa... não foste tu que escreveste esse código pois nao?

não era má ideia tentares percebe-lo ;)

For ate fui, mas com base em outros scripts (pelos vistoss velhos), entao existem coisas quem nao que sei menos que outras, mas sei o que significa, ate porque fui eu que fiz essa linha que dizes tar mudificada XD

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Continua a nao dar... nao sera do admin.php?

session_start();
if (!session_is_registered("SESSION"))
{
header("Location: erro2.php");
exit();
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Onde tens:

  if ($status == 1)
{
session_start();
$_SESSION["SESSION"];
        $_SESSION_USERNAME["SESSION_USERNAME"] = "f_user";
header("Location: admin.php");
exit();
}

mete

  if ($status == 1)
{
session_start();
        $_SESSION["SESSION_USERNAME"] = "f_user";
header("Location: admin.php");
exit();
}

E, onde tens:

session_start();
if (!session_is_registered("SESSION"))
{
header("Location: erro2.php");
exit();
}

mete

session_start();
if (empty($_SESSION['SESSION_USERNAME']))
{
header("Location: erro2.php");
exit();
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

djthyrax... no primeiro e no segundo bloco de código... deves meter a variável $f_user em vez da string "f_user"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Limitei-me a copiar e corrigir os erros relacionados com as sessions, não olhei para o script todo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ES capaz entao de ver o uqe esta a falhar?  Alias nao a nada a falhar e fazer isto de outra maneira pois o servidor pelos vistos nao esta a aceitar a sessao, ja que com outros servidores da prefeitamente :S.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu acho que o problema não é do servidor.

Cria um ficheiro .php e coloca lá isto:

<?
session_start();
$_SESSION["teste"] = "Olá mãe!! Estou aqui!!";
echo $_SESSION["teste"];
?>

Coloca-lo no servidor e navega até ele. Se te aparecera mensagem "Olá mãe! Estou aqui!!" é porque não é problema do servidor.

O problema é que estas a tentar usar funções que já não se usam desde o php3.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Apareceu, entao o que e afinal? agora e que estou mesmo confuso, e que ele vai ao backoffice mas automaticamente vai a mensagem de erro2, como se nao tivesse la a secçao iniciada :S.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

primeiro tens que descobrir por onde é que a execução do programa está a ir.

Depois usas o print_r() para ver o conteudo das variaveis como o programa corre.

Mais do que isto não consigo ajudar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu sei como ele vai XD. form -> login -> admin -> erro2

Coloco o codigo no admin (o passo onde ele nao aceita o session e vai para o erro2)?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mudaste o admin como o djthyrax de disse?

tens que o fazer.

Se continuar a dar erro faz um dump do session antes do if.

podes usar a função que eu afixei na página anterior

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não da :S. O código esta assim:

LOGIN

  if ($status == 1)
{
session_start();
        $_SESSION["SESSION_USERNAME"] = f_user;
header("Location: admin.php");
exit();
}

ADMIN

session_start();
if (empty($_SESSION['SESSION_USERNAME']))
{
header("Location: erro2.php");
exit();
}

Tentei colocar o echo $_SESSION["SESSION_USERNAME"]; no erro2 mas nao aparece nada :thumbsup:.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

$_SESSION["SESSION_USERNAME"] = f_user;

Está mal. É:

$_SESSION["SESSION_USERNAME"] = $f_user;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sem sucesso :thumbsup:. podem ver e melhor para terem masi noçao do que aconteçe:

www.umbus.net

Vao a administrar, user: Umbus pass: admin

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

umbus... se cada caracter é um mistério para ti, é melhor mesmo leres qualquer coisa sobre php.

No manual oficial podes seguir o tutorial.

Não te deve demorar mais de duas horas a experimentar tudo pausadamente e em detalhe

http://www.php.net/manual/pt_BR/tutorial.php

depois aí sim podes ler a página sobre sessões no mesmo manual.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora