Ir para conteúdo

POWERED BY:

Arquivado

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

Athos Felipe

[Resolvido] Sessões em PHP

Recommended Posts

Bom dia IMaster's, sou iniciante nesta linguagem e queria saber como faço nesta situação: Tenho um site com quatro páginas, os usuários acessam por default primeiramente a página index.php só que caso eles digitem em cima(URL) o endereço da próxima página acessa normalmente sem passar pelas anteriores, alguém com alguma idéia?

Desde já, obrigado.

 

"Um ao outro ajudou, e ao seu companheiro disse: Esforça-te" Is 41:6

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi direito sua dúvida. explica melhor

 

Por exemplo tenho um site com duas páginas, a primeira é para login correto?: www.domínio.com/login e a segunda é cadastro: www.domínio.com/cadastro. Se o usuário chegar na url e digitar www.domínio.com/cadastro ele não vai precisar passar pela tela de login, queria forçá-lo a passar por lá...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com qual linguagem dinamica você esta fazendo o login do cara ? ASP, php.. ?

 

Voce tera que verificar com ela, e nao com Javascript..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para não precisar sair do IMasters pra resolver esta dúvida coloquei aqui o tutorial indicado pelo colega Daniel-DF:

 

 

Tutorial PHP – Sistema de Login Utilizando Sessões

 

Posted by arthur in PHP, Tutoriais on 16 de junho de 2009

 

Neste tutorial mostrarei como fazer um simples sistema de login de usuário, utilizando sessões, e com consultas ao banco de dados.

 

Dando continuiade aos tutorias de PHP, vou mostrar agora como criar um sistema de login de usuário, conectando com o banco de dados MySQL, e gravando os dados em Sessões.

 

Primeiramente, você deverá ter um servidor com suporte PHP instalado em seu computador, ou então alguma hospedagem, para testar a aplicação. Se desejar instalar um servidor e não souber como, leia o tutorial de instalação do EasyPHP que escrevi a alguns meses.

 

Vamos começar!

 

Primeiramente, crie o banco de dados. No nosso caso escolhi o nome “tutoriais”, pois irei utilizá-lo em outros artigos.

 

Depois que o banco estiver criado, o próximo passo é criar a tabela de usuarios.

CREATE TABLE IF NOT EXISTS `usuario` (
 `id` int(6) NOT NULL AUTO_INCREMENT,
 `nome` varchar(255) NOT NULL,
 `login` varchar(255) NOT NULL,
 `senha` varchar(255) NOT NULL,
 PRIMARY KEY (`id`));

Com a tabela criada, vamos agora povoá-la:

INSERT INTO `usuario` (`id`, `nome`, `login`, `senha`) VALUES (1, 'Arthur Sorriso', 'sorriso', '698dc19d489c4e4db73e28a713eab07b');

O campo senha, está encriptado no formato MD5, para uma melhor segurança. Aqui ela significa apenas “teste”.

 

Agora, o próximo passo é criar o formulário de login.

 

form_login.php

<strong>Sistema de Login</strong>
<form action="autenticar.php" method="post">
Login: <input name="login" type="text" />
Senha: <input name="senha" type="password" />
<input type="submit" value="Acessar" /></form>

Explicando o código:

 

A primeira linha é apenas um título, para ficar organizado. Nada de mais.

 

Na segunda começamos a criar o formulário. Utilizamos a tag form. O parâmetro action informa o destino que a página vai quando o botão “Acessar” é presionado. O parâmetro “method” pode ser “get” ou “post”. Para este utilizaremos “post” por ser mais seguro. No “get”, os dados do formulário serão enviados via endereço no browser, o que não queremos.

 

Na terceira linha criaremos o campo para o usuário digitar o login. Para isso utilizamos a tag “input” com tipo texto.

 

Na quarta linha criaremos o campo para senha. É análogo ao campo de login, a única diferença é o tipo, que agora passa a ser “password” de forma que quando o usuário digitar algo, isto aparecerar como asterisco(*).

 

Na quinta linha criaremos o botão para submeter o nosso formulário. Para isso utilizamos a tag “input” com tipo “submit”. E depois fechamos o formulário.

 

Vamos agora criar a página que fará a conexão com o nosso banco de dados.

connect.php

<?php
$host = "localhost";
$user = "root";
$password = "";
$dbname = "tutoriais";
mysql_connect($host, $user, $password) or die("Erro ao tentar se conectar!");
mysql_select_db($dbname)or die("Erro ao selecionar o banco!");
?>

Explicando o código:

 

Primeiramente pegamos as variáveis necessárias para a conexão no banco de dados. A primeira é o host para conectar. Na maioria dos casos será localhost mesmo. Depois usuário e senha do banco de dados. E por último o banco de dados que será utilizado. Como falei lá em cima, o banco que utilizarei é o tutoriais.

 

Depois criaremos a nossa conexão. Para isso utilizaremos a função mysql_connect e passaremos como parâmetros as variáveis de cima. Caso ocorra um erro, será mostrada a mensagem escrita dentro do die().

 

Por fim fazemos a seleção do banco de dados que iremos utilizar.

Simples.

 

Agora vamos para a parte mais complicada, mas não difícil, do tutorial. A página que será responsável pela autenticação do usuário, criando assim sua sessão.

 

autenticar.php

<?php
include("connect.php");

//Recebendo os dados do formulário
$login = addslashes($_POST["login"]);
$senha = md5(addslashes($_POST["senha"]));

$sql = "SELECT * FROM usuario WHERE login = '$login' AND senha = '$senha'";
$rs = mysql_query($sql);

