Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
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?
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
obrigado vou dar uma olhada
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:

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

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.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.
@Gabriel Heming, bem explicado.
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