Jump to content
Sign in to follow this  
luispires9

Sessões PHP, ajuda

Recommended Posts

luispires9

boas pessoal, estou aqui com um problema, sou novato no php, nao consigo fazer com q as sessoes funcionem bem. por exemplo se um guest no site nao fizer login consegue copiando o url da pagina reservada entrar na mesma sem login feito. alguem me pode dar uma ajudinha?

Queria fazer com que ao meter o url desta pagina abaixo, ele so aceitasse se o login estivesse feito.

Abraço

    <style type="text/css">
<!--
body table tr td h4 strong {
color: #FFF;
}
-->
</style>
<body background="bk.jpg">
<p> </p>
<div align="center">
    <table width="600" border="0">
      <tr>
        <td align="center" ><div align="center"><h2>Registos na Base de dados</h2></div></td>
      </tr>
      </table>
  </div>
<table width="1200" border="0">
  <tr align="center">
    <td width="30"><h4><strong>ID</strong></h4></td>
    <td width="390"><h4><strong>Nome</strong></h4></td>
    <td width="100"><h4><strong>Telefone</strong></h4></td>
    <td width="100"><h4><strong>Telemovel</strong></h4></td>
    <td width="110"><h4><strong>Telemovel (alt.)</strong></h4></td>
    <td width="170"><h4><strong>E-mail</strong></h4></td>
    <td width="150"><h4><strong>Facebook</strong></h4></td>
    <td width="150"><h4><strong>Twitter</strong></h4></td>



  </tr>
  <?php
  

  require_once('inc\connect_bd.php');
  echo "</p>";

  	$sql = "select * from contactos";
  	$resultado = mysql_query($sql) //executa querie
or die ("Nao foi possivel realizar o pedido.");

 while ($linha=mysql_fetch_array($resultado)) { 
 		echo "<tr>";
 	echo "<td>".$linha['id_contacto']."</td>";
	echo "<td>".$linha['nome']."</td>";
	echo "<td>".$linha['telefone']."</td>"; 
	echo "<td>".$linha['telemovel1']."</td>";
	echo "<td>".$linha['telemovel2']."</td>"; 
	echo "<td>".$linha['email']."</td>";
	echo "<td>".$linha['facebook']."</td>";
	echo "<td>".$linha['twitter']."</td>";



 	echo "</tr>";
	} 
?>
</table>
<div align="center">
  <?php
include ('inc\menu.inc');
?>

<h3>Pesquisa</h3>
<form method="get" action="submit">
<input type="text" name="search" value="Procurar..." id="searchinput" />
<input type="submit" value="OK"  id="searchinput"/>

</div>
<p> </p>
<form name="form1" method="post" action="">
  <label>
    <div align="center">
      <input name="logout" type="button" id="logout" onClick="location. href= 'logout.php' "value="          Logout          ">
    </div>
  </label>
</form>

Share this post


Link to post
Share on other sites
rjsma

No topo da página que queres proibir a visualização dos visitantes fazes o seguinte:


if (empty($_SESSION['id'])) {

header('Location: index.php');
exit();
}

Abraço

Share this post


Link to post
Share on other sites
luispires9

Eu se fizer isso, mesmo estando logado, volta ao index :S e eu so queria que voltasse caso nao estivesse logado :S

Share this post


Link to post
Share on other sites
KTachyon

Colocas qualquer coisa na sessão quando é iniciada e fazes a verificação indicada pelo azevedo nas restantes páginas.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
rjsma

Ele so volta á pagina do login caso a variavel session esteja vazia, se o login foi feito com sucesso o session tem que estar com algum valor, o id ou o nome de utilizador da sessao.

Share this post


Link to post
Share on other sites
Lfscoutinho

Boas,

Por exemplo, ao fazeres login adicionar uma chave chamada "logged" no array global $_SESSION e atribuis-lhe o valor true.

Depois fazes um if para verificar se essa chave existe e o valor é true. Se for, o utilizador está logado e pode ver a página, caso contrário não está e fazes qualquer coisa para ele não ver (por exemplo, redireccioná-lo para outra página ou apresentar uma mensagem a dizer que não tem permissões para ver esta página).

Exemplo

// Continuação do if onde verificas se o nome e a senha coincidem
$_SESSION['logged'] = true;

// Nas páginas que queres verificar se pode ou não ver
if( ! isset( $_SESSION['logged'] ) || ! $_SESSION['logged'] ) {

echo 'Não tem permissões';

} else {

echo 'Tem permissões';

}

Share this post


Link to post
Share on other sites
fabiomiguel3

Boas. Isto é muito simples. Ao verificar se o utilizador e a password coincidem fazes isto

session_start();

$_SESSION['login'] = $nome_do_utilizador; 

//depois na pagina que queres verificar se está feito o login ou nao fazes isto

session_start();
if(!isset($_SESSION['login'])){
   echo '<meta http-equiv="refresh" content="2;url=http://pagina a redirecionar/">';
exit();
}

Share this post


Link to post
Share on other sites
fabiomiguel3

Boas,

Por exemplo, ao fazeres login adicionar uma chave chamada "logged" no array global $_SESSION e atribuis-lhe o valor true.

