Então,
Agora que o Blog não é mais exclusivo JAVA, vou começar com uma aplicação de Login (todos já fizemos), com páginas diferentes para Administrador e Funcionários (nem todos já fiseram), protegidas para que não se possa acessar nenhuma URL além da tela inicial (quase ninguém faz).
------------------------------------------------------------------------------------------
config.php - Serve para configurar a conexão com o banco de dados.
------------------------------------------------------------------------------------------
<?php
$host = "localhost"; //Servidor do mysql
$user = "root"; //Usuario do banco de dados
$senha = ""; //senha do banco de dados
$db = "user"; //banco de dados
$nome_site = "login.php"; //Nome do site
$email = "email@host.com"; //E-mail do administrador
$site = "http://www.meusite.com"; //Seu site n se esuqece de bota o http://
mysql_connect($host, $user, $senha) or die (mysql_error());
mysql_select_db($db) or die (mysql_error());
?>
------------------------------------------------------------------------------------------
login.php - Página Principal
------------------------------------------------------------------------------------------
<!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>Document sans titre</title>
<style type="text/css">
<!--
.Style6 {font-size: 13px}
-->
</style>
</head>
<body>
<form id="form1" name="form1" method="post" action="../login/logar.php">
<table width="41%" border="0">
<tr>
<td colspan="2"><div align="center"><strong>Usuario</strong></div></td>
</tr>
<tr>
<td><span class="Style6">Login:</span></td>
<td><span class="Style6">
<label>
<input name="login" type="text" id="login" />
</label>
</span></td>
</tr>
<tr>
<td><span class="Style6">Senha:</span></td>
<td><span class="Style6">
<label>
<input name="senha" type="password" id="senha" />
</label>
</span></td>
</tr>
<tr>
<td> </td>
<td><span class="Style6">
<label>
<input type="submit" name="Submit" value="OK" />
</label>
</span></td>
</tr>
<tr>
<td> </td>
<td><span class="Style6"><a href="../login/esquece_senha.php">Esquece senha </a></span></td>
</tr>
<tr>
<td> </td>
<td><span class="Style6"><a href="../login/cadastro.php">Cadastro</a></span></td>
</tr>
</table>
</form>
</body>
</html>
------------------------------------------------------------------------------------------
logar.php - Página que irá trabalhar os dados do Login
------------------------------------------------------------------------------------------
<?php
require("bloquear.php");
trancar_pagina("logar.php");
?>
<?php
include("config.php");
$login = $_POST['login'];
$senha = $_POST['senha'];
/* Verifica se existe usuario, o segredo ta aqui quando ele procupa uma
linha q contenha o login e a senha digitada */
$sql_logar = "SELECT * FROM user WHERE login = '$login' && senha = '$senha'";
$exe_logar = mysql_query($sql_logar) or die (mysql_error());
$fet_logar = mysql_fetch_assoc($exe_logar);
$num_logar = mysql_num_rows($exe_logar);
//Verifica se n existe uma linha com o login e a senha digitado
if ($num_logar == 0){
echo "Login ou senha invalido.";
echo "<br><a href='javascript:window.history.go(-1)'>Clique aqui para volta.</a>";
}
elseif($fet_logar['activo'] == "N"){
echo "Usuario não ativado, verifique seu e-mail para ativa a conta.";
echo "<br><a href='javascript:window.history.go(-1)'>Clique aqui para volta.</a>";
}
else{
//Cria a sessão e manda pra pagina principal.php
session_start();
$_SESSION['login'] = $login;
$_SESSION['senha'] = $senha;
if ($fet_logar['Tipo'] == "A"){
header("Location:administrador.php");
}
else{
header("Location:funcionario.php");
}
}
?>
------------------------------------------------------------------------------------------
Cadastro.php - Cadastro de novo funcionário no banco
------------------------------------------------------------------------------------------
<?php
require("bloquear.php");
trancar_pagina("cadastro.php");
?>
<?php
include("config.php");
if (isset($_POST['login'])){
//pega a sessão id do usuario
session_start();
$sessao = session_id();
$login = $_POST['login'];
$senha = $_POST['senha'];
$nome = $_POST['nome'];
$email = $_POST['email'];
$sql_busca = "SELECT * FROM user WHERE login = '$login'";
$exe_busca = mysql_query($sql_busca) or die (mysql_error());
$num_busca = mysql_num_rows($exe_busca);
$sql_busca2 = "SELECT * FROM user WHERE email = '$email'";
$exe_busca2 = mysql_query($sql_busca2) or die (mysql_error());
$num_busca2 = mysql_num_rows($exe_busca2);
//Verifica se os campos estão preenchidos
if ($_POST['login'] == "" || $_POST['senha'] == "" || $_POST['senha2'] == "" || $_POST['nome'] == "" || $_POST['email'] == "" || $_POST['Tipo'] == ""){
$ac[] = "Por favou preencha todos os campos corretamente.";
}
//Verifica se ja existe o login
if ($num_busca > 0){
$ac[] = "Esse login já esta sendo usado por outro usuario.";
}
//Verifica se ja existe o e-mail
if ($num_busca2 > 0){
$ac[] = "Esse e-mail já esta sendo usado por outro usuario.";
}
//Verifica se o e-mail esta correto
if (!ereg("@.", $_POST['email'])){
$ac[] = "E-mail invalido.";
}
//Verifica se as duas senha são diferente
if ($_POST['senha'] != $_POST['senha2']){
$ac[] = "Verifique se as duas senha estão correta.";
}
//Verifica se todas estão corretas
if (!isset($ac)){
//Inclui o cadastro no mysql
$sql_inclu = "INSERT INTO user(login, senha, email, sessao) VALUES
('$login', '$senha', '$email', '$sessao')";
$exe_inclu = mysql_query($sql_inclu) or die (mysql_error());
$sql_inclui = "INSERT INTO nome(nome) VALUES('$nome')";
$exe_inclui = mysql_query($sql_inclui) or die (mysql_error());
$topico = "Cadastro $nome_site";
$mensagem = "<html>";
$mensagem .= "<body>";
$mensagem .= "Olá $login\r\n";
$mensagem .= "<br>Você efetuou um cadastro no $nome_site.</br>";
$mensagem .= "<br>Login: $login";
$mensagem .= "<br>Senha: $senha";
$mensagem .= "<br>Ativar conta <a href='$site/active.php?ac=$sessao'>$site/active.php?ac=$sessao</a></br>";
$mensagem .= "</body>";
$mensagem .= "</html>";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: $nome_site <$email>\r\n";
$ac[] = "Cadastro efetuado com sucesso, verifique seu e-mail para ativa a conta.";
//enviar para o email o login, senha e o codigo de ativação
mail($email, $topico, $mensagem, $headers);
}
}
?>
<!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>Document sans titre</title>
<style type="text/css">
<!--
.Style2 {font-size: 13px}
-->
</style>
</head>
<body>
<?php
if (isset($ac)){
for($i=0;$i<count($ac);$i++){
echo "<li>".$ac[$i];
}
}
?>
<form id="form1" name="form1" method="post" action="<? $_SERVER['file:///C|/DOCUME~1/admin/CONFIG~1/Temp/Rar$DI05.687/PHP_SELF']?>">
<table width="100%" border="0">
<tr>
<td colspan="2"><div align="center"><strong>Cadastro</strong></div></td>
</tr>
<tr>
<td width="13%"><span class="Style2">Login:</span></td>
<td width="87%"><span class="Style2">
<label>
<input name="login" type="text" id="login" />
</label>
</span></td>
</tr>
<tr>
<td><span class="Style2">Senha:</span></td>
<td><span class="Style2">
<label>
<input name="senha" type="password" id="senha" />
</label>
</span></td>
</tr>
<tr>
<td><span class="Style2">Repetir senha: </span></td>
<td><span class="Style2">
<label>
<input name="senha2" type="password" id="senha2" />
</label>
</span></td>
</tr>
<tr>
<td><span class="Style2">Nome: </span></td>
<td><span class="Style2">
<label>
<input name="Nome" type="text" id="nome" />
</label>
</span></td>
</tr>
<tr>
<td><span class="Style2">E-mail:</span></td>
<td><span class="Style2">
<label>
<input name="email" type="text" id="email" />
</label>
</span></td>
</tr>
<tr>
<td><span class="Style2">Tipo:</span></td>
<td><label>
<input type="radio" name="Tipo" id="af" value="A" />
Administrador
<input type="radio" name="Tipo" id="af" value="F" />
Funcionário</label></td>
</tr>
<tr>
<td> </td>
<td><span class="Style2">
<label>
<input type="submit" name="Submit" value="Enviar" />
</label>
</span></td>
</tr>
</table>
<p> </p>
</form>
</body>
</html>
------------------------------------------------------------------------------------------
esquece_senha.php - Recuperação de Senha
------------------------------------------------------------------------------------------
<?php
include("config.php");
if (isset($_POST['login'])){
$login = $_POST['login'];
//Verifica se existe usuario
$sql_busca = "SELECT * FROM user WHERE login = '$login'";
$exe_busca = mysql_query($sql_busca) or die (mysql_error());
$fet_busca = mysql_fetch_assoc($exe_busca);
$num_busca = mysql_num_rows($exe_busca);
//verifica se existe uma linha com o login digitado
if ($num_busca > 0){
$email = $fet_busca['email'];
$senha = $fet_busca['senha'];
$topico = "Esquece senha";
$mensagem = "<html>";
$mensagem .= "<body>";
$mensagem .= "<br>Você efetuou um pedido de recuperação de senha no $nome_site.</br>";
$mensagem .= "<br>Login: $login";
$mensagem .= "<br>Senha: $senha</br>";
$mensagem .= "<br>Site oficial do $nome_site";
$mensagem .= "<br><a href='$site'>$site</a></br>";
$mensagem .= "</body>";
$mensagem .= "</html>";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: $nome_site <$email>\r\n";
//enviar para o email o login e a senha
mail($email, $topico, $mensagem, $headers);
$ac[] = "Sua senha foi enviado para seu e-mail.";
}
else {
$ac[] = "Esse login não existe.";
}
}
?>
<!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>Document sans titre</title>
<style type="text/css">
<!--
.Style2 {font-size: 13px}
-->
</style>
</head>
<body>
<?php
if (isset($ac)){
for($i=0;$i<count($ac);$i++){
echo "<li>".$ac[$i];
}
}
?>
<form id="form1" name="form1" method="post" action="<? $_SERVER['file:///C|/DOCUME~1/admin/CONFIG~1/Temp/Rar$DI57.031/PHP_SELF']?>">
<table width="33%" border="0">
<tr>
<td colspan="2"><div align="center"><strong>Esquece senha </strong></div></td>
</tr>
<tr>
<td width="22%"><span class="Style2">Login:</span></td>
<td width="78%"><span class="Style2">
<label>
<input name="login" type="text" id="login" />
</label>
</span></td>
</tr>
<tr>
<td> </td>
<td><span class="Style2">
<label>
<input type="submit" name="Submit" value="Enviar" />
</label>
</span></td>
</tr>
</table>
</form>
</body>
</html>
------------------------------------------------------------------------------------------
restrito.php - faz a sessão ser restrita a usuários
------------------------------------------------------------------------------------------
<?php
@session_start();
if (isset($_SESSION['login']) && isset($_SESSION['senha'])){
$login_usuario = $_SESSION['login'];
}
else {
header("Location:login.php");
exit();
}
?>
------------------------------------------------------------------------------------------
bloquear.php - Impede que seja acessada qualquer URL diretamente.
------------------------------------------------------------------------------------------
<?php
function trancar_pagina($nome){
if (eregi("$nome", $_SERVER['SCRIPT_NAME'])){
header("Location:login.php");
}
}
?>
------------------------------------------------------------------------------------------
administrador.php - Trata os direitos do Administrador
------------------------------------------------------------------------------------------
<?php
require("bloquear.php");
trancar_pagina("administrador.php");
?>
<?php
include('config.php');
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
mysql_select_db($db);
$login = $_POST['login'];
$v2 = $_POST['email'];
$v3 = $_POST['radio1'];
$v4 = $_POST['Pontos'];
$updateSQL = "UPDATE user SET email='$v2', activo='$v3', Pontos='$v4' WHERE login = '$login'";
$Result1 = mysql_query($updateSQL) or die(mysql_error());
echo "Dados alterados com sucesso! <br>";
}
mysql_select_db($db);
$query_manu1 = "SELECT * FROM user";
$manu1 = mysql_query($query_manu1) or die(mysql_error());
$row_manu1 = mysql_fetch_assoc($manu1);
$totalRows_manu1 = mysql_num_rows($manu1);
?>
<!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=utf-8" />
<title>Untitled Document</title>
</head>
<body>
Olá <?php
include("config.php");
include("restrito.php");
$sql_busca = "SELECT * FROM user WHERE login = '$login_usuario'";
$exe_busca = mysql_query($sql_busca) or die (mysql_error());
$fet_busca = mysql_fetch_assoc($exe_busca);
$qtd_registros = mysql_num_rows($exe_busca); // retorna a quantidade registros encontrados na consulta acima
$nome = array();
for($i=0;$i<$qtd_registros;$i++)
{
$nome[$i] = mysql_result($exe_busca,$i,"login"); // a função mysql_result tem 3 parâmetros: 1º aponta para a variável da consulta; 2º aponta para a linha do registro que você quer pegar; 3º aponta para a coluna que você quer pegar na tabela
echo $nome[$i]."<br>";
}
?>
<br>
Você Possui <?php
include("config.php");
include("restrito.php");
$sql_busca = "SELECT * FROM user WHERE login = '$login_usuario'";
$exe_busca = mysql_query($sql_busca) or die (mysql_error());
$fet_busca = mysql_fetch_assoc($exe_busca);
$qtd_registros = mysql_num_rows($exe_busca); // retorna a quantidade registros encontrados na consulta acima
$nome = array();
for($i=0;$i<$qtd_registros;$i++)
{
$nome[$i] = mysql_result($exe_busca,$i,"pontos"); // a função mysql_result tem 3 parâmetros: 1º aponta para a variável da consulta; 2º aponta para a linha do registro que você quer pegar; 3º aponta para a coluna que você quer pegar na tabela
echo $nome[$i]." pontos! <br>";
}
?>
<br>
Alteração de Pontos:
<br><br>
<form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1">
<table>
<tr valign="baseline">
<td nowrap="nowrap" align="right">Login:</td>
<td><select name="login">
<?php
do {
?>
<option value="<?php echo $row_manu1['login']?>" ><?php echo $row_manu1['login']?></option>
<?php
} while ($row_manu1 = mysql_fetch_assoc($manu1));
?>
</select></td>
</tr>
<tr> </tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">Email:</td>
<td><input type="text" name="email" value="" size="32" /></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">Activo:</td>
<td><label>
<input type="radio" name="radio1" id="sn" value="S" />
Sim
<input type="radio" name="radio1" id="sn" value="N" />
Não</label></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">Novos Pontos:</td>
<td><input type="text" name="Pontos" value="" size="32" /></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">Tipo:</td>
<td><label>
<input type="radio" name="radio2" id="af" value="A" />
Administrador
<input type="radio" name="radio2" id="af" value="F" />
Funcionário</label></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right"> </td>
<td><input type="submit" value="Alterar" /></td>
</tr>
</table>
<input type="hidden" name="MM_insert" value="form1" />
</form>
<br><br>
<table width="41%" border="0">
<tr>
<td> </td>
<td><span class="Style6"><a href="../login/login.php">Sair </a></span></td>
</tr>
</table>
<p> </p>
</body>
</html>
<?php
mysql_free_result($manu1);
?>
------------------------------------------------------------------------------------------
funcionario.php - Trata os direitos dos Funcionarios
------------------------------------------------------------------------------------------
<!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=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
require("bloquear.php");
trancar_pagina("funcionario.php");
?>
Olá <?php
include("config.php");
include("restrito.php");
$sql_busca = "SELECT * FROM user WHERE login = '$login_usuario'";
$exe_busca = mysql_query($sql_busca) or die (mysql_error());
$fet_busca = mysql_fetch_assoc($exe_busca);
$qtd_registros = mysql_num_rows($exe_busca); // retorna a quantidade registros encontrados na consulta acima
$nome = array();
for($i=0;$i<$qtd_registros;$i++)
{
$nome[$i] = mysql_result($exe_busca,$i,"login");
/* a função mysql_result tem 3 parâmetros:
1º aponta para a variável da consulta;
2º aponta para a linha do registro que você quer pegar;
3º aponta para a coluna que você quer pegar na tabela */
echo $nome[$i]."<br>";
}
?>
<br>
Você Possui <?php
include("config.php");
include("restrito.php");
$sql_busca = "SELECT * FROM user WHERE login = '$login_usuario'";
$exe_busca = mysql_query($sql_busca) or die (mysql_error());
$fet_busca = mysql_fetch_assoc($exe_busca);
$qtd_registros = mysql_num_rows($exe_busca); // retorna a quantidade registros encontrados na consulta acima
$nome = array();
for($i=0;$i<$qtd_registros;$i++)
{
$nome[$i] = mysql_result($exe_busca,$i,"pontos"); // a função mysql_result tem 3 parâmetros: 1º aponta para a variável da consulta; 2º aponta para a linha do registro que você quer pegar; 3º aponta para a coluna que você quer pegar na tabela
echo $nome[$i]." pontos! <br><br>";
}
?>
<table width="41%" border="0">
<tr>
<td> </td>
<td><span class="Style6"><a href="../login/login.php">Sair </a></span></td>
</tr>
</table>
</body>
</html>
Valeu pela dica.
ResponderExcluirNão precisei de todo o tutorial, mas encontrei o que precisava, que era restringir o acesso as páginas.