Ir para conteúdo

POWERED BY:

Arquivado

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

shapolin

[Resolvido] php5_OO e Session

Recommended Posts

Olá pessoal,estou com um problema meio grande.estou construindo um sistema todo O.O , e no login ele cria um objeto... e queria colocar ele na sessao para visualizar nas outras paginas o usuario.... eu tentei utilizar "serialize" mais não entendi o conceito nem como utiliza-loteria um geito mais simples de fazer isso?Desde Já Agradesço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado por responder.eu faco um objeto de uma classe minhae logo abaixo seto ele com as propriedades que desejo.em seguida eu aplico $user <- eh o objeto.$_SESSION['user']=serialize($user); e na outra pagina que eu quero apresentar.eu incluo o bean nas duas paginas$user = unserialize($_SESSION['user']);seria esses os códigos e da erroCall to a member function get() on a non-objectquando eu serializo e unserializo ele naum dah erro nais quando eu quero pegar um dado desse objeto naum consigo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim tenho nas duas paginas

 

estrututa de paginas

game

--index.php

--autentica.php

--logout.php

->bean

-----player.php

->nucleo

-----index.php

->banco

-----player.xml <- isso naum eh importante :D

 

pagina autentica.php esta na pasta

PHP
<?

          include ("bean/player.php");

          $player = new player();

          $_SESSION['jogador'] = serialize($player);

          echo "<br>Redirecionando...<br>";

          echo "<meta http-equiv='refresh' content='2;url=nucleo/'>";

?>

 

pagina /nucleo/index.php

PHP
<?

 include ("../bean/player.php");

 echo "ok";

 $player = unserialize($_SESSION['jogador']);

 print $player->getNome();

?>

 

bean /bean/player.php

PHP
<?PHP

 

class player{

 

 private $name, $login, $senha, $email;

 

   public function __construct() {

   }//constructor

 

#   public function __toString() {

#    return $this->name;

#   }//to string

   

   public function get($campo)

   {

      return $this->$campo;

   }//get

 

   public function set($campo,$valor)

   {

       $this->$campo=$valor;

       return true;

   }//set

   

   public function mostra(){

          return $this->$nome;

   }

 

  }//player-class

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

shapolin, olhei sua classe e vi que não há o método getNome(), chamado no arquivo index.php, dentro do diretório "nucleo".

Se entendi o que precisa, deveria usar:

 

PHP
print $player->get('name');

 

Porém, no construtor da classe você não define nenhuma das propriedades, então retornará vazio mesmo, a não ser que defina com seu método set().

Dê uma revisada na classe, pois o método mostra() está procurando uma propriedade que não existe ($nome - tem apenas $name).

 

Qualquer coisa, posta aí ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Anderson,eu fis os metodos revisei todo o código troquei muita coisa errada mais continua na mesma dá o mesmo erro Fatal error: Call to a member function get() on a non-object in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\game\nucleo\index.php on line 5linha 5 print $player->get('nome');já estou com o presentimento que deve ser o meu apache mais instalei tudo no padrão e configurei o php5 normal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

-- autentica.php --

 

		  include ("bean/player.php");		  $player = new player();		  $player->set('name','shapolin');		  $player->set('login','shapolin');		  $player->set('senha','teste');		  $player->set('email','shapolin@gawab.com');		  #vai jogar o objeto na sessao		  $_SESSION['jogador']=serialize($player);		  #vai passar a bola para o nucleo do game que vai ser a index do pesonagem		  echo "<br>Redirecionando...<br>";		  echo "<meta http-equiv='refresh' content='2;url=nucleo/'> "

-- /nucleo/index.php --

 

<? echo "ok"; $player = unserialize($_SESSION['jogador']); print $player->get('nome');?>

mesmo erro

 

 

Fatal error: Call to a member function get() on a non-object in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\game\nucleo\index.php on line 5

Compartilhar este post


Link para o post
Compartilhar em outros sites

Justamente, shapolin. Dê uma revisada nos nomes das propriedades e os que estão chamados.É importante adotar um padrão pra tudo, incluindo funções.Qualquer coisa, posta aí ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu denovo...

hehe

 

agora tenho certeza que não é um metodo meu que esta dando erro

revisei todo o código de cima a baixo

esta qki

 

<?PHP -=- /bean/player.php -=-class player{ private $nome, $login, $senha, $email;     public function __construct() {   }//constructor   public function get($campo)   {	  return $this->$campo;   }//get   public function set($campo,$valor)   {	   $this->$campo=$valor;	   return true;   }//set     }//player-class?>

 

 

		 -=- /autentica.php -=-		  include ("bean/player.php");		  $player = new player();		  $player->set('nome','Fernando');		  $_SESSION['jogador'] = serialize($player);		  echo "<br>Redirecionando...<br>";		  echo "<meta http-equiv='refresh' content='2;url=nucleo/'>";

 

-=- /nucleo/index.php -=- include ("../bean/player.php"); echo "ok"; $player = unserialize($_SESSION['jogador']); print $player->get('nome');

se for um erro de metodos ou de digitacao eu vou meenforcar......

já estou com esse código faz umas 5 semanas.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,o erro Fatal error: Call to a member function get() on a non-object in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\game\game\nucleo\index.php on line 5linha 5 do index.php print $player->get('nome');Já revisei todo o códigoe não tem chamadas de metodos errados ou erros de digitaçãoe quando eu coloco o session_start(); na nucleo/index.phpele dah o seguinte erroFatal error: Call to a member function get() on a non-object in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\game\game\nucleo\play.php on line 5alguem tem uma ideia o que pode estar acontecendo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá,

 

Se eu coloco o session_start(); na autentica.php

 

ele dá o seguinte erro

 

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\teste\autentica.php:2) in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\teste\autentica.php on line 3

 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\teste\autentica.php:2) in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\teste\autentica.php on line 3

 

-- esse é o codigo do arquivo --<link rel="stylesheet" type="text/css" href="css.css"><?PHP   session_start();   $banco = @simplexml_load_file("banco/".$_POST['login'].".xml");   if ( !$banco ){	 echo "Desculpe mais voce não eh cadastrado";	 echo "click aki para <a href='index.php'>voltar</a>";   }else{	   if ($banco->system->senha != $_POST['senha']){		  echo "Desculpe mais voce errou a sua senha ...";		  echo "<a href='index.php'>Tente denovo</a>";	   }else{		  echo "<table align=center>";		  echo "<tr><td align=center><img src=".$banco->system->img."></td></tr>";		  echo "<tr><td class=td-autentica>";		  echo "  Bem vindo  ".$banco->system->name." ";//		  include "nucleo/bean/player.php";//		  $player = new player();//		  $player->set('nome','fernando');//		  $player->get('nome');//		  $_SESSION['jogador'] = serialize($player);		  echo "</td></tr>";		  echo "<tr><td align=center class=td-autentica>";		  echo "  redirecionando... ";		  echo "</td></tr></table>";		  echo "<meta http-equiv='refresh' content='2; url=../game/nucleo/'>";//		  echo "<meta http-equiv='refresh' content='2; url=../game/nucleo/play.php'>";	   }   }?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,consegui passar pala sessao o objeto tive que seguir uma nomenclatura para conseguir- 1º o include da classe - 2º a session_start();- 3º o resto (pegar o objeto da sessao, gravar o objeto da sesao) agora tu tem acesso a classe e a sessao. eu pesquisei e tinha um kra falando que o php se perde quando tem a session_start primeiro do include :Dbom essa eu naum sabia eu estava fazendo tudo errado agora eu testei e funcionou...t+.

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.