Depois fazes um if para verificar se essa chave existe e o valor é true. Se for, o utilizador está logado e pode ver a página, caso contrário não está e fazes qualquer coisa para ele não ver (por exemplo, redireccioná-lo para outra página ou apresentar uma mensagem a dizer que não tem permissões para ver esta página).

Exemplo

// Continuação do if onde verificas se o nome e a senha coincidem
$_SERVER['logged'] = true;

// Nas páginas que queres verificar se pode ou não ver
if( ! isset( $_SERVER['logged'] ) || ! $_SERVER['logged'] ) {

echo 'Não tem permissões';

} else {

echo 'Tem permissões';

}

Posso saber o porquê de usares $_SERVER? E vou te ser o mais sincero possível. Tu em quase todas as intervenções (pelo menos em PHP) não dás uma pra caixa! Vou te dar um concelho. Em vez de andares a tentar mostrar o que não sabes, vai ler livros, ou o manual do php www.php.net .

Share this post


Link to post
Share on other sites
pedrosorio

Posso saber o porquê de usares $_SERVER? E vou te ser o mais sincero possível. Tu em quase todas as intervenções (pelo menos em PHP) não dás uma pra caixa! Vou te dar um concelho. Em vez de andares a tentar mostrar o que não sabes, vai ler livros, ou o manual do php www.php.net .

Ao ler o texto do post do Lfscoutinho, em que ele descreve que se deve "adicionar uma chave chamada "logged" no array global $_SESSION". Parece-me óbvio que foi um lapso ao escrever o código.

Acho que não é necessário insultar as pessoas, muito menos por estes lapsos.


Não respondo a dúvidas por mensagem.

Share this post


Link to post
Share on other sites
fabiomiguel3

Ao ler o texto do post do Lfscoutinho, em que ele descreve que se deve "adicionar uma chave chamada "logged" no array global $_SESSION". Parece-me óbvio que foi um lapso ao escrever o código.

Acho que não é necessário insultar as pessoas, muito menos por estes lapsos.

Não sei onde é que viste que insultei alguem. basta fazeres uma pequena pesquisa pelas mensagens dele aqui no forum para teres a mesma conclusão que eu.

Share this post


Link to post
Share on other sites
Lfscoutinho

Boas,

Antes demais, quero informar que já alterei, aquilo que foi um erro meu por mera distracção.


Caro @fabiomiguel3 a minha participação neste fórum baseia-se em ajudar quando posso e sei na área da programação, principalmente em PHP. Até à data ainda não tinha recebido nenhum feedback como o teu, nem sequer parecido, pelo que simplesmente vou ignorar.

Não sei o que te leva a dizeres isso e muito menos se tens alguma coisa contra mim por algum motivo, mas nem quero saber.

Para além disso, não me parece que sejas alguém para poder julgar a minha actuação neste fórum, isso cabe aos colaboradores (administradores e moderadores) fazer. Por isso, se achares que a minha participação aqui é má ou péssima e que em nada contribui para o desenvolvimento e melhoramento desta comunidade, pelo contrário, que contribui para piorar, aconselho-te a entrares em contacto com algum moderador/administrador e mostrar o que te leva a dizer isso e a propor que me bloqueiem a conta.

Até lá, vou continuar com aquilo que fiz até hoje: ajudar a comunidade naquilo que posso e sei.

- Peço desculpa pelo off-topic, mas não admito insultos, principalmente quando do meu ponto-de-vista nem tem quaisquer fundamentos.

Share this post


Link to post
Share on other sites
fabiomiguel3

@Lfscoutinho

Aquilo que disse foi uma critica e não um insulto. Se não sabes aceitar uma critica o problema não é meu. Eu quando faço uma intervenção em algum post tenho que ter a total certeza do que falo pk se não prefiro estar quietinho. E tu fazes o contrario. Faz uma breve analise do que tens postado no forum e depois diz alguma coisa. Eu não sou mais que ninguem. Mas isto revolta me um bocadinho.

cumps

Share this post


Link to post
Share on other sites
Lfscoutinho

Boas,

Para além disso, não me parece que sejas alguém para poder julgar a minha actuação neste fórum, isso cabe aos colaboradores (administradores e moderadores) fazer. Por isso, se achares que a minha participação aqui é má ou péssima e que em nada contribui para o desenvolvimento e melhoramento desta comunidade, pelo contrário, que contribui para piorar, aconselho-te a entrares em contacto com algum moderador/administrador e mostrar o que te leva a dizer isso e a propor que me bloqueiem a conta.

Faz isso e depois diz-me o resultado ;)

Share this post


Link to post
Share on other sites
scorch

@fabiomiguel3 O Lfscoutinho enganou-se, mais nada. Tenho a certeza que ele apenas posta quando tem a certeza, e tanho ainda mais certeza de que ele sabe do que fala aqui, até porque posso dizer que esta "matéria" é bem simples para quem percebe o mínimo de PHP, mesmo que não entenda o que se passa por detrás, entende a matéria em si. Aquilo que aconteceu foi que provavelmente o Lfscoutinho se enganou a escrever. Repito, acontece. Errar é humano. É para isso que serve uma comunidade, se alguém se engana os outros corrigem e ajudam-se mutuamente. :P

Espero que o caso fique encerrado por aqui. ;)


PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

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
Sign in to follow this  

×
×
  • 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.