_SDinfo 3 Denunciar post Postado Dezembro 23, 2011 É muito importante tornar a aplicação acessível aos usuário, garantir que eles poderão usufruir dela. Alguns sites não permite ao usuário fazer login caso a opção de cookie esteja desabilitada. Para contornar isso podemos utilizar session. O sistema abaixo ainda não possui validação de dados como (email), mas está ainda é a primeira versão de uma aplicação web. cabecalho.php <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br" lang="pt-br"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <?php echo '<title>Segurança Digital - ' . $page_title . '</title>'; ?> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> conectar.php <?php $dbc = mysqli_connect ('localhost', 'usuário', 'senha', 'login') or die ('Erro ao se conectar com o servidor MySQL'); ?> index.php <?php /* Autor: Fábio Jânio Contato: fabiojanio@segurancadigital.info Site: www.segurancadigital.info Blog: fabiojanio.blogspot.com Licença: Está aplicação é totalmente livre de direitos autorais. Aproveite está liberdade! */ require_once('inicia_sessao.php'); require_once('cabecalho.php'); require_once('conectar.php'); if (empty($_SESSION['user_id'])) { require_once('login.php'); } else { require_once('navmenu.php'); echo '<p class="login">Você está logado como ' . $_SESSION['nome_de_usuario'] . '.</p>'; $query = "SELECT user_id FROM usuarios"; $registros = mysqli_query($dbc, $query); $total = mysqli_num_rows($registros); echo '<p class="login">Total de usuários cadastrados: ' . $total . '</p>'; } require_once('rodape.php'); ?> inicia_sessao.php <?php session_start(); if (!isset($_SESSION['user_id'])) { if (isset($_COOKIE['user_id']) && isset($_COOKIE['nome_de_usuario'])) { $_SESSION['user_id'] = $_COOKIE['user_id']; $_SESSION['nome_de_usuario'] = $_COOKIE['nome_de_usuario']; } } ?> login.php <?php require_once('conectar.php'); session_start(); $error_msg = ""; if (!isset($_SESSION['user_id'])) { if (isset($_POST['submit'])) { $user_username = mysqli_real_escape_string($dbc, trim($_POST['nome_de_usuario'])); $user_password = mysqli_real_escape_string($dbc, trim($_POST['senha'])); if (!empty($user_username) && !empty($user_password)) { $query = "SELECT user_id, nome_de_usuario FROM usuarios WHERE nome_de_usuario = '$user_username' AND senha = MD5('$user_password')"; $data = mysqli_query($dbc, $query); if (mysqli_num_rows($data) == 1) { $row = mysqli_fetch_array($data); $_SESSION['user_id'] = $row['user_id']; $_SESSION['nome_de_usuario'] = $row['nome_de_usuario']; setcookie('user_id', $row['user_id'], time() + (60 * 60 * 24 * 30)); setcookie('nome_de_usuario', $row['nome_de_usuario'], time() + (60 * 60 * 24 * 30)); $home_url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/login_efetuado.php'; header('Location: ' . $home_url); } else { $error_msg = 'Desculpe, você deve digitar um nome e senha válidos para fazer login.'; } } else { $error_msg = 'Desculpe, você deve digitar seu nome e senha para fazer login.'; } } } $page_title = 'Fazer Login'; require_once('cabecalho.php'); if (empty($_SESSION['user_id'])) { echo '<p class="error">' . $error_msg . '</p>'; ?> <a href="registrar_se.php">Registrar-se</a> <div id="quadro"> <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <fieldset> <legend>Fazer Login</legend> <label for="nome_de_usuario">Nome de usuário:</label><br /> <input type="text" size="35px" name="nome_de_usuario" value="<?php if (!empty($user_username)) echo $user_username; ?>" /><br /> <label for="senha">Senha:</label><br /> <input type="password" size="35px" name="senha" /> <input type="submit" value="Fazer Login" name="submit" /> </fieldset> </form> </div> <?php } else { echo('<p class="login">Você está logado como ' . $_SESSION['nome_de_usuario'] . '.</p>'); } ?> <?php require_once('rodape.php'); ?> login_efetuado.php <?php require_once('inicia_sessao.php'); require_once('proteger_pagina.php'); $page_title = 'Storage Total'; require_once('cabecalho.php'); require_once('proteger_pagina.php'); $home_url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/index.php'; header("Refresh: 3; URL=$home_url"); echo ('<div id="login_efetuado"></div>'); echo ('<div id="bem_vindo">Seja bem vindo ao ' . $page_title . '!</div>'); echo ('<center>Aguarde, em breve você será redirecionado<br /></center>'); echo ('<center><br /><img src="imagens/aguarde.gif"></center>'); echo ('<div id="login_efetuado"></div>'); require_once('rodape.php'); ?> logout.php <?php session_start(); if (isset($_SESSION['user_id'])) { $_SESSION = array(); if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time() - 3600); } session_destroy(); } setcookie('user_id', '', time() - 3600); setcookie('nome_de_usuario', '', time() - 3600); $home_url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/index.php'; header('Location: ' . $home_url); ?> navmenu.php <?php echo '<hr />'; if (isset($_SESSION['nome_de_usuario'])) { echo '<a href="index.php">Página inicial</a> - '; echo '<a href="perfil.php">Perfil</a> - '; echo '<a href="logout.php">Sair (' . $_SESSION['nome_de_usuario'] . ')</a>'; } else { echo '<a href="login.php">Fazer Login</a>'; } echo '<hr />'; ?> perfil.php <?php require_once('inicia_sessao.php'); require_once('proteger_pagina.php'); // Insert the page header require_once('cabecalho.php'); require_once('conectar.php'); // Menu de navegação require_once('navmenu.php'); // Pegar os dados do perfil do banco de dados if (!empty($_SESSION['user_id'])) { $query = "SELECT nome_de_usuario, join_date, nome_completo, email FROM usuarios WHERE user_id = '" . $_SESSION['user_id'] . "'"; } else { $query = "SELECT nome_de_usuario, join_date, nome_completo, email FROM usuarios WHERE user_id = '" . $_COOKIE['user_id'] . "'"; } $data = mysqli_query($dbc, $query); if (mysqli_num_rows($data) == 1) { // Se o usuário for encontrado, exibir as informações $row = mysqli_fetch_array($data); echo '<table>'; if (!empty($row['nome_de_usuario'])) { echo '<tr><td class="label">Nome de usuário:</td><td>' . $row['nome_de_usuario'] . '</td></tr>'; } if (!empty($row['nome_completo'])) { echo '<tr><td class="label">Nome completo:</td><td>' . $row['nome_completo'] . '</td></tr>'; } if (!empty($row['email'])) { echo '<tr><td class="label">E-mail:</td><td>' . $row['email'] . '</td></tr>'; } if (!empty($row['join_date'])) { list($data, $hora) = explode(' ', $row['join_date']); list($ano, $mes, $dia) = explode('-', $data); echo '<tr><td class="label">Registrado:</td><td>' . $dia . '-' . $mes . '-' . $ano . ' / ' . $hora . '</td></tr>'; } } echo '</td></tr>'; echo '</table>'; mysqli_close($dbc); ?> <?php // Rodapé require_once('rodape.php'); ?> proteger_pagina.php <?php require_once('cabecalho.php'); // Verifique se o usuário está logado antes de prosseguir. if (!isset($_SESSION['user_id'])) { echo '<p class="login">Faça <a href="login.php">login</a> para poder acessar essa página.</p>'; exit(); } ?> registrar_se.php <?php $page_title = 'Registrar-se'; require_once('cabecalho.php'); require_once('conectar.php'); if (isset($_POST['submit'])) { $nome_de_usuario = mysqli_real_escape_string($dbc, trim($_POST['nome_de_usuario'])); $nome_completo = mysqli_real_escape_string($dbc, trim($_POST['nome_completo'])); $email = mysqli_real_escape_string($dbc, trim($_POST['email'])); $senha1 = mysqli_real_escape_string($dbc, trim($_POST['senha1'])); $senha2 = mysqli_real_escape_string($dbc, trim($_POST['senha2'])); if (!empty($nome_de_usuario) && !empty($senha1) && !empty($senha2) && ($email)) { if ($senha1 == $senha2) { $query = "SELECT * FROM usuarios WHERE nome_de_usuario = '$nome_de_usuario'"; $data = mysqli_query($dbc, $query); if (mysqli_num_rows($data) == 0) { $query = "INSERT INTO usuarios (nome_de_usuario, senha, join_date, nome_completo, email) VALUES ('$nome_de_usuario', MD5('$senha1'), NOW(), '$nome_completo', '$email')"; mysqli_query($dbc, $query); echo '<p>Cadastro efetuado com sucesso. Você será redirecionado em 5 segundos!</p>'; $home_url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/index.php'; header("Refresh: 5; URL=$home_url"); mysqli_close($dbc); exit(); } else { echo '<p class="error">Já existe uma conta com este nome. Por favor, escolha outro nome</p>'; $nome_de_usuario = ""; } } else { echo '<p class="error">Os dois campos de senha não são iguais!</p>'; } } else { echo '<p class="error">Você deve digitar todos os dados de login, incluindo a senha e o campo de verificação da senha.</p>'; } } mysqli_close($dbc); ?> <div id="quadro_registrar_se"> <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <fieldset> <legend>Cadastre-se</legend> <label for="nome_completo">Nome completo:</label><br /> <input type="text" size="50px" id="nome_completo" name="nome_completo" value="<?php if (!empty($nome_completo)) echo $nome_completo; ?>" /><br /> <label for="email">*E-mail:</label><br /> <input type="text" size="50px" id="email" name="email" value="<?php if (!empty($email)) echo $email; ?>" /><br /> <label for="nome_de_usuario">*Nome de usuário:</label><br /> <input type="text" id="nome_de_usuario" name="nome_de_usuario" value="<?php if (!empty($nome_de_usuario)) echo $nome_de_usuario; ?>" /><br /> <label for="senha1">*Senha:</label><br /> <input type="password" id="senha1" name="senha1" /><br /> <label for="senha2">*Confirme a Senha:</label><br /> <input type="password" id="senha2" name="senha2" /><br /> </fieldset> <input type="submit" value="Enviar" name="submit" /> </form> </div> <p>* Preenchimento obrigatório</p> <?php require_once('rodape.php'); ?> rodape.php <hr /> <p class="footer">Este código pode ser livremente distribuido. Autor: Fábio Jânio, http://www.twitter.com/_SDinfo</p> </body> </html> style.css .footer { text-align: center; font-size: 80%; } .error { font-weight: bold; color: #FF0000; } #msg { font-weight: bold; color: #FF0000; } .login { font-style: italic; } #quadro { display: block; width: 240px; margin-top: 50px; margin-left: 40%; margin-right: 60%; margin-bottom: 50px; } #quadro_registrar_se { display: block; width: 240px; } td.label { font-weight: bold; } img.profile { vertical-align: top; } #bem_vindo { text-align: center; font-size: 32px; } #login_efetuado { margin-top: 50px; } Código para gerar a tabela do banco: login CREATE TABLE IF NOT EXISTS `usuarios` ( `user_id` int(11) NOT NULL AUTO_INCREMENT, `nome_de_usuario` varchar(32) DEFAULT NULL, `senha` varchar(32) DEFAULT NULL, `join_date` datetime DEFAULT NULL, `nome_completo` varchar(60) DEFAULT NULL, `email` varchar(100) NOT NULL, PRIMARY KEY (`user_id`) ); Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Dezembro 23, 2011 O que você pretende com isso ? alguma dúvida e/ou erro .. se foi um script para perfis, não seria melhor postar no laboratório ? Compartilhar este post Link para o post Compartilhar em outros sites
_SDinfo 3 Denunciar post Postado Dezembro 23, 2011 O que você pretende com isso ? alguma dúvida e/ou erro .. se foi um script para perfis, não seria melhor postar no laboratório ? Por algum motivo não consigo postar no laboratório. O ultimo código que postei aqui foi movido pra lá! Achei que deveria antes ser postado aqui e então um moderador o movia. Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Dezembro 23, 2011 Opa, então eu vou te mover pra lá, posso ? Compartilhar este post Link para o post Compartilhar em outros sites
Daniel1 1 Denunciar post Postado Dezembro 28, 2011 você tem certesa que o sistema está funcionando ? e também ele está completo ? eu testei e vi que está faltando várias partes :natalsad: , mesmo assim agradeço Compartilhar este post Link para o post Compartilhar em outros sites
Lucas Alexandre 0 Denunciar post Postado Julho 16, 2014 Queria que voces postassen a pagina de registro por favor?.... Compartilhar este post Link para o post Compartilhar em outros sites
Olinto Godinho R. Filho 2 Denunciar post Postado Março 12, 2017 Bom dia. Utilizei este programa do Fabio Janio, o qual agradeço e parabenizo. Deram os seguintes erros: ----ao registrar e enviar---- Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /var/www/vhosts/olintronica.com/httpdocs/cadastro4/registrar_se.php on line 18 -----ao tentar o login apos registro ---- Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /var/www/vhosts/olintronica.com/httpdocs/cadastro4/login.php on line 17. As paginas PHP continuam com o mesmo nome. Abaixo a estrutura MySql do meu servidor com entrada manual coluna a coluna: Coluna Tipo Collation Atributos Nulo Padrão Extra Ação 1 user_id int(11) Não None AUTO_INCREMENT 2 nome_do_usuario varchar(32) utf8_general_ci Sim NULL 3 senha varchar(32) utf8_general_ci Sim NULL 4 join_date datetime Sim NULL 5 nome_completo varchar(60) utf8_general_ci Sim NULL 6 email varchar(100) utf8_general_ci Não None Solicito que verifiquem o que fiz de errado por favor. O usuario, login e nome do banco de dados foram colocados certos já que a opção de registro foi aceita. Obrigado colegas. Compartilhar este post Link para o post Compartilhar em outros sites
srmacedo 66 Denunciar post Postado Março 12, 2017 23 minutos atrás, Olinto Godinho R. Filho disse: Bom dia. Utilizei este programa do Fabio Janio, o qual agradeço e parabenizo. Deram os seguintes erros... Bom dia, não use tópicos antigos para postar sua dúvida. Crie um novo tópico e iremos lhe auxiliar. https://forum.imasters.com.br/forum/3-php/ Aprenda a postar sua dúvida de forma correta, não pense que vamos procurar o sistema do Fabio, para resolver o erro. Poste o código para que possamos lhe auxiliar à resolver o problema. Desculpe qualquer coisa e fique por dentro das regras da área. Compartilhar este post Link para o post Compartilhar em outros sites
Olinto Godinho R. Filho 2 Denunciar post Postado Março 12, 2017 Obrigado por isso . Já resolvi grande parte do problema. Era a configuração da tabela no host que não foi bem definida. O problema agora são as funções de header e temporizador 3 segundos direcionando a outra pagina (paginas LOGIN_EFETUADO.PHP e REGISTRAR_SE.PHP). Vou tentar achar um substituto para o HEADER. Obrigado e precisando de qualquer coisa na área de eletronica, CFTV e robótica estarei sempre a disposição. Abs Compartilhar este post Link para o post Compartilhar em outros sites