Ir para conteúdo

Arquivado

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

junior almeida

duvida php + oreitanção a objetos

Recommended Posts

Tenho uma duvida sobre php + orientação a objetos.

estou desenvolvendo um sistema, na parte de login o usuário entra com os dados de e-mail e senha e um método faz uma consulta no banco para ver se os dados que foi digitados estão corretos

apos estar correto grava o id em uma sessao e armazeno o objeto gerado da consulta em uma variável usando o método setResultado, na pagina de usuario pego a sessao do id e faço uma consulta no banco passando o id e utilizo o método getResultado para pegar o objeto da consulta que me retorna. ate ai tudo bem mas me gerou uma duvida se outra pessoa fizer um login os dados que estavam armazenados na variável resultados vão ser perdidos ou os dados de variáveis ficam salvos em alguma especie de cookies.

 

exemplo: pessoa A fez o login seus dados foram setados em uma variável resultado logo em seguida a pessoa B faz o login ela também tem seus dados setados na variável resultado, os dados da pessoa A foi perdido ou ele fica salvo em algum lugar.

 

não sei se ficou confuso mas se alguém puder me tirar essa duvida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se foi no mesmo dispositivo, e na mesma navegação (mesma hora, navegador, IP...), seria basicamente isso:

 

$pessoa = "João"; // Primeira pessoa que fez login
$pessoa = "Maria"; // Segunda pessoa que fez login

//Perceba que a variavel $pessoa recebeu valor 2 vezes (como você explicou)
//portanto, o valor final da variavel vai ser: Maria
//pois, de acordo com a ordem, Maria foi a ultima a fazer login, entao a variavel tera sempre o ultimo valor
//você pode conferir isso fazendo:

echo $pessoa;

//Resumindo, João será "esquecido", e Maria estará armazenada na variavel $pessoa

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo essa era minha duvida, mas em um sistema onde a pessoa faz o login isso seria algo vulnerável para colocar no meu sistema ou não.

em vez de guardar os dados de um select em uma variável eu deveria guardar em uma sessao?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com certeza utilize sessão, não há motivos pra guardar em variáveis. Quando o usuário clicar num botão "Sair", é só apagar a sessão e pronto, novo pra re-uso. E também, a sessão expira automaticamente...

 

Recomendo: https://www.devmedia.com.br/criando-sessao-para-login-no-php/27347

Compartilhar este post


Link para o post
Compartilhar em outros sites

estou de volta ainda não consegui entender direito o que esta acontecendo

abaixo esta a parte do meu código onde estou com duvidas.

 

painelUsuario.php

 

<?php   
        $query = new DbFunctions();
        $id = $_SESSION['idUsuario'];

        $query->select("SELECT * FROM usuarios WHERE id = '$id'");

       print_r($query->getResult());
    ?>

 

 

dbFunctions.php

 

private $result;

public function getResult(){return $this->result;}
private function setResult($r){$this->result = $r;}

public function select($sql){
        $query = $this->conecta()->query($sql);
        foreach($query as $row){
            $this->setResult($row);
            return true;
        }
    }

 

a minha duvida é nessa variável result que esta recebendo o objeto do select

quando a pessoa A fizer o login e a pessoa B também fizer o login o dado da pessoa A vai se perder?

 

fiz um teste me mostrando o resultado do print

pessoa A:

A.thumb.png.d98fbf859c399bc8880ad823f63ba71e.png

 

abrir uma janela anonima e fiz o login com a pessoa B

 

B.thumb.png.63aee6f6d7906f6852f2597b386acc77.png

 

os dados da pessoa B sobrepôs os dados da pessoa A, mas se eu recarregar a pagina da pessoa A, me mostra os dados corretos dela.

ao recarregar a pagina da pessoa A ela não deveria me mostrar os dados da pessoa B já que ela foi  a ultima pessoa a fazer o login?

 

me desculpem mas ainda estou com essa duvida se puderem me dar uma luz pra entender melhor agradeço. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, não irá sobrepôr. As sessões são um vínculo entre o browser (navegador) e o servidor (PHP). É criado um arquivo, no servidor, utilizando informações do browser e no browser é salva uma referência deste arquivo.

 

Se outro usuário entrar e criar uma sessão, ela será diferente e estará em um arquivo diferente. Desta forma, não irá apagar as sessões de outros usuários.

 

Talvez o artigo abaixo lhe tire algumas dúvidas:

https://diogobemfica.com.br/como-funciona-as-sessoes-do-php/

 

