Jump to content
MP123

Quem está online

Recommended Posts

MP123

Boas ppl .

Eu tenho uma duvida que é como é que eu sei quem é qe esta logado ? qual o id de quem esta logado pq eu preciso de

selecionar o id de quem esta logado para pesquisar apenas as informaçoes da pessoa que esta logada :c

Esta aqui o meu problema :c 

Deixo o codigo todo mais abaixo .

 $familias = mysql_query("SELECT `id`, `email`, `password`, `nome` , `nifnipc`, `morada`, `localidade`, `codpostal`, `tel` FROM `clientes` WHERE id = ".$id.""); 

<?php

require('/funcoes/ligar_bd.php');
ligacao();

if (!isset($_COOKIE['pb']))
    header("Location: login.php");

$id = (isset($_GET["id"])) ? (int) $_GET["id"] : 0;
$err = (isset($_GET["err"])) ? $_GET["err"] : "";
$avs = (isset($_GET["avs"])) ? $_GET["avs"] : "";
?>

    
    <div class="left_content">
  <div class="title_box">Conta</div>  
        <div class="border_box">
		 <br />
		<li><a href="conta.php?id=1">Dados</a></li>
		<li><a href="conta.php?id=2">Encomenda</a></li>
		<br />
</div> 

		  </ul>
</div>

               </div>
                   
			   
			   
                    <?php



                        switch ($id) {
                            case 1:
                                echo "<div class='center_title_bar'>Dados Pessoais (em construção)</div>";
                                echo "<div class='center_content'>";
	    echo "<div class='prod_box'>";
                                 
   echo "<a href=\"editar.php?id=1\"><img src=\"imagens/mais.png\" alt=\"\" />Editar dados</a><br/><br/>";
                                echo "<table BORDER='1'><tr><td> Email </td><td> Password </td><td> Nome </td><td> Nifnipc </td><td> Morada	</td><td> Localidade </td><td> CodPostal </td><td>Tel</td></tr>";
                               
$familias = mysql_query("SELECT `id`, `email`, `password`, `nome` , `nifnipc`, `morada`, `localidade`, `codpostal`, `tel` FROM `clientes` WHERE id = ".$id."");
                              
  while ($familia = mysql_fetch_array($familias)) {
	        $f_id = $familia["id"];
                                    $f_mail = $familia["email"];
                                    $f_pass = $familia["password"];
	        $f_nome = $familia["nome"];
	        $f_nif = $familia["nifnipc"];
	        $f_morada = $familia["morada"];
	        $f_localidade = $familia["localidade"];
	        $f_codpostal = $familia["codpostal"];
	        $f_tel = $familia["tel"];

echo "<tr><td>$f_mail</td><td>$f_pass</td><td>$f_nome</td><td>$f_nif</td><td>$f_morada</td><td>$f_localidade</td><td>$f_codpostal</td><td>$f_tel</td></tr>";

						  }
                                echo "</table>";

Share this post


Link to post
Share on other sites
brunoais

Cria uma tabela para as sessões.

Nessa tabela registas, no mínimo: O id do utilizador, data do ultimo acesso.

Qd alguém executa o login, crias a linha na tabela.

Qd alguém acede a uma página com sessão iniciada, atualizas a data do ultimo acesso.

Qd tentas saber se o login está feito, usas a data do ultimo acesso para comparar tendo em conta as regras de duração de sessões.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

Bem, venho deixar o meu contributo... O controlo de sessões activas através da base de dados é uma boa (se não a melhor) maneira de controlar os users activos... Portanto e seguindo o conselho do brunoais, aconselho-te a veres este post no site do Chris Shfilett sobre como ter as sessões a serem guardadas e controladas na base de dados:

http://shiflett.org/articles/storing-sessions-in-a-database

Abraço

Share this post


Link to post
Share on other sites
brunoais

Esse tem aí coisas q n percebo e q são um desperdício...

O maior exemplo desses é aqui:

$access = mysql_real_escape_string($access);

Oq usar o mysql_real_escape_string() perante algo teu? Já não tens confiança em ti próprio? O mysql_real_escape_string() é muito lento! Deve ser usado só e sempre que tens que meter uma string na base de dados que vem de dados que vêm do exterior ao programa.

Outro é:

Pq não gravar a data da ultima alteração como timestamp?

Criar mais que uma ligação à DB... Pode-se fazer mas muitos servidores grátis n o permitem.

+1 nota: Depois de estudar um pouco: Fazer aquela ligação está correto mas n devia de fechar, devia deixar aberto até ao final. O mysql_connect() reusa apontadores para a um resource de liagação à db mas se fecharmos 1, fechamos todos, se, por alguma razão, precisarmos da ligação à DB mais tarde, ela já não existe.

De resto está bem.

Só tem aqueles pormenores que não entendo


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

Olá brunoais...

Nesses pontos, tens razão. No entanto, de referir que o objectivo do código é ser simples e, em caso de programadores com conhecimentos mais evoluídos, optimizar o código.

No entanto, o mysql_real_escape_string() em todos os atributos passados para as funções - na minha opinião - não são demais... Não esquecer que são funções e que recebem parâmetros (não sabes de onde nem de quem, mesmo que esteja a ser usado pelo sistema...) e portanto devem ser escapados.

Quanto ao não guardar a data de alteração... Na realidade, se pensares bem, esse é o comportamento de uma sessão... O comportamento correcto é "Comparar o timestamp actual com o timestamp da criação da sessão... se tiver mais de X minutos, destroi a sessao, senao... renovar o timestamp"... que é isso que faz o REPLACE .... no caso de já existir remove o existente e regista com os dados actuais....

... mas esta eh a minha opinião.... Senão, tinhas que, no acto da criação validar com data de criação... com actualização de valores tinhas que validar com a data de actualização....

.... isto implica validares se já existe a sessão.... e isso faz-se com uma chamada à base de dados... é melhor como está não? :(

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.