Eu estou hoje aqui para mostrar para vocês um script bem legal que fiz em php, trata-se de um sistema de login, onde o usuário pode alterar sua senha e se cadastrar no site, assim você pode dar comodidade ao seus clientes, vou tentar ser o mais explicito possível, mas para isso você precisa ter conhecimento básico em php e mysql, e para testar pode utilizar o wampserver, um servidor local onde você tem o phpmyadmin.
vamos ao que interessa!!!
primeiro precisamos de uma tabela, o código abaixo gera esta tabela:
CREATE TABLE `users` (
`userid` int(11) NOT NULL auto_increment,
`username` varchar(60) NOT NULL,
`password` varchar(60) NOT NULL,
`ativo` char(1) NOT NULL,
PRIMARY KEY (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
primeiro criamos a tabela user, e depois criamos os campos: userid do tipo int com valor não nulo e auto_increment, o que quer dizer que não precisamos atribuir valores a este campo, o próprio mysql vai fazer isto, o campo username do tipo varchar com tamanho 60 e valor não nulo, o password com tamanho 60 e o ativo do tipo char com tamanho 1.
depois você vai entender o porquê deste campo ativo.
agora vamos ao formulário de login que vai enviar as informações do usuário:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>login.php</title>
</head>
<body>
<h1> Cícero Joceilton </h1>
<h4> Juazeiro do Norte / Ce </h4>
<form name="form1" method="post" action="acesso.php">
<p align="right">Login
<input name="username" type="text" size="13" maxlength="60" />
Senha
<input name="password" type="password" size="13" maxlength="60" />
<input type="submit" name="Submit" value="Login" />
</font>
<br><br>
<a href="cadastro.php">Cadastre-se</a></p>
</form>
</body>
</html>
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>login.php</title>
</head>
<body>
<h1> Cícero Joceilton </h1>
<h4> Juazeiro do Norte / Ce </h4>
<form name="form1" method="post" action="acesso.php">
<p align="right">Login
<input name="username" type="text" size="13" maxlength="60" />
Senha
<input name="password" type="password" size="13" maxlength="60" />
<input type="submit" name="Submit" value="Login" />
</font>
<br><br>
<a href="cadastro.php">Cadastre-se</a></p>
</form>
</body>
</html>
O acesso php, para criarmos as sessões:
<?php
// começar ou retomar uma sessão
session_start();
// se vier um pedido para login
if (!empty($_POST)) {
// estabelecer ligação com a base de dados
mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('usuarios');
// receber o pedido de login com segurança
$username = ($_POST['username']);
$password = ($_POST['password']);
}
//verifica se algum dos campos não foram preenchios
if ($username=="" || $password=="") {
echo "preencha todos os campos";
echo "<br>";
echo "<a href='login.php'>voltar</a>";
} else {
// verificar o utilizador em questão (pretendemos obter uma única linha de registos)
$login = mysql_query("SELECT userid, username FROM users WHERE username = '$username' AND password = '$password' AND ativo = 's'");
if ($login && mysql_num_rows($login) == 1) {
// o utilizador está correctamente validado
// guardamos as suas informações numa sessão
$_SESSION['id'] = mysql_result($login, 0, 0);
$_SESSION['username'] = mysql_result($login, 0, 1);
echo "<p>Sessão iniciada com sucesso como {$_SESSION['username']}</p>";
header ("location: index.php");
} else {
// falhou o login
echo "senha e/ou usuario inválidos";
echo "<br>";
echo "<a href='login.php'> Voltar </a>";
}
}
?>
// começar ou retomar uma sessão
session_start();
// se vier um pedido para login
if (!empty($_POST)) {
// estabelecer ligação com a base de dados
mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('usuarios');
// receber o pedido de login com segurança
$username = ($_POST['username']);
$password = ($_POST['password']);
}
//verifica se algum dos campos não foram preenchios
if ($username=="" || $password=="") {
echo "preencha todos os campos";
echo "<br>";
echo "<a href='login.php'>voltar</a>";
} else {
// verificar o utilizador em questão (pretendemos obter uma única linha de registos)
$login = mysql_query("SELECT userid, username FROM users WHERE username = '$username' AND password = '$password' AND ativo = 's'");
if ($login && mysql_num_rows($login) == 1) {
// o utilizador está correctamente validado
// guardamos as suas informações numa sessão
$_SESSION['id'] = mysql_result($login, 0, 0);
$_SESSION['username'] = mysql_result($login, 0, 1);
echo "<p>Sessão iniciada com sucesso como {$_SESSION['username']}</p>";
header ("location: index.php");
} else {
// falhou o login
echo "senha e/ou usuario inválidos";
echo "<br>";
echo "<a href='login.php'> Voltar </a>";
}
}
?>
O verifica php, que vê se o usuario foi logado ou não
<?php
// iniciar uma sessão
session_start();
if (empty($_SESSION['id'])) {
// não existe sessão iniciada
// neste caso, levamos o utilizador para a página de login
header('Location: login.php');
exit();
}
?>
O cadastro php que cadastra novos usuarios:
// iniciar uma sessão
session_start();
if (empty($_SESSION['id'])) {
// não existe sessão iniciada
// neste caso, levamos o utilizador para a página de login
header('Location: login.php');
exit();
}
?>
O cadastro php que cadastra novos usuarios:
<html>
<head>
<title>cadastro</title>
</head>
<body>
<form name="cadastro" action="gravar.php" method="POST">
<p>login desejado
<label>
<input name="username" type="text"/>
</label>
</p>
<p>Escolha uma senha
<label>
<input name="senha" type="password"/>
</label>
</p>
<p>confirme sua senha
<label>
<input name="confirma" type="password"/>
</label>
</p>
<p>
<label>
<input type="submit" name="Submit" value="cadastrar" />
</label>
</p>
</form>
Já tem cadastro? <a href="login.php">Faça Login</a>
</body>
</html>
O gravar.php que grava no banco de dados:
<head>
<title>cadastro</title>
</head>
<body>
<form name="cadastro" action="gravar.php" method="POST">
<p>login desejado
<label>
<input name="username" type="text"/>
</label>
</p>
<p>Escolha uma senha
<label>
<input name="senha" type="password"/>
</label>
</p>
<p>confirme sua senha
<label>
<input name="confirma" type="password"/>
</label>
</p>
<p>
<label>
<input type="submit" name="Submit" value="cadastrar" />
</label>
</p>
</form>
Já tem cadastro? <a href="login.php">Faça Login</a>
</body>
</html>
O gravar.php que grava no banco de dados:
<?php
/*Desenvolvido por Cícero Joceilton
blog: http://www.cjpcturbo.blogspot.com
email: cicerojoceilton@gmail.com
Juazeiro do Norte / Ce */
//conexão com o banco de dados
mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('usuarios');
//recebendo por metodo POST
$username = $_POST['username'];
$senha = $_POST['senha'];
$confirma = $_POST['confirma'];
$ativo = "s";
$username = mysql_real_escape_string($_POST['username']);
$senha = mysql_real_escape_string($_POST['senha']);
$confirma = mysql_real_escape_string($_POST['confirma']);
if ($username == "" || $senha == "" || $confirma == "" ) {
echo "Preencha todos os campos";
echo "<br>";
echo "<a href='cadastro.php'>voltar</a>";
} else {
//verifica se já existe um usuário com o mesmo nome
$verifica = mysql_query("SELECT * FROM users WHERE username = '$username' ");
$resultado = mysql_num_rows($verifica);
//se houver um usuário com o mesmo nome
if ($resultado == 1) {
//imprime na tela a mensagem informando que o usuário já existe
echo "Este usuário já existe";
echo "<br>";
echo "<a href='cadastro.php'>voltar</a>";
}
//verifica se as senhas correspondem
else if ($senha == $confirma) {
//se as senhas corresponderem insere no banco de dados
$sql="
INSERT INTO users(
username, password, ativo)
VALUES(
'$username', '$senha', '$ativo')";
$query=mysql_query($sql) or die("Houve um erro na gravação dos dados, verifique os valores passados");
header("location: index.php");
//caso as senhas não correspondam
} else {
//imprime na tela a mensagem informando que as senhas não correspondem
echo "as senhas não correspondem";
echo "<br>";
echo "<a href='cadastro.php'>voltar</a>";
}
}
?>
O alterar_senha.php para alteração de senha do usuário:/*Desenvolvido por Cícero Joceilton
blog: http://www.cjpcturbo.blogspot.com
email: cicerojoceilton@gmail.com
Juazeiro do Norte / Ce */
//conexão com o banco de dados
mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('usuarios');
//recebendo por metodo POST
$username = $_POST['username'];
$senha = $_POST['senha'];
$confirma = $_POST['confirma'];
$ativo = "s";
$username = mysql_real_escape_string($_POST['username']);
$senha = mysql_real_escape_string($_POST['senha']);
$confirma = mysql_real_escape_string($_POST['confirma']);
if ($username == "" || $senha == "" || $confirma == "" ) {
echo "Preencha todos os campos";
echo "<br>";
echo "<a href='cadastro.php'>voltar</a>";
} else {
//verifica se já existe um usuário com o mesmo nome
$verifica = mysql_query("SELECT * FROM users WHERE username = '$username' ");
$resultado = mysql_num_rows($verifica);
//se houver um usuário com o mesmo nome
if ($resultado == 1) {
//imprime na tela a mensagem informando que o usuário já existe
echo "Este usuário já existe";
echo "<br>";
echo "<a href='cadastro.php'>voltar</a>";
}
//verifica se as senhas correspondem
else if ($senha == $confirma) {
//se as senhas corresponderem insere no banco de dados
$sql="
INSERT INTO users(
username, password, ativo)
VALUES(
'$username', '$senha', '$ativo')";
$query=mysql_query($sql) or die("Houve um erro na gravação dos dados, verifique os valores passados");
header("location: index.php");
//caso as senhas não correspondam
} else {
//imprime na tela a mensagem informando que as senhas não correspondem
echo "as senhas não correspondem";
echo "<br>";
echo "<a href='cadastro.php'>voltar</a>";
}
}
?>
<?php
/* Script desenvolvido por Cícero Joceilton da Silva Gomes
Pode Utilizar este script em suas aplicações gratuitamente
E qualquer dúvida pode me contactar: cicerojoceilton@gmail.com
Juazeiro do Norte / Ce */
include "verifica.php";
//conexão com o banco de dados
mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('usuarios');
//recebendo o pedido de alteração
$codigo = $_SESSION['id'];
$password = $_POST["senha"];
$confirme = $_POST["confirme"];
//verifica se as senhas correspondem
if ($password == "" || $confirme == "" ) {
echo "preencha todos os campos";
echo "<br>";
echo "<a href='troca_senha.php'>voltar</a>";
} else
if ($password == $confirme) {
//caso corresponda atualiza no banco de dados na tabela users
$sql ="
UPDATE users SET
password='$password'
WHERE userid = '$codigo'
";
$query=mysql_query($sql) or die("Houve um erro na gravação dos dados, verifique os valores passados");
// abre a página index.php
header("location:index.php");
//caso não correspondam informa ao usuario
} else {
echo "Senhas não correspondem";
echo "<br>";
//exibe o link de volta para o formulário de alteração de senha
echo "<a href='troca_senha.php'>Voltar</a>";
}
?>
O troca_senha.php que é o formulário de alteração de senha do usuário:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<?php
include 'verifica.php';
?>
</head>
<body>
<p> olá <?php echo $_SESSION['username']; ?> preencha o formulário para Alterar sua Senha </p>
<p> </p>
<form id="form1" name="form1" method="post" action="alterar_senha.php">
<p>nova senha
<label>
<input name="senha" type="password" id="senha" />
</label>
</p>
<p>confirme senha
<label>
<input name="confirme" type="password" id="confirme" />
</label>
</p>
<p>
<label></label>
</p>
<p>
<label>
<input type="submit" name="Submit" value="Alterar" />
</label>
</p>
</form>
<a href="index.php">voltar</a>
<p> </p>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<?php
include 'verifica.php';
?>
</head>
<body>
<p> olá <?php echo $_SESSION['username']; ?> preencha o formulário para Alterar sua Senha </p>
<p> </p>
<form id="form1" name="form1" method="post" action="alterar_senha.php">
<p>nova senha
<label>
<input name="senha" type="password" id="senha" />
</label>
</p>
<p>confirme senha
<label>
<input name="confirme" type="password" id="confirme" />
</label>
</p>
<p>
<label></label>
</p>
<p>
<label>
<input type="submit" name="Submit" value="Alterar" />
</label>
</p>
</form>
<a href="index.php">voltar</a>
<p> </p>
</body>
</html>
E o logout.php para fechar as sessões:
<?php
// aceder às sessões
session_start();
// para terminar uma sessão, apenas é necessário destruí-la
session_destroy();
// redirecionar o utilizador para outra página, login.php por exemplo
header('Location: login.php');
?>
// aceder às sessões
session_start();
// para terminar uma sessão, apenas é necessário destruí-la
session_destroy();
// redirecionar o utilizador para outra página, login.php por exemplo
header('Location: login.php');
?>
Em todas as páginas que quiser proteger coloque entre o <head></head>:
<?php include "verifica.php";
?>
E para dar as boas vindas coloque em qualquer parte do <body>:
Olá, <?php echo $_SESSION["username"]; ?>
Façam bom proveito do código!!!
Cícero Joceilton da Silva Gomes
Juazeiro do Norte/Ce
cicerojoceilton@gmail.com