Outro ponto, é que a sua dúvida não tem relação com orientação à objetos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Paulo Correia
      Tenho uma dúvida, ou acho que estou fazendo errado (rsrsrsrs).

      Seria assim, numa classe que seria a Pai (em arquivo separado) eu teria 
      o construct que faria os setters numas váriaveis private, mais ou menos 
      assim:

      <?

      namespace UmNomeQualquer;

      class Pai {

           protected $_var;

           public function __construct($var) {

               $this->_var = $var;

           }

      }

      ?>

      E numa outra que seria a Filha(o) (em arquivo separado) eu leria esta 
      variável, certo?

      <?

      namespace UmNomeQualquer;

      class Filha extends Pai {

           public function mostra() {

               return $this->_var;

           }

      }

      ?>

      Mas quando eu vou testar dá erro falando que não passei todos os 
      argumentos ao construtor:

      <?

      include "pai.php";
      include "filha.php";

      use Nome\Pai;
      use Nome\Filha;

      $pai = new Pai("123");

      $filha = new Filha();

      echo $filha->mostra();

      ?>

      Mensagem de erro:

      PHP Fatal error:  Uncaught ArgumentCountError: Too few arguments to 
      function Nome\Pai::__construct(), 0 passed in test.php on line 11 and 
      exactly 1 expected in pai.php:8
      Stack trace:
      #0 test.php(11): Nome\Pai->__construct()
      #1 {main}
         thrown in pai.php on line 8

      Onde estou errando??

      Não é para não repetir o código, (DRY), isto não inclui as variáveis??

      Desde já agradeço,

      Paulo
    • Por Misael Silva
      Olá, membros do forum, gostaria de saber de um livro de PHP que ensina-se a desenvolver códigos php de um loja virtual, um e-commerce, ate encontrei esse  livro https://www.thiengo.com.br/e-commerce-com-php-e-mysql, porém descobri que não é orientado a objeto, um ponto que ficou a desejar, vocês tem dicas de outros livros semelhantes? Agradeço!
    • Por marcelobbt
      Comecei a aprender PHP por conta própria e estudei diversos materiais. Com o tempo comecei a usar a programação orientada a objetos, ou pelo menos achei que estava usando. De uns tempos para cá, comecei a ficar em dúvida se estaria fazendo da forma correta. Então busquei outros materiais, revi os antigos e veio uma dúvida que não consegui resposta e gostaria de saber se podem me ajudar.
       
      Quando pego uma série de registros de um banco de dados, devo coloca-los num único objeto, ou criar um objeto para cada registro?
       
      Para clarear minha pergunta segue mais detalhes de como faço até hoje.
      Eu utilizo o CodeIgniter e então criei um model chamado CRUD onde obtenho os valores desejados de qualquer tabela do banco de dados, por exemplo, usando a função abaixo:
       
      public function SelecionaTodos ($tabela) { return $this->db->get($tabela); } Até este ponto está tudo num único objeto. Mas vamos dizer que vou trabalhar com os dados da tabela "aluno". Então queria pegar os dados que essa função retorna e jogar na classe Aluno para fazer as rotinas do sistema. Aí que vem a dúvida se devo jogar os valores todos como um array, ou crio um objeto para cada registro retornado, enfim, gostaria de ouvir a opinião dos especialistas ou mais experientes. 
       
    • Por Will871
      Boa tarde, galera.
      Sou novato no PDO, e estou tendo uma dúvida sobre como receber a variável de conexão do banco de dados em um método.
      Tenho o seguinte código:
       
      banco.php
      <?php try {     $BD_host = "localhost";     $BD_banco = "jacyfash_loja";     $BD_usuario = "root";     $BD_senha = "";     $conn = new PDO("mysql:host=".$BD_host.";dbname=".$BD_banco, $BD_usuario, $BD_senha); } catch (PDOException $i) {     die("Erro: <code>" . $i->getMessage() . "</code>"); } usuario.php
      <?php require_once 'banco.php'; class valida{     function login(){                  }          function cadastro(){         $nome = $_POST['nome'];         $usuario = $_POST['usuario'];         $email = $_POST['email'];         $senha = $_POST['senha'];         $sql = "INSERT INTO cliente(nome, usuario, email, senha) VALUES(:nome, :usuario, :email, :senha)"; //===================================================================================== //Sempre que tento acessar o $conn de dentro de uma function ele retorna erro dizendo que a variável não existe. ( Erro: Undefined variable: conn) //=====================================================================================         $stmt = $conn->prepare($sql);         $stmt->bindParam(':nome', $nome );         $stmt->bindParam(':usuario', $site );         $stmt->bindParam(':email', $email);         $stmt->bindParam(':senha', $senha);     }          function bloqueio(){              } } Já pesquisei muito sobre como fazer isso, mas não consegui nada. Se alguém puder ajudar, agradeço.   ^^
    • Por Emanuel Raul
      Olá... Comecei hoje a estudar PHPOO por conta própria, e já me deparei com uma dúvida.
      Qual a maneira correta de nomear as classes no PHP? NomeDaClass.php ou NomeDaClasse.class.php?
      Se for possível alguém me explicar se existe alguma diferença entra ambas eu agradeço desde já.
       
      Um Abraço...
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.