if(mysql_num_rows($rs) == 1) {
$user = mysql_fetch_array($rs);
//conferindo o login e senha para segurança
if($login == $user['login']){
	//se entrou, entao o login é igual
	if($senha == $user['senha']){
		//se entrou, então a senha também é igual
		$logado = "1";
		$id_user = $user['id'];

		//criando a sessão
		session_start();
		$_SESSION["id_user"] = $id_user;
		$_SESSION["logado"] = $logado;

		//depois que criarmos a sessão, 
                       //vamos redirecionar para a página privada
		header("Location: cadastro.php");
	} else {
		echo "A senha não confere!";

	}
} else {
	echo "O usuário não confere!";
}
}else {
echo "Usuário ou senha inválidos. Tente novamente.";
}
?>

Explicando o código:

 

Primeiramente incluimos o arquivo connect.php, a fim de estabelecermos a conexão com o banco de dados.

 

//Recebendo os dados do formulário

$login = addslashes($_POST["login"]);

$senha = md5(addslashes($_POST["senha"]));

 

Depois iremos receber as variáveis passadas pelo formulário. A função addslashes() serve para tratarmos nossas Strings recebidas, afim de evitar qualquer ataque de Sql Injection. Ela funciona da seguinte forma: sempre que encontrar qualquer aspa simples (’) ou dupla (”), ele adiciona uma barra invertida antes dela, ficando por exemplo \’. Uma das formas de invasão de sites mais simples é esta, digitando por exemplo ‘or 1=1 –. Esta é uma forma de se evitar. Continuando, a função md5() serve para encriptar a senha, já que a do banco está encriptada, a que se passa no formulário deverá também o ser, para comparamos.

 

Na próxima criamos uma variável para receber nossa string sql. Ela seleciona tudo (*) da tabela usuario, onde o login for igual ao da variável e a senha também. Simples.

 

Na próxima linha executamos o sql.

 

$sql = "SELECT * FROM usuario WHERE login = '$login' AND senha = '$senha'";

$rs = mysql_query($sql);

if(mysql_num_rows($rs) == 1) {

 

A seguir, testamos se o comando retornou alguma linha na consulta. Se não, o usuário e a senha poderá ter sido escrito errado, ou até mesmo não existir.

 

Se a consulta estiver correta, entraremos no nosso if.

 

$user = mysql_fetch_array($rs);

//conferindo o login e senha para segurança

if($login == $user['login']){

//se entrou, entao o login é igual

if($senha == $user['senha']){

 

A primeira linha dentro do if cria um array na variável $user com os dados coletados no banco de dados.

 

A seguir, conferimos se o conteúdo da variável é igual ao conteúdo vindo pelo formulário, evitando assim também alguma invasão.

 

Depois de conferidos o usuário e a senha, iremos ao próximo trecho:

 

//se entrou, então a senha também é igual

$logado = "1";

$id_user = $user['id'];

//criando a sessão

session_start();

$_SESSION["id_user"] = $id_user;

$_SESSION["logado"] = $logado;

//depois que criarmos a sessão, vamos redirecionar para a página privada

header("Location: cadastro.php");

 

Primeiramente atribuimos o valor 1 à variável $logado, já que o usuário escreveu tudo corretamente, e depois guardamos o id do usuário no banco na variável $id_user.

 

Agora podemos criar nossa sessão inicializando ela primeiramente, e depois criando suas variáveis.

 

A seguir, redirecionamos à página que queremos que os usuários logados acessem.

 

As próximas linhas são apenas fechamentos dos ifs e tratamentos de erros, com os elses.

 

Agora iremos para a nossa página privada, que só poderá ter seu conteúdo visto se o usuário estiver logado.

 

cadastro.php

<?php
//Iniciando a sessão
session_start();
include("connect.php");
if($_SESSION['logado'] == 1){
$sql = "SELECT * FROM usuario WHERE id = ".$_SESSION['id_user'];
$rs = mysql_query($sql);
if(mysql_num_rows($rs)) {
	$user = mysql_fetch_array($rs);
	echo "<strong> Olá ".$user['nome']."!</strong> ";
	echo "<a href="logout.php">Sair</a>";
	echo "Esta é sua página privada. 
               Nos próximos tutoriais continuaremos com esta página.";
}
}else {
echo "Você não está logado. Tudo está oculto para você!";
}
?>

Explicando o código:

 

session_start();

include("connect.php");

if($_SESSION['logado'] == 1){

 

Nas primeiras linhas iniciamos a nossa sessão, e incluímos o arquivo de conexão com o banco. A seguir testamos se usuário está realmente logado, vendo se o conteúdo da variável de sessão $_SESSION['logado'] é igual a 1, conforme definimos no arquivo autenticar.php.

 

$sql = "SELECT * FROM usuario WHERE id = ".$_SESSION['id_user'];

$rs = mysql_query($sql);

if(mysql_num_rows($rs)) {

$user = mysql_fetch_array($rs);

echo "<strong> Olá ".$user['nome']."!</strong> ";

echo "<a href="logout.php">Sair</a>";

echo "Esta é sua página privada.

Nos próximos tutoriais continuaremos com esta página.";

}

 

Agora escrevemos o nosso conteúdo oculto a não logados. Aqui fiz apenas uma simples consulta para pegar o nome do usuário, e exibí-lo nas boas vindas. Em seguida, apresentei o link para o usuário se deslogar do sistema.

 

O restante do código é apenas fechamento de if, e um else para os usuários não logados.

 

Por fim, a página de logout.

 

logout.php

<?php
//Iniciando a sessão
session_start();
//destruindo a sessão
session_destroy();

Header("Location: form_login.php");
?>

Nela nós destruimos a sessão, e redirecionamos para a página de login.

 

Espero ter facilitado a vida da galera postando o conteúdo do tutorial aqui mesmo no site!

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.