Tutorial PHP – Sistema de Cadastro de Usuários e Login com Sessions
Gostaria de deixar entendido que não é minha intenção utilizar métodos complexos, programação PHP de nível intermediário/avançado, tento apenas passar o conhecimento básico para a construção de um simples sistema de cadastro e login utilizando sessions e banco de dados MySQL e md5() para senhas, onde também será possível atribuir diferentes níveis de acesso à páginas restritas e a possibilidade do usuário solicitar a criação de nova senha quando esta se perde ou é esquecida.
Obs.: Não aconselho a utilizar o método "Copiar/Colar" com os códigos aqui apresentados e sim digita-los, linha por linha com muita atenção, assim o aproveitamento será bem maior, porém se alguém quiser os arquivos para abrir em seu editor, os mesmos estão compactados em pasta .zip no final deste tutorial.
Trabalharemos com os seguintes arquivos:
bancodedados.sql
config.php
formulario_cadastro.php
cadastrar.php
ativar.php
formulario_login.html
verifica_usuario.php
area_restrita.php
functions.php
logout.php
formulario_senha_perdida.php
gerar_nova_senha.php
Vamos ao tutorial!
Tomo por início que você já tenha um banco de dados MySQL disponível, passamos então para criação da tabela necessária para o armazenamento dos dados referente aos usuários.
Eu utilizei o gerenciador SQL phpMyAdmin, digitando e executando o código abaixo no campo de consulta SQL do gerenciador.
- bancodedados.sql
CREATE TABLE usuarios(
usuario_id int(5) NOT NULL auto_increment,
nome varchar(50) NOT NULL default '',
sobrenome varchar(50) NOT NULL default '',
email varchar(100) NOT NULL default '',
usuario varchar(32) NOT NULL default '',
senha varchar(32) NOT NULL default '',
info text NOT NULL,
nivel_usuario enum('0','1','2') NOT NULL default '0',
data_cadastro datetime NOT NULL default '0000-00-00 00:00:00',
data_ultimo_login datetime NOT NULL default '0000-00-00 00:00:00',
ativado enum('0','1') NOT NULL default '0',
PRIMARY KEY (usuario_id)
) ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_general_ci COMMENT = '';
Agora criaremos o arquivo de conexão com o banco de dados.
- config.php
<?php
define('BD_USER', 'usuário de banco de dados');
define('BD_PASS', 'senha do banco de dados');
define('BD_NAME', 'nome do seu banco de dados');
mysql_connect('localhost', BD_USER, BD_PASS);
mysql_select_db(BD_NAME);
?>
O próximo passo é montarmos nosso formulário de cadastro que irá popular a tabela que criamos mais acima.
- formulario_cadastro.php
<!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>Formulário Cadastro</title> </head> <body> <form name="cadastro" method="post" action="cadastrar.php"> Nome <input name="nome" type="text" id="nome" value="<?php echo $nome; ?>" /><br /> Sobrenome <input name="sobrenome" type="text" id="sobrenome" value="<?php echo $sobrenome; ?>" /><br /> Email <input name="email" type="text" id="email" value="<?php echo $email; ?>" /><br /> Nome de Usuário <input name="usuario" type="text" id="usuario" value="<?php echo $usuario; ?>" /><br /> + informações sobre você <textarea name="info" id="info"><?php echo $info; ?></textarea> <br /> <input type="submit" name="Submit" value="Enviar" /> <br /> </form> </body> </html>
De nada adianta este formulário se não tivermos o arquivo que recebe os dados enviados, o arquivo responsável por este recebimento será o que vamos ver mais abaixo.
- cadastrar.php
<?php
include "config.php";
$nome = trim($_POST['nome']);
$sobrenome = trim($_POST['sobrenome']);
$email = trim($_POST['email']);
$usuario = trim($_POST['usuario']);
$info = trim($_POST['info']);
/* Vamos checar algum erro nos campos */
if ((!$nome) || (!$sobrenome) || (!$email) || (!$usuario)){
echo "ERRO: <br /><br />";
if (!$nome){
echo "Nome é requerido.<br />";
}
if (!$sobrenome){
echo "Sobrenome é requerido.<br /> <br />";
}
if (!$email){
echo "Email é um campo requerido.<br /><br />";
}
if (!$usuario){
echo "Nome de Usuário é requerido.<br /><br />";
}
echo "Preencha os campos abaixo: <br /><br />";
include "formulario_cadastro.php";
}else{
/* Vamos checar se o nome de Usuário escolhido e/ou Email já existem no banco de dados */
$sql_email_check = mysql_query(
"SELECT COUNT(usuario_id) FROM usuarios WHERE email='{$email}'"
);
$sql_usuario_check = mysql_query(
"SELECT COUNT(usuario_id) FROM usuarios WHERE usuario='{$usuario}'"
);
$eReg = mysql_fetch_array($sql_email_check);
$uReg = mysql_fetch_array($sql_usuario_check);
$email_check = $eReg[0];
$usuario_check = $uReg[0];
if (($email_check > 0) || ($usuario_check > 0)){
echo "<strong>ERRO</strong>: <br /><br />";
if ($email_check > 0){
echo "Este email já está sendo utilizado.<br /><br />";
unset($email);
}
if ($usuario_check > 0){
echo "Este nome de usuário já está sendo
utilizado.<br /><br />";
unset($usuario);
}
include "formulario_cadastro.php";
}else{
/* Se passarmos por esta verificação ilesos é hora de
finalmente cadastrar os dados. Vamos utilizar uma função para gerar a senha de
forma randômica*/
function makeRandomPassword(){
$salt = "abchefghjkmnpqrstuvwxyz0123456789";
srand((double)microtime()*1000000);
$i = 0;
while ($i <= 7){
$num = rand() % 33;
$tmp = substr($salt, $num, 1);
$pass = $pass . $tmp;
$i++;
}
return $pass;
}
$senha_randomica = makeRandomPassword();
$senha = md5($senha_randomica);
// Inserindo os dados no banco de dados
$info = htmlspecialchars($info);
$sql = mysql_query(
"INSERT INTO usuarios
(nome, sobrenome, email, usuario, senha, info, data_cadastro)
VALUES
('$nome', '$sobrenome', '$email', '$usuario', '$senha', '$info', now())")
or die( mysql_error()
);
if (!$sql){
echo "Ocorreu um erro ao criar sua conta, entre em contato.";
}else{
$usuario_id = mysql_insert_id();
// Enviar um email ao usuário para confirmação e ativar o cadastro!
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$headers .= "From: Teu Domínio - Webmaster<email@teusite.com.br>";
$subject = "Confirmação de cadastro - teusite.com.br";
$mensagem = "Prezado {$nome} {$sobrenome},<br />
Obrigado pelo seu cadastro em nosso site, <a href='http://www.teusite.com.br'>
http://www.teusite.com.br</a>!<br /> <br />
Para confirmar seu cadastro e ativar sua conta em nosso site, podendo acessar à
áreas exclusivas, por favor clique no link abaixo ou copie e cole na barra de
endereço do seu navegador.<br /> <br />
<a href='http://www.teusite.com.br/ativar.php?id={$usuario_id}&code={$senha}'>
http://www.teusite.com.br/ativar.php?id={$usuario_id}&code={$senha}
</a>
<br /> <br />
Após a ativação de sua conta, você poderá ter acesso ao conteúdo exclusivo
efetuado o login com os seguintes dados abaixo:<br > <br />
<strong>Usuario</strong>: {$usuario}<br />
<strong>Senha</strong>: {$senha_randomica}<br /> <br />
Obrigado!<br /> <br />
Webmaster<br /> <br /> <br />
Esta é uma mensagem automática, por favor não responda!";
mail($email, $subject, $mensagem, $headers);
echo "Foi enviado para seu email - ( ".$email." ) um pedido de
confirmação de cadastro, por favor verifique e sigas as instruções!";
}
}
}
?>
Como podemos ver no arquivo acima, ao cadastrar-se, automaticamente é enviado uma mensagem de confirmação de cadastro para a conta de email que o usuário digitou no formulário de cadastro, esta mensagem conterá instruções de como proceder. Através de um link nesta mensagem ele executará um arquivo que ativa definitivamente sua conta e só a partir desta ativação que o membro poderá acessar a área restrita.
- ativar.php
<?php
include "config.php";
$usuario_id = $_REQUEST['id'];
$senha = $_REQUEST['code'];
$sql = mysql_query(
"UPDATE usuarios SET ativado='1'
WHERE usuario_id='{$usuario_id}'
AND senha='{$senha}'"
);
$sql_doublecheck = mysql_query(
"SELECT * FROM usuarios
WHERE usuario_id='{$usuario_id}'
AND senha='{$senha}'
AND ativado='1'"
);
$doublecheck = mysql_num_rows($sql_doublecheck);
if ($doublecheck == 0){
echo "<strong>Sua conta não pode ser ativada!</strong>";
}elseif ($doublecheck > 0){
echo "<strong>Seu cadastro foi ativado com sucesso!</strong><br />
Você pode fazer o login logo abaixo!<br /><br />";
include "formulario_login.html";
}
?>
Já estamos cadastrando usuários e ativando suas contas corretamente e sem problemas, mas para que cadastrar um usuário se pelo menos não dermos alguns privilégios para este membro? Fazemos assim então, ao efetuar o login o usuário cadastrado terá acesso à uma área restrita, mas para isso precisamos de um formulário de login simples, então vamos lá.
- formulario_login.html
<!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>Login</title> </head> <body> Login <br /><br /> <form action="verifica_usuario.php" method="post" name="" id=""> Usuário<br /> <input name="usuario" type="text" id="usuario" /><br /> Senha<br /> <input name="senha" type="password" id="senha" /><br /><br /> <input type="submit" name="Submit" value="Enviar" / > </form> </body> </html>
Não adianta disponibilizar um formulário de login se não tivermos um arquivo para receber os dados enviados e efetuar uma verificação se realmente são dados de um usuário cadastrado ou alguém tentando logar sem as devidas permissões, então continuamos.
- verifica_usuario.php
<?php
session_start(); // Inicia a session
include "config.php";
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];
if ((!$usuario) || (!$senha)){
echo "Por favor, todos campos devem ser preenchidos! <br /><br />";
include "formulario_login.html";
}else{
$senha = md5($senha);
$sql = mysql_query(
"SELECT * FROM usuarios
WHERE usuario='{$usuario}'
AND senha='{$senha}'
AND ativado='1'"
);
$login_check = mysql_num_rows($sql);
if ($login_check > 0){
while ($row = mysql_fetch_array($sql)){
foreach ($row AS $key => $val){
$$key = stripslashes( $val );
}
$_SESSION['usuario_id'] = $usuario_id;
$_SESSION['nome'] = $nome;
$_SESSION['sobrenome'] = $sobrenome;
$_SESSION['email'] = $email;
$_SESSION['nivel_usuario'] = $nivel_usuario;
mysql_query(
"UPDATE usuarios SET data_ultimo_login = now()
WHERE usuario_id ='{$usuario_id}'"
);
header("Location: area_restrita.php");
}
}else{
echo "Você não pode logar-se! Este usuário e/ou senha não são válidos!<br />
Por favor tente novamente!<br />";
include "formulario_login.html";
}
}
?>
Percebemos acima que caso o usuário não esteja cadastrado no banco de dados ou caso ele insira dados errados nos campos do formulário de login, ele não consegue entrar na área restrita, mas conseguir validar terá acesso à tão desejada área restrita. Vamos então fazer um arquivo de exemplo que representará uma página de acesso restrito.
- area_restrita.php
<?php
session_start(); // Inicia a session
include "functions.php"; // arquivo de funções.
session_checker(); // chama a função que verifica se a session iniciada da acesso à página.
echo "Bem vindo <strong>". $_SESSION['nome'] ." ". $_SESSION['sobrenome'] ."</strong>!<br />
Você está acessando área restrita para usuários cadastrados!
<br /><br />";
echo "Seu nível de usuário é <strong>". $_SESSION['nivel_usuario']."</strong>.
<br />Com esse nível, você tem permisão de acesso às
seguintes áreas: <br /><br />";
if ($_SESSION['nivel_usuario'] == 0){
echo "- <strong>Forum</strong><br />Abrir tópicos, postar em tópicos
de terceiros.<br /><br />";
}
if ($_SESSION['nivel_usuario'] == 1){
echo "- <strong>Forum</strong><br />Administração -
Acesso total <br /><br />";
}
/* Não colocarei representações para outros níveis de acesso, mas fica entendido que o
limite de níveis de acesso quem define é você*/
echo "<a href=\"logout.php\">Sair</a>";
?>
Neste arquivo acima eu mencionei mais dois arquivos que ainda não criamos. O primeiro arquivo conterá uma função de verificação como eu comentei no início do script acima. Vejamos ele.
- functions.php
<?php
function session_checker(){
if (!isset($_SESSION['usuario_id'])){
header ("Location:formulario_login.html");
exit();
}
}
?>
Ops! No arquivo exemplo que representa a área restrita, eu coloquei no final uma opção para sair desta área, sendo assim não posso faltar com minha palavra, por tanto vamos cria-la, assim sempre que o usuário sair utilizando esta opção só poderá acessar a área restrita se efetuar o login novamente. Acredito que não teremos problema algum em entender o funcionamento.
- logout.php
<?php
session_start();
if (!isset($_REQUEST['logmeout'])){
echo "Você realmente deseja sair da área restrita?<br />";
echo "<a href=\"logout.php?logmeout\">Sim</a> | ";
echo "<a href=\"javascript:history.go(-1)\">Não</a>";
}else{
session_destroy();
if (!session_is_registered('nome')){
echo "<strong>Você não está mais logado em nosso site!</strong>";
echo "<br /><br /><strong>Login:</strong><br /><br />";
include "formulario_login.html";
}
}
?>
hummm, já ia me esquecendo, como vamos disponibilizar uma opção para gerar nova senha, onde seria o melhor lugar para colocarmos um link para chamar o arquivo que dará início da criação de uma nova senha se não no próprio arquivo .html que utilizamos para efetuar o login.
Então que tal colocarmos abaixo do formulário de login?
Façamos o seguinte então, adicione essas linhas logo abaixo no arquivo formulario_login.html bem abaixo do botão Enviar:
<br /><a href="formulario_senha_perdida.html">- Não lembra a sua senha?</a>
Quase no final, agora resta apenas criarmos o formulário para requisição de nova senha para os casos de esquecimento ou perda que será chamado pelo link que criamos acima e também o arquivo que recebe os dados e envia a nova senha para o email cadastrado do usuário.
Vamos lá então!
- formulario_senha_perdida.html
<!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>Formulário Nova Senha</title> </head> <body> <form name="form1" method="post" action=""> Por favor digite o seu email que está cadastrado em nosso banco de dados;<br /> <input name="email" type="text" id="email" /> <input name="recupera" type="hidden" id="recupera" value="recupera" /> <input type="submit" name="Submit" value="Gerar Senha" /> </form> </body> </html>
Para completar, o arquivo responsável em receber os dados do formulário acima, onde baseando-se em uma verificação de resultado afirmativo da existência deste email no banco de dados passa a gerar uma nova senha e envia-la para o mesmo email cadastrado, caso o email não exista, não precisa nem dizer o que acontece, sendo assim vamos ao que interessa.
- gerar_nova_senha.php
<?php
include "config.php";
$recupera = $_POST['recupera'];
$email = $_POST['email'];
switch ($recupera){
case "recupera" :
recupera_senha($email);
break;
default :
include "formulario_senha_perdida.html";
break;
}
function recupera_senha($email){
if (!isset($email)){
echo "Você esqueceu de preencher seu email.<br />
<strong>Use o mesmo email que utilizou em seu cadastro.</strong><br /><br />";
include "formulario_senha_perdida.html";
exit();
} // Checando se o email informado está cadastrado
$sql_check = mysql_query("SELECT * FROM usuarios WHERE email='{$email}'");
$sql_check_num = mysql_num_rows($sql_check);
if ($sql_check_num == 0){
echo "Este email não está cadastrado em nosso banco de dados.<br /><br />";
include "formulario_senha_perdida.html";
exit();
}
// Se tudo OK vamos gerar uma nova senha e enviar para o email do usuário!
function makeRandomPassword(){
$salt = "abchefghjkmnpqrstuvwxyz0123456789";
srand((double)microtime()*1000000);
$i = 0;
while ($i <= 7){
$num = rand() % 33;
$tmp = substr($salt, $num, 1);
$pass = $pass . $tmp;
$i++;
}
return $pass;
}
$senha_randomica = makeRandomPassword();
$senha = md5($senha_randomica);
$sql = mysql_query(
"UPDATE usuarios SET senha='{$senha}'
WHERE email ='{$email}'"
);
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$headers .= "From: Teu Domínio - Webmaster<email@teusite.com.br>";
$subject = "Sua nova senha em teusite.com.br";
$message = "Olá, redefinimos sua senha.<br /><br />
<strong>Nova Senha</strong>: {$senha_randomica}<br /><br />
<a href='http://www.teusite.com/formulario_login.html'>
http://www.teusite.com/formulario_login.html
</a><br /><br />
Obrigado!<br /><br />
Webmaster<br /><br /><br />
Esta é uma mensagem automática, por favor não responda!";
mail($email, $subject, $message, $headers);
echo "Sua nova senha foi gerada com sucesso e enviada para o seu email!<br />
Por favor verifique seu email!<br /><br />";
include "formulario_login.html";
}
?>
Bom... acho que era isso...
Caso eu possa ajudar e estiver dentro do escopo deste tutorial eu ajudarei com prazer.
Cadastro DEMO
Acesso DEMO
Download dos arquivos deste tutorial
Observação: Obviamente este tutorial é apresentado da forma simples e crua, onde a intenção é ajudar os iniciantes em PHP, porém há formas mais requintadas de tratar os dados aqui trabalhados e não gostaria de colocar em questão isso, pois como disse o objetivo é apresentar uma forma simples para quem ainda tenha pouco contato com PHP e gostaria de entrar nesse mundo.
Qualquer opinião, sugestão ou crítica pode mandar um comentário aí embaixo.


novembro 18th, 2010 - 18:44
Parabéns! Fiz download vou testa-lo!
Obrigada pela ajuda ;D
novembro 18th, 2010 - 20:49
Obrigado @Suelen.
Qualquer dúvida é só falar.
fevereiro 5th, 2011 - 22:45
Primeiramente parabéns por criar esse excelente sistema, principalmente para iniciantes.
Mas só uma questão… … a recuperação de senha não está funcionando! Acho que deve ser alguma falha na busca das informações do usuário no BD ou seria a minha versão do MySQL? Seria pedir demais você revisar e nos informar algum possível erro? O restante está funcionando divinamente bem. Parabéns pela criatividade.
Aguardo um retorno!
fevereiro 6th, 2011 - 00:18
Olá @Everton, funciona sim ;)
Me passe detalhes do problema que ocorreu com você.
Erro na tela?
Não chegou mensagem de email?
Enfim… de detalhes.
fevereiro 8th, 2011 - 19:49
Olá Roberto, ao solicitar uma nova senha, o e-mail com a nova senha não chega e, se vou logar com a senha antiga, ele entra normalmente. É como se a senha não estivesse sendo redefinida entende?
O sistema funciona perfeitamente, o impasse é somente esse!
Mais uma vez parabéns pelo incrível sistema!
Agradeço pela atenção!
Aguardo contato.
fevereiro 8th, 2011 - 21:26
Olá @Everton, isso é estranho demais… pois se vc recebeu o email de ativação de cadastro, deveria também receber normalmente email para redefinição de senha.
você fez alguma modificação nos arquivos originais?
Você não recebe o email com a nova senha, mas quando solicitou a senha, imagino que tenha informado o mesmo email que cadastrou, certo?
O problema é que apenas não chega o email, mas a mensagem de sucesso na geração da nova senha aparece certinho?
fevereiro 10th, 2011 - 22:10
Olá Roberto, a questão da redefinição de senha eu já resolvi. Mas gostaria de saber por que as menssagens enviadas para confirmação de cadastro sempre caem no lixo eletrônico daa caixas de email. Fiz o teste com 5 e-mails diferente e sempre a mensagem entra na apsta de span.
Poderia por gentileza me responder a essa dúvida?!
fevereiro 10th, 2011 - 22:24
Olá @Everton.
Essa é fácil… há mais de uma justificativa para isso acontecer… vou citar duas apenas:
- Primeiro o que pode causar isso é o teu domínio ser encarado pelos provedores de email como hotmail, yahoo, gmail como um domínio novo e por isso não saberem se é um spammer ou não.
Há procedimentos junto ao server que podem auxiliar os provedores a entenderem que teu server não é um server spammer, procure informações junto ao suporte de teu server.
- Segundo é a função mail(), que ao meu ver é um pouco limitada nesse sentido. pois os cabeçalhos de envio são pobres e não passam muita informação para o servidor que recebe, e este, na dúvida encara como spammer. Procure no google sobre a variedade de headers a serem usados na mensagem usando mail() e utilize o máximo. Mesmo assim não é nada garantido.
Solução eficiente: PHPMAILER
Da uma olhada nesse meu tutorial abaixo, tente entender e adaptar para o sistema de envio deste tutorial de cadastro.
http://www.sistemabasico.com.br/2011/01/20/como-e…
Envio autenticado é maior a chance de chegar no destinatário na caixa de entrada.
Bons estudos!
fevereiro 12th, 2011 - 12:03
Obrigado Roberto, é sempre bom ter alguém que possa tirar nossas dúvidas.
Irei tentar fazer o que você está me aconselhando.
Obrigado e abraço!
novembro 20th, 2010 - 00:25
Vou testar no servidor, me parece simples e eficiente. Grato!
novembro 20th, 2010 - 13:47
Olá Kané, este tutorial é bem simples sim, requer algum conhecimento básico, mas é tranquilo.
Qualquer coisa fala aí que tento ajudar.
Abraço.
novembro 23rd, 2010 - 10:11
Roberto, facil entendimento!
Como faço pra colocar um layout neste código, qual a possibilidade, eu teria que utilizar CSS e HTML, tipo um menu para acessar as informações, por exemplo:
CADASTRAR/CONSULTAR/ATIVAR
Obs: sei que aqui vc está demonstrando PHP, mas seria possível comentar, Obrigado!
novembro 23rd, 2010 - 13:36
Olá! Pelo que eu entendi você quer saber como fazer uma interface administrativa para gerenciar os usuários cadastrados, correto?
Se for exatamente isso, a boa notícia é que nos próximos dias desenvolver um tutorial para essa questão.
Abraço
novembro 24th, 2010 - 02:08
Isso, mesmo uma interface!
Mas eu estava precisando para até sexta feira rsrs..
Nas verdade terei que criar Um cadastro de Usuario
Cadastro Professor/Aluno/Notas…um sistema básico mesmo!
Mas obrigadio pela atenção! Abraço
novembro 24th, 2010 - 12:58
Você chegou a ver o <a title="Demonstração do cadastro com login e sessions" href="http://www.sistemabasico.com.br/php/cadastro/formulario_cadastro.php" target="_blank" rel="nofollow">DEMO CADASTRO e a página DEMO ACESSO RESTRITO, com formulário de cadastro e inclusive exemplo da página restrita funcionando?
Talvez seja uma boa pra começar a entender como fazer a interface, é HTML.
Pra fazer o painel admin não seria muito diferente, o princípio é o mesmo, HTML para os formulários e consulta no banco de dados para listar os cadastros, criação de links que leva às páginas que exibem conteúdo com opções de edição, etc… mas pra sexta-feira fica apertado pra você conseguir eu acho.
Se quiser contratar meus serviços, mande uma mensagem através do canal de <a title="contato" href="http://www.sistemabasico.com.br/contato/" rel="nofollow">contato do site e a gente conversa.
Abraço
novembro 24th, 2010 - 01:27
olá Roberto, gostei muito do seu tutorial, me ajudou baste. Mas agora estou com um problema e gostaria de saber se vc pode me ajudar. Essa mensagem aparece quando tento logar:
Warning: session_start() [function.session-start]: Cannot send session cookie – headers already sent by (output started at /home/gorkco5/public_html/podpopuli.com.br/verifica_usuario.php:10) in /home/gorkco5/public_html/podpopuli.com.br/verifica_usuario.php on line 12
Como devo proceder? Obrigado!
novembro 24th, 2010 - 12:48
Olá @André! Esse erro é comum acontecer quando tentamos dar algum tipo de saída antes de chamadas como session_start(), header() e outras…
Qualquer tipo de saída, até mesmo um espaço pode causar esse erro se ele for lançado antes das funções que citei.
Verifique se está colocando session_start(), exatamente acima de tudo no código.
Uma outra opção um pouco deselegante de resolver o problema, seria colocar no topo do arquivo, antes mesmo de session_start(), a função ob_start(); e colocar no final de tudo, lá embaixo, a função ob_end_flush();.
Tente aí, analise as possibilidades que eu citei, se continuar o problema manda outro comentário.
Abraço
novembro 24th, 2010 - 20:38
Oi Roberto, agora está funcionando! Fiz a primeira alternativa que vc disse, valeu!
Mas agora estou com outro problema: a verificação não está confirmando usuário/senha de um cadastro de teste que fiz. Conferi no banco de dados e lá está ok. O que pode ser Roberto?
Mais uma vez obrigado.
novembro 24th, 2010 - 20:55
@André, pode ser diversas coisas, fica difícil adivinhar, mas me baseando na dúvida de centenas que já me enviaram email sobre esse tutorial de cadastro ao longo desses anos, chutarei algumas possibilidades que podem ser as suas.
Primeiramente verifique se manteve a criação da tabela no banco de dados exatamente como informei, com os valores para VARCHAR em senha e VARCHAR em email, exatamente como indiquei no tutorial. Se está tudo Ok em relação à isso, verifique se o teu arquivo verifica_usuario.php está exatamente igual ao que que eu disponibilizo aqui no tutorial de cadastro de usuários com login.
Se não for nenhuma dessa opções me diga exatamente o que ocorre, se aparece alguma mensagem de erro etc…
Outra coisa que eu ia esquecendo… após você cadastrar um user teste, antes de tentar fazer login, você confirmou o cadastro clicando no link que é enviado ao seu email?
Veja bem… isso é necessário para que após o clique o teu status se ative.
Enfim… analise essas dicas
Abraço
novembro 24th, 2010 - 23:02
Roberto, mais uma vez obrigado. A tabela foi cria conforme o tutorial assim como o arquivo "verifica_usuario.php".
Confirmei o cadastro através do link enviado no email. Ao tentar o login aparece a mesagem: "Você não pode logar-se! Este usuário e/ou senha não são válidos! Por favor tente novamente!".
Obrigado!
novembro 25th, 2010 - 14:13
Veja bem @André, verifiquei teus arquivos e o erro que você cometeu foi o seguinte:
Você alterou a forma de gerar senha no arquivo cadastra.php retirando a função que gera uma senha aleatória, mas até aí sem problemas se tens conhecimento a idéia é essa, explorar novas possibilidades, porém também retirou a função md5() (<a title="Função md5() do php – veja no manual do PHP" href="http://www.php.net/manual/pt_BR/function.md5.php" target="_blank" rel="nofollow">veja sobre md5() no manual do php) que calcula o hash md5 de uma string e gera uma saída de 32 caracteres (tipo uma criptografia), só que você esqueceu de alterar o arquivo verifica_usuario.php.
Veja como funciona…
No arquivo cadastra.php a senha passa por md5() e é gravada no banco de dados desta forma, como expliquei acima, e na hora do login a senha informada também passa por md5() no arquivo verifica_usuario.php e o valor de md5() pra senha informada no login é comparado com o valor md5() gravado no banco de dados, se 'bater', passa, se não será exibido a mensagem que você estava recebendo.
Acho que está me entendendo, você não retirando o md5() do arquivo verifica_usuario.php faz com que a comparação nunca 'bata', pois no banco de dados a senha está em sua forma original e no verifica_usuario.php está tentando comparar com a do banco de dados uma senha em md5().
O mais seguro seria manter o md5(), obviamente nos dois arquivos, ou menos seguro seria retirar o md5() também de ambos arquivos, mas não é aconselhável.
Observação: Se escolher retirar o md5(), não esqueça de verificar outros arquivos, principalmente os relacionados a senha, como por exemplo o gerar_nova_senha.php
Espero que tenha entendido que mudanças requerem um pouco de atenção, pois nada que está no código original é por acaso.
Qualquer 'vírgula' que você queira mudar deve estar consciente disso, sabendo que deve verificar se essa 'vírgula' não tem ligação com outros arquivos, deve seguir a lógica do programa para não ter esse problema, pois entendendo a lógica já é meio caminho andado, tudo fica muito fácil depois.
Tente aí e veja se da certo depois de corrigir o que citei.
Abraço
dezembro 18th, 2010 - 09:18
Fala Roberto!
Realmente o problema estava no md5. Mas ainda sim precisei de uma ajuda de um amigo com mais conhecimento! ;)
Obrigado.
dezembro 18th, 2010 - 19:12
É assim mesmo @André, trocando informação se chega aos objetivos.
Logo postarei mais tutoriais para ajudar no aprendizado…. meu e todos que aqui participarem.
novembro 25th, 2010 - 15:11
Olá Roberto, tudo bem?
Então, esses códigos são minha salvação, pois com ele posso terminar o meu site q estou fazendo para um trabalho de colégio. Porém, eu não sei onde depositar estes códigos.
Eu baixei o programa que você recomendou, mas não consegui usá-lo, pois apenas tem algumas coisas como Styles ( CSS ), Config ( PHP ), Index ( PHP ), Scripts ( Js ) e Validate ( PHP ).
Como eu faço para colocar os códigos em relação com o meu site e qual banco de dados eu deveria usar e onde depositar os códigos no banco de dados?
Sei que são muitas perguntas mas eu realmente preciso disso para conseguir realizar meu projeto.
Agradeço…
novembro 25th, 2010 - 15:26
Olá @Guilherme, por favor quando for fazer um comentário, faça um novo, não responda o comentário de algum outro usuário, caso não vá acrescentar em relação a dúvida do outro usuário, pois me da um trabalho fazer essa separação depois. = ) Valeu
Bom… quanto a tua dúvida ou diria melhor dúvidas hehehe fica meio difícil de ajudar, pois eu teria que praticamernte publicar uns 3 ou 4 tutoriais para sanar cada uma das tuas ansiedades por conhecimento.
Sugiro que leia mais sobre lógica de programação e PHP para pelo menos poder interpretar e com o tempo já estará escrevendo ou modificando códigos de acordo com as tuas necessidades.
Ainda assim irei tentar na medida do meu possível.
Os arquivos são um exemplo 'reles' de um site completo, claro que está longe de sequer ser um prospecto de site hehehehe, mas a intenção é passar apenas a idéia de como utiliza-lo… a 'ponta da corda'.
Se você seguir e entender a lógica do tutorial, ler ele todo, talvez consiga avançar.
Entenda que não é um programa onde você baixa ele, apernta um botão INSTALAR e tudo se da como mágica, ou seja, os arquivos são aqueles ali mesmo e deves modifica-los apenas de acordo com o que eu indico no tutorial. Estes arquivos são apenas um adendo e não o todo, o importante é o tutorial, entender o que se faz, de outra forma sempre terá problemas.
Bons estudos!
novembro 25th, 2010 - 16:02
Então, Roberto, eu estou usando o MySql. Eu consegui fazer a minha tabela de banco de dados e fiz um formulário no dreamweaver. Você poderia me dizer qual é meu próximo passo?
E também gostaria de saber se você faz estes códigos para as pessoas, claro, sendo pago. Se faz, me passe o seu contato.
Agradeço..
novembro 25th, 2010 - 16:10
@Guilherme, se você tem a tabela já no banco de dados e já criou seu formulário html, então é só seguir o tutorial, onde você pode ver que também tem um formulário, o que tu tem que fazer é apenas transferir situações, por exemplo, no tutorial tem o form de cadastro, e você criou um aí… então é só imaginar que o que tu criou é o mesmo que o do tutorial e seguir os passos.
Você tem que acompanhar o tutorial desde lá do topo. Todos os arquivos estão interligados, o formulário envia os dados para o cadastra.php e este grava no banco de dados na tabela mysql e assim por diante… cada arquivo tem sua função bem explicada no tutorial.
Quanto a sua pergunta sobre eu desenvolver como prestação de serviços…
Sim, faço e para entrar em contato comigo, basta enviar uma mensagem através do formulário de contato deste site.
Abraço
novembro 25th, 2010 - 17:41
Roberto, só mais algumas perguntas…
Eu preciso usar aquele primeiro código? Pois eu já tenho a tabela do banco de dados feita, e no código está escrito "create table usuarios".
Como eu faço para inserir os códigos php lá no local host, com o phpmyadmin?
E quando eu tiver que entregar este trabalho, eu vou ter que coloca-lo em um cd. Como eu vou fazer para botar o banco de dados e os códigos no cd, porque eles estão na Internet….?
Cara, desculpe as perguntas inúteis, mas eu realmente não entendo nada disso e gostaria muito de aprender, por isso estou te enchendo tanto o saco…=)
vlws
novembro 25th, 2010 - 19:48
@Guilherme, juro que entendo tua ansiedade, mas infelizmente tuas dúvidas saem muito do propósito deste tutorial, não sei com o poderia gravar um sistema desses em um cd, desculpe.
Quanto a tabela no banco de dados não precisa fazer outra se já fez uma igual à que indico neste tutorial, mas deve ser igual.
Os arquivos são colocados exatamente onde os arquivos do teu site devem estar, se tem outro propósito para executar tal sistema que não seja em um servidor web, sinto muito.
Amigo, vendo tamanha as dúvidas que tem sou obrigado a dizer que este tutorial apesar de ser básico, ainda não é pra você.
Desculpe não poder ajudar mais por enquanto.
novembro 25th, 2010 - 18:45
cara to precisando de ajuda,
eu baixei o arquivo zipado e upei no meu host no Awardspace, o problema é que quando eu tento cadastrar um novo usuario, ele aparece uma mensagem de erro, que é a seguinte:
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
o que está dando errado? pq não está cadastrando novos usuários?
obrigado desde já.
novembro 25th, 2010 - 19:53
@Gigllyan, este erro é porque o sistema não está conseguindo conectar com o servidor MySQL.
Você configurou o arquivo config.php com os dados referentes à tua conexão com o seu banco de dados?
Veja que não basta baixar os arquivos no zip, deve ler o tutorial para aprender e configura-lo de acordo com os teus dados e melhor, deves ler o tutorial para aprender mais sobre o PHP.
Abraço
novembro 27th, 2010 - 14:33
hmmm, é pq sou 'meio' (pra não dizer completamente), leigo no assunto, e axei q so precisava upar e pronto, obrigado pela atenção, vou dar uma lida no seu tutor pra tentar resolver…
obrigado pela ajuda, qualquer coisa eu volto, rsrs.
novembro 27th, 2010 - 15:57
depois que recebi sua dica eu corri atras das soluções, encontrei esse tutorial que me ajudou a configurar o arquivo config.php, o erro que eu havia falado parou de aparecer, mas começou a aparecer outro erro:
<code>
Table '541921_1234.usuarios' doesn't exist
</code>
PS: eu criei um novo banco de dados com o nome 541921_1234
o meu código do config.php ficou assim:
<code>
</code>
e agora? o que você sugere?
Abraços
novembro 27th, 2010 - 17:48
Sugiro que crie a tabela 'usuarios' dentro deste banco de dados que você criou, conforme eu ensino no começo do tutorial e esse erro vai parar = )
Abraço
novembro 26th, 2010 - 19:31
aonde eu posso baixar esse banco de dados nao tem como eu usar o de min
ha hospedagem ,nao eu ja o usei para varias outras coisas como instalar foruns q hoje nao existem mais etc… se puder me ajudar agradeço tenho muito q cadastrar usuarios no meu site para que eles possam se logar e adiquirir conteudos exclusivos
novembro 26th, 2010 - 23:37
Olá @wagner! Claro que você pode usar o banco de dados de sua hospedagem, alias… DEVE hehehehe, se ele for MySQL obviamente, se for outro banco de dados como Oracle, SQL, Firebird, PostgreSQL, Access, etc, terá que adaptar as querys e conexão com o banco de dados conforme for o seu.
Se for MySQL você deve apenas criar esta tabela que instruo no tutorial dentro do teu banco de dados… e no arquivo config.php, deve informar os dados de acesso ao seu banco de dados conforme você mesmo já disse ter feito com fóruns, etc e tudo vai correr bem. O phpMyAdmin é 'apenas' um gerenciador amigável do banco de dados MySQL, desenvolvido em PHP e que nos facilita muito e na maioria das vezes é o gerenciador Mysql que os servidores de hospedagem disponibilizam.
Bons estudos!
novembro 27th, 2010 - 18:28
*quando eue sto sempre aparece isso
Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘usuário de banco de dados’@'localhost’ (using password: YES) in C:xampphtdocsconfig.php on line 7
Warning: mysql_select_db() [function.mysql-select-db]: Access denied for user ‘ODBC’@'localhost’ (using password: NO) in C:xampphtdocsconfig.php on line 8
Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in C:xampphtdocsconfig.php on line 8
Warning: mysql_query() [function.mysql-query]: Access denied for user ‘ODBC’@'localhost’ (using password: NO) in C:xampphtdocscadastra.php on line 53
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:xampphtdocscadastra.php on line 53
Warning: mysql_query() [function.mysql-query]: Access denied for user ‘ODBC’@'localhost’ (using password: NO) in C:xampphtdocscadastra.php on line 59
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:xampphtdocscadastra.php on line 59
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:xampphtdocscadastra.php on line 61
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:xampphtdocscadastra.php on line 62
Warning: mysql_query() [function.mysql-query]: Access denied for user ‘ODBC’@'localhost’ (using password: NO) in C:xampphtdocscadastra.php on line 128
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:xampphtdocscadastra.php on line 128
Access denied for user ‘ODBC’@'localhost’ (using password: NO).
Nao sei o qfazer, ja tentei arrumar e nao adianta so aparece isso.Me ajuda por favor
novembro 27th, 2010 - 22:38
Oi @Bianca, o teu problema é simples de resolver, basta que no arquivo config.php do tutorial, você informe os teus dados de conexão com o teu banco de dados de forma correta, ou seja, com as tuas informações de usuário, senha e nome do banco de dados.
Abraço!
novembro 27th, 2010 - 19:59
Cara, fiz tudo certinho…
Criei a base de dados, configuei o acesso ao DB no arquivo config.php, enfim, ao preencher o form de cadastro, ele redireciona para a cadastra.php e fica em branco a tela, não dá erro e nem mensagem alguma, apenas vai para a pagina da action no caso a cadastra.php porem sem nenhum resultado (tela em branco).
O que pode ser?
Segue link: http://www.alumidecor.com.br/sistema/formulario_c…
Desde já o parabenizo pelo seu site e pela excelente iniciativa.
Obrigado!
novembro 27th, 2010 - 22:43
Olá @Diego, tudo certinho você não fez, se tivesse feito não dava erro hehehehe
@Diego problema está no teu arquivo cadastra.php, verifique as modificações que você fez e veja se não fala nada.
Olha só te enviei um email, verifique o que te solicito lá.
junho 3rd, 2011 - 17:45
Olá Roberto!
Assim como todos que estão aqui no tuto, quero lhe parabenizar pelo excelente trabalho.
Se todos que colocam tutoriais na web fizessem com a intenção de ensinar, o mundo seria melhor!
Como tudo não são flores…hehehehe… estou com o mesmo problema do Diogo, ao enviar os dados, não aparece nenhuma mensagem de erro, apenas uma tela em branco.
Você pode dar uma força pls!
Valew!
junho 4th, 2011 - 00:41
Olá @Luiz, procure verificar o teu arquivo cadastra.php, se fez alguma mudança, etc.
Se o erro fosse no script que eu disponibilizei, seria impossível funcionar pra uns e pra outros não… concorda?
Desculpe… acho que inconscientemente estou respondendo ao Diogo que por email disse-me que corrigiu um erro meu no arquivo cadastra.php… equivocadamente, pois não há erro.
Pedi à ele que mostrasse o erro, desde então nunca mais se manifestou.
Mas focando na tua dúvida… reveja o arquivo… instale exatamente como fiz… limpo para testes, e se tudo der certo tente integrar ao teu site.
Verifique se tua hospedagem da suporte as funções… enfim
No aguardo.
junho 6th, 2011 - 14:43
Olá Roberto!
Reinstalei os arquivos e como você disse, funcionou.
Mais uma vez parabéns pelo site e obrigado!
novembro 28th, 2010 - 08:42
Aeee, funcionou:
agora eu tenho outra dúvida, é que eu uso o serviço free do awardspace, nesse caso eu não tenho suporte a uma conta de email a não ser que eu pague.
e pelo que eu vi eu preciso de uma conta de email, que vai enviar a confirmação quando o usuário se cadastra, e agora? eu posso usar um email de outro host? se sim, como deveria ser o procedimento?
Ps: eu tentei adicionar meu outro subdominio, mas me parece que só é aceito domínios, e eu num tava muito afim de pagar pra poder usar o serviço
Ps²: o site tá muito legal, continue assim.
novembro 28th, 2010 - 11:12
PS³: eu ativei minha account pelo phpmyadm, e defini nivel 2 e depois nivel 1 de acesso, das duas formas eu não consegui visualizar o painel de controle, apesar de visualizar no código fonte do arquivo area restrita, a mensagem que aparece eh a mesma:
Seu nível de usuário é 1.
Com esse nível, você tem permisão de acesso à algumas áreas exclusivas do site.
Seu nível de usuário é 2.
Com esse nível, você tem permisão de acesso à algumas áreas exclusivas do site.
novembro 28th, 2010 - 19:57
@Gigllyan, você claramente não leu o tutorial, não existe um painel de controle, não fiz essa parte…
A idéia é que o usuário que utilize o tutorial, adquira conhecimentos e com eles possa criar um painel de controle para este sistema, pois não é difícil se o tutorial for bem entendido e se a aprendizagem do PHP evolua com as informações deste tutorial. Entenda que não é um código de copiar e colar… até pode ser usado desta forma, porém a aprendizagem é nula.
Quanto aos níveis de usuário, eu expliquei no tutorial que iríamos fazer algo que a base para níveis ficasse pronta, mas o desenvolvimento de aplicações e verificações de níveis, permissões de áreas para um nível e outro não e assim por diante, ficaria por conta de vocês ou até eu lançar tutoriais para essa questão e quem sabe até um painel de controle.
Enfim… se nos teus testes conseguiu chegar até a autenticação após o login, parabéns, você concluiu o tutorial com sucesso, reveja-o tentando entender os códigos, pois se conseguir isso sua mente se abrirá para muitas outras possibilidades, como reposição de códigos para outras ações e assim por diante… um passo de cada vez até ter mais facilidade de se aventurar com PHP. Pratique todo dia e notará a diferença.
Bons estudos!
novembro 28th, 2010 - 13:04
@Gigllyan, vc pode tentar utilizar uma conta do gmail, talvez você consiga.
Eu consigo utilizar contas do gmail utilizando o phpMailer (uma classe de envios de email que utilza smtp autenticado, onde há a possibilidade de definir algumas características do gmail, como porta, autenticação etc.
Nuinca testei o gmail e nenhum outro tipo de servidor externo com a função mail(), mas fica aí a seu critério tentar utilizar mail() com uma conta desses servidores ou tentar aprender utilizar o phpmailer.
Em breve mandarei um tutorial sobre o pahpMailer. Por enquanto joga no google que tem muito material.
novembro 29th, 2010 - 18:08
ah bom, eu achei que já vinha com painel de controle pq li no código essa parte:
<code>
if ($_SESSION['nivel_usuario'] == 0){
echo "- ForumAbrir tópicos, postar em tópicos
de terceiros.";
}
if ($_SESSION['nivel_usuario'] == 1){
echo "- ForumAdministração -
Acesso total ";
}
</code>
e como eu falei não entendo muita coisa sobre programação em php, vo tentar essas suas últimas sugestões e ver no que dá… mas eu ja consegui usar suas dikas da forma que eu precisava, que era proteger alguns arquivos meus pra que somente eu pudesse visualizar e aproveitando pra adquirir mais alguns conhecimentos (apesar da preguiça)
valeu mesmo, suas dicas estão ajudando bastante. e desculpe pela minha ignorância.
abraços
dezembro 1st, 2010 - 12:17
Que isso @Gigllyan, não se desculpe, no início é assim mesmo, eu estou remando muito ainda com programação Web… e não tem fim… sempre tem algo à se aprender.
Qualquer dúvida fala aí, se eu puder ajudar… ajudarei.
;)
novembro 28th, 2010 - 14:33
oi , eu conseguir arrumar graças a deus, mas agora na parte cadastrar ta assim:Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:xampphtdocscadastra.php on line 61
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:xampphtdocscadastra.php on line 62
No database selected
novembro 28th, 2010 - 19:45
Oi @Bianca, na verdade ainda não resolveu, pois permanece um erro referente à conexão com seu banco de dados.
O trecho que está dando erro é quando é feito a verificação se usuário e email informados no cadastro já estão ou não sendo utilizado por outro usuário.
Não sei quais as modificações que fez no cadastra.php, por isso não tenho como te dizer onde está errando… se não fez modificações alguma, então o problema ainda está somente no config.php, onde na função <code>mysql_select_db(BD_NAME)</code> não está rolando corretamente, pois não deve ter informado o nome do BD na constante BD_NAME, mais precisamente nessa linha: <code>define('BD_NAME', 'nome do seu banco de dados');</code> Tente aí ;)
dezembro 1st, 2010 - 12:01
@Bianca, que tal no config.php vc colocar aspas simples ao redor do usuario 'root' ?
Assim: <code>mysql_connect('localhost', 'root');</code>
Não sei se vai funcionar, mas tente.
Depois me fale ;)
dezembro 1st, 2010 - 16:50
obrigada arrumei isso agora o erro ta no e-mail, so q eu nao entendir o erro , vc poderia me explicar?
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:xampphtdocscadastra.php on line 175
Foi enviado para seu email – ( bianca.prado.ramos@gmail.com ) um pedido de confirmação de cadastro, por favor verifique e sigas as instruções!
eu entro no meu e-mail e nao aparece nada.Desculpa se to ti encomodando.
dezembro 1st, 2010 - 18:24
tambem tenho outra duvida, como vou saber o nivel do usuario?
dezembro 1st, 2010 - 18:59
Como assim @bianca?
Você pega o nível do usuário quando ele faz login.
Acompanhe o tutorial com atenção no arquivo verifica_usuario.php e verá que é gravado uma session com o valor do nível do usuário quando ele faz o login.
No arquivo functions.php você pode verificar isso com condicionais. Pode criar uma segunda função, session_checker2() por exemplo e verificar se o usuário tem nível tal e nas páginas restritas para esse nível chamar essa segunda função e não a primeira. Use a criatividade, as possibilidades são inúmeras.
Bons estudos!
dezembro 1st, 2010 - 18:53
@bianca, você não tem um servidor smtp instalado, então não tem como enviar emails, se vc usar um servidor remoto (hospedagem) estes geralmente te dão acesso e possibilidades de envio de emails…
Se está utilizando o PHP instalado no seu computador, a dica fica para você configurar o php.ini de uma forma que a conta de email que irá enviar os emails seja o do gmail e assim talvez consiga utilizar a função mail localmente.
Se não der recomendo a busca por PHPMailer no google e utilizar esta classe para envio SMTP de forma autenticada. Em breve postarei um tutorial de envio de email via smtp autenticado utilizando a classe PHPMailer.
Bons estudos!
novembro 29th, 2010 - 01:04
Em primeiro lugar parabéns pelo tutorial ai, muito bom, tenho umas duvidas, estou atualmente aprendendo php, banco de dados e tal, tô refazendo o site da empresa aonde trabalho, tô querendo colocar esse sistema de login de usuario, area restrita e tal mas só de uma maneira, como aonde trabalho é uma empresa de exportação e importação, no site tem muitas fotos de produtos, queria um sistema que quando a pessoa entrasse no site, pudesse ver tudo, mas quando chegasse nas partes dos produtos, poderia ver as fotos em miniaturas lá, se a pessoa clicasse em uma das fotos para amplia-lá, ai apareceria um aviso falando pra ela se cadastrar ou fazer login para ter acesso , tem como fazer isso? se sim teria como me dar uma luz?
vou agradar respostas
Abraços
dezembro 1st, 2010 - 12:14
Olá @Felipe, o tutorial é justamente para situações como a que você descreveu.
Você chegou a dar uma analisada nas possibilidades que abrem se acompanhar os ensinamentos do tutorial?
Depois de tudo definido e configurado, o princípio ativo que bloqueia o acesso é a chamada para função session_checker() criada para verificação se o usuário que tenta acessar está logado, e quando não está, é redirecionado para página de formulário de login, sendo assim quando quiser bloqueio em alguma página/arquivo basta essa chamada da função como eu mostro em um exemplo bem claro no arquivo area_restrita.php no tutorial.
Para teu caso uma forma de fazer entre milhares, seria todas as miniaturas liberadas ter um link padrão que envia o id da imagem como um parâmetro para uma mesma página/arquivo, o qual grava o id da imagem em uma session() e e depois faz uma verificação se o meliante está logado, se sim ele faz a consulta o banco de dados das imagens e exibe todas as miniaturas novamente e a que tem o id salvo na session(), ele exibe ampliada, pois com o id da imagem você faz tudo. Mas isso é uma idéia apenas e imaginando que tuas imagens estejam gravadas os nomes em banco de dados, o que seria ótimo e mais prático… digo apenas os nomes, as imagens podem ficar em pastas.
Bom … ve se ajuda em alguma coisa as dicas.
Bons estudos!
novembro 29th, 2010 - 12:46
Oi Roberto,
Agradeço pelo tutorial. Correu tudo bem ate que deu erro (rsrs). Pode me ajudar, to arrancando meus cabelos aqui.
Não cadastra no BD. Depois que preencho o formulario gera uma pagina em branco do cadastra.php. Acho que é porque errei na hora de preencher os dados que envia para o email para depois poder ativar.
Segue o código:
// Enviar um email ao usuario para confirmação e ativar o cadastro!
$headers = "MIME-Version: 1.0
";
$headers .= "Content-type: text/html; charset=iso-8859-1
";
$headers .= "From: "; // TEU DOMÌNIO E TEU EMAIL
$subject = "Confirmação de cadastro – Condominio";
$mensagem = "Prezado $nome $sobrenome,
novembro 29th, 2010 - 13:50
Roberto,
Ja resolvi. Apaguei o arquivo cadastra.php e fiz tudo de novo. Deu certo!!!
Grata, seu tutorial é muito bom mesmo!!!
Agora vou fazer um HTML bonitinho rsrs
novembro 30th, 2010 - 21:53
Que bom que conseguiu @sueli, desculpe a demora na resposta ;)
novembro 29th, 2010 - 16:36
Excelente tutorial!!!
Parabéns Lunelli!!
Estou tentando aprender PHP, e é através de tutoriais como este que eu vou conseguindo aos poucos.
Estou tentando fazer com que uma sessão encerre quando eu clico num botao "Sair". detalhe, não tem login na página, apenas uma carrinho de compras.
aparentemente funciona só com o botão, mas não precisei chamar a função destroy, por isso fiquei sem saber se está funcionando de verdade.
você pode me ajudar a entender? isso tudo é ainda muito complicado pra mim, mas eu chego lá!
Obrigada!!!
dezembro 1st, 2010 - 12:23
Olá @Eloiza, desculpe-me a demora, mas estava corrido esses dias por aqui.
Então, posso te ajudar sim, mas antes você terá que me ajudar a conseguir ti entender =)
Sério, não entendi muito bem sua dúvida.
Você quer encerrar a session() sem usar session_destroy()? é isso?
Você pode tentar limpando a session com unset().
Minha resposta ficou vaga até pra mim. Não entendi sua dúvida muito bem.
De mais detalhes.
;)
dezembro 1st, 2010 - 14:00
Oi Lunelli!
Eu estou coloquei um botão (submit) comum de saida de página. Quando clico nele, Sai da página que estava para outra aberta anteriormente. Não cheguei a usar a função destroy(), por isso não sei se é assim mesmo. Não faço idéia de como a função destroy funciona em PHP! É parecido com Java?
[ EDITADO por Roberto Lunelli ]
@Eloiza, para não ficar muito extenso teu comentário, retirei o imenso bloco de códigos que não tinha nenhuma relação com a ajuda que eu poderia te dar.
Veja se minha resposta mais abaixo deste teu comentário lhe auxilia um pouco mais.
[/ FECHANDO EDIÇÃO ]
dezembro 1st, 2010 - 14:44
Oi @Eloiza, se você usar apenas um botão input para sair, melhor dizendo, redirecionar para uma página em específico, você não está efetuado logout e ainda continuaria autenticada no site. Para efetuar logout com sucesso, ou seja, fazer com que o mesmo usuário ao tentar entrar em páginas restritas, precise efetuar login novamente, é necessário seguir os passos que ensino no tutorial.
Quando é feito o login com sucesso, é registrado sessions que servirão para verificação se o usuário está cadastrado, ativado ou não e também que usuário seria este, baseando-se nas informações de cadastro dele, consultado a partir do valor de usuario_id gravado numa session assim que o login é efetuado, comparado com um id existente no banco de dados.
Além da session relacionada ao id do usuário há outras sessions que pode acompanhar no tutorial se tiver atenção aos arquivos do mesmo.
Para logout você precisa destruir essas sessions ou apaga-las, que no caso poderia também utilizar unset.
A leitura do <a title="Manual do PHP" href="http://www.php.net/manual/pt_BR/" target="_blank" rel="nofollow">manual do php para o entendimento e acompanhamento mais proveitoso deste e de qualquer tutorial é necessário.
Leia mais sobre <a title="Manual PHP sobre Sessions" href="http://www.php.net/manual/pt_BR/book.session.php" target="_blank" rel="nofollow">session(), <a title="Manual do PHP sobre Session_destroy" href="http://www.php.net/manual/pt_BR/function.session-destroy.php" target="_blank" rel="nofollow">session_destroy() e <a title="Manual do PHP sobre Unset" href="http://www.php.net/manual/pt_BR/function.unset.php" target="_blank" rel="nofollow">unset()
Bons estudos!
dezembro 9th, 2010 - 13:16
Boa tarde, gostaria de dar parabens pelo seu sistema de login, bem util. Tenho apenas um problema com ele, qnd faço o cadastro meu banco de dados recebe as informaçoes mais o email nao chega ao cliente. Alguma ideia do que possa estar acontecendo? estou trabalho com a hospedagem do uol, tem alguma cfg? abraçosss e parabenssss
dezembro 9th, 2010 - 22:03
Amigo, antes de mais nada obrigado.
Quanto a seu problema, assim fica difícil adivinhar, mas você deve verificar o arquivo cadastra.php e ver se colocou o seu email corretamente, o email responsável pelo envio lá na variável $headers.
Outra possibilidade é analisar como fica literalemnte gravado o email no banco de dados, se não cortou ele pela metade, por exemplo…. veja se está gravando o endereço de email completo.
Amigo, estou chutando as possibilidades, fica difícil saber o que fez errado. Pode ser de uma simples falta de atenção até a incompatibilidade com a função mail() do php no server do uol.
Faça essas verificações… se não for nada disso responde aí e vamos adiante achar o problema.
Bons estudos!
dezembro 13th, 2010 - 18:26
Boa noite amigo.. to retornando soh pra dizer q consegui resolver o problema :D
Unica coisa q to com problema eh monta o layout do site dentro do verifica_usuario… mais vo da mais uma estudada ai e vejo se consigo
abraçosss
dezembro 16th, 2010 - 14:24
Que bom que conseguiu @Bruno.
Quanto ao layout não é difícil, entenda que o verifica_usuario.php é um arquivo que não precisa ter layout no caso de sucesso no login, pois ele vai redirecionar quando tudo certo.
Você pode fazer a mesma coisa em caso de erro no login, ou seja, ao invés de dar include no form de login no próprio verifica_usuario.php, vc pode redirecionar para página de login quando der insucesso no usuário e senha.
Entendeu a dica? Qualquer coisa fala aí.
Bons estudos!
dezembro 28th, 2010 - 08:29
Caro Roberto,
criei todos os arquivos php e html, fiz as devidas alterações para o meu site e minhas necessidades, porem nao consegui criar o banco de dados, nao sei se estou tentando fazer errado, mas eu colei o codigo do banco no access e executei, so que da um erro de sintase no create tabela.
Desculpe minha ignorancia, mas vc poderia responder ao meu email, pois na verdade estou tentando criar uma area restrita em um site maçonico com niveis, de acordo com os graus dos usuarios, porem no formulario de cadastro deveria constar campos com perguntas especificas e as respostas devem ser pre-definidas, ou seja, o usuario so consegue cadastrar e receber o email de confirmação se responder de maneira correta as perguntas no formulario de cadastro de acordo com o grau maconico (nivel), porem haveria no formulario um campo com cx de seleção, com os campos aprendiz, companheiro e mestre, com isso as perguntas iriam variar no proprio formulario de cadastro, de acordo com o grau que ele escolher, tipo quando vc escolhe uma cidade e o proximo campo ja abre os municipios dessa cidade, entende? gostaria de uma luz sua. abracos
dezembro 28th, 2010 - 18:27
Olá @Gilbert, primeiramente vamos pelo início de tuas dúvidas… ou seja, leia com mais atenção e irá ver que o tutorial em nenhum momento fala sobre utilizar o banco de dados access, o banco a ser utilizado se seguir o tutorial é o MySQL. Quanto as outras dúvidas é um pouco fora do escopo do tutorial, mas você pode usar AJAX para exibir opções de acordo com a escolha inicial, ficaria mais limpo, mas pode exibir as opções relativas a escolha inicial dando refresh na página, seria funcional da mesma forma.
Bons estudos!
janeiro 19th, 2011 - 12:45
Boa tarde, parabéns pela sua iniciativa de ajudar as pessoas é raro isso acontecer, que Deus o abençoe por isso.
Tenho um problema com o ativar.php
Criei uma index que chamava o formulário_cadastro funcionou perfeito, me cadastrei, recebi a mensagem no meu e-mail para poder ativar só que vem um link que não pode ser encontrato pela internet. Exemplo
http://www.citydrive.com.br.com.br/ativar.php?id=…
como eu posso resolver isso por favor me ajude eu estou precisando muito.
Desde já obrigado
janeiro 19th, 2011 - 14:39
Sim @Rodrigo, posso ajudar sim :)
Perceba que quando cai na página de erro o endereço que não pode ser encontrado é citydrive.com.br.com.br/ativar.php
Pegou ali onde está o seu erro?
Verifique dentro da tag <code></code> no arquivo cadastra.php… a forma que está o endereço… tem um .com.br a mais na sua modificação.
Melhor explicando:
Entre as tags <code></code> AQUI<code></code> está correto, mas o valor de href que está errado na sua modificação ;)
Bons estudos!
janeiro 26th, 2011 - 10:02
Bom dia Roberto, eu gostaria de saber como eu faço para que meus clientes do site possuão uma página expecífica para cada um deles. Por exemplo quando a pessoa logar ela pode acessar a sua conta onde vai conter o boleto da compra dela entre outras informações específicas para ela e só ela pode acessar com o login e senha dela.
Muito obrigado pela sua ajuda, na outra pergunta.
Grato por tudo!!!
janeiro 26th, 2011 - 10:54
Olá, @Rodrigo, não há necessidade de um arquivo diferente para cada usuário, basta um arquivo em comum pra todos, por exemplo painel.php e o que irá diferir nas informações neste arquivo será a consulta no banco de dados. Pois quando o usuário logou, o ID dele ficou registrado em session e é baseado nesse ID que poderá ser puxado todas as informações deste usuário. Por exemplo eu me logo com meu user e senha, e você tbm se loga com seu user e senha através de seu computador… nós dois estaremos vendo o arquivo painel.php, mas o conteúdo que será exibido para cada um de nós é respectivo à nós, eu vejo tudo em relação ao meu ID e você vê tudo em relação ao seu.
A consulta no banco de dados é baseado no Id registrado na session após o login.
Espero ter ajudado.
Bons estudos!
janeiro 27th, 2011 - 11:14
Ok entendi, e isso é muito melhor do que eu estava pensando.
Mas vc teria como postar algum código que faça essa função? É que eu não entendo muito de PHP. Ficaria muito grato pela sua ajuda.
Se tiver também como fazer alguma contribuição para vc seria legal.
Desde já muito obrigado por sua atenção e dedicação. :)
janeiro 27th, 2011 - 12:19
@Rodrigo, sim há como fazer uma contribuição, mas não é pra mim. Tudo que for arrecadado através deste site, é para ser usado neste site.
Para contribuir acesse: http://www.sistemabasico.com.br/colabore/ que é relacionado ao link COLABORE no menu principal.
Quanto aos códigos, veja bem… acompanhe o tutorial, procure entender/interpretar as etapas, irá ver que os códigos que deseja estão no tutorial :) basta adaptar.
Por exemplo quando você faz login, é feito uma consulta no banco de dados para ver se teu usuário e usuário e senha existem… ou seja… tudo é a mesma coisa… só muda as opções, pois no painel.php por exemplo você quer consultar e listar todos os dados e não só consultar usuário e senha.
Vou dar um exemplo da seguinte forma e com dois arquivos:
- Crio o arquivo listar.php o qual é restrito, portanto precisa daquele cabeçalho de verificação lembra?
- Nesse arquivo vamos pegar apenas id, nome e sobrenome de todos os usuários cadastrados, ok?
- Aí montarei um link para painel.php, passando esse nome, sobrenome e id via URL, ou seja, na barra de endereço de seu navegador.
- No arquivo painel.php pegarei esses valores enviados na URL com $_GET
lista.php:
$query = mysql_query("SELECT id, nome, sobrenome FROM usuarios ORDER BY nome,sobrenome DESC") or die(mysql_error());
if (mysql_num_rows($query) != "0"))
{
while ($array = mysql_fetch_array($query))
{
echo "<a href="" target="_blank">".$array['nome']." ".$array['sobrenome']."</a><br />";
}
}
Esse é um exemplo bem fuleiro do que seria o lista.php
Agora vamos ao painel.php:
// O ideal é definir todos os campos que quer consultar, ali no SELECT para melhor performance, mas esse comentário está ficando longo e por isso usarei um coringa "*" (sem aspas), mas não sugiro fazer igual.
$query = mysql_query("SELECT * FROM usuarios WHERE id = ".$_GET=[id].") or die(mysql_error());
if (mysql_num_rows($query) != "0")
{
$array = mysql_fetch_array($query)
echo $array['nome']." ".$array['sobrenome']."&alt;br />";
echo $array['email']."&alt;br /> ";
/ / echo etc….
}
Pegou???
Analisa isso e tenta entender, e antes de tudo tenha em mente que não utilizei nenhuma forma de segurança nesse exemplo, mas depois que começar a entender isso, poderá se aventurar com meios de segurança, mas não se acostume em pegar códigos prontos sem procurar entender, afinal a ideia é aprender e não ficar como 'papagaio de pirata' copiando sem saber o que está fazendo.
Mas acredito que não é teu caso @Rodrigo Estou errado?
Não esquece de seguir no twitter pra ficar ligado nas novidades, http://twitter.com/sistemabasico e não esquece daquela doação lá ;)
Grande abraço
janeiro 20th, 2011 - 17:10
Olá
Eu já fiz sistemas de PHP usando o Dreamweaver (não gosto, mas foi muito bom para meu começo) Hoje desenvolvo sites HTML, CSS e aplico WP no layout, porém estou interessado em voltar a aprender PHP, seu tutorial está ótimo, parabéns. Mas tenho uma dúvida. Eu me lembro que quando criava uma tabela o ID eu colocava auto increment, int, valor 11, mas o seu está valor 5. Por que? Nunca entendi a questão de valores, poderia me dar uma breve explicação?
Obrigado
janeiro 20th, 2011 - 17:28
Olá @João.
O valor utilizado com o tipo INT vai depender do maior valor que tu espera pra esse campo.
Vou explicar melhor usando o próprio campo ID autoincrement, que no caso, é o identificador do registro, ou seja, a cada registro um Id diferente e assim por diante.
Mas até quantos registros você quer aceitar nessa tabela???
Veja bem… se vc usar 11 para o INt deste campo, vc aceitará 99.999.999.999 registros… quantos '9' tem nesse inteiro? 11
Eu utilizei 5 no INT poque sugeri o suporte para uma quantidade de registro igual a 99.999 (5)
Se eu estiver errado e você souber diferente, diz aí.
Bons estudos!
janeiro 20th, 2011 - 17:50
Mas isso é apenas no caso do INT? Por exemplo, se eu colocar 11 em um campo varchar, ele irá aceitar 99.999.999.999 registros, é isso?
janeiro 20th, 2011 - 19:20
@João, na verdade eu posso estar me equivocando, ao tentar dar uma explicação simplificada para que entenda facilmente.
A explicação que dei antes de fato me referia apenas ao INT.
No caso de VARCHAR se você colocar 11, só vai registrar até o décimo primeiro caracter.
Por exemplo o campo 'nome' se tiver uma entrada 'RobertoLunelli', só será registrado até 'RobertoLune'.
Para entender melhor e com mais propriedade do que eu consegui passar na minha resposta anterior, leia sobre os Tipos de campos/dados do MySQL.
Bons estudos!
janeiro 20th, 2011 - 20:33
Não estou conseguindo efetuar o registro no banco de dados. Não dá erro, ele simplesmente não vai. Esse é meu código após as validações
mysql_query("INSERT INTO user(user_nome, user_pw, user_email, user_user, user_key) VALUES ('$nome', '$pw', '$email', '$key', now())");
Essa não é a ordem que tá na tabela, isso tem alguma relação?
janeiro 20th, 2011 - 21:28
Sim… de certa forma a ordem tem uma relação bem relevante.
@João, o seu PHP.ini deve estar programado para não exibir erros, coloque então no topo do arquivo PHP que está executando esse INSERT, a seguinte linha de código:
error_reporting(-1);
Assim quando executar essa ação será exibido todos os erros provenientes do PHP.
Após a QUERY de execução no banco de dados, adicione uma chamada para mysql_error(), assim se sua query tiver algum erro na sintaxe, esse erro será exibido na tela.
Exemplo:
$sql=mysql_query(“INSERT INTO tabela (nome,sobrenome) VALUES (‘”.$nome.”‘, ‘”.$sobrenome.”)”) or die(“ERRO no MYSQL: “. mysql_error());
Bons estudos!
janeiro 20th, 2011 - 22:03
Antes de responder meu comentário, descobri o que era. O now() que você pede pra colocar por algum motivo impedia, antes disso, deu alguns erros meus que eu resolvi, mas o que impedia de ser colocado no banco de dados foi o now(). Não sei se é por alguma atualização do PHP, só sei que eu tirei, e funcionou.
Desculpa te encomodar tanto, mas se eu em algum campo coloco algo com acento, no PhpMyAdmin, a tabela se encontra com erros, tem alguma forma de resolver? Obrigado :)
janeiro 20th, 2011 - 22:10
@João, o NOW() refere-se a data, no caso a data do 'agora' … grava exatamente a data que o registro foi inserido no campo data.
No seu caso dava erro, pois a ordem e a relação entre VALUES e campos definidos na sua query estava completamente desorganizado.
Quanto à acentuação, refere-se ao charset do teu banco de dados e o charset do teu arquivo PHP, procure usar UTF-8 para ambos.
Bons estudos!
janeiro 21st, 2011 - 12:27
Warning: session_start() [function.session-start]: Cannot send session cookie – headers already sent by (output started at C:Documents and SettingsJoão PauloMeus documentosDropboxwebsites rollingloginsecuritycheck.php:1) in C:Documents and SettingsJoão PauloMeus documentosDropboxwebsites rollingloginsecuritycheck.php on line 2
Dá esse erro quando ele vai dar o session_start(); não sei por que… Ajuda?
janeiro 21st, 2011 - 12:46
@João, você deve colocar session_start(); antes que de qualquer saída HTML e espaços.
Se vc copiou e colou não é uma boa, mas se não, procure verificar se colocou session_start() antes de qualquer saída html, antes de qualquer 'echo'.
Abraço!
janeiro 21st, 2011 - 12:54
Não, não copiei e colei, eu estou olhando seu tutorial e tirando minhas próprias conclusões, modificando e tal. Mas nunca copiando e colando, estou escrevendo para assimilar as formas e tal, mas vamos a minha dúvida. o action do form de login está redirecionando para securitycheck.php?action=login e no começo há o seguinte código:
session_start();
$action = $_GET['action'];
include('functions.php');
$user = $_POST['user'];
$pw = $_POST['pw'];
janeiro 21st, 2011 - 13:47
@João me diga uma coisa… há algum espaço entre <?php e a chamada para session_start();???
Há mais alguma chamada para session_start() neste arquivo que vc citou?
Há alguma chamada para session_start() em algum arquivo que você esteja incluindo neste arquivo que citou?
janeiro 21st, 2011 - 13:59
<?php
session_start();
$action = $_GET['action'];
include('functions.php');
$user = $_POST['user'];
$pw = $_POST['pw'];
if($action == "login"){
if(!$user or !$pw){ print "Preencha todos os campos.";} else {
$senha = md5($senha);
$sql = mysql_query("SELECT * FROM users WHERE user_user='{$user}' AND user_pw='{$pw}' AND user_canlogin='1'");
$loginCheck = mysql_num_rows($sql);
if($loginCheck > 0){
while($row = mysql_fetch_array($sql)){
foreach($row AS $key => $val){
$$key = stripslashes($val);
}
$_SESSION['user_id'] = $user_id;
$_SESSION['user_nome'] = $user_nome;
$_SESSION['user_user'] = $user_user;
$_SESSION['user_email'] = $user_email;
$_SESSION['user_key'] = $user_key;
print $user_key;
}
} else { print "fail"; };
}
}
?>
Este é o código do arquivo
janeiro 21st, 2011 - 14:31
@João, primeiramente se não desse erro com o header, daria erro de sintaxe, esse seu código que enviou no comentário fala fechar uma '}'.
Outro erro que também ocorreria se o erro de header fosse sanado seria o de conexão com o banco de dados, pois como pode ver, no seu código vc não inclui o arquivo config.php que tem os dados de conexão com o banco de dados.
Enfim… quanto ao erro com o session_start(), uma das hipóteses é um espaço depois de <?php … pelo menos me pareceu aqui no código que vc enviou.
Descartando essa hipótese, uma outra possibilidade é o Editor Web, inclusive o DW, adicionar codificação oculta e isso é interpretado como saída e se for antes do session_start() dará o erro. Procure sobre isso no google.
MAS… se descartar essa hipótese, você poderá utilizar o método para controlar o buffer de saída. Para fazer isso tenha atenção aos seguintes passos: Levando em conta que o seu arquivo securitycheck.php não está sendo incluido (include) em nenhum outro arquivo e que vc verificou que o arquivo functions.php não tem sesion_start() em seu conteúdo, faça o seguinte… no arquivo securitycheck.php adicione antes de tudo, inclusive antes de session_start() a seguinte linha: ob_start(); e no final de tudo, logo antes de ?> adicione ob_end_flush();.
Desta forma não ocorrerá o erro de header.
Bons estudos!
janeiro 21st, 2011 - 14:50
Não sei o que fazer :/. Meu editor é o Notepad++, a conecção com o banco de dados está dentro do functions.php e conferi if por if, while, e tal, e não está faltando um '}'.
Coloquei o ob_start() e ob_end_flush(), mas continua com erro de header. Isso tem a ver que eu estou usando xampp?
janeiro 21st, 2011 - 15:05
@João, desculpe, não tinha visto a '}' depois de 'fail'.
Quanto ao erro persistente, só posso dizer mais uma coisa que costumo fazer quando me vejo travado em um determinado ponto, refaça tudo novamente. :|
Minha dica seria pegar meu tutorial e fazer exatamente como ele é… sem tirar nem por, apenas alterar pelos seus dados de conexão e seus dados de domínio e email.
Faça isso funcionar e depois sim vá modificando pedra por pedra e testando a cada pedra modificada, assim se der erro, saberá bem qual pedra foi movida de forma errada.
Fazendo isso, vá perguntando que eu ajudo na medida do possível.
Bons estudos!
janeiro 21st, 2011 - 14:39
@João andei verificando entre os comentários deste tuorial e encontrei um usuário com a mesma duvida e que conseguiu apos minha dica… mesma dica que te dei nessa postagem anterior à essa. Da uma lida no comentário dele: http://www.sistemabasico.com.br/2007/12/07/tutori… e em seguida na minha resposta.
Bons estudos!
janeiro 26th, 2011 - 14:58
entendi perfeitamente..mas soh para cnfirmar…
em cada pagina eu teria que inserir o codigo de "area_restrita.php" ou seja colocar tudo aquilo antes de tudo nao eh????
janeiro 26th, 2011 - 15:27
Olá @Willian, não é todo o código não, seria apenas o topo:
<?php
session_start(); // Inicia a session
include "functions.php"; // arquivo de funções.
session_checker(); // chama a função que verifica se a session iniciada da acesso à página.
Abaixo disso é o conteúdo da sua página normalmente, página que obviamente você deseja restringir o acesso.
Bons estudos!
janeiro 27th, 2011 - 00:10
Prezado Roberto, estou gostando bastante do tuto, porém a cada passo que consigo avançar dou uma nova tropeçada (coisas da vida). Verifiquei que não consigo gravar dados usando um "localhost", então subi meus arquivos para um servidor remoto, cuja hospedagem é paga, com suporte a php 5 e tals. Está gravando no banco direitinho, mas não recebo os e-mails. Vi que alguns colegas tiveram problemas semelhantes mas infelizmente ainda não encontrei a resposta. Sendo assim estou postando o trecho do código, na expectativa que você possa fazer a análise e apontar o erro.
$headers = "MIME-Version: 1.0
";
$headers .= "Content-type: text/html; charset=iso-8859-1
";
$headers .= "From: graficapadrao.com – Webmaster<teste@graficapadrao.com>"; // TEU DOMÌNIO E TEU EMAIL
$subject = "Confirmação de cadastro – graficapadrao.com";
Só para facilitar o diálogo, meu host conta com serviço de e-mails e está habilitado para a conta que estou tentando. (localhost).
Desde já agradeço.
janeiro 27th, 2011 - 17:07
Boa tarde, Roberto.
Removi o espaço mas ainda não rolou, quanto ao campo varchar está com 100 – igual ao tuto. Sobre a conta "teste@graficapadrao.com", sim ela existe. Eu administro a hospedagem para um cliente meu, então crio as contas que eu quiser ou precisar e esta eu criei ontem mesmo para efeito de testes e a configurei no meu outlook, o que está me garantindo que ela envia e recebe e-mails numa boa. fiz o cadastro no formulário com outras contas de e-mail tbm mas nehuma recebeu, no entanto todos os e-mails estão sendo gavados no banco, "bonitinhos".
Uma correção, ontem no último parágrafo, eu disse que minha hospedagem é a localhost, na verdade fiz uma confusão de nomes. a hospedagem é a Hostnet.
Agradeço mais uma vez pela atenção dispensada.
janeiro 27th, 2011 - 17:43
Jean, a função mail() do php realmente causa muitas instabilidades, pois servidores de hospedagem, ainda mais o da Hostnet, podem não disparar emails devido aos cabeçalhos não suprirem as exigências de SMTP impostas pela mesma. Outra hipótese seria o recebimento que esteja com problemas… tipo se enviar para o HOTMAIL, não tiver os cabeçalhos ele vai para um buraco… mas não sei ao certo se testou com esses provedores ou se está testando com emails criados pra teste no próprio servidor… .
Se ainda não deu, me diga se a variável que está sendo colocada para 'recipient' está recebendo o valor exato ou se está vazio sei lá.. da uma saída na variável do 'email' que vem do bd.
Se você fez tudo certo, só pode ser o lance do server mesmo, ou SMTP ou do server do provedor do destinatário.
Sem tirar nem por, o sistema funcionou com milhares de pessoas já desde que publiquei esse tutorial em 2007.
Procure mais informações sobre cabeçalhos para envio de email com php e mail() e tente completar melhor os $headers.
Esse site http://www.htmlite.com/php029.php mostra alguns headers mais completinhos.
Da uma olhada neste meu tutorial: http://www.sistemabasico.com.br/2011/01/20/como-e…
e tente adaptar no sistema de cadastro, pois este tutorial envia emails autenticados e a maioria dos provedores aceitam receber quando estes vem autenticados.
Qualquer coisa fala aí.
Bons estudos!
janeiro 27th, 2011 - 21:45
Boa noite Roberto, mais uma vez obrigado, principalmente por responder tão rápido. Acredito mesmo que possa ser alguma deficiência da hostnet. Sei que toda configuração de e-mail deles requer autenticação. De toda forma vou continuar tentando e seguindo as suas dicas sobre os outros tutoriais.
Abraço.
janeiro 28th, 2011 - 11:19
Legal @Jean, e fato se a Hostnet só aceita envios autenticados, recomendo fielmente o PHPMailer.
Futuramente farei um tutorial bem simples para utilização remota (hospedgem) mas com um pouco de jogo de cintura da pra adaptar as dicas no tutorial que te indiquei, sobre PHPMailer Localmente e utiliza-lo remotamente.
Siga o SB no Twitter, assim fica por dentro das novidades, se ainda não tem twitter cria um ;) http://twitter.com/sistemabasico e http://twitter.com/lunelli
Bons estudos!
janeiro 28th, 2011 - 13:34
awe valeu consegui agora quero saber como faço para tirar a senha altoomatica quero colocar no modo que eles mesmo escolhema senha desejada
fevereiro 2nd, 2011 - 11:40
Gabriel, para efetuar essa mudança, são vários arquivos para serem modificados.
O Tutorial ensina da forma que passei, da forma que você quer seria outro tutorial.
Você pode se aventurar, mas possivelmente terá muitos erros pois os arquivos estão interligados, não basta modificar um.
Entre eles teria que modificar o formulario_cadastro.php, cadastra.php, verica_usuario.php, gerar_nova_senha.php, etc…
Mais pra frente eu faço um apêndice para este tutorial.
Bons estudos!
janeiro 28th, 2011 - 14:47
Eu sou analista de sistemas, (programador), trabalho com Delphi 7, estou começado com php agora, gostei muito do passo a passo. Gostaria de manter contato.
janeiro 28th, 2011 - 15:11
Olá @Marcelino, estamos aí, qualquer coisa que eu puder ajudar é só perguntar.
Siga o Sistema Básico no twitter: http://twitter.com/sistemabasico e siga meu perfil pessoal: http://twitter.com/lunelli
fevereiro 2nd, 2011 - 10:15
Olá, adorei o script. Porém encontrei um problema: Quando fui testa – lo, quando vou fazer o cadastro aparece que O endereço de email [ ] que está tentando utilizar não é válido.
Por favor, utilize um email válido.
O que está acontecendo de errado? Fico no aguardo.
Obrigado
fevereiro 2nd, 2011 - 11:12
Olá @Nelson, pelo formato do erro da mensagem, onde não foi exibido o tal email invalido entre Colchetes (perceba que os colchetes foram apresentados em branco), o que significa que se você preencheu o campo de email no cadastro, esse valor do campo email do form de cadastro não está passando, ou seja, o arquivo cadastrar.php, não está recebendo-o, sendo assim obviamente dará este erro.
Verifique tudo isso que falei, veja se o arquivo cadastra.php está recebendo os valores exatos do form.
Dica: Comente todo o arquivo cadatra.php e ensira apenas:
<?php print_r($_POST); ?>
… entre as tags pre do HTML e veja se todos os valores do form estão vindo corretamente.
Bons estudos!
fevereiro 2nd, 2011 - 15:50
Olá Roberto…
Já resolvi este problema rs. Estava testando local e quando enviei para o servidor funcionou ok.
Só que agora me apareceu outro problema: Quando vou fazer o LOGIN, aparece a mensagem :
Você não pode logar-se! Este usuário e/ou senha não são válidos!
Por favor tente novamente!
Login
Não fiz alteração alguma no código quanto a criptografia da senha.
O que pode ser?
Obrigado
fevereiro 2nd, 2011 - 17:21
Você recebeu o email de ativação e confirmou o cadastro?
Alterou o valor de VARCHAR para os campos no banco de dados para email e/ou senha?
fevereiro 3rd, 2011 - 09:07
Sim. Recebi o email e confirmei ok. Não alterei nada na criação do banco.
Os arquivos estão dentro de uma pasta…não na raiz do site.
Veja: http://www.traderline.com.br/teste_login/formular…
Isso influência em alguma coisa?
fevereiro 3rd, 2011 - 14:52
Testei e o que da pra ver é o seguinte:
O teu arquivo verifica_usuario.php está direcionando no form de login novamente… deve estar ocorrendo algum erro nas condicionais deste teu arquivo.
Primeiro verifique direto no banco de dados através do PHPMyADMIN e veja se o user ativado alterou com sucesso o status de ativado de 0 para 1.
Depois verifique o arquivo verifica_usuario.php, e veja se nas condicionais está tudo correto.
Analise também o seu functions.php, pois ele também leva ao formulário de logon se não encontra as devidas sessions abertas.
fevereiro 8th, 2011 - 09:40
Roberto, quando o usuario autentica, muda o statos de 0 para 1.
o arquivo verifica_usuario.php está assim:
<?php
session_start(); // Inicia a session
include "config.php";
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];
if((!$usuario) || (!$senha)){
echo "Por favor, todos campos devem ser preenchidos! ";
include "formulario_login.html";
}
else{
$senha = md5($senha);
$sql = mysql_query("SELECT * FROM usuarios WHERE usuario='{$usuario}' AND senha='{$senha}' AND ativado='1'");
$login_check = mysql_num_rows($sql);
if($login_check > 0){
while($row = mysql_fetch_array($sql)){
foreach( $row AS $key => $val ){
$$key = stripslashes( $val );
}
$_SESSION['usuario_id'] = $usuario_id;
$_SESSION['nome'] = $nome;
$_SESSION['sobrenome'] = $sobrenome;
$_SESSION['email'] = $email;
$_SESSION['nivel_usuario'] = $nivel_usuario;
mysql_query("UPDATE usuarios SET data_ultimo_login = now() WHERE usuario_id ='{$usuario_id}'");
header("Location: area_restrita.php");
}
}
else{
echo "Você não pode logar-se! Este usuário e/ou senha não são válidos!
Por favor tente novamente!";
include "formulario_login.html";
}
}
?>
O arquivo functions.php está assim:
<?php
function session_checker(){
if(!isset($_SESSION['usuario_id'])){
header ("Location:formulario_login.html");
exit();
}
}
function verifica_email($EMAIL){
list($User, $Domain) = explode("@", $EMAIL);
$result = @checkdnsrr($Domain, 'MX');
return($result);
}
?>
fevereiro 8th, 2011 - 12:48
Bom… se muda de 0 para 1 então quanto à ativação está tudo Ok.
Preciso saber qual o valor de VARCHAR para os campos no Banco de dados para usuario e senha.
Obrigatóriamente senha tem que ser no mínimo 32 e usuário tem que ser um valor que vc tenha certeza que consiguirá abranger a quantidade de caracteres que você prevê para um nome de usuário.
Por exemplo, se vc for exigir que o usuário utilize um user com no máximo 10 caracteres, então o campo usuário no BD deverá ter um VARCHAR no mínimo com valor 10.
Imaginando que vc não tenha alterado nada em relação a criação de senha automática, basta verificar isso que falei, pois o código que me enviou está correto… aliás igual o meu, sem modificações.
Obs.: Se modificou alguma coisa, preciso dos arquivos modificados e não os sem modificação.
Abraço
fevereiro 8th, 2011 - 12:37
Olá @Nélson. Você fez dois comentários e vou responder um de cada vez:
Este código que você postou está errado, não é o mesmo do tutorial, logo os erros poderiam acontecer.
No último '}else{' você colocou uma '}' a mais antes do 'else' verifique com atenção que tem mais '}' do que necessário.
;)
fevereiro 8th, 2011 - 14:24
Roberto, meu DB ta assim:
nomevarchar(50)
sobrenomevarchar(50)
emailvarchar(100)
usuariovarchar(32)
senhavarchar(32)
No último else vc diz q tem um colchetes a mais fechando?
Aqui:
else{
echo "Você não pode logar-se! Este usuário e/ou senha não são válidos!
Por favor tente novamente!";
include "formulario_login.html";
}
}
ow é o colchetes q antecede o ultimo else?
fevereiro 8th, 2011 - 15:28
Não @Nelson, eu havia respondido o outro comentário seu mas exclui, talvez você tenha visto antes de eu ter excluído. Está tudo certo quanto as 'chaves' e não 'colchetes' :)
A única coisa que deves analisar é o que eu respondi no último comentário.
;)
fevereiro 8th, 2011 - 15:30
De fato os valores do VARCHAR para os campos estão corretos, e a coisa está ficando estranho.
Me passe pelo link de contato ali no menu, o endereço do teu sistema, juntamente com a senha para que eu teste pra vc.
Isso se não for um problema me passar os dados.
Aguardo
fevereiro 9th, 2011 - 09:01
Roberto, tudo bem?
Qual senha vc quer do DB?
fevereiro 9th, 2011 - 13:56
Roberto,
Tranquilo, acho que não tem problemas.
Vou confiar em vc…rs
Vou mandar nesse email ae entao.
fevereiro 9th, 2011 - 22:54
@Nelson, fiz os testes e cheguei a seguinte conclusão, teu servidor não da suporte à SESSIONS da forma adequada.
Vou te passar um pequeno relatório:
- Primeiro constatei um erro no teu arquivo verifica_usuario.php onde no foreach() é $$key e não $key (verifique o tutorial novamente nessa parte), mas mesmo eu corrigindo isso o erro persistia.
- Criei um novo diretório (/sistema_login) e instalei meus próprios arquivos, mas o erro persistia
- Então fui 'debugando', tentando imprimir o conteúdo do array de sessions registradas, para ver se estavam sendo gravadas devidamente.
De fato estavam sendo gravadas no arquivo verifica_usuario.php, porém ao redirecionar deveriam manter-se gravadas e assim possibilitar a recuperação das mesmas nos arquivos subsequentes, mas isso não ocorre.
Melhor dizendo… assim que elas foram gravadas no arquivo verifica_usuario.php elas deveriam ser acessadas normalmente no arquivo functions.php para comparação e também no arquivo area_restrita.php para exibição do nome, sobrenome e outros detalhes que eram para estar gravadas nas sessions, mas estes não estavam mais… é como se fossem apagadas e por isso que ao efetuar o login você é redirecionando para o arquivo formulario_login.html novamente, pois no arquivo functions.php é feito uma verificação se a session 'usuario_id' esta definida… e se está não estiver, deve redirecionar para o formulário_login.html
Enfim… deves procurar saber o porque o teu server não está permitindo manter uma sessão registrada quando muda de arquivo.
Utilizei os mesmos arquivos no meu server para desencargo de consciência e funcionou perfeitamente a passagem de sessions, ou seja o problema de fato é no teu server, na configuração do php.ini do teu server acredito eu.
Para teu teste:
Como eu disse antes, criei um novo diretório no teu server (/sistema_login)… acesse teusite.com.br/sistema_login/formulario_cadastro.php e efetue um cadastro teste e tente fazer o login… fiz algumas modificações para que ao efetuar o login tu caia no area_restrita.php e possa ver que as sessões não estão se mantendo… será exibido o conteúdo do array, mas como não tem nada definido por motivos que deverá descobrir junto ao teu server, aparecerá então apenas um array vazio.
Espero ter ajudado, mesmo que não podendo apresentar a solução, pois esse quem deve é o suporte do teu provedor… questione eles sobre essa falha e volte aí pra dizer o que falaram.
Outra possibilidade é testar em outro servidor.
Observação: quando me cadastrei para testar, os emails disparados pelo teu email, no teu servidor, estão caindo na minha caixa de lixo eletrônico/spams, mas isso pode ser uma ação típica devido a fragilidade da função mail() do php.
Bons estudos!
fevereiro 10th, 2011 - 09:16
Oi Roberto..
Já mandei um email lá pra locaweb.
Assim que tiver uma resposta, eu te aviso aqui blz?
Muito obrigado por tudo!
Um grande abraço.
fevereiro 10th, 2011 - 09:38
Roberto…
O que eles me responderam foi isso:
Altere a diretiva session.save_path para /var/lib/php-cgi/session no php.ini , desta forma você conseguirá salvar as sessões de seu site.
fevereiro 10th, 2011 - 15:38
Justamente o que eu havia dito… não está salvando as sessions.
Se não conseguir ter acesso ao php.ini para a alteração da diretiva, tem uma forma de fazer essa execução que eles disseram.
Se a diretiva safe_mode estiver off é possível você utilizar a função ini_set() para tentar a diretiva session.save_path.
Coloque no topo dos teus arquivos algo como isso:
ini_set('session.save_path', '/var/lib/php-cgi/session');
Mas é calro que o ideal nesse caso seria alterar direto no php.ini, pois a possibilidade de utilização de sessions deveria ser algo trivial na configuração de um server que se preste.
Boa sorte!
fevereiro 26th, 2011 - 20:57
ola, sou mt leigo, nao consigo instalar corretamente o seu formulario de cadastro
por favor alguem poderia me ajudar?
fevereiro 26th, 2011 - 22:42
Qual o problema está ocorrendo @ederson?
março 2nd, 2011 - 14:54
Olá,Sistema Muito bom,só que tem um pequeno erro,no recuperar senha,aparece que da certo, mais a senha nao vai para o email.
Abrass
março 2nd, 2011 - 15:36
Olá @Leonardo, não tem erro algum no sistema.
Você fez alguma modificação no código ou testou ele exatamente como está?
Já verificou o lixo eletrônico ou caixa de SPAM?
O código não tem erro algum, isso posso te garantir.
março 2nd, 2011 - 20:43
coloquei exatamente como está ai,e nao chega em lugar nenhum.
março 3rd, 2011 - 00:09
@Leonardo, fica impossível te ajudar me falando só isso, pois o sistema está perfeito e funcionando desde 2007, não seria agora que iria parar de funcionar.
Já respondi centenas de comentários e emails sobre dúvidas desse tutorial, e centenas já usaram ou usam ele funcionando perfeitamente.
É só na hora de recuperar a senha ou na hora do cadastro tbm não chega?
Está testando localmente ou em hospedagem?
Está usando conta de email do servidor de hospedagem para enviar?
Já tentou testar um cadastro com outro email, gmail, hotmail, yahoo?
Será que está sendo bloqueado por estar utilizando mail()?
Já tentou phpMailer para enviar? Tem um tuto aqui no SB.
@Leonardo, não tem como eu te ajudar mais, pois ainda não tenho a capacidade de adivinhar, e poderia enumerar dezenas de hipóteses, como fiz acima com algumas.
Tente verificando alguma delas.
Abraços
março 9th, 2011 - 15:38
Olá, Roberto otimo tutorial, so to com uma duvida no formulario de cadastro nao pede senha, como vou logar se na hora de cadastrar nao pede senha, e no login ele pede pra por senha mais eu nao tenho senha, é isso, valeu pelo tutorial ajudo muito aguardo o seu retorno
março 9th, 2011 - 15:45
Olá @Jonatas, se seguir o tutorial, vai perceber e entender que a senha, no caso deste tutorial, é gerada de forma aleatória e enviada para o email do cadastrado. Este usuário terá que verificar seu email que usou no cadastro e pegar a sua senha, mas antes de logar, terá que clicar no link que foi enviado neste mesmo email, pois é este link que fará a ativação de sua conta… pois se tentar logar com a senha que recebeu e não tiver efetivado o registro, clicando no link recebido, não terá acesso…
Espero ter ajudado.
Bons estudos!
março 9th, 2011 - 15:50
vlw pela força, nem imaginei q a resposta viria tao rapido gostei de tudo otimo sistema valeu
março 9th, 2011 - 15:52
Qualquer coisa diz aí… estou monitorando esse site todos os dias em diversos períodos, nenhum comentário fica sem resposta por mais de 24 horas.
Abraço.
março 9th, 2011 - 15:59
so mais uma duvida, gostaria de saber se é muito complicado de se colocar no cadastro uma senha criada pelo usuario, e q no email de comfirmaçao vinhece a senha criada pelo usuario
março 9th, 2011 - 16:08
Não é complicado, mas é necessário um entendimento básico da situação… entenda que para fazer isso será necessário a alteração de vários arquivos que estão envolvidos com o procedimento de criação de senha.
março 9th, 2011 - 16:33
ok valew pela atençao, vo tentar fazer isso, to começando agora em php, ja tenho um conhecimento basico em html mais quero me aprofundar nesta area de web designer, tenho so 16 anos e ja quero aprender tbm linguagens de escript mais nao sei bem qual linguajem é melhor aprender, ja sei um pouco de linguagem “C” e notei uma certa semelhança com o PHP porem um amigo meu disse q linguagem “C” nao é tao usada e q eu buscace outra linguagem de escript para aprender sei q nao tem muito aver com a sua area mais queria saber se vc tinha uma opniao de q linguagem devo tentar, ja te agradeço por tudo vlw
março 10th, 2011 - 00:03
C e C++ é forte, mas se tu tem interesse em programação web, deves utilizar algo mais direcionando para o desenvolvimento Web. Eu sou suspeito para sugerir, pois adoro PHP, sendo assim sugiro esta, mas você é novo e pode aprender muitas, tens tempo de sobra.
Sugiro antes de tudo aprender lógica de programação e só depois partir para uma linguagem.
Quanto ao esquema para trocar o modo de gerar senha, basta adicionar o campo senha no form e fazer algumas alterações em arquivos distintos, que no caso é como eu disse antes… precisa ter um conhecimento básico para saber quais e como fazer.
Mais lá na frente eu posto um add-on para este tutorial, muitas pessoas perguntam sobre como fazer isso que quer.
Voltando ao básico do PHP, o melhor lugar para começar é o próprio manual do PHP: http://www.php.net/manual/pt_BR/ mais precisamente aqui:
http://www.php.net/manual/pt_BR/getting-started.php
Bons estudos!
março 12th, 2011 - 00:20
ok valeu ja to dando uma olhada e estudada nos links q vc mandou muito obrigado vo tentar me aprofundar ao maximo em php tbm. so mais uma duvida eu queria saber se era possivel criar uma conexao de audio e de video so com tecnologia PHP ou isso envolve outras linguagens, tipo assim eu me comunicar com outra pessoa por meio de video ou de audio em tempo real (claro) .nao presisa dizer como se faz ate pq seria pedir d+ so me diz se é pocivel :). A e so mais uma pergunta indiscreta na maioria dos sites tem um sistema de doaçao, aqui no seu site eu pude notar q tem a opçao “colabore” a pergunta é : tem pessoas q fazem doaçao em dinheiro para esses sites? como ganhar dinheiro com um site? anunciantes? ate pq é preciso pagar pela ospedagem de um site ne? entao como obter lucro e pagar as dispesas de um site? OK eram essas minhas duvidas ja li agradesso de ja e obrigado pela paciensia :S
março 12th, 2011 - 14:29
@Jonatas a a dica é… não tente reinventar a roda… já existem inúmeros softwares e sistemas de comunicação/mensagens instântaneas (IM) que já vem com essas opções.
Mas respondendo sua pergunta… não sei ao certo. Nunca fui atrás dessa informação, mas acredito que aliado com outras tecnologias pode-se desenvolver um sistema sim usando PHP, mas não só ele.
Creio eu… mas pode chegar alguém que sabe mais e me provar o contrário.
Quanto ao link ‘Colabore’ que disponibilizei, sim é para doações e as pessoas fazem sim… ou pelo menos já fizeram, mas admito que faz tempo que não fazem… talvez eu tenha que dar mais visibilidade para essa opção, pois justamente como você disse, o site sobrevive de acordo com as doações. Coloquei o sistema de anúncios do Adsense do Google, mas não me rende nada no momento… talvez poderá ser possível sacar os primeiros U$100 daqui um ano e olhe lá.
Conto sempre com a doação das pessoas, e quando não acontece, que é o que está ocorrendo no momento, eu tiro do meu bolso para continuar disponibilizando material de graça para a aprendizagem dos usuários iniciantes.
Bons estudos!
março 15th, 2011 - 12:01
Pergunto o seguinte: tenho dúvida o que colocar na página que eu quero proteger. Poderia me esclarecer por gentileza. Seria só isso:
<?php
session_start(); // Inicia a session
include "functions.php"; // arquivo de funções.
session_checker(); // chama a função que verifica se a session iniciada da acesso à página.
Fico com dúvida se falta alguma coisa neste script como fechar o <?php com outra.
Grato.
março 15th, 2011 - 15:07
Exatamente isso @Rafael.
Toda página que tiver esse cabeçalho estará protegida.
Bons estudos!
março 16th, 2011 - 16:32
Olá Roberto,
Obrigado por postar uma explicação tão didática, não tenho experiência com php nem com banco de dados, mas como vc mesmo diz que é para iniciantes… Bom, fiz todo o passo a passo ensinado aqui. Mas infelizmente quando fui testar o preenchimento do cadastro, os dados não vão para lugar algum. Já verifiquei todos os códigos e está exatamente como o seu. A tabela está toda certinha no PHPMySQL, a configuração está de acordo e tudo está ok, mas os dados do cadastro não conectam com o MySQL. O que devo estar errando? Por favor me ajude porque estou nisso há mais de quatro dias inteiros. Obrigada.
março 17th, 2011 - 16:48
Apenas para constar resposta neste comentário, conforme falamos por email, o problema está baseado no servidor de hospedagem não dar suporte a função mail() do PHP e a melhor saída nesse caso seria utilizar de métodos que possibilitam o envio autenticado de email através da classe PHPMailer.
março 17th, 2011 - 18:24
Olá Roberto!
Estou com uma dúvida e gostaria de saber se você pode me ajudar.
Tendo um arquivo .zip para download, mesmo dentro de uma área restrita, sabemos que se você acessar o link (ex.: http://www.site.com.br/arquivo.zip) ele não está rotegido e, mesmo não estando logado, ele faz o download…
Tem como proteger esse arquivo .zip para baixar somente quem está logado?
Obrigado.
Espero contar com sua ajuda!
março 17th, 2011 - 20:37
Olá Everton. Muito legal a tua pergunta.
Há como fazer isso sim e acredito que de variadas formas.
A que me ocorreu de imediato seria com a utilização de mod_rewrite para redirecionar qualquer acesso direto à arquivos .zip.
Os passos seriam: redirecionar para um arquivo.php que estaria armazenado no mesmo diretório que armazena os pacotes ZIPs. Neste arquivo é feito uma verificação se há alguma sessão aberta e um usuário autenticado… se sim, redireciona novamente para o arquivo ZIP e o download ocorreria normalmente.
PEgou mais ou menos a idéia?
março 18th, 2011 - 10:05
Sim Roberto…
Já pensei também em mandar o arquivo para o banco de dados Mysql e implementar um header, para identificar o tipo de arquivo (Ex.: @header(“Content-type: application/zip”)). Não sei se daria certo e mesmo se desse, ficaria muito inviável, pois o meu Banco de dados tem capacidade para 100 mb, e o download ocupa 93,6mb.
Ou também criando um sistema em PHP ex.:
$download = $_POST[arquivo_down].”.zip”;
$op = $open($arquivo, “r”);
header(“Coment-Type:applcation/xls”);
header(“Coment-Disposition:attachement; filename=$_POST[arquivo_1].xls”);
header(“Coment-Transfer-Encoding:binary”);
fpassthru ($op);
Não cheguei a testar e nem sei se daria certo… Mas se você tiver alguma outra idéia que pudesse postar, ficaria muito grato!
Everton
março 18th, 2011 - 12:39
@Everton, você tentou da forma que eu indiquei?
março 20th, 2011 - 20:40
Sim Roberto, mas pelo o que eu entendi, o arquivo php iria redirecionar se caso houvesse uma sessão aberta, só que o diretório onde fica armazenado o arquivo ZIP, poderia ser acessado da mesma forma, sendo feito o download por link, mesmo com sessão fechada.
Acho que houve falha minha na criação do arquivo de redirecionamento, estive revisando mas, não encontrei falhas.
Everton
março 21st, 2011 - 01:38
@Everton, tu não pegou o espirito do lance… vou te ajudar mostrando como eu faria de forma bem simples… e pode ter certeza que funciona… se liga só no passo a passo.
- Primeiro eu criaria uma pasta que seria só para armazenar todos meus ZIPs… sempre seria ali que eles ficariam.
- Dentro desta pasta eu colocaria um arquivo .htaccess com uma regra que não permitirá o download digitando o endereço no navegador, permitindo apenas o download quando clicado em um link, e claro, esses links de downloads dos ZIPs estariam em uma área restrita… ta pegando a lógica? vai entender melhor nos próximos passos
- Essa regra é simples e com ela você pode inclusive bloquear a exibição das tuas imagens por acesso direto pelo navegador e também que outras pessoas usem a URL delas para exibi-las em seus sites e assim consumindo a banda do teu servidor… isso se chama Hotlink e essa regra é justamente para isso… proteger contra hotlink e protege tbm do acesso direto pela barra de endereço.
- Tá tá… quer a regra neh? então aguarde o próximo tutorial :) hehehehe … brincadeira segue aí embaixo a regra que deves colocar no arquivo .htacces:
RewriteEngine onRewriteCond %{HTTP_REFERER} !^http://(.+\.)?teusite\.com\.br/ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png|jpg|zip)$ http://www.teusite.com.br/erro.php [L]
Explicando:
Dentro do parenteses são os tipos de arquivo que só podem ser acessados pelo teu site e não por outros de terceiros, nem pela barra de endereço diretamente.
Ainda na mesma linha veja que coloquei um exemplo de um endereço de arquivo que você pode criar omo quiser para exibir uma mensagem para os que tentarem acessar diretamente, use a tua criatividade para redirecionar o mal elemento para onde você quiser, inclusive para um texto informando como ele deve proceder se quiser fazer download do teu site ;)
Não esqueça que o .htaccess, deve ficar dentro da pasta que contiver os ZIPs
E não se preocupe que clicando em links para os ZIPs, você vai conseguir baixa-los normalmente, mas desde que os links sejam provenientes de seu próprio site… acredito que o mesmo link colocado em outro site, não daria para efetuar o download, pois a condicional e a regra são claras no .httaccess:
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?teusite\.com\.br/ [NC]… ou seja, tudo que NÃO vier de qualquer_coisa.teusite.com.br e tentar acessar esses tipos de aquivos:
RewriteRule .*\.(jpe?g|gif|bmp|png|jpg|zip)$ http://www.teusite.com.br/erro.php [L]Será redirecionado.
Pegou?
Bons estudos, se tiver dificuldades fala aí
março 22nd, 2011 - 22:41
Olá Roberto, o aquivo htaccess foi criado e colocado no servidor, preciso agora saber como colocar na sessão, para acesso apenas a usuários logado.
Tem como fazer isso?
Everton
março 22nd, 2011 - 23:46
@Everton, é o seguinte, não precisa adicionar nada mais…
Faça apenas isso:
Coloca-se o .htaccess como eu te falei, dentro da pasta que terá os ZIPS.
Pronto, ninguém mais conseguirá acessar os ZIPs via barra de endereço do navegador nem colocando o link em outro site e clicando.
“Ah mas como eu faço pra disponibilizar os links para downloads?”
Faz normalmente no teu site… HTML puro @Everton, só isso.
“Ah mas assim todos terão acesso as páginas que terão os links.”
Aí que entra a utilidade deste tutorial, basta tornar as páginas que terão os links para downloads como restritas.
“Ah mas como eu vou fazer isso?”
Aí estamos entrando num loop infinito @Everton heheheheheh, basta seguir o tutorial e você conseguirá tornar as páginas com os links de downloads como restritas.
Não precisa modificar nada do tutorial, imagina que o arquivo area_restrita.php que usei como exemplo no tutorial seja a tua página de links de download.
Segue essa lógica e faça quantas páginas restritas quiser.
Bons estudos!
março 23rd, 2011 - 11:59
Roberto, isso é muito estranho, pois coloquei o arquivo .htaccess na pasta que contem os arquivos zip’s exatamente como você informou mas, mesmo assim ainda consigo fazer o download pela barra de endereços.
Everton
março 23rd, 2011 - 15:56
Teu servidor é APACHE ou IIS?
Windows ou Linux?
Estranho pois aqui funcionou que é uma beleza.
Cola o teu .htaccess aí.
março 24th, 2011 - 08:44
O htaccess criado…
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?www.gigarenda\.com/ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png|jpg|zip)$
http://www.gigarenda.com/erro.php [L]
e o link para download http://www.gigarenda.com/usuarios/resgate/downloads/PORD.zip
Servidor com plataforma Windows.
Espero que possa me ajudar!
março 24th, 2011 - 13:37
@Everton, é muito estranho, olhe o meu teste:
http://www.sistemabasico.com.br/zips/Mulher_Despeja_o_Marido.zip
Agora tente digitandosistemabasico.com.br/zips/Mulher_Despeja_o_Marido.zipno teu navegador:
Irá redirecionar para um arquivo erro.php que fiz para o teste.
Veja bem… quando colei o código do .htaccess no comentário, o endereço do redirecionamento (… erro.php) foi para linha debaixo, porém o endereço deve estar logo após um espaço entre o símbolo ‘$’ na mesma linha do RewriteRule.
Veja se isso ajuda, pois como pode ver comigo funcionou, e se não funcionar com você novamente, então deve ser algo em relação ao windows e estar usando IIS e não APACHE.
Mas vamos tentando, se não for o caso da linha que mencionei, diga aí e vamos testar outras possibilidades.
março 24th, 2011 - 14:10
Roberto, acho que encontrei o problema. (Pode não ser mas, aqui deu certo)
Eu cliquei no link que você disponibilizou para teste e o download foi feito (até aqui tudo bem). Em seguida digitei na barra de endereços do navegador e também fez o download (Utilizando o Mozilla Firefox). Então, fui testar no IE8 digitando na barra de endereços e então, apareceu a página de erro.
É como se o Mozilla gravasse um cookie do download ou sei lá.
Não sei se é para funcionar desta forma, mas é o que está acontecendo aqui comigo. Talvez por isso não estava direcionando à página de erro, pois eu havia feito o download minutos antes de criar o .htaccess
De toda foma, muito obrigado pela ajuda. Isso vai ser muito útil pra mim!
março 24th, 2011 - 14:45
@Everton, há algum erro aí, pois não era para ter ocorrido o download quando digitou, em nenhum navegador.
Nem no meu teste nem no teus testes.
De qualquer forma é uma solução, pois não haverá forma de qualquer usuário não estando logado ter a oportunidade de clicar no link antes de tentar digitar, pois para clicar no link e gravar qualquer possível cookie precisaria estar logado, pois a ideia é mostrar links só para logados, sendo assim se a primeira tentativa for digitar irá bloquear e não haveria problemas.
Faça outro teste: Limpe o cache, cookies etc. e tente digitando novamente pelo Firefox.
Se tudo certo, então problema resolvido.
Bons estudos!
março 26th, 2011 - 12:10
Olá Roberto!
Acho que descobri o problema.
Contatei com o pessoal da hospedagem e descobri que o arquivo .htaccess para o IIS do Apache estava desabilitado, impedindo o uso de URL rewrite.
Depois da ativação irei refazer os testes e postarei um comentário dos resultados.
Trabalho com hospedagem terra e ultimamente encontrei muitos problemas e, por esse e outros motivos gostaria de mudar.
Você teria alguma a me indicar ou aconselha não fazer a mudança??
Desde já, agradeço pelo apoio!
março 26th, 2011 - 14:12
Eu aconselho a mudar sim… eu recomendo sempre hospedagem Linux e não em Windows, mas cada um é cada um.
Se desejar mudar de hospedagem de fato fale comigo, pois possuo um servidor e disponibilizo hospedagem de alta qualidade com data center no Brasil.
Não é dos serviços mais baratos, mas a qualidade é alta e o supoirte é direto comigo pra qualquer problema.
Planos mensais, trimestrais e anuais ou até bianuais.
Se tiver interesse me da um toque que te passo valores via email.
março 26th, 2011 - 18:35
Roberto,
Pode me mandar seu orçamento!!
evvertton@terra.com.br
Fico no aguardo!
março 26th, 2011 - 20:30
Te enviei os planos já.
Abraço
maio 18th, 2011 - 16:36
Olá Roberto, há quanto tempo hein?!
Mais uma vez insisto no assunto do mod Rewrite.
Não estou conseguindo ou estou conseguindo mas não está dando certo…
Mesmo que eu crie uma pasta no meu servidor somente para os arquivos em zip, e armazene os arquivos dentro desta pasta junto do arquivo file.htaccess, este ainda assim aceita dowload via digitação na barra de endereços.
A proteção de hotlink não acontece!
estou utilizando exatamente como você me instruiu no arquivo file.htaccess e também utilizei da internet outros meios do mesto tipo mas também não funcionou!
Poderia me dar uma luz?
Abraços!
maio 18th, 2011 - 17:04
Everton, não é file.htaccess e sim somente .htaccess, exatamente como escrevi agora: .htaccess
Espero que consiga.
maio 28th, 2011 - 18:23
Olá Roberto!
Logo acima, você fez um exemplo em seu site e pediu para eu testar, o que ocorreu perfeitamente como eu esperava.
Seria pedir demais se eu pedisse para você postar aqui o seu arquivo .htaccess para eu comparar com o meu, pois criei o arquivo e, agora eu consigo impedir o download via digitação na barra de endereços, mas quando clico no link que não era para bloquear, ele também bloqueia.
Fico no aguardo!
junho 1st, 2011 - 13:22
Olá @Everton, o meu arquivo .htaccess é como postei antes:
RewriteEngine onRewriteCond %{HTTP_REFERER} !^http://(.+\.)?sistemabasico\.com\.br/ [NC]
RewriteRule .*\.(zip|rar)$ http://www.sistemabasico.com.br/erro.php [L]
Obs.: [NC] e [L] ficam ao final das linhas e não sozinhos na linha de baixo. foi exibido dessa forma por causa do sistema de comentários que é limitado.
Esse arquivo erro.php é um arquivo que preparei para ser exibido quando o acesso ao download fosse contrariando a única forma permitida.
Lembrando que o arquivo .htaccess é somente .haccess mesmo, ou seja, nada antes do ‘ponto’
Bons estudos
março 18th, 2011 - 20:13
Meu camarada seu tutorial esta show.
Porem sempre tem um probleminha aqui ou ali e o meu é o seguinte.
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /xxx/xxxxxxxx/xxxxxx/cadastrar.php on line 13
Error:
Meu server é o sql
Fico grato se puder me ajudar
março 18th, 2011 - 22:05
Olá @Cleison, o teu problema está no que diz respeito ao MySQL , mas isso tu já viu.
O arquivo config.php está sendo incluído no cadastrar.php?
O conteúdo do config.php está com os dados de conexão definidos corretamente?
O nome do arquivo que está no action do form de cadastro é o mesmo nome utilizado no arquivo que cadastra, ou seja, cadastrar.php?
O teu arquivo cadastrar PHP foi executado modificações ou está igual o do tutorial?
Se executou modificações queias forma?
Como está a sua linha 12, 13, 14 do arquivo cadastrar.php?
Somente respondendo essas perguntas que poderei te ajudar @Cleison, de outra forma, apenas com bola de cristal :)
Aguardo.
março 21st, 2011 - 17:01
Cara, muito obrigado pela informção, é de pessoas como vc que o mundo precisa! Que não tem medo de ensinar! Parabens.
Só fiquei com uma duvida quanto a pagina de cadastro, eu tenho que salvar como cadastro.php mesmo?
março 21st, 2011 - 17:12
Eu que te agradeço pelas palavras @Call.
Quanto a tuas dúvidas, veja bem, você pode dar o nome aos arquivos da forma que quiser, mas deverá ter atenção de verificar se nos outros arquivos há chamadas para arquivos com nome que eu dei no tutorial e substituir pelos nomes que tu deu.
Exemplo: Se um form aponta para o cadastrar.php lá no tutorial e vc muda para um nome qualquer o cadastrar.php, deve alterar no action do formulário também… é só um exemplo, pois deverá verificar todos os arquivos que possam ter ligações com os arquivos que tu alterar os nomes.
Bons estudos!
março 21st, 2011 - 22:08
gostei do tutorial,mas queria saber se dá p/ complementar o codigo,com restricao a acessos simultaneos com a mesma senha e usuario,ou diferentes ip’s
março 22nd, 2011 - 00:57
Olá @fujiiartz… da pra fazer essas complementações sim… esteja livre para isso, a ideia do tutorial também é essa, passar o básico e o aprendizado envolve modificações no código depois que o domínio sobre o assunto aumenta. Para o que você mencionou, basta criar um ‘seletor’ no banco de dados na tabela dos usuários, algo como um campo ENUM ’0′,’1′ que no caso poderia ser definido ’0′ para se o user não estiver logado e ’1′ se estiver logado. Sempre que for efetuado o login, antes de dar a permissão verifica-se esse campo na tabela referente aquele usuário e senha… se estiver setado para ’1′ não da as permissões se tiver ’0′ da permissão e UPDATE para ’1′. Sacou?
Quanto à IP, também funciona praticamente da mesma forma, salva o IP, e se alguém tentar entrar com o usuário novamente, faz-se a verificação do IP do novo login com o que está gravado e se não bater não da permissão, mas ainda assim prefiro a do ‘seletor’ e obviamente sempre que o usuário efetuar o logout, é feito um UPDATE na tabela novamente no campo tal, onde ‘reseta’ o valor para ’0′.
Espero ter dado uma luz.
Bons estudos!
março 22nd, 2011 - 07:32
Obrigado,o motivo da pergunta,foi que eu fiz um codigo de login e senha do antigo site da “becck.com” video aulas,mas o problema,é que dava p varios usuarios usar uma unica senha ao mesmo tempo,e queria travar isso,mas vou seguir a sua lógica e testar o codigo p ver o resultado,ok
março 22nd, 2011 - 14:08
Qualquer coisa fala aí.
Abraço
março 22nd, 2011 - 11:55
Uma duvida, deu quase tudo certo, porem quando voce termina o cadastro e clica em enviar vai para uma tela em que apareçe a mensagem:
Parse error: syntax error, unexpected ‘<' in /home/pjouia/public_html/config.php on line 9
meu config.php esta da seguinte forma:
?php
define('BD_USER', 'usuário de banco de dados');
define('BD_PASS', 'senha do banco de dados');
define('BD_NAME', 'nome do seu banco de dados');
mysql_connect('localhost', 'root');
mysql_connect('localhost', BD_USER, BD_PASS);
mysql_select_db(BD_NAME);
?>
qual o problema?
março 22nd, 2011 - 14:23
@Call, mesmo você tendo resolvido, vou deixar aqui a resposta para que outros que tenha a mesma dificuldade possam resolver.
Antes de tudo, você esqueceu da abertura de tag ‘< ' onde fez assim ?php quando deveria ser assim < ?php
Agoira vamos nos aprofundar…
Primeiramente modificações nos códigos do tutorial devem ser feitos com segurança, de outra forma as chances de não dar certo serão bem grandes.
Veja bem, acredito que você sabe que os dados de BD_USER, BD_PASS e BD_NAME devem ser os dados relacionados aos teus e não ao que coloquei no tutorial, mas como eu disse, acredito que quanto à isso tudo bem, você deve ter feito desta forma.
Depois e mais grave :) você adicionou uma linha mysql_connect() sem necessidade… veja como deveria ficar o código em relação ao teu caso:
< ?phpdefine('BD_USER', 'root');
define('BD_PASS', '');
define('BD_NAME', 'nome do seu banco de dados');
mysql_connect('localhost', BD_USER, BD_PASS);
mysql_select_db(BD_NAME);
?>
Abraços
março 22nd, 2011 - 12:42
Roberto Lunelli, ja resolvi o problema, agora, corre td bem, recebo o e-mail para confirmação, mas na hora de logar, aparece o seguinte erro:
Warning: Cannot modify header information – headers already sent by (output started at /home/pjouia/public_html/config.php:1) in /home/pjouia/public_html/verifica_usuario.php on line 54
como posso resolver isso?
março 22nd, 2011 - 14:30
Olá @Call, mais uma vez, fazer modificações nos arquivos causarão isso, erros.
A dica é fazer exatamente como está e testar… fazer funcionar, depois sim ir modificando aos poucos.
Esse erro se dá quando o arquivo envia ‘saída’ antes da função header().
A função header() está sendo usada no teu arquivo verifica_usuário na linha 54, mas antes da função, você de alguma forma deu uma saída, seja um ‘echo’, seja um ‘html’ ou talvez um simples ‘espaço’ antes da tag < ?php no file config.php.
Verifique essas possibilidades… inclusive se estiver usando os arquivos do tutorial baseado numa estrutura de includes.
Bons estudos!
março 24th, 2011 - 11:14
Roberto, primeiramente queria te dar os parabens velho, sua atitude de deixar isso disponivel é mto da hora mesmo.
Bem, eu coloquei o seus sitema no meu site, ta pegando perfeitamente. o fato é que assim, eu to fazendo um site pra um grupo de escoteiros, e eu tenho quero fazer é que na area restrito escoteiro, ele possa comentar o que ele fez, das liçoes dele… uma relação de home works, e todo post é contabilizado no banco de dados.
passado um deteminado numero de posts, ele ganharia uma medalha de bronze, por exemplo.
exemplo
pra conseguir uma medalha de pra bonze ele precisa de 30 pots.
o escoteiro do id=02 tem 30 posts
entao aparece na pagina dele uma medalha de ouro..
eu tentei varios codigos, mas o que eu acho que nao ta dando certo, é esse lance dele pegar por Sessoes, bem ve o meu codigo, e se vc pudesse Roberto, me falar o que está dando errado, por favor.
// lugar do site onde você vai mostrar a medalha$sql = mysql_query(“SELECT * FROM post WHERE fk_id_escoteiro = 3″);
$qtd = mysql_num_rows($sql);
if ($qtd >= 10) {
echo ”;
} elseif ($qtd >= 20) {
echo ”;
}
Eu li os comentarios, inclusive do Rodrigo onde vc coloca um codigo de duas paginas, lista.php e painel.php, só que quando eu testo o exemplo, pra poder trabalhar encima dele, ele da erro, acredito que exista algum “.” ou “;” a mais que eu não consigo encontrar, essas coisinhas que escapam e deixam a gente careca de raiva.
agradeço desde já, curti mta a atitude do site sistemabasico, ou divulgar e quero fazer uma contribuição sim.
março 24th, 2011 - 14:37
Olá @Bruno, primeiramente, obrigado pela consideração e sim, toda contribuição e divulgação positiva é válida sempre.
Obs.: Mesclei teus 5 comentários para um completo com o teu codigo ;)
Bom vamos focar na tua dúvida, onde a tua lógica não está de toda forma errada, mas vamos deixar bem claro isso:
Se o sistema está funcionando perfeitamente então fica tudo mais fácil para essa implementação.
Bom para o registros das postagens imagina-se que tenha-se uma tabela específica para isso e entre os campos da tabela no banco de dados referente a esta tabela possua obrigatoriamente o id da postagem e o id do usuário que postou…. bom até aí tudo bem… para exibição a simples lógica é uma contagem de posts referentes ao id do usuário, que acredito estar conseguindo fazer tbm.
Teu problema então está em que parte?
Não está registrando no bd, mais precisamente na tabela de postagens o ID do usuário?
Pergunto isso, pois só isso impossibilitaria a contagem.
Você deve fazer um teste antes de registrar a postagem, imprimindo o valor da variável $_SESSION['usuario_id'] e ver se imprime o valor id do usuário e se sim é esse valor que deve ser gravado no bd.
Acredito que deva ter feito uma página onde o usuário efetue as postagens e esse arquivo tenha session_start() no topo e tbm as outras opções que a tornam restrita.
Enfim… to apenas chutando varias possibilidades, pois não tenho como saber o que está fazendo ao certo, ou seria ao errado hehehe.
Veja o que escrevi, veja se da uma luz, se não manda novamente aí.
março 25th, 2011 - 12:11
Roberto, a minha duvida está relacionada em como aplicar esses codigos na area restrita, onde cada usuario teria uma medalha diferente…
entao assim, como eu poderia fazer:
session_start(); // Inicia a session
include “functions.php”; // arquivo de funções.
session_checker(); // chama a função que verifica se a session iniciada da acesso à página.
$sql = mysql_query(“SELECT * FROM post WHERE fk_id_escoteiro = “.$_SESSION['sessao_com_o_id_escoteiro'].”");
$qtd = mysql_num_rows($sql);
if ($qtd >= 10) {
echo ”;
} elseif ($qtd >= 20) {
echo ”;
}
é assim que eu deveria atuar? é que nao está dando certo, se não for, se pudesse por favor corrigir meu erro pra que eu possa estar afetuando essa função, eu agradeço de verdade.
iobrigado.
março 25th, 2011 - 13:08
Olá @Bruno, como eu disse antes, mostrava exatamente o que fazer.
Na tabela referente aos posts deve ser registrado ID do usuário também que está em
$_SESSION[usuario_id]… certo até aí?Se está gravando na tabela dos posts o id do usuário então fica tudo mais fácil. Você está conseguindo gravar no bd o id do usuário?
Enquanto você não me responde isso vou adiante como se tivesse conseguindo.
O cabeçalho está correto, porém é o seguinte… se no arquivo terá uma consulta a banco de dados, então você esqueceu de incluir o arquivo de conexão, o config.php.
O correto:
session_start(); // Inicia a session
include "config.php"; // Arquivo de conexão com o banco de dados
include “functions.php”; // Arquivo de funções.
session_checker(); // Chama a função que verifica se a session iniciada da acesso à página.
Acho que isso vai te ajudar ;)
Quanto a consulta no banco de dados propriamente dito e baseando-me no que você postou ali acredito que seria assim:
< ?php
$sql = mysql_query("SELECT COUNT(id_da_postagem) FROM post WHERE fk_id_escoteiro = ".$_SESSION['sessao_com_o_id_escoteiro']."") or die(mysql_error());
$qtd = mysql_fetch_row($sql);
if (($qtd[0] > 1) && ($qtd[0] < =10))
echo "Medalha de Bronze";
if (($qtd[0] > 10) && ($qtd[0] < =20))
echo "Medalha de Prata";
if ($qtd[0] > 20)
echo "Medalha de Ouro";
?>
Você pode brincar com os valores e definir como quiser a quantidade de pontos que é necessário para alcançar as medalhas.
Existem outras diversas formas para se fazer isso que quer, mas segui o que já você vinha fazendo pra que possa entender melhor o processo.
Teste e qualquer coisa fale aí.
Abraço
abril 3rd, 2011 - 14:16
Bom sou novo no mundo PHP, jah tenho um site e queria muito colokar php e outras coisas bem participativas no meu site, ai quero saber por onde começo a aprender sobre php, MySQL e essa outras coisas ai, agradeço se pode ajudar nos meu estudos pois tenho muita vontade de entrar de cabeça nessa area, espero restposta.
abril 3rd, 2011 - 23:56
Olá @Uilton, o que posso indicar é ir devagar e sempre, na verdade o que definirá a velocidade é a forma que você absorve o conhecimento passado.
Existem diversas formas de aprender PHP, seja como autodidata (no peito e na raça), ou fazendo cursos especializados no assunto.
Independente da forma que escolha, eu recomendo começar pelo começo, Aprenda xHTML básico pelo menos e tente pegar algumas noções iniciais sobre CSS, pois te ajudarão a ter resultados mais interessantes com o PHP quando estiver aprendendo o dito.
Após aprender o básico do xHTML e um pouco de CSS, deverá ler um pouco sobre Lógica de programação (muito importante), mesmo que um pouco, mas leia, entenda o que é isso. Não é difícil entender e irá te preparar para entrar no mundo do PHP com mais compreensão do que irá ler e testar. Pronto, agora sim aventure-se no PHP.
Como e por onde?
Como eu disse no início: Como autodidata se achar que tem essa capacidade de aprender sozinho, ou melhor dizendo, buscando a informação pelos teus próprios méritos, através de livros, e na própria internet, testando, lendo etc… OU através de cursos especializados, mas entenda que os cursos acabam te passando apenas o básico (ajuda bastante a dar continuidade) e o bruto deverá aprender na prática. Qualquer das formas são validas, vai depender de tua capacidade de absorção e disponibilidade para aprender. Sem esquecer que usando o http://www.sistemabasico.com.br também podes aprender muita coisa durante todo esse processo. : )
Bons estudos.
abril 9th, 2011 - 19:38
Amigo muiti obrigado pelas dicas e jah sei sim o basico de HTML e CSS, e jah comecei a ver logica de programação. Obrigado pela a atenção e logo logo to pertubando aki dnovo atras de mais conteudo rss’
vlw
abril 10th, 2011 - 11:05
Assim espero.
Abraço
abril 9th, 2011 - 12:59
Roberto, para mim funciona muito bem até o cadastro do banco de dados, mas não chega e-mail para o cara que se cadastrou. Estou achando que foi por conta de algumas mudanças que teve na locaweb, entretanto, utilizo outros formulários com MIME 1.1, mas também não funcionou, outra diferença é que nos formulários que funcionam está como text/plain, mas eu alterei e também não funcionou. Aparece a mensagem de que foi enviado pro e-mail e tudo. Mas não chega. Você pode me indicar alguma coisa pra tentar resolver? Obrigado.
abril 9th, 2011 - 13:42
Olá @Leonardo. Outras pessoas também vem tendo problemas com a função mail(), e muitas vezes seda por causa do servidor de quem está recebendo a mensagem.
Procure verificar se está caindo em SPAM ou lixo eletrônico… tente enviar para hotmail, gmail, yahoo etc e veja se cai em lixo eletrônico ou spam tbm.
Nos comentários (são muitos eu sei, mas passei algumas icas já de como tentar resolver esse problema… usando envio autenticado com a classe PHPMAILER ou ainda melhorando o cabeçalho dos headers para usar com a função mail() mesmo. Da uma olhada nesse tutorial que ensina a usar o PHPMailer localmente e tente adaptar as tuas necessidades. Email autenticado é email garantido na caixa de entrada hehehe.
Outra coisa.. já recebi diversas reclamações sobre emails não funcionar na empresa que vc utiliza como hospedagem.
Enfim… tente fazer como eu falei, estude o tuto do PHPMailer e tbm releia os coments deste tutorial..
Bons estudos!
abril 11th, 2011 - 04:19
Olá Roberto, deu certo o uso da classe PHPMAILER. Chegando direitinho em qualquer e-mail. Muito obrigado pela ajuda. Você é muito bom! Parabéns.
abril 11th, 2011 - 11:51
Obrigado @Leonardo.
Estou pensando em alterar o tutorial e utilizar a classe para não haver mais problemas.
Assim que eu tiver um tempo irei implementar essa atualização.
Se quiser pagar um cafézinho, esteja a vontade.
Bons estudos!
abril 13th, 2011 - 18:39
Boa Noite
Script de activar conta não me está funcionando:s
Diz sempre:
Sua conta não pode ser ativada!
abril 13th, 2011 - 22:00
Amigo, com o que vc me passou só posso te dizer que deve ter feito algo errado.
Se seguir exatemente passo a passo do tutorial, sem modificar absolutamente nada provavemente não ocorrerá erros.
Se fez isso, refaça, pois em algum ponto deve ter feito algo fora do correto ou esquecido de fazer alguma coisa necessária.
Veja se o link de ativação está correto, se os dados estão sendo gravados corretamente no bd pois se não, na hora da comparação dará o erro. Verifique tbm se de fato não alterou nada a respetio da senha, principalmente na encriptação e o formato aleatório de ser gerada, conforme o tutorial. Lembrando tbm que o banco de dados deve estar corretamente definito o valor do campo para senha, ou seja, no mínimo VARCHAR 32.
Qualquer coisa fala aí.
abril 13th, 2011 - 22:22
Boa Noite,
Alterei o código sim, um pouco o que fiz foi o seguinte:
o link é ex:(omeusite.com/activar_conta.php?id=40&code=2e4d1dc1cdb02b9482ac0c3c59ba5efa)
__________________________
/*activar_conta.php*/
<?php
$user_id = $_REQUEST['id'];
$senha = $_REQUEST['code'];
$sql = mysql_query(
"UPDATE empresa SET activo='1'
WHERE id_empresa='{$user_id}'
AND senha='{$senha}'"
);
$sql_doublecheck = mysql_query(
"SELECT * FROM empresa
WHERE id_empresa='{$user_id}'
AND senha='{$senha}'
AND activo='1'"
);
$doublecheck = mysql_num_rows($sql_doublecheck);
if ($doublecheck == 0){
echo "Sua conta não pode ser ativada!“;
}elseif ($doublecheck > 0){
echo “A sua conta está activa!”;
}
?>
abril 14th, 2011 - 01:00
No activar_conta.php vc incluiu o config.php?
include “config.php”;
???
abril 14th, 2011 - 10:10
Já consegui, não estava a conectar com o banco de dados
obrigado pela ajuda e bons posts
abril 14th, 2011 - 12:08
ok.
Bons estudos.
abril 18th, 2011 - 10:05
Olá roberto, não entendo muito de php. mas entendo de html e css
mas o que quero perguntar é o seguinte. se a pessoa digitar
http://www.endosite.com.br/cofing.php e ler o código fonte ela terá acesso ao meu banco de dados?
ou isso não é possível?
excellente post! parabéns!
abril 18th, 2011 - 12:58
Olá @Taissa, tudo bem?
Não… se a pessoa digitar o cominho do arquivo.php ele não consegue ler o código fonte do script PHP somente o HTML do arquivo.
Se no arquivo config.php não tiver saída HTML nenhuma, ele simplesmente não verá nada. E se ele tentar salvar o arquivo, ele salvará um arquivo somente com HTML se este tiver alguma saída HTML.
Claro que em um nível mais avançado, ainda podemos proteger melhor arquivos que não queremos de jeito nenhum que alguma pessoa possa sequer pensar em ter acesso, emsmoq eu seja praticamente impossível.
Não é o seu caso… vá passo a passo e se precisar de mais ajuda entre em contato.
Bons estudos!
abril 22nd, 2011 - 18:30
Olá, adorei o tutorial, é realmente muito bom, parabéns.
Entretanto, estou com alguns problemas, há alguns bugs nas páginas e eu já conferi o código e está certinho, como você ensinou. Segue imagens (prints) do que está acontecendo:
http://i54.tinypic.com/204jv7.png
http://i56.tinypic.com/2910sax.png
Aguardo resposta, obrigado.
abril 22nd, 2011 - 18:45
Olá @Nathan… as mensagens inciadas por NOTICE, não são propriamente erros, e vc pode definir no php.ini para não serem exibidas ou no topo de seus arquivos adicionar essa linha:
error_reporting(E_ALL ^ E_NOTICE);Essa linha acima define que é para exibir todos os erros que ocorrerem, menos as Notices .
Quanto ao Warning que rolou conforme uns dos printcreens, refere-se à vc estar usando servidor local e como pode ter lido no tutorial eu deixo claro que usar localmente só se tiver um servidor de email instalado ou usar envio autenticado com emails do gmail por exemplo, usando a classe PHPMailer ao invés da obsoleta função mail() do PHP. Leia todos os comentários e achará informações mais precisas a respeito.
Verifique esse tutorial: http://www.sistemabasico.com.br/2011/01/20/como-enviar-email-localmente-com-php-apache-phpmailer-gmail-windows/ e adapte à tua necessidade.
Bons estudos!
abril 23rd, 2011 - 10:06
Muito obrigado =)
abril 23rd, 2011 - 12:06
Eu consegui fazer, fiz algumas modificações e agora está funcionando certinho! Só tenho uma dúvida externa ao assunto do tutorial…
Todo o texto escrito dentro do echo fica com os acentos bugados, ex: “Você não está mais logado em nosso site!”
Gostaria de saber se isso é algum erro de configuração do editor (uso o DreamWeaver) ou outra coisa.
Obrigado.
abril 23rd, 2011 - 12:14
@Nathan, o causador desse conflito podem ser diversos fatores.
Vou citar alguns para vc testar:
Procure verificar o charset do documento no topo do arquivo, nas meta-tags, talvez esteja como utf-8, mude para iso-8859-1 e veja se resolve.
Se os dados vem de banco de dados, veja se a codificação do banco de dados é igual ao do documento (arquivo).
Outra forma e é a que eu uso… nunca digito meus textos como nesse exemplo: café e sim sempre faço café e nunca tenho erros em nenhuma codificação, seja utf, ou iso… a portabilidade para qualquer servidor ou banco de dados é maior e sem conflitos.
Bons estudos.
abril 29th, 2011 - 12:52
Olá Roberto
Estou a fazer o sistema de login e está a acontecer-me um erro estranho que já corri tudo e não consigo resolver.
É o seguinte quando insiro o utilizador e a senha caso os dados sejam correcto, abre http://www.empresasnanet.com/verifica_utilizador.php e fica tudo em branco se for errado mostra a mensagem de erro. :s
o que pode ser o erro?
penso que deveria mostrar
“Bem vindo “. $_SESSION['nome'] .”!
Você está acessando área restrita para usuários cadastrados!
”
A unica alteração que efectuei é que o utilizador é o email e não existem niveis de permissão.
abril 30th, 2011 - 00:09
Olá @Rui, tente fazer sem modificação nenhuma, apenas para testar.
Se tudo correr bem o problema está nas modificações que fez.
Se der errado fazendo igual o tutorial, manda novamente a dúvida que vamos tentar resolver juntos.
Da uma lida nos comentários postados pra ver se tem algo que possa ajudar também.
Abraço
abril 30th, 2011 - 00:50
Olá, Roberto…
Fiz o tutorial, mas não entendo porque eu não recebo o e-mail de cadastro… =/
Depois de preencher os dados e enviar aparece a msg: “Foi enviado para o seu – email um pedido de confirmação de cadastro, por favor verifique e siga as instruções!
Se puder me ajudar agradeceria muito! =)
Bjos! ;*
abril 30th, 2011 - 15:24
com muito trabalho consegui editar o script.
Mais quando eu valido o email, e vou fazer o login da esse erro:
Você não pode logar-se! Este usuário e/ou senha não são válidos!
Por favor tente novamente!
–
Não sei mais oq fazer se alguem puder me ajudar ai esta meu email: gunnarcorrea@hotmail.com
:/
maio 8th, 2011 - 03:30
Salve Roberto!
Primeiramente, queria agradecer por este excelente script, e deixar meus parabéns x)
Bem, eu baixei seus arquivos e estava tentando fazer funcionar, mas aquele erro de header (que já citaram) persiste (no arquivo verifica_usuario.php)
Dá erro no trecho: header(“Location: area_restrita.php”);
O quê fazer pra redirecionar o usuário pra página restrita, se esse trecho não compila ? :/
abraço!
maio 8th, 2011 - 20:31
Olá @Edu, se jogar no google sobre header() poderá observar que a maioria dos erros e dúvidas são iguais as suas e as repostas e soluções são as mesmas.
Se ainda assim quiser usar header, utilize antes de tudo, logo após
São as dicas que posso dar.
Para utilizar a função header() não pode ter nenhuma saída antes da função, entenda saída como algo que possa ser exibido na tela do monitor.
Em algum ponto dos teus códigos é certo que está dando uma saída antes do header()
Se não conseguir encontrar onde você está errando, pode tentar algo com javascript para redirecionar, procure no google, mas não use
Bons estudos!
maio 8th, 2011 - 21:01
Valeu pelos esclarecimentos, Roberto!
Resolvi o problema colocando ob_start() no início da página que contém o header(), e funcionou perfeitamente x)
abraço, e obrigado pelo suporte!
maio 8th, 2011 - 18:19
ola amigo amei seu site.
poderiar me ensinar como hospedar as paginas php.
eu nao sei. se nao for encomodo. eu ja baixei alterei os dados mas onde coloco as paginas?
maio 8th, 2011 - 20:34
@ueliton, o tutorial é como se fosse um exemplo bem tosco de um site com opções de área restrita.
Faça da mesma forma com seu site, protegendo as páginas que deseja.
Se não entendeu o que eu quis dizer, amigo este tutorial ainda não é pra você.
Bons estudos.
maio 11th, 2011 - 14:39
me parece muito bom o tutorial, qdo eu estiver em casa vou testar, pois estou precisando de um sistema desse, eu gostaria de saber, se é possivel incrementar esse sistema de cadastro/login de usuarios, em uma pagina de efetuar pedidos, e realizar a compra? tem como? pois este ja possui o usuario_id certo?
aguardo resposta, abraçooos e parabens!!
maio 12th, 2011 - 00:42
Olá @Roberto, este sistema pode ser integrado de varias formas. Vai da criatividade e conhecimento para tanto.
Tem ‘usuario_id’ sim, mas isso é só o nome do campo no banco de dados, mas serve sim como referência para o usuário que efetuar o pedido.
Para tanto bastará saber fazer um relacionamento entre as tabelas, ou seja, entre a tabela de usuários e a tabela de pedidos.
Bons estudos.
maio 13th, 2011 - 14:57
Olá Roberto Lunelli, tudo bem ? Primeiramente gostaria de parabenizá-lo pelo tutorial. Bom, estou tendo alguns problemas para configurar esse script e gostaria muito que você me ajudasse.
Meu arquivo config.php esta dessa forma:
Está certo ?
Eu criei a minha tabela no CPANEL, fui em Banco de Dados MySQL, e a criei juntamente com um usuario, portanto não joguei no servidor o arquivo usuarios.sql que vc colocou para download.
Quando clico no botão enviar (arquivo formulario_cadastro.php) aparece varios erros:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘BD_USER’@'localhost’ (using password: YES) in /home/empor381/public_html/vip/config.php on line 7
Warning: mysql_select_db() [function.mysql-select-db]: Access denied for user ‘empor381′@’localhost’ (using password: NO) in /home/empor381/public_html/vip/config.php on line 8
Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /home/empor381/public_html/vip/config.php on line 8
Warning: mysql_query() [function.mysql-query]: Access denied for user ‘empor381′@’localhost’ (using password: NO) in /home/empor381/public_html/vip/cadastra.php on line 51
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/empor381/public_html/vip/cadastra.php on line 51
Warning: mysql_query() [function.mysql-query]: Access denied for user ‘empor381′@’localhost’ (using password: NO) in /home/empor381/public_html/vip/cadastra.php on line 52
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/empor381/public_html/vip/cadastra.php on line 52
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/empor381/public_html/vip/cadastra.php on line 54
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/empor381/public_html/vip/cadastra.php on line 55
Warning: mysql_query() [function.mysql-query]: Access denied for user ‘empor381′@’localhost’ (using password: NO) in /home/empor381/public_html/vip/cadastra.php on line 136
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/empor381/public_html/vip/cadastra.php on line 136
Access denied for user ‘empor381′@’localhost’ (using password: NO)
Você poderia me ajudar ?
Fico no aguardo e desde já agradeço !
Abraços
Guilherme
maio 13th, 2011 - 15:22
Olá Roberto, tinha colocado a configuração do meu arquivo config.php no outro post, mas não apareceu. Ai vai ela novamente:
define(‘BD_USER’, ‘empor381_user’); // USE O TEU USUÁRIO DE BANCO DE DADOS
define(‘BD_PASS’, ‘minhasenha’); // USE A TUA SENHA DO BANCO DE DADOS
define(‘BD_NAME’, ‘empor381_usuarios’); // USE O NOME DO TEU BANCO DE DADOS
mysql_connect(‘localhost’, ‘BD_USER’, ‘BD_PASS’);
mysql_select_db(‘BD_NAME’);
maio 13th, 2011 - 16:15
Olá @Guilherme,
os erros são característicos de uma conexão mal sucedida por falta de informação correta em relação à teu usuário, senha ou banco de dados.
…ou seja, não foi possível estabelecer a conexão com o banco de dados devido aos dados incorretos fornecidos e obviamente, devido à isso, nenhuma query vai funcionar e por isso aquela cascata de mensagens de erros.
Olhando por cima e já sabendo de antemão que tu usas CPANEL então posso imaginar onde está o erro no teu arquivo config.php… mas apenas vou dar um palpite :)
Se o nome do banco de dados que você criou (veja bem, o nome do banco de dados e não da tabela) é exatamente esse: empor381_usuarios…
… então só resta um local para estar configurado errado:
define(‘BD_USER’, ‘empor381_user’);Tente coloca r o usuário que vc usa para acessar o CPANEL… provavelmente apenas empor381
Desta forma:
define('BD_USER', 'empor381');Dica: use apostrofe (como fiz no exemplo acima) ou aspas, pois da forma que vc está usando acentuação (CRASE e AGUDO) pode dar conflito também.
Bons estudos!
maio 13th, 2011 - 23:20
Olá, eu troquei o crase/agudo por aspas no config.php, agora o erro que da é esse:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/empor381/public_html/vip/cadastra.php on line 107
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/empor381/public_html/vip/cadastra.php on line 109
No database selected
maio 14th, 2011 - 02:40
@Guilherme, o próprio erro já informa onde está o problema:
No database selectedComo eu disse antes, os dados que vc está informando no arquivo config.php não conferem com a realidade ou vc não está incluindo o arquivo config.php (
include "config.php";) no topo dos arquivos que fazem consultas ao banco de dados, pois o que está ocorrendo é a falta de seleção de um banco de dados.Bons estudos
maio 13th, 2011 - 20:55
Olá Roberto, tudo bem ? eu fiz o que vc sugeriu, e os erros continuaram da mesma forma. Dai eu resolvi dar uma vasculhada no codigo cadastra.php. Achei alguns caminhos errados em relação ao meu site, pq joguei todo o codigo em uma pasta (www.emporiotecnologia.com.br/vip). Dai eu voltei o usuário da forma que estava antes, mas com apostrofe no arquivo config.php
define(‘BD_USER’, ‘empor381_user’); // USE O TEU USUÁRIO DE BANCO DE DADOS
define(‘BD_PASS’, ‘minhasenha’); // USE A TUA SENHA DO BANCO DE DADOS
define(‘BD_NAME’, ‘empor381_usuarios’); // USE O NOME DO TEU BANCO DE DADOS
mysql_connect(‘localhost’, BD_USER, BD_PASS);
mysql_select_db(‘BD_NAME’);
Agora quando clico no botão enviar (arquivo formulario_cadastro.php) aparece esses erros:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/empor381/public_html/vip/cadastra.php on line 107
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/empor381/public_html/vip/cadastra.php on line 109
No database selected
O problema agora seria o arquivo cadastra.php ?
Fico no aguardo de uma luz e desde já agradeço.
Guilherme
maio 20th, 2011 - 01:58
‘;Access denied for user ‘sacriaco’@'localhost’ (using password: NO)
da isso quando vai se cadastrar.. e tah tudo certo..
alhuem me ajuda..
maio 20th, 2011 - 22:22
Não @Febronio, não está tudo certo, pois se tivesse não daria esse erro.
O que está ocorrendo é o seguinte: Ou você não colocou teus dados de conexão com o banco de dados correto ou não incluiu o arquivo config.php devidamente conforme o tutorial ou ainda ambos os erros.
Verifique o config.php e se está dando include nele nos arquivos que exigem isso. Analise o tutorial com atenção.
Bons estudos.
junho 3rd, 2011 - 14:34
Oi Roberto,
olha, eu instalei o sistema no meu localhost, com o MAMP. Até ai tudo, certo!!
O problema é o direcionamento para a página http://www.teusite.com!!
Eu não consigo acessar a página e portanto não tenho como confirmar a senha que por sua vez não deixa eu fazer o login na página. Diz que o Login ou a Senha estão incorretos!!
O que eu posso fazer? Eu tenho que alterar algum arquivo?
Me ajude por favor!!
att.
Caio
junho 4th, 2011 - 00:19
Olá @Caio… espero que não esteja usando http://www.teusite.com, pois este deve ser substituído pelo SEU site.
Para confirmar usuario e senha, é por email…
No cadastro você recebe o link de confirmação via email.
Localmente não irá funcionar se vc não estiver usando um servidor SMTP instalado.
Olhe alguns comentários e achará alumas dicas sobre o assunto, inclusive tente trocar a função mail() utilizada para enviar o email de confirmação por um método mais seguro… ou seja, autenticado.
Leia este tutorial:
http://www.sistemabasico.com.br/2011/01/20/como-enviar-email-localmente-com-php-apache-phpmailer-gmail-windows/
acredito que te ajudará muito.
Bons estudos.
junho 3rd, 2011 - 23:51
Gostei do script, porem gostaria de saber se esse script tem função anti sql injection ?
grato
junho 4th, 2011 - 00:36
Olá @Andre… como mencionei nas explicações do tutorial, não é intenção nenhum método mais complexo inclusive de segurança, mas devido a forma que é feito, mesmo sendo simples… se vc conhece alguns métodos de executar sql injection… teste.
Eu nunca sofri essa ‘violência’ em nenhum script meu hehehehe.
Mas você pode usar a função mysql_real_escape_string( ) nas suas querys para se proteger caso esteja inseguro.
Bons estudos
junho 7th, 2011 - 14:35
Oi, Roberto!
Adooorei o tutorial, caiu feito uma luva pra mim!
Tudo corre bem até quando clico no link de ativação que consta no e-mail…antes dizia “sua conta não pode ser ativada!” e agora fica uma página em branco!
=/
Pode me ajudar?
Tenho que entregar esse projeto o quanto antes, melhor!
Obrigada!
junho 7th, 2011 - 14:42
Bem, Roberto!
Agora fiz uma modificação e voltou a frase: “Sua conta não pode ser ativada!”
=/
Me descabelando aqui…kkkkkkk
HELP, please!
Obrigada!
junho 8th, 2011 - 15:29
Oi @Karla te enviei um email.
Uma das hipóteses é porque deve ter alterado algo que não era para alterar, esquecido de configurar algo que era pra configurar ou ainda configurado algo que não era pra configurar.
Fica difícil dizer o que pode ser.
A dica é pegar o script e instalar separado do teu site… para testar.
Se tudo der certo ai sim ir integrando aos poucos e com cuidado.
Verifique o email que te mandei e vamos ver se consigo te ajudar.
Bons estudos!
junho 7th, 2011 - 22:30
Olá @Roberto Lunelli, obnrigado pela dica !!!
Abraços
junho 15th, 2011 - 22:21
Olá Roberto. Estou a tirar um curso de multimédia, mas ainda agora comecei a trabalhar com php.
Estou a fazer um site que requer que o usuário faça login e que se mantenha com o login quando muda de página em página.
Agora, estive a procurar, e vi que para isso acontecer, precisamos de usar cookies. Este teu script tambem mantém os usuarios logados saltando de página em página?
Agradecimentos
junho 15th, 2011 - 22:23
Desculpa postar duas vezes, mas esqueci-me de te perguntar se eu consigo modificar o teu script tambem funciona para proteger includes
Obrigado
junho 17th, 2011 - 10:28
Sim @Portas… ele mantém o user logado através de SESSIONS e não COOKIES.
Quanto a proteger includes?? sim, basta usar a condicional verificando se uma determinanda SESSION está ativa, conforme o tutorial ensina.
Pode ainda colocar apenas o cod de verificação, que usei para exemplificar no topo do include que deseja proteger.
Assim ira redirecionar para outra página quando a SESSION não estiver ativa.
Essa formatação de layout para usar includes fica por tua criatividade.
Bons estudos
junho 17th, 2011 - 15:25
Bom consegui fazer um sistema de login bastante simples sozinho. O problema é que ouvi dizer que nao se deve usar unset nem destroy session porque … está fora de uso no php 5 penso eu.
Então como faço log out?
junho 17th, 2011 - 22:26
Olá @Portas, utilize session_unset() e session_destroy()
Bons estudos
junho 25th, 2011 - 16:14
Bom dia, eu estou com uma duvida que talvez nao faça sentido nenhum mas ca vai.
o usuario ao fazer o login esta entrando numa parte restrita do site. o que eu queria saber era se ao fazer varias paginas é precisso fazer algo para que o broser nao se esqueça que o usuario esta cadastrado. se sim que elementos se deve usar.
o tutorial que fez esta espectacular estou iniciando o estudo de PHP na escola e nem o meu professor me conseguiu esplicar esta materia tao bem. Obrigadao :)
junho 25th, 2011 - 17:05
Olá @Jorge… oque faz o usuário permanecer logado é as sessions que ele gravou ao se ‘logar’
Quando o usuário faz logout ou fica muito tempo sem acessar a página, ou fecha o navegador e abre novamente e percebe que não está mais ‘logado’, é porque essas sessions que ele havia gravado anteriormente, estão destruídas, apagadas.
Bons estudos!
junho 28th, 2011 - 05:59
bom dia e obrigado pela resposta. pelo que percebi o usuario faz o login e dai para a frente existe sempre uma ligação entre a base de dados e mostrando sempre os dados do usuario. é isso?
se for me diga como ao passar entre varias paginas eu verifico o usuario que esta logado. ou seja o que eu queria é que ao passar entre paginas tivesse sempre no indice o nome do usuario.
por exemplo :
echo “olá”$nome
como saber este $nome
junho 28th, 2011 - 11:36
Antes de Mais obrigado mas ao reler o tutorial que escreveu consegui perceber melhor e ja sei como fazer o que tenho andado a tentar e sem sucesso. mas ao tentar fazer de novo ele envia-me uma mensagem para o ecra assim:
Notice: Undefined index: nome in c:\program files (x86)\easyphp1-8\www\sistema de cadastro e login\cadastrar.php on line 3
Notice: Undefined index: sobrenome in c:\program files (x86)\easyphp1-8\www\sistema de cadastro e login\cadastrar.php on line 4
Notice: Undefined index: email in c:\program files (x86)\easyphp1-8\www\sistema de cadastro e login\cadastrar.php on line 5
Notice: Undefined index: usuario in c:\program files (x86)\easyphp1-8\www\sistema de cadastro e login\cadastrar.php on line 6
Notice: Undefined index: info in c:\program files (x86)\easyphp1-8\www\sistema de cadastro e login\cadastrar.php on line 7
ERRO:
Nome é requerido.
Sobrenome é requerido.
Email é um campo requerido.
Nome de Usuário é requerido.
Preencha os campos abaixo:
Nome:
Sobrenome:
Email:
SABE O QUE SE PASSA E COMO RESOLVER?
junho 28th, 2011 - 14:06
Aa NOTICES, basta vc alterar no php.ini uma diretriz que evita que esses avisos sejam lançados… não são erros… quer dizer… eu os encaro como erros, mas não impedirão que o script seja executado. No php.ini procure por error reporting e altere ali o valor para não exibir NOTICES. No próprio php.ini tem exemplos e explicações dos valores possíveis de se usar ali na diretiva. Use algum tradutor se não souber inglês.
Quanto aos outros problemas… deve verificar as mudanças que fez… os parâmetros dos campos dos formulários por exemplo (… input type=’text’ name=”AQUI” …) devem ser iguais aos recuperados no arquivo ao qual é enviado o formulário, de outra forma ele entenderá que o form enviou os campos vazios.
Bons estudos
junho 28th, 2011 - 13:59
Olá Jorge.. o segredo são as SESSIONS gravadas na hora do login.
Veja o arquivo verifica_usuario.php, aliás você tem que acompanhar todo o raciocínio lógico dos códigos…
… nesse arquivo que mencionei que faz a gravação das sessions ao efetuar o login… o form de login é enviado para este arquivo então se for ver com atenção perceberá que entre outras sessions que são gravadas ele também grava essas:
$_SESSION['nome'] = $nome;
$_SESSION['sobrenome'] = $sobrenome;
Pronto… que tal tentar uma condicional:
echo (isset($_SESSION['nome']) && isset($_SESSION['sobrenome'])) ? "Olá ".$_SESSION['nome']." ".$_SESSION['sobrenome'] : "Olá visitante";Isso que fiz acima é a mesma coisa que vc usar if e else, como no exemplo abaixo:
if (isset($_SESSION['nome']) && isset($_SESSION['sobrenome'])){
echo "Olá ".$_SESSION['nome']." ".$_SESSION['sobrenome'];
}
else{
echo "Olá visitante";
}
Bons estudos
junho 28th, 2011 - 14:34
peço desculpa por estar a ser tao chato mas é que eu estou mesmo a fim de conseguir efectuar este tutorial a 100% e por isso precisso de mais um pouco da sua ajuda. como posso chegar a esse php.ini? :&
junho 28th, 2011 - 15:07
Se você está tentando executar o conteúdo deste tutorial, localmente com o PHP instalado no teu computador, você precisa ter o PHP instalado e um servidor web também.
Agora se você está tentando efetuar este tutorial em algum servidor de hospedagem… aí você não tem acesso ao php.ini
Enfim… utilize o google e busque por ‘error reporting’ e vai encontrar infindáveis informações a respeito. Se filtrar a busca adicionando ‘NOTICE’ irá mais rápido ao ponto.
Bons estudos
junho 28th, 2011 - 15:26
OK olha eu tenho o easyphp instalado no pc. isso sera por causa disso ou seja quando eu publicar estes erros desaparecem?
junho 28th, 2011 - 15:37
Não @Jorge… isso não depende de publicação e sim de configuração do PHP, pois se vc publicar em um server que os NOTICES estão habilitados eles irão aparecer igualmente
Mesmo tendo o easyphp, deve ter algum lugar que vc configure o PHP não tem?
É neste lugar que vc irá procurar o que eu informei anteriormente.
Não uso esses pacotes prontos, nunca usei e nem sei como usar, por isso não posso te dizer exatamente onde é no easyphp.
Se quiser reinstalar teu PHP desde o início da forma mais adequada eu postei alguns tutoriais aqui no site.
Outra forma de não exibir os NOTICES é mandar diretamente no topo dos teus arquivos um comando que desabilita a exibição dos NOTICES naquele determinado arquivo
Para tanto, segue a mesma dica do coment anterior, use o google com quelas palavras chaves que indiquei.
Bons estudos
junho 28th, 2011 - 15:40
talvez o phpdesigner ou o araneae resolvem este problema é que nao estou a perceber :(
junho 28th, 2011 - 16:22
Amigo… definitivamente você não tem intimidade com o google hehehe, é uma pena, deveria exercitar, pois ali você tem todas as respostas, inclusive deve ter achado esse meu site por ele, – não?
Fiz o que você deveria ter feito, busquei no google informações sobre como achar o php.ini no easyphp e encontrei uma resposta simples, talvez ajude você.
Não sei como é o easyphp, como já disse, mas se todos forem como o do rapaz que passou a dica na internet e que trago aqui,m vai ajuda-lo.
Clique com o botão direito sobre o ícone do easyphp que fica ao lado do relógio, depois Configurações, PHP…
Enfim… se com isso você achar um arquivo chamado php.ini, deverá procurar a linha que tem ‘error reporting = alguma coisa’
substitua, definindo da seguinte forma: error_reporting = E_ALL & ~E_NOTICE
Isso mostrará todos os erros padrões, menos as Notices
Bons estudos
junho 28th, 2011 - 16:45
fiz o que me mandou mas mesmo assim ele mandou isto:
logo ao abrir ele diz isto
Notice: Undefined index: usuario in c:\program files (x86)\easyphp1-8\www\sistema de cadastro e login\outros\cadastra.php on line 9
Notice: Undefined index: info in c:\program files (x86)\easyphp1-8\www\sistema de cadastro e login\outros\cadastra.php on line 10
ERRO: Você não enviou as seguintes informações requeridas para o cadastro!
Nome é um campo requerido.
Sobrenome é um campo requerido.
Email é um campo requerido.
Nome de Usuário é um campo requerido.
Preencha os campos necessários abaixo:
Formulário de Cadastro
EU ACHO BASTANTE ESTRANHO NAO ACHA?
junho 28th, 2011 - 17:31
Os NOTICES é porque vc não fez exatamente como eu disse não.
O Erro no cadastro é alguma coisa que não está coincidindo na hora do envio e no arquivo que recebe os dados do envio.
Provavelmente os NAMES dos inputs estão de um jeito e vc está resgatando de outro jeito.
Verifique com calma
junho 28th, 2011 - 17:02
O problema é que eu criei uma tabela com o nome de usuarios mas no php ele busca pela tabela usuario, so alterei o nome da tabela e funcionou beleza o cadastro
junho 28th, 2011 - 17:39
Isso que vc disse sim eu acho estranho, pois não tem haver com os erros gerados, pois não é feito nenhuma requisição ao banco de dados se aparecer aqueles erros.
Aqueles erros de ‘nome’, ‘usuário’, etc, só aparecem se isso abaixo não estiver correto:
$nome = trim($_POST['nome']);$sobrenome = trim($_POST['sobrenome']);
$email = trim($_POST['email']);
$usuario = trim($_POST['usuario']);
$info = trim($_POST['info']);
Por exemplo, se vc tentar pegar assim: $_POST['nome']
… mas enviou pelo form o campo vazio ou ainda o name=”" do input que deve ser ‘nome’, mas está com outro valor irá gerar os erros que foram gerados e assim segue igual para os outros resgates.
Aí que pode ter problema e causar o erro que ocorreu.
Pode ter certeza de que se o cadastro rolou normal agora, é porque vc corrigiu e nem sabe como, pois esse lance que vc falou do nome da tabela no BD ser um e tu consultar outro é um ERRO TAMBÉM, mas não tem haver com o anterior.
Abraço
junho 29th, 2011 - 00:52
Olá, ótimo tutorial!
Depois de cadastrado e com o login efetuado, o que devo fazer para que o usuário seja redirecionado para uma determinada página ? Como criar essa página para que ela seja restrita somente ao usuário cadastrado ?
junho 29th, 2011 - 01:09
Ignore meu comentário acima!
É so criar uma area_restrita.php com todo o design e colocar os códigos.
Você poderia colocar um tutorial de como dento dessa area restrita, o usuário poder ter um “mini-perfil”, ou seja que nãoprecisa haver adições de amigos, mas envio de fotos, dados, como se fosse a página do orkut, mas sem amigos, comunidades, aplicativos, promova, enfim, O PERFIL!
Agradeço desde já!
junho 29th, 2011 - 01:30
Olá @Lucas, veja bem, quando vc efetua o login vc grava algumas sessions como nome, sobrenome, nivel de usuário e PRINCIPALEMNTE o ID deste usuário que acaba de logar.
Esse ID é justamente a identificação única deste usuário no banco de dados… toda e qualquer consulta no banco de dados usando a o campo do id na clausula WHERE ira retornar somente dados ligados ao id do usuário consultado.
Partindo daí… acho que já ta entendendo, mas vamos lá… a partir daí, vc pode nessa área restrita exibir somente dados do cadastro desse usuário ou ainda através de outros forms, incluir mais dados no BD e em outras tabelas, mas sempre relacionando com esse ID gravado na session.
Pegou isso? se sim… então agora o céu é o limite @Lucas hehehe
Bons estudos
junho 29th, 2011 - 06:04
sera que os dados estarem assim:
while ($i <= 7){
$num = rand() % 33;
$tmp = substr($salt, $num, 1);
$pass = $pass . $tmp;
$i++;
}
ou assim altera alguma coisa como o php é case sesintive.
while ($i <= 7){
$num = rand() % 33;
$tmp = substr($salt, $num, 1);
$pass = $pass . $tmp;
$i++;
}
junho 29th, 2011 - 16:33
Juro que não entendi sua dúvida…
Eu exclui seu outro comentário, pois era só código e igual à estes dois aí em cima.
Explique melhor sua dúvida.
Até tenho uma bolinha de cristal aqui e tentando decifrar tua dúvida, imagino que vc queira saber se o user ao digitar sua senha com letras maiúsculas ou minúsculas ele terá acesso igual?
SIM… a senha ele pode digitar maiúscula ou minúscula e ele entra… mas vc pode mudar isso se tiver conhecimento para tal.
Abraço
junho 29th, 2011 - 15:30
Olá @Roberto Lunelli, primeiramente parabéns pelo tuto, estava a dias procurando um outro script de login até que achei o seu (100% funcional).
Até implante um layout nele para meu uso aqui veja -> http://i56.tinypic.com/30ddk4n.png
Gostaria se poderia me ajudar, pois sou leigo em !
Como de padrão o script aceita conexão simultânea de um mesmo login, gostaria de saber se tem a possibilidade de fazer uma modificação, para quando for fazer o Login verifica-se se o mesmo já encontra-se logado, e consequentemente bloqueia a segunda conexão e exiba uma mensagem de aviso.
Como posso fazer tal função… É Possível me ajudar.
Grato Desde já !
junho 29th, 2011 - 16:43
Olá @Rodrigo, vc pode fazer de diversas formas, vou dar uma luz em 2 delas:
Pegar o IP do user quando ele efetua o login, ou seja, no arquivo verifica_usuario.php e gravar no bd e se alguém tentar navegar na página com outro IP não deixar, não permitir o login, apenas quando o campo do IP no BD estiver vazio… para isso basta atualizar esse campo quando o user faz logout.
Outra forma é um campo no BD como um interruptor de luz com valores que podem ser 0 ou 1… esse campo pode ser do tipo ENUM
Quando o user loga o valor atualiza para 1, quando faz logout atualiza para 0, sendo assim se alguém tentar logar e o valor tiver em 1 nesse campo o login é negado.
Num dos comentarios aqui neste tuto eu ensinei isso se não me engano, mas fica aí denovo hehehe
Para pegar o IP do user eu mandei um tuto aqui no Sistema Básico, da uma olhada no Tutorial -> Como pegar o endereço IP real com PHP?
Bons estudos
junho 29th, 2011 - 19:33
Olá Roberto,
Primeiro quero agradecer por dividir o conhecimento com todos.
Gostaria de saber se pode me ajudar, já li uma dúvida igual a minha nos posts anteriores, mas não consegui resolve-la;
Depois que faço o cadastro de teste, não recebo nenhum e-mail de ativação, já tentei com o da Locaweb e com o do gmail.
Tentei também ativar direto no banco de dados e copiar a senha, mas não consegui me logar.
O que posso estar fazendo de errado?
http://setorsete.com/extranet/formulario_cadastro.php
Obrigado mais uma vez.
junho 29th, 2011 - 19:54
Olá… tente enviando email de forma autenticada.
Já tentou usar o PHPMailer?
Tem um tutorial sobre envio de email com o PHPMailer aqui no Sistema Básico
Da uma olhada, adapte, j´pa que o tuto é para envio local… e voc~e deve estar usando algum serviço de hospedagem.
Se for a Locaweb deve ser por isso… a utilização da função mail() deve estar prejudicada nesse server… utilize a classe phpMailer que acredito que não terá problemas.
Verifique também se a utilização de SESSIONS está ok no teu servidor, entre em contato com o suporte para que eles te informem…
Se nada der certo e quiser servidor de hospedagem de gente grande, entre em contato via formulário de contato aqui do site.
Bons estudos
junho 30th, 2011 - 01:53
Olá Roberto Lunelli, eu até entendi a logica, porém to perdidaço como fazer.
Eu gostaria de fazer neste Esquema ((Outra forma é um campo no BD como um interruptor de luz com valores que podem ser 0 ou 1… esse campo pode ser do tipo ENUM))
Poderia explicar como posso fazer, ou se vc ja tem algum esquema pronto pois n entendo nada de PHP e n sei como posso fazer isso
VLW….
junho 30th, 2011 - 02:07
Aí fica um pouco complicado de eu fazer algo agora.
Tô numa correria sempre, prazo de entrega, família, sustento, etc…
Colabora com o site aí e eu procuro colaborar de forma mais enfática no seu caso.
Grande abraço
junho 30th, 2011 - 02:10
Ok… Passa pra mim como e quanto Compartilhar, ai vejo se consigo…
junho 30th, 2011 - 03:00
Te mandei um email
Abraço
junho 30th, 2011 - 11:52
Cara, muito obrigado de novo, principalmente pela rapidez na resposta.
Vou dar uma olhada, mas estou meio defasado na área de php, fiquei um tempo só no flash e agora vi que devia ter continuado com programação, então se puder dar uma dica um pouco mais “mastigada” eu agradeço, mas como li que está na correria se não puder tudo bem. Agradeço da mesma forma. Quanto a hospedagem, me interesso sim mas não pra agora, estou com outros dois projetos na Locaweb e não posso me desvincular por enquanto, mas se puder me passar mais informações seria bom.
Abraço!
junho 30th, 2011 - 22:26
No arquivo cadastra.php se for analisar o raciocínio e sequência lógica do script, vai perceber que é ele que envia o email e com um pouco de atenção vai perceber também exatamente onde é efetuado o envio.
Justamente na função mail()… seguindo o tutorial que indiquei ( PHPMAILER ), vc pode substituir o método, ao invés de usar a função mail(), utilizar a classe phpmailer para o envio.
Se eu mastigar mais que isso, só fazendo pra vc, pois não tenho mais o que dizer a respeito… já estaria entrando numa área de ensino, propriamente, do PHP e se assim for, a conversa é outra e por email, se tiver interesse.
Grande abraço
junho 30th, 2011 - 01:10
Primeiramente muito bom o seu trabalho e todos nós estudantes ficamos muito grato, bom fiz o tutorial como foi passado cadastro, recebo o e-mail, ativo, e quando vou entrar com a senha e login não acontece nada, mas quando coloco errado informa que eu digitei errado, e quando vou redefinir enviando um e-mail para mim não envia e também não acontece nada, o que pode ser ?
junho 30th, 2011 - 01:44
Vc fez alguma alteração nos valores dos tipos de campos no banco de dados?
Vc fez alguma alteração em qualquer parte do arquivo?
Talvez teu problema possa estar ligado ao registro das sessions tbm… testou localmente ou em server remoto?
De mais detalhes para qu e eu possa tentar ajudar.
Abraços
junho 30th, 2011 - 12:13
banco de dados é copia, revisei todo arquivo sem alterações, pois estou aprendendo e não me atrevi alterar, estou usando em um servidor remoto, no qual tem uma loja virtual instalada. Não testei local, pois tenho que configurar o xamp para enviar e-mail vi que aqui no seu blogue você ensina; é melhor testar na minha maquina primeiro?
junho 30th, 2011 - 22:21
Quando vc digita a senha corretamente, vc diz não acontecer nada… mas quando acontece esse “não acontecer nada” que endereço está exatamente na sua barra do navegador?
verifica_usuario.php ? Se for, é porque ele não está redirecionando… verifique isso
julho 1st, 2011 - 01:38
Estamos progredindo foi isso… No formulario_senha_perdida.html coloquei : action=”gerar_nova_senha.php” e no verifica_usuario.php coloquei: header(“Location: http://www.eletromel.com.br/php/area_restrita.php“);
Resolvido o problema, agora esta acontecendo a mesma coisa quando clico em sim: Você realmente deseja sair da área restrita?
Sim | Não
ou seja fica parado na mesma tela só muda a url: http://www.eletromel.com.br/php/logout.php?logmeout
observei no codigo que deveria aparecer uma mensagem depois disso:
<?php
session_start();
if (!isset($_SESSION['logmeout'])){
echo "Você realmente deseja sair da área restrita? “;
echo “Sim | “;
echo “Não“;
}else{
session_destroy();
if (!session_is_registered(‘nome’)) {
echo “Você não está mais logado em nosso site!“;
echo ” Login: ,”;
include “formulario_login.html”;
}
}
?>
E a outra questão é porque não esta aparecendo acentuação grafica?
Bem vindo leandro Freitas!
Você está acessando área restrita para usuários cadastrados!
Seu nÃvel de usuário é 0.
Com esse nÃvel, você tem permisão de acesso à s seguintes áreas:
- Forum
Abrir tópicos, postar em tópicos de terceiros.
julho 1st, 2011 - 11:50
@Leandro, você está fazendo modificações no código, por isso as coisas não dão certo.
não é
if (!isset($_SESSION['logmeout'])){Da uma olhada no tutorial e perceberá que é
if (!isset($_REQUEST['logmeout'])){Com SESSION nunca vai dar certo mesmo, pois não foi gravada a session anteriormente em relação a logmeout.
Fica esperto!
Quanto à acentuação tem a ver com o charset dos teus arquivos… deve estar usando utf-8 altere para charset=iso-8859-1 na metatag:
meta http-equiv="Content-Type"...Bons estudos
julho 2nd, 2011 - 02:03
Realmente, estava tão ansioso que não percebi, já esta funcionando 100%. Muito obrigado pela atenção e mais uma vez meus parabens pela iniciativa vou fazer os outros tutorias propostos pelo blog.
julho 2nd, 2011 - 04:24
Legal que conseguiu Leandro… e não se acanhe em colaborar com uma doação em qualquer valor pra ajudar a sustentar o site ;)
Abraço
julho 6th, 2011 - 23:43
Boa Noite!
Parabéns! O simples conteúdo que disponibiliza aqui que é de grande valor para muitos, como eu, que estão começando a aprender agora.
Roberto tive a oportunidade de testar este tutorial em dois servidores web (hotel e Loca), e alguma coisa errada eu fiz :( , nos dois servidores obtive o mesmo problema, apos editar o config.php e configurar o banco MySQL (sem fazer qualquer outra alteração nos outros arquivos).
Sempre que preencho o ‘formulario_cadastro.php’ ao clicar em enviar as informações o site começa a carregar o arquivo cadastra.php, mas fica tudo em branco. Já fiz todo tipo de teste, desde editar o config.php, o cadastra.php, trocar a pasta onde estão locados os arquivo, colocar senha errada para ver os erros e criar um novo banco de dados, mas o mais longe que cheguei foi a tela em branco.
Acredito que a unica coisa que não tenha feito corretamente foi conseguir importar o arquivo usuarios.sql, consigo criar o banco da forma que esta no site, um pouco diferente do arquivo que fiz o download que apresenta o erro:
#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘{\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial’ at line 1
Meu Banco esta assim.
CREATE TABLE usuarios(
usuario_id int(5) NOT NULL auto_increment,
nome varchar(50) NOT NULL default ”,
sobrenome varchar(50) NOT NULL default ”,
email varchar(100) NOT NULL default ”,
usuario varchar(32) NOT NULL default ”,
senha varchar(32) NOT NULL default ”,
info text NOT NULL,
nivel_usuario enum(’0′,’1′,’2′) NOT NULL default ’0′,
data_cadastro datetime NOT NULL default ’0000-00-00 00:00:00′,
data_ultimo_login datetime NOT NULL default ’0000-00-00 00:00:00′,
ativado enum(’0′,’1′) NOT NULL default ’0′,
PRIMARY KEY (usuario_id)
) ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_general_ci COMMENT = ”;
Se puder dar uma ajuda ai, Agradeço desde Já!
Muito Obrigado!
Qualquer coisa estamos ai!! Vlw!
julho 6th, 2011 - 23:54
Olá Renan, primeiramente queria dizer que entendo que são 273 comentários referente à este tutorial, mas tenho certeza que já respondi a questão igual a sua nesse mar de coments acima do seu.
Justamente em relação a Locaweb… não sei porque eles barram a questão, talvez porque hoje em dia cada vezes mais os servers de hospedagem exigem cada vez o envio de email autenticado e por isso indico na maioria das repostas à utilizarem uma alternativa, inclusive melhor, que seria a utilização da classe PHPMailer e que já até postei um tutorial sobre. Outra possibilidade que já ocorreu também era de não estar mantendo as sessions gravadas e por isso não redirecionar para a devida página após o login.
Quanto ao fato de ter testado localmente e também não ter dado certo, primeiramente precisaria ter um server SMTP instalado para dar certo localmente, ou utilizar a classe PHPMailer para envio autenticado através de alternativas como a do Gmail.
Além de ter a paciência de percorrer entre os coments acima do seu, vou te pedir para dar uma olhada com atenção nesse tutorial sobre PHPMailer e envio autenticado de emails que postei no sistema Básico.
Quando ao SQL vc fez correto e o arquivo exportado deve ter dado erro por estar num formato incompatível com sql … regravarei esse arquivo para que a importação passe a funcionar a partir de hoje, obrigado por relatar.
Da uma atenção à estes pontos que citei e depois qualquer coisa da um retorno aqui novamente.
Abraço
julho 12th, 2011 - 11:28
Ok eu tenho os códigos mais não sei com montar o sistema…
por exemplo o codigo para logout eu apenas coloco ele na pasta raiz do site? e os outros códigos?
rsrsrs
abraço!
julho 12th, 2011 - 23:42
Caio, basta seguir exatamente como falei no tutorial, pois não basta ter os códigos…
Não é só script para fazer download e tentar integrar ao seu site e sim um tutorial ensinando como fazer algo do genêro.
Se a ideia é apenas baixar e instalar e ver como é… sinto muito… não poderei ajudar, pois essa não era a ideia quando postei ele.
Bons esudos.
julho 14th, 2011 - 10:22
Boa tarde, a minha página ativar.php, nao funciona :c
Recebo o e-mail, e quando faço clique no link ele aparece que a pagina nao existe, e ela esta no servidor :s
Preciso de ajuda rapidamente …
julho 14th, 2011 - 11:32
Bom… primeiramente, para dar Boa tarde, provavelmente deve estar em Portugal ou qualquer lugar cujo o fuso horário faz como que agora seja o período da tarde aí.
Em segundo, acredito que não tenha a ver com o local de onde vens, pois conheço pessoas de Portugal e de outros lugares do mundo e sei que de forma geral o povo sabe ser educado.
… aqui no Brasil entendemos a expressão “Preciso de ajuda rapidamente…” como se fosse uma ordem e não aceitamos muito bem.
Saber se expressar na internet é primordial, pois como não estamos frente a frente com o próximo não sabemos em que tom está sendo dirigido a palavra.
Vou fazer ainda um tutorial básico e postar aqui de como se portar em solicitações de suporte, comentários, emails e fóruns.
Palavras como por favor e muito obrigado são mágicas para se conseguir algo por aqui…de outra forma é ignorado… eu ia ignorar, ma como dormi com os pés destapados resolvi ajudar ‘rapidamente’… mais pensando em um próximo que possa ter a mesma dúvida.
Se está dando como página não encontrada, é porque o arquivo não está no mesmo local que o link do email aponta, ou o nome é outro.
…. já parou pra analisar isso?
Bons estudos!
julho 14th, 2011 - 17:08
Boa noite, sim, sou portugues.
E desculpe o uso da expressão, “Preciso de ajuda rapidamente…”, não sabia que ai era reconhecida como uma ordem.
E obrigado, pela resposta a minha dúvida, olhei mais atentamente, e agora já funciona perfeitamente.
Muito obrigado (:
julho 14th, 2011 - 17:23
Ok @Paulo, desculpe se fui muito ‘incisivo’.
Que bom que conseguiu resolver o problema… e se precisar é só falar e ajudo na medida do possível.
Abraço
julho 16th, 2011 - 23:04
Primeiramente, estou impressionado com a dedicação empregada em um trabalho como este que é estremamente desgastante e, por isso, te dou parabéns. Um trabalho assim é dificil de se achar.
Por isso, fiz questão de contribuir com uma pequena doação pelo paypal para que possa lhe ser util de alguma forma e, se possivel, que voçê possa continuar a nos prestigiar com seus conhecimentos.
Sou técnico por amor e gosto muito do que faço. Não cheguei a fazer nenhum curso que me desse base em banco de dados e programação por não achar que fosse neçessario em minha vida profissional.
Vou aproveitar seu tutorial e implanta-lo em um site pessoal de musicas que estou desenvolvendo juntamente com um amigo (por hobby, colecionamos músicas antigas) e gostaria de sua atenção, pois não sei muito bem como fazer para que os visitantes do site não acessem as paginas antes de se cadastrarem e logarem no mesmo.
Eu ja criei as paginas com os códigos e os formulários de login, senha….
Adicionar os campos de cadastro, login, logout na pagina principal não é tão complicado assim, mas eu não sei como fazer para deixar as paginas bloqueadas até o acesso via cadastramento/login. Você poderia me orientar?
julho 17th, 2011 - 02:50
Olá Rodrigo, antes de tudo obrigado.
Rodrigo, no tutorial usei o arquivo ara_restrita.php para exemplificar o que seria uma página restrita pelo sistema.
Notará que no topo deste arquivo chamo uma função através da linha session_checker();
Isso é uma chamada para a função que está no arquivo functions.php que fará a verificação se as sessions necessárias para dar acesso estão registradas e abertas.
Estas sessions só estão registradas e abertas quando há um login c om sucesso, de outra forma a função redireciona para o formulário de login.
A partir daí a lógica é que no arquivo que vc colocar a chamada para esas função intende-se que o usuário será travado ehhehe se não tiver feito o login.
Coloque a chamada na index do diretório principal e tudo se dará como mágica.
Mas veja bem… na página de cadastro não pode haver o session_checker() se não o user não conseguirá acessa-la para efetuar cadastro ;)
Lembrando que a função session_start() deve estar no topo e session checker() logo abaixo da session_start()
Qualquer dúvida vai falando aí que vou ajudando.
Bons estudos
julho 17th, 2011 - 10:01
Roberto, estou muito feliz e próximo de conseguir colocar nosso site no ar, restando apenas a contratação de um serviço de hospedagem para ele.
Farei questão de citar você e seu site como facilitadores deste processo.
Assim que estiver pronto, te convidarei para se cadastrar e visualizar as nossas exposições.
Abraço e obrigado.
julho 17th, 2011 - 10:26
Olá @Rodrigo, fico feliz em saber que ajudei.
Rodrigo, quanto a hospedagem eu forneço esse serviço com qualidade de estrutura e qualidade no suporte direto comigo sempre.
O espaço que disponibilizo é somente para clientes de desenvolvimento, mas abro exceções para o pessoal que se beneficia com meus tutoriais.
[JABA ON] Te mandei e-mail com mais referências sobre a hospedagem.[JABA OFF]
julho 17th, 2011 - 17:43
Ola Roberto. Estou com dúvida no formulário de cadastro.
Em seu site você o descreve como formulário, campos de formulário, cabeçalho… que nos leva a entender que ele é html (me corrija se estiver errado), mas aqui ele está recebendo a terminação de php. Veja: formulario_cadastro.php. Tem que ser assim mesmo?
Outra coisa, quando eu o executo aqui no servidor que montei em casa, ele só executa corretamente quando o abro com algum browser e, o que me leva a crer que realmente sua terminação de arquivo está trocada e, nos campos value, aparecem os comandos php ao invés de campos vazios. Ta certo isso?
julho 18th, 2011 - 12:45
Sim @Rodirgo, está tudo certo, a terminação é PHP sim, mas poderia ser HTML se quiser, porém os comandos que vc observou nos campos VALUE não funcionariam.
Para que entenda o que são aqueles comandos:
Se vc enviar o form onde é efetuado o POST, e ocorrer algum erro no preenchimento, o formulário é apresentado novamente ao usuário, mas com os campos todos preenchidos para ele verificar o que digitou errado.
Se não tiver aqueles comandos, ao exibir o form novamente eles viriam todos vazios, o que seria muito chato, principalmente quando o form é grande com muitos campos, – concorda?
Quanto a exibição dos arquivos PHP no navegador… sim, eles só serão vistos no navegador e online ou se tiveres um servidor web instalado no teu computador.
Abraço
julho 23rd, 2011 - 11:08
Roberto, estou começando a mecher com PHP agora seu tutortial me ajudou muito, mas estou com um problema quando abro o formulario de cadastro todos os campos estão preenchido com: “Notice: Undefined index: nome in C:\Program Files\EasyPHP-5.3.6.0\www\formulario_cadastro.php on line 18”
Se possivel de uma olhada na imagem: http://imageshack.us/photo/my-images/15/errojr.jpg/
Desde ja Abradeço,
Abraço
julho 23rd, 2011 - 12:45
Olá @Eduardo, faça assim, substitua todos os VALUE dos inputs do formulário por algo como isso:
value = "< ?php echo (isset($_POST['nome'] ? $nome : NULL; ?>"Lembrando que a variável e o $_POST é referente ao name do campo input, ou seja, não é $_POST['nome'] e $nome para todos heheh
Mas isso tu pegou neh?
Tente aí e depois diga
Bons estudos
Roberto
julho 24th, 2011 - 14:48
Valeu Roberto agora esta tudo Ok.
Só estão aparecendo algumas mensagens ao fazer as seguintes funções
Ao Cadastrar
Notice: Undefined variable: pass in C:\…\www\cadastra.php on line 118
Linha 118-> $pass = $pass . $tmp;
Ao Fazer Logout
Deprecated: Function session_is_registered() is deprecated in C:\…\www\logout.php on line 15.
Linha 15-> if(!session_is_registered(‘nome’)){
Ao Redefinir Senha
Notice: Undefined variable: pass in C:\…\www\gerar_nova_senha.php on line 60
Linha 60-> $pass = $pass . $tmp;
Sendo que funciona tudo perfeitamente: cadastra, faz logout, e redefine a senha normalmente.
Só gostaria de saber se essas mensagens de “erro” tem ou vao gerar algum problema e se tem como tirar elas.
julho 24th, 2011 - 20:05
Na verdade não são alertas de erros e sim notificações.
Se vc está testando localmente vc mantém essas mensagens ativas para saber o que está acontecendo em teus scripts, mas se está desenvolvendo para uma saída final de algum site, seria interessante alterar a diretiva que exibe erros.
Outra coisa, alguns Notices .. principalmente mensagens sobre funções ou formas Deprecated, leve em consideração que esse script é de 2007.
Prometo desenvolver uma versão mais atual… um dia.
Bons estudos
julho 27th, 2011 - 03:05
Gostaria de uma ajuda, estou criando um site, e vou usar esse sistema seu, porém, mas gostaria de uma ajuda..
Na parte “area_restrita.php”, apareçe Bem vindo “nome da pessoa” que está cadastrado no banco de dados, mas eu também gostaria que aparesse outra informação da tabela, aquela chamada “info”, gostaria que apareçesse quando a pessoa logasse abaixo do “bem vindo”, já tentei de tudo, já coloquei o “info” na tabela igual as outras coisas (var char, etc), ta igual os outros dados, porém não sei como fazer, já tentei substituir o sobrenome por “Info” igual abaixo, mas nao da.
echo “Gostaria que aparecesse a info aqui “. $_SESSION['info'].”.
Ficarei grato se puder ajudar.
julho 27th, 2011 - 16:37
Olá @Alaor, o que está fazendo errado é não ter lido com atenção o tutorial desde o início, é a pressa de ver as coisas funcionando.. eu entendo.
Vou explicar… Quando o usuário faz login, é feito uma consulta no banco de dados que retorna alguns valores, como nome, sobrenome e mais alguns… esses valores no mesmo instante são gravados em session (é mais ou menos colmo gravar algo na área de transferência) que ai ser chamado pelo nome que foi dado quando gravado ele aparece) Recomendo a leitura mais aprofundada sobre sessions para maior compreensão.
Continuando… no arquivo exemplo de area restrita eu chamei pela sessiona alguns dos valores, pois estes estavam gravados no login e seriam exibidos perfeitamente.
Para exibir outros e qualquer valores ligados ao usuário logado, deve-se fazer uma nova consulta no banco de dados WHERE o id do usuáriol é igual ao ID gravado na session referente ao user logado.
Você monta essa query de selecão (SELECT) no próprio arquivo area_restrita.php por exemplo e resultará os valores dos campos que deseja, no seu caso o campo ‘info’ e outros que definir na query.
Bons estudos.
julho 27th, 2011 - 17:13
Certo, consegui isso que eu queria, agora queria saber outra coisa, eu estou usando o codigo
Em todas as paginas que eu quero proteger, mas eu não queria protejer a pagina inteira, eu queria apenas proteger um link que esteja nessa pagina, por exemplo
Só pode clicar aqui se estiver logado, ou entao pode até clicar, mas da erro que precisa logar para abrir.
Gostaria de saber se é possivel isso, proteger apenas PARTE de uma pagina, nao ela inteira.
julho 27th, 2011 - 18:30
@Alaor… basta verificar se a session principal (usuario_id) está gravada.
if (isset($SESSION[usuario_id])){
// mostra o link
}
else{
// Mostra o que vc quiser mostrar
}
Abraços
julho 30th, 2011 - 14:08
cara gostaria de pedir se não tem um jeito nesse cadastro para que na hora de recuperar a senha o usuario pudesse definir a senha que ele quiser?
julho 30th, 2011 - 20:09
Olá @nilo. Sim, há como, mas é preciso alterar alguns arquivos.. todos que tiverem relação com a criação da senha automática e redefinição da senha automática. Arquivos de cadastro, verificação de usuário e senha e mais alguns.
As alterações, basicamente surtiriam efeito no banco de dados, e na forma que é feito a comparação dos dados. Quanto ao envio de uma própria senha… esse seria o menor dos teus problemas. O segredo está todo no recebimento dos dados e como eles são tratados.
Já ajudei um pessoal que fez doação para o site em relação à isso e à muitas outras opções.
Estou pensando em fazer uma área vip no site para todos que fizeram ou fizerem doação e dispor nessa seção opções mais avançadas dos mesmo tutoriais que já disponibilizei como básico no sistema básico. O que acha da ideia?
Bons estudos!
agosto 4th, 2011 - 11:38
Gostaria de uma ajuda, se possivel, tem como eu fazer um link com 2 paginas? por exemplo, quando eu clicar no link ele verifica a sessão, se estiver logado, o link abre uma pagina, se não estiver logado abre outra pagina diferente? tem como? e se possivel me envie o codigo.
agosto 11th, 2011 - 03:09
Olá… o tutorial é exatamente isso.
Bons estudos.
agosto 9th, 2011 - 17:43
Estou recebendo o seguinte erro: “#1046 – No database selected” O que poderia ser? (Estou rodando o seguinte cód: CREATE TABLE usuarios(
usuario_id int(5) NOT NULL auto_increment,
nome varchar(50) NOT NULL default ”,
sobrenome varchar(50) NOT NULL default ”,
email varchar(100) NOT NULL default ”,
usuario varchar(32) NOT NULL default ”,
senha varchar(32) NOT NULL default ”,
info text NOT NULL,
nivel_usuario enum(’0′,’1′,’2′) NOT NULL default ’0′,
data_cadastro datetime NOT NULL default ’0000-00-00 00:00:00′,
data_ultimo_login datetime NOT NULL default ’0000-00-00 00:00:00′,
ativado enum(’0′,’1′) NOT NULL default ’0′,
PRIMARY KEY (usuario_id)
) ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_general_ci COMMENT = ”;
agosto 11th, 2011 - 03:11
não entendi … vc está tentando criar a tabela sem ter o banco de dados? se for isso… taí a causa do problema.
agosto 16th, 2011 - 14:46
Ola, roberto vou explicar minha situacao, eu consigo me cadastrar no meu site, a senha e enviada para o meu email eu confirmo a conta e eu consigo logar e ir para area restrita e sair, ate ai tudo certo, a unica coisa que esta me pertubando a a redefinicao de senha ou seja quando eu coloco meu email para recuperar minha senha e clico em gerar senha da tipo uma atualizada na pagina e nao acontece nada, nao da mensagem de erro nem nada, e nem a mensagem vai para o meu email.
segue abaixo meu arquivo gerar_senha.php:
<?php
include "config.php";
$recupera = $_POST['recupera'];
$email = $_POST['email'];
switch ($recupera){
case "recupera" :
recupera_senha($email);
break;
default :
include "formulario_senha_perdida.html";
break;
}
function recupera_senha($email){
if (!isset($email)){
echo "Você esqueceu de preencher seu email.
Use o mesmo email que utilizou em seu cadastro.“;
include “formulario_senha_perdida.html”;
exit();
} // Checando se o email informado está cadastrado
$sql_check = mysql_query(“SELECT * FROM usuarios WHERE email=’{$email}’”);
$sql_check_num = mysql_num_rows($sql_check);
if ($sql_check_num == 0){
echo “Este email não está cadastrado em nosso banco de dados.”;
include “formulario_senha_perdida.html”;
exit();
}
// Se tudo OK vamos gerar uma nova senha e enviar para o email do usuário!
function makeRandomPassword(){
$salt = “abchefghjkmnpqrstuvwxyz0123456789″;
srand((double)microtime()*1000000);
$i = 0;
while ($i <= 7){
$num = rand() % 33;
$tmp = substr($salt, $num, 1);
$pass = $pass . $tmp;
$i++;
}
return $pass;
}
$senha_randomica = makeRandomPassword();
$senha = md5($senha_randomica);
$sql = mysql_query(
"UPDATE usuarios SET senha='{$senha}'
WHERE email ='{$email}'"
);
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$headers .= "From: Great shot – Webmaster”;
$subject = “Sua nova senha em http://greathost.heliohost.org“;
$message = “Olá, redefinimos sua senha.
Nova Senha: {$senha_randomica}
http://greathost.heliohost.org/
Obrigado!
Webmaster
Esta é uma mensagem automática, por favor não responda!”;
mail($email, $subject, $message, $headers);
echo “Sua nova senha foi gerada com sucesso e enviada para o seu email!
Por favor verifique seu email!”;
include “index.php”;
}
?>
voce deve ter percebido que em include “index.php” era pra tar o formulario de login correto, mas como eu criei um cantinho de logar na pagina inicial ai tudo bem . o meu unico poblema e a redefinicao de senha.
agosto 16th, 2011 - 20:26
Iae, voltei aqui pra falar que resolvi o meu poblema ta tudo pegando perfeitamente. mas quero modificar algumas coisas se voce puder me ajudar. add msn ae =)
agosto 25th, 2011 - 12:26
Olá @Daniel, desculpe a demora, mas eu não estava mais recebendo notificações de coments no meu email.
Enfim… seu problema anterior se tratava simplesmente disso:
Você usou isso:
$recupera = $_POST['recupera'];$email = $_POST['email'];
E devia ter usado como no tutorial
$recupera = $_REQUEST['recupera'];$email = $_REQUEST['email'];
E sim…. mediante a uma colaboração com o site, doação, conforme todos que fizerem… receberá um suporte diferenciado e posso auxiliar em modificações básicas ou até mais complexas… isso depende da colaboração.
Abraço
agosto 19th, 2011 - 15:58
Bom amigo, eu fiz deu certo, mas tinha que configurar umas coisas, eu fui configurei e quando fui tentar novamente eu não estava recebendo o e-mail para confirmar a conta, para verificar se eu tinha feito alguma coisa de errada, eu coloquei todo o código sem nenhum alteração e mesmo assim não recebo o e-mail para confirmar a conta, eu estou usando o phpmyadmin, com conta free, poderia me ajudar por favor?
agosto 19th, 2011 - 16:05
amigo fiz mais alguns testes e eu só recebo o e-mail de confirmação depois da terceira conta criada, então eu me cadastro, só vou receber o e-mail quando mais 2 pessoas se cadastrarem, pq isso?
agosto 25th, 2011 - 12:30
Olá @Bruno, na verdade não sei porque está ocorrendo isso, mas posso imaginar algumas hipóteses como lentidão no servidor para enviar a mensagem.
Assim vc não espera e já cria outra, e assim por diante, e isso lhe da a impressão que só foi enviado depois de criar outras contas, mas não tem sentido isso.
Faça o teste.
Crie um cadastro e aguarde, mesmo que minutos, pois essa possibilidade não é vaga, visto que o server que está usando é gratuito.
Abraço
agosto 20th, 2011 - 02:26
Olá Roberto, sou novato aqui na comunidade, estou tendo um problema com as headers no script de verificação, verifica_usuario.php, até estou te enviando as msgs dos erros produzidos, que mesmo que eu tenha colocado esta função ob_start(), continua retornando esse erro: veja só:
Warning: session_start(): Cannot send session cookie – headers already sent by (output started at /home/sspmcaceres/www/verifica_usuario.php:1) in /home/sspmcaceres/www/verifica_usuario.php on line 3, mas, o sistema está cadastrando normalmente, só que qdo loga depois de ter o cadastro inserido, na validação do acesso do usuario, ele retorna esse erro nas linhas onde a chamada de iniciar a sessão…
Gostaria muito de que vc me ajudasse a resolver essa questao, pra facilitar, envio o script abaixo:
“verifica_usuario.php”
<?php
ob_start();
session_start(); // Inicia a session
include "cnf.php";
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];
if ((!$usuario) || (!$senha)){
echo "Por favor, todos campos devem ser preenchidos! “;
include “formulario_login.html”;
}else{
$senha = md5($senha);
$sql = mysql_query(
“SELECT * FROM usuarios
WHERE usuario=’{$usuario}’
AND senha=’{$senha}’
AND ativado=’1′”
);
$login_check = mysql_num_rows($sql);
if ($login_check > 0){
while ($row = mysql_fetch_array($sql)){
foreach ($row AS $key => $val){
$$key = stripslashes( $val );
}
$_SESSION['usuario_id'] = $usuario_id;
$_SESSION['nome'] = $nome;
$_SESSION['sobrenome'] = $sobrenome;
$_SESSION['email'] = $email;
$_SESSION['nivel_usuario'] = $nivel_usuario;
mysql_query(
“UPDATE usuarios SET data_ultimo_login = now()
WHERE usuario_id =’{$usuario_id}’”
);
header(“Location: area_restrita.php”);
}
}else{
echo “Você não pode logar-se! Este usuário e/ou senha não são válidos!
Por favor tente novamente!”;
include “formulario_login.html”;
}
}
?>
agosto 25th, 2011 - 12:39
Olá @Milton, o que ocorreu é o seguinte, vc iniciou o script com
ob_start();corretamente, porém lá no final de tudo, antes de ?> faltou vc colocarob_end_flush();Bons estudos
agosto 25th, 2011 - 22:07
Ma verdade eu já tinha colocado o ob_end_flush(), mas, como continuou a exibir erro, eu o retirei…
agosto 26th, 2011 - 17:08
o erro ocorria, não por causa do ob_end_flush(), pode ter certeza disso
agosto 20th, 2011 - 02:27
Ah, desde já, agradeço muitissimo e que Deus lhe pague…
agosto 21st, 2011 - 02:42
Boa madruga, brother Roberto,
Bom, parte do problema resolvi, nao usando as funções chamada ao servidor o original do arquivo, mudei ele pelas que já uso, e como já tenho um arquivo, config.php no servidor, pra nao substitui-lo, preferi nomea-lo como cnf.php, quanto ao “verifica_usuário.php”, baixei o original em cima dele e mudei, colocando as chamadas das sessoes, session_start() depois de ob_start(), e lá no final coloquei ob_end_flush(), so que ainda continua exibindo erro no arquivo area_restrita.php, vejam abaixo, como o erro está sendo exibido em tempo de execução: Warning: session_start(): Cannot send session cache limiter – headers already sent (output started at /home/sspmcaceres/www/area_restrita.php:1) in /home/sspmcaceres/www/area_restrita.php on line 3 Bem vindo Milton Costa Ribeiro!
Você está acessando área restrita para usuários cadastrados!
Seu nível de usuário é 1.
Com esse nível, você tem permisão de acesso às seguintes áreas:
- Forum
Administração – Acesso total
Sair;
e agora o script modificado, como dito:
<?php
ob_start();
session_start(); // Inicia a session
include "functions.php"; // arquivo de funções.
session_checker(); // chama a função que verifica se a session iniciada da acesso à página.
echo "Bem vindo “. $_SESSION['nome'] .” “. $_SESSION['sobrenome'] .”!
Você está acessando área restrita para usuários cadastrados!
“;
echo “Seu nível de usuário é “. $_SESSION['nivel_usuario'].”.
Com esse nível, você tem permisão de acesso às
seguintes áreas: “;
if ($_SESSION['nivel_usuario'] == 0){
echo “- ForumAbrir tópicos, postar em tópicos
de terceiros.”;
}
if ($_SESSION['nivel_usuario'] == 1){
echo “- ForumAdministração -
Acesso total “;
}
/* Não colocarei representações para outros níveis de acesso, mas fica entendido que o
limite de níveis de acesso quem define é você*/
echo “Sair“;
ob_end_flush();
?>
agosto 21st, 2011 - 13:49
Ola, amigo,
eu de novo, mas, dessa vez pra te agradecer, olha, eu refiz todo o caminho de volta, reescrevi como estava os exemplos line by line, e tornei upar para o servidor, e desta vez funcionou, ate sem a necessidade de ob_start() e ob_end_flush(). Segui as explains que vc passou aos colegas usuarios, confesso que estou retornando depois de tanto tempo parado sem escrever uma linha sequer de nenhum codigo (linguagem,
quando comecei, comecei em ASP, e no meio do caminho resolvi migrar para o PHP, mas sem a disponibilidade de equipamento (PC proprio), diferente de agora, que disponho…
Fiquei tao feliz, olha só ela em execução:
“(Mensagem exemplo)
Bem vindo Milton Costa Ribeiro!
Voc� está acessando área restrita para usuários cadastrados!
Seu nível de usuário é 1.
Com esse nível, você tem permisão de acesso à algumas áreas exclusivas do site.
Sair”…
Por isso, rogo a Deus, Roberto pra que ele te abençoe por tua inteligencia, por poder compartilhar com as pessoas interessadas em aprender, e outras a construir um caminho, embora que entre pedras, mas, um caminho…
Seu amigo… continue assim…
agosto 25th, 2011 - 12:48
Olá @Milton, primeiramente queria pedir desculpas pela demora no suporte, mas não estava recebendo as notificações de coments em meu email, e como estou sempre em correria não estava vindo aqui à alguns dias.
Comecei a responder os coments hoje e respondi alguns seus mais abaixo e não tinha visto esse.
Fico muito feliz que tenha conseguido fazer funcionar e te agradeço imensamente pelas palavras.
A utilização do ob_start() e ob_end_flush() na verdade é uma gambiarra para resolver esses problemas, mas o interessante é realmente fazer funcionar sem.
O que causa muitos desses erros é o copiar e colar, onde o ideal é mesmo redigitar tudo.
Enfim… grande abraço
agosto 25th, 2011 - 22:04
Olá, acabo de ler as respostas,
Mas, so mais uma coisa, em sua homenagem, colega, em que esppaço uso o header() pra redirecionar para pagina de cadastro de noticias?
no script “area_restrita.php”, e como faço pra que o usuário logado apareça seu nome na página permitida?
agosto 26th, 2011 - 17:08
Não entendi bem a questão em relação ao header(), no exemplo eu usei para redirecionar para o arquivo area_estrita.php, mas vc pode redirecionar para o arquivo que desejar.
Quanto a questão de exibir o nome, é simples, se o usuário estiver logado, basta imprimir a session referente ao nome e sobrenome que foram gravadas na hora do login
echo "Olá ".$_SESSION['nome']." ".$_SESSION['sobrenome']."!";agosto 23rd, 2011 - 13:02
Belo script, e funciona mas, nao entendi a utilização do “trim” na variável de recebimento dos dados do cadastro.
E seria importante se ao invés de mostrar o erro na página que está sendo enviado os dados, fosse criado um laço com os erros e mostrado no próprio formulário, evitando o uso do include”formulario_cadastro.php”
poderia ser usado a função javascript dentro do php também ex.: echo “alert(‘nome é requerido’) location.href=’javascript:history.back()’ ISSO IRIA EVITAR DE O USUÁRIO INSERIR OS DADOS TUDO DENOVO.
Belo script, mas ainda não entendi o uso do trim para pegar os dados…
agosto 25th, 2011 - 12:51
Olá @Catatau… sim… pode ser feito da forma que falou… pode-se ainda usar jQuery e etc… essas implementações simples são com vocês usuários… o tutorial não tem a intenção de ensinar isso.
Quanto ao trim() da uma olhada no manual do PHP para maiores explanações e vai entender o porque da utilização do trim().
Basicamente é para retirar todos os espaços em branco antes e depois da string.
Bons estudos
agosto 23rd, 2011 - 16:43
Seus tutoriais são ótimos. por esete motivo são muito comentados, porém, seria de excelente idéia que você paginasse os comentários, pois numa conexão lenta, essas páginas demoram eternidades para carregar, com isso tira o usuário do seu site logo na primeira instância.
Não estou criticando, e sim sugerindo!
agosto 25th, 2011 - 12:52
Obrigado pela sugestão @Sansão.
Estarei vendo algumas possibilidades
Obrigado
agosto 25th, 2011 - 22:09
Sim, muito obrigado pelas respostas e o incentivo, vc é dez…
agosto 26th, 2011 - 22:52
Desculpe, Roberto,
Segue o texto correto:
Fui usar como sugeriu, assim “”
sem a gambiarra como vc diz, ele nao exibe o nome do usuário logado, aí coloquei como abaixo, e exibe erro de limitador de cache,
com o resultado executado:
Warning: session_start(): Cannot send session cache limiter – headers already sent (output started at /home/sspmcaceres/www/index.php:204) in /home/sspmcaceres/www/index.php on line 226 Olá Milton Costa Ribeiro!
Exibe o Nome do usuário, mas com erro…
O que será que pode ter dado errado???
Obrigado, mano!!!
Milton…
agosto 26th, 2011 - 22:53
Sua sugestão: echo “Olá “.$_SESSION['nome'].” “.$_SESSION['sobrenome'].”!”;
agosto 28th, 2011 - 20:45
faz com o ob_start() e ob_end_flush()
agosto 27th, 2011 - 10:05
Adorei os códigos, fiz os teste e deu tudo certo, porém o usuário não tem a opção de alterar a senha depois do login, teria como criar uma página onde ele pudesse colocar a senha que quizesse.
agosto 28th, 2011 - 20:51
OLá @Leonardo, há como sim, mas é necessário a alteração de mais de um arquivo do tutorial e requer alguma atenção especial.
Se quiser auxilio nessas modificações, por favor, efetue uma doação para o site.
Abraços
setembro 2nd, 2011 - 23:02
Olá estou com um pequeno problema, eu cadastrei funciono direitinho so q na hora de loga ele loga mais a pagina fica em branco ao invez de aparece “o painel para dos usuarios”
obrigado!
setembro 4th, 2011 - 22:06
Olá @Caio, provavelmente o teu server não está guardando as sessions
Outros usuários passaram por isso … e resolveram com seus servidores de hospedagem.
Não sei ao certo o local, mas da uma lida nos coments, pacienciosamente.
Bons estudos.
setembro 6th, 2011 - 16:38
Olá Roberto.
Meu problema é o seguinte, fiz as configurações, estou hospedade em um servidor particular, e o sistema está funcionando perfeitamente, porém o e-mail que é enviado para confirmar a ativação da conta, chega em branco.
Ele vem com o assunto, destinatário, mas sem mensagem, como se não houve nada escrito, verifiquei no banco de dados, e todas as informações colocadas no formulário são inseridas no DB normalmente.
O que poderia ser?
setembro 7th, 2011 - 02:22
Olá … da uma olhada nas variáveis e seus valores… talvez vc esteja se confundindo por aí.
Abraço
setembro 15th, 2011 - 16:17
Roberto, montei todo o sistema e logo de cara tá dando um erro que imagino que é de conexão ao banco de dados (que é meu calcanhar de aquiles em qualquer linguagem). Então vou ter passar por partes pq imagin que esse primeiro erro no arquivo config.php, vai acarretar uma série de outros na execução. Aparentemente tá dando um erro com login e senha do meu banco de dados no mysql. Ocorre que nem sei onde coloca essa senha lá no programa, e se tiver alguma, tá no default, pq sou iniciante mesmo, não coloquei senha nenhuma lá. Veja se me dá uma luz. O erro da vez é:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘usuário de banco de dados’@'localhost’ (using password: YES) in C:\Arquivos de programas\EasyPHP-5.3.8.0\www\config.php on line 7
setembro 15th, 2011 - 18:47
@Neto, obviamente o problema é na autenticação dos dados de conexão.
Vc substituiu os que estão no tutorial pelos seus dados?
Se vc está testando no PHP instalado no seu PC provavelmente não precisará senha, bastará user como root e senha em branco
Bons estudos
setembro 15th, 2011 - 21:37
Roberto, excepcional.
Voce ta de parabens cara. seu sistema esta perfeitamente explicado., Quem nao sabe nada de programação, de db, ou de php, consegue fazer isso, numa perfeita ordem.
continua assim cara.. vai longe
abraço!
sistema full
setembro 16th, 2011 - 01:02
Opa, valeu @Renan.
setembro 24th, 2011 - 14:34
Boa tarde !
Há semanas venho tentando encontrar algum tutorial tão completo quanto o seu.
Pois bem, atualizei o arquivo “config.php” tudo certinho, tá funcionando. Utilizo o EasyPhp para testes, que futuramente serão implementados em meu site.
O meu problema é o seguinte, tá tudo certinho só que na hora que vou no endereço “127.0.0.1/formulario_login.html” (que está somente local, para testes) insiro um nome de usuário e uma senha que foram cadastrados no BD, e apesar disso ele apresenta um erro:
“Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\Arquivos de programas\EasyPHP-5.3.8.0\www\verifica_usuario.php on line 29″
Espero que você possa me orientar.
Mais uma vez agradeço pelo valor que este tutorial agregou a todos os usuários da internet.
Fico no aguardo,
abçs.
setembro 27th, 2011 - 13:53
Olá @Henrique nessa linha que vc citou está essa linha de cod:
$sql = mysql_query("SELECT * FROM usuarios
WHERE usuario='{$usuario}'
AND senha='{$senha}'
AND ativado='1'"
);
$login_check = mysql_num_rows($sql);
Sendo assim reveja se escreveu o que está acima.
Abraço
setembro 25th, 2011 - 15:47
Cara Ótimo tutorial, aprendi muito estudando cada arquivo, desde da tabela até as funções php, com sua ajuda e mais de uns outros tutoriais conseguir montar um fã site do jogo habbo com suas funções, mas complementei com algumas coisas como puchar o personagem do jogo para o site.
Gostaria de tirar uma dúvida, tem como vc me ajudar a criar um formulario de alterar senha assim que fizer o 1º logon no site.
Vlw..
setembro 27th, 2011 - 14:20
Olá @Leonardo.
Sim tem como eu lhe ajudar mediante uma doação, da mesma forma que ajudei muitas pessoas com implementações. Estas efetuaram uma doação para manutenção necessária do site.
Abraços
setembro 28th, 2011 - 18:18
Boa tarde Roberto.
Parabéns pelo tutorial. Muito completo e de fácil entendimento.
Utilizei as informações contidas nesse tutorial e tudo está funcionando perfeitamente.
Tenho duas dúvidas e gostaria de saber se vc poderia me ajudar.
1ª – Quando o usuário clica para gerar uma nova senha, seria possível que o nome do usuário cadastrado fosse incluso no e-mail de recuperação de senha?
2ª – Seria possível, nesse mesmo “Gerar nova senha” que o usuário possa reedefinir sua senha para uma senha normal que ele mesmo escolha (a reedefinição de senha também gera uma senha randomica)?
Obrigado pela atenção.
Abraços
setembro 28th, 2011 - 19:05
Olá @Douglas
1º – Sim, basta inclui-lo no corpo da mensagem no arquivo ‘gerar_nova_senha.php‘
para isso vc pode aproveitar a query $sql_check que faz a verificação se o email informado é válido e retornar o valor do campo ‘usuario‘ da tabela referente à este email informado.
perceba que a verificação é feita apenas com mysql_num_rows(), sendo assim para retornar vc terá tbm que usar uma função para retornar do mysql o resultado array como o mysql_fetch_array()
2º - Sim há como, mas precisa modificações em diversos arquivos para não haver erros e para que eu possa ajudar nisso, apenas mediante uma doação, assim como fiz com muitos usuários que solicitaram modificações.
Sim, o gerar nova senha tbm é rândomico.
Qualquer coisa entre em contato
Bons estudos
setembro 30th, 2011 - 10:41
Entendi Roberto.
Funcionou certinho a inclusão do usuário no e-mail. Muito obrigado.
Gostaria de saber se poderia me esclarecer outras dúvidas:
1º – O arquivo ‘area_restrita.php’ é acessado apenas com cadastro do usuário. Como poderia ser feita a programacao para conseguir acessar outra página restrita (por ex: dentro de area restrita tem um link para ‘area_restrita1.php’, mas também, apenas mediante senha, a ‘area_restrita1.php’ poderia ser acessada acessada).
2º – É possivel na hora do login, substituir nome de usuário por e-mail?
Ex: usuário: email@dominio.com.br
senha: ********
Obrigado novamente pela atenção.
Douglas.
setembro 30th, 2011 - 21:13
@Douglas, vc pode tornar qualquer página restrita, basta seguir o exemplo area_restrita.php, como coloquei no topo, com a chamada para função session_checker()
a uma lida com atenção no tutorial, vai notar que explico direitinho isso.
Bons estudos.
outubro 2nd, 2011 - 18:45
Roberto,
de novo, eu aqui, o problema que acontecendo agora é o mesmo que o Everton ta expondo acima, vc entra com o e-mail, e pede pra gerar nova senha e ele diz que já mandou pro seu endereço mas, vai la e nao tem nada, e nao da erro, da que parece que gerou a senha mas vc nao acha ela em lugar nenhum!!!
outubro 3rd, 2011 - 17:27
Pode ser o teu server, pode estar caindo em spam, por isso que sugiro a todos que usem o phpmailer para enviar autenticadamente
Postei alguma coisa sobre phpmailer aqui no site.
Bons estudos
outubro 3rd, 2011 - 15:27
Olá Roberto.
Obrigado por compartilhar esse Tutorial!
Eu tenho um problema (Olhando pelos comentários vi que muitas pessoas tinham o mesmo Problema) eu segui o tutorial e deu quase tudo certo o único problema é que o E-mail de Confirmação não chega e o Usuário é cadastrado no Banco de Dados.
Você andou comentando sobre o PHPMailer mas não conseguir usar, Você poderia me ajudar na questão do E-mail que não está chegando?
Eu utilizo o webcindario.com.
outubro 3rd, 2011 - 17:30
Pode ser o teu server, pode estar caindo em spam, por isso que sugiro a todos que usem o phpmailer para enviar autenticadamente
Postei alguma coisa sobre phpmailer aqui no site… teste separadamente o tutorial de phpmailer e depois tente integrar.
Através de doação para o site faço pra vc ensinando como se faz.
Bons estudos
outubro 13th, 2011 - 15:27
estou com esse erro o que seria isso? o erro é
Contagem de colunas não confere com a contagem de valores na linha 1
outubro 14th, 2011 - 01:38
Isso ta ocorrendo porque sua query está errada… o número de campos que vc está definindo no teu INSERT não corresponde ao número de valores dentro de VALUES
outubro 13th, 2011 - 23:59
Amigo to com um problema com o teu código, o cadastro está funcionando tranquilo, mais quando o cadastro é efetuado com sucesso a página fica toda em branco, e não volta pra pagina de form, por que ta acontecendo isso o include que chama a página nao foi alterada em nada.
grato.
outubro 19th, 2011 - 17:31
Olá.. da uma lida nos coments anteriores, pode ser que resolva teus problemas.
Pode estar relacionado a tua hospedagem que não trabalha bem com mail() do PHP
Recomendo a classe PHPmailer… já postei um tuto sobre isso:
http://www.sistemabasico.com.br/2011/01/20/como-enviar-email-localmente-com-php-apache-phpmailer-gmail-windows
Bons estudos
outubro 20th, 2011 - 11:09
Bom dia, eu queria saber se vc pode me ensinar como faço para criar uma intranet, ou um sistema de vendas..
agradeço desde ja.
outubro 20th, 2011 - 19:34
@Ricardo:
http://www.google.com.br/search?q=como+criar+uma+intranet
Quanto à um sistema de vendas para essa intranet??
Acredito que tendo a Intranet, vc obviamente terá um server nessa rede e aí basta ter um sistema de ecommerce instalado nesse server onde o acesso se da pela rede, sem permissões para acesso de fora… ou seja, da internet.
Ensinar a fazer isso tudo, sinto muito amigo… só se o dia tiver 72h e olhe lá.
Bons estudos pelos links que te passei
outubro 26th, 2011 - 10:03
Gostaria de saber se tem como colocar um upload de imagens neste sistema e se tiver gostaria de saber como posso fazer isso onde baixo o upload e como fazer que apareçam junto as informações , e o bd deste upload obrigado dez de já
outubro 28th, 2011 - 20:19
@Jonathan, pela forma que colocou sua dúvida, ficou claro que não irá compreender se eu passar poucas palavras e sim precisaria de um tutorial detalhado para que vc pudesse acompanhar.
Não estou nos melhores períodos do ano em relação a tempo para tal feito.
Em breve tentarei adicionar um tutorial sobre upload de imagens e assim ficará mais fácil a sua compreensão de como integrar.
Por hora a única coisa que posso recomendar é o google.
Bons estudos
outubro 27th, 2011 - 15:17
Olá, teria como o usuário se cadastrar, e conseguir comentar nos posts das notícias do site com essa conta?
Estou com o sistema de notícias do CuteNews, teria outro em que isso de comentar com a conta seria possível?
outubro 28th, 2011 - 20:21
@Wallace, vc pode fazer no sistema uma restrição para o user só poder comentar se estiver logado, portanto obviamente cadastrado.
Basta em uma condicional exibir o form de coment apenas se for identificado a session aberta em referencia ao user logado.
Não é difícil, basta usar um pouco de lógica.
Bons estudos
outubro 29th, 2011 - 14:20
É, pensei nisso antes de me responder, colocar o fullpost somente para usuários logados.
Instalei aqui, fiz layout, ficou legal, mas tenho um problema ao conectar. Aparece isso:
“Warning: mysql_connect() [function.mysql-connect]: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)”
Procurei aí em cima e achei um comentário com o mesmo problema. A solução que você disse era conferir os dados do config.php, mas os meus estão certos e o problema continua:
Sim, o user e o banco de dados possuem o mesmo nome.
E então, o que tem errado?
Se quiser ver, é aqui:
http://www.royalneo.com/contas/cadastrar.php
;)
outubro 31st, 2011 - 20:57
Você incluiu o config.php no arquivo cadastra.php?
novembro 1st, 2011 - 13:31
Obrigado por responder. ;)
Sim, tem uma parte do código do cadastra.php que é assim:
include “config.php”;
include “functions.php”;
É para tirar?
novembro 2nd, 2011 - 00:28
Não é pra tirar não
Fica difícil saber oque é…
Que é erro na tua conexão com o bd é óbvio, mas porque está ocorrendo esse erro com vc que tá difícil de entender.
Refaça… debugando.
Imprimindo as variáveis para saber se os valores estão sendo passados.
Boa sorte.
outubro 28th, 2011 - 21:38
Boa noite Roberto.
Parabéns pelo tutorial, foi de vital importancia para mim. Instalei o sistema, e o mesmo funciona perfeitamente.
Gostaria de saber como poderia adicionar um campo select no formulário de cadastro, se puder me ajudar eu agradeço muito, pois estou tentando algumas coisas aqui mas sem sucesso.
Estou colocando o seguinte no formulario de cadastro:
<option value=" “>Sim
<option value=" “>Não
isso esta certo?
Criei uma coluna nova no banco de dados com o nome “news” e adicionei esta variável no arquivo cadastra.php. Mas quando cadastro um novo usuário, o campo da coluna “news” fica com um 0 em vez do “Sim” ou “não” do select.
Atenciosamente,
Jasar Graça
outubro 28th, 2011 - 21:59
O value está vazio e cadê o <select name… ??
outubro 29th, 2011 - 09:48
Bom dia Roberto, no comentário que fiz acima, não saiu o código inteiro que copiei da página, mas já consegui acrescentar o que precisava.
Você teria idéia de como fazer uma página para o usuário editar os seus dados?
Obrigado pela atenção,
Jasar
outubro 31st, 2011 - 20:52
Olá @Jasar, a ideia é simples.
Uma vez o usuário logado, basta criar um arquivo que obviamente só pode ser acessado se estiver logado.
Uma vez logado, prepare esse arquivo de forma que ele consulte o banco de dados e o resultado desta consulta seja exibido como o Value=”" de campos inputs de um formulário.
Os dados do usuário que serão exibidos neste formulário poderão ser modificados e ao enviar o form, os dados serão resgatados em um arquivo separado que você irá criar, que irá fazer o mesmo processo de cadastro, porém a query a ser utilizada não usará INSERT e sim UPDATE, mas para isso procure saber sobre a sintaxe do UPDATE. É simples, no próprio tutorial é utilizado UPDATE em algumas situações, basta usar a lógica.
Leia com atenção e vá em frente. Quando tiver dúvida novamente vamos tentando resolver.
Bons estudos.
novembro 1st, 2011 - 11:14
Olá Roberto Lunelli, Bom dia!
eu fiz todos os procedimentos do exemplo, mas ao inves de abrirem as respostas que as paginas em HTML teriam que abrir em PHP o meu browser faz é o download do arquivo e nem abre nada, instalei o xampp e o apache aki na maquina, estou meio louco aqui querendo e precisando desse php, o que tenho de fazer a mais do que isso? estarei fazendo algo errado aki?
grato!
novembro 2nd, 2011 - 00:37
@Armando, a primeira coisa é fazer seu PHP funcionar direitinho incluindo as sessions.
Depois sim tornar a testar o tuto de cadastro.
;)
novembro 2nd, 2011 - 10:50
Refiz tudo de novo, e continuou não dando certo… Entrei em contato com a hospedagem, agora é com eles.
Obrigado pela ajuda! ;)
novembro 10th, 2011 - 14:02
Prezado Roberto
Muito obrigado pelo tutorial.
Apenas não entendi uma coisa, onde fica o local restrito, permitido acesso somente para usuários cadastrados ?
Por exemplo, se entro com id e senha válidos, e aperto “Submit” o meu navegador recebe uma mensagem avisando que posso acessar uma área restrita.
Mas cadê esta área ?
Poderiam ser pastas ? Como faço estas pastas serem restritas
Como as abro pelo PHP ?
Grato
Sérgio
seja http://www.meuSite.com.br/acessoRestrito/
../
novembro 11th, 2011 - 14:50
@Sergio, vc não entendeu.
O Arquivo/página que vc leu estas mensagens é uma área restrita em si.
Vc só tem acesso à essa página se estiver logado.
Se ter mais atenção ao tutorial, perceberá que eu menciono claramente como tornar um arquivo restrito, afinal esse é o objetivo do tutorial.
Eu apenas usei esse arquivo/página que exibe essa mensagem pr vc, como um exemplo, mas vc pode exibir o que quiser.
Releia o tutorial e tudo que falo em relação a cada arquivo e suas funções.
Da uma tenção ao cabeçalho do arquivo area_restrita.php depois.
Bons estudos.
area-restrita
novembro 12th, 2011 - 21:41
De fato, não expliquei bem…
Quando crio uma pasta protegida, “www.meuSite.com.br/teste” no provedor de hospedagem e
coloco esse endereço no navegador e vai aparecer uma tela pedindo login e senha.
Isso é realmente restrito
Mas no seu sistema de login e senha, a pasta onde está a “página restrita” é na verdade bem acessível, tanto que o navegador lista todo seu conteúdo
Sim, é bem verdade que ninguém avança para além da sua “página restrita” pois o próprio código redireciona o navegador para uma página de login.
Contudo, eu gostaria de que todo o conteúdo da uma pasta ficasse restrito aos usuários cadastrados e não apenas alguns arquivos de código.
Assim, evitaria acesso não autorizado para imagens, sons, textos, etc.
Gostaria de saber se é possível com o PHP, em um sistema.de login e senha, dar acesso somente aos cadastrados para uma pasta e não apenas à alguns arquivos.
novembro 12th, 2011 - 22:47
Não @Sergio, se vc cessar pelo meu sistema DEMO perceberá que não consegue listar nada do diretório.
E sim meu sistema é para proteger acesso a conteúdo e não a arquivos.
Para proteger arquivos exstem outros métodos utilizando o arquivo .htaccess e definindo algumas regras.
novembro 13th, 2011 - 06:58
De fatodor, não dá para listar o seu diretório “demo”
Mas no meu caso, eu criei um ditetório http://www.ubatumirim.com.br/PHP e coloquei lá todos os arquivos e até minha vovozinha consegue listar o conteúdo. :-)
Se torno este diretório “PHP” protegido nem eu mesmo acesso sem o login e senha cadastrados no provedor.
Bom, é isso que não estou conseguindo fazer: Um diretório como o seu “DEMO”.
Como é que se faz isso ?
novembro 13th, 2011 - 17:43
Tenho certeza que nem sua vovózinha nem ninguém irá conseguir listar se fizer o básico para proteger a listagem de arquivos de um diretório, que se trata de uma indexação.
Em melhores palavras, seria possibilitar o acesso direto através de um arquivo index.
Vc pode colocar um index.html ou index.php vazio nesse diretório ou com o conteúdo que quiser… e os arquivos do dir não serão mais listados, ou ainda usar através do .htaccess uma regra para não listar arquivos…
Qualquer uma das duas opções dispensa login para acessar o dir
Se escolher o .htacces, busca no google mais informações, em outro momento eu posto algum tutorial a respeito.
Se usar o CPANEL, o próprio tem disponível opções de indexação de diretórios.
Bons estudos.
novembro 17th, 2011 - 09:08
Bom dia Roberto
De fato, minha vovozinha tá tendo muita dificuldade em listar o diretório quando tem um arquivo index,htm dentro dele… :-)
Mas mudando de pato pra ganso: É possível usar um arquivo de texto no lugar de um banco de dados para armazenar informações, né?
Isso traria limitações do tipo:
1- Espaço em disco
2- Velocidade de processamento (não de programação)
Sem se falar no fato que um banco de dados é já está pronto e é fácil de usar, que pensa a respeito ?
novembro 17th, 2011 - 10:12
Só uma coisa para dizer a respeito, –> Segurança.
Inviável a possibilidade de um sistema de cadastro em txt que possibilite opções de segurança adequadas.
Estamos falando de dados como senhas, dados pessoais de usuários, etc…
Bons estudos
novembro 17th, 2011 - 10:37
Estou fazendo um sistema de troca de mensagens e a segurança que já existe no acesso ao provedor já é suficiente.
Contudo tenho dúvidas se um “txt” pode ter problemas sérios com tamanho e velocidade
Resumindo: A mesma quantidade de informações dentro dos dois sistemas (mysql e txt) tem o mesmo tamanho nos arquivos ?
Meu receio é que o arquivo TXT tenha capacidade menor de arquivamento, por não ter compressão ou outros recursos.
Mudando mais uma vez de pato pra ganso: Tem como me enviar uma cópia do seu arquivo
“http://www.sistemabasico.com.br/wp-comments-post.php” ?
novembro 17th, 2011 - 21:44
Cara eu uso Mysql pra praticamente TUDO.
Quanto a cópia do arquivo que vc pediu eu não entendi a necessidade…
Mas é um arquivo do WordPress, é público, basta baixar do http://wordpress.org
Abraço
novembro 23rd, 2011 - 10:41
Bom dia Roberto
Quanto ao arquivo que pedi, o “wp-comments-post.php”, é que achei muito boa a maneira que podemos postar mensagens em sua página e me pareceu que é esse o arquivo que faz isso.
Gostaria de saber como fazer esse tipo de página. por favor poderia me ajudar nisso?
novembro 23rd, 2011 - 15:06
No meu caso é um CM conhecido na internet… entre em http://wordpress.org e também joga ‘tutoriais wordpress’ no google que tu vai encontrar muito material.
Se desejar aprender a fazer um sistema de comentários em postagens ‘na unha’, utilizando PHP/MyQL, vai ter que se dedicar.
Eu já desenvolvi algo assim e pode ser que em breve eu disponibilize um tutorial.
Bons estudos
novembro 27th, 2011 - 11:42
Roberto,
No trecho $salt = “abchefghjkmnpqrstuvwxyz0123456789″, que está presente nos arquivos cadastrar.php e gerar_nova_senha.php, você repetiu a letra H e tbm faltaram letras. Inicialmente pensei que tinha sido um erro seu, mas vi em outro tópico d outro tutorial que a mesma técnica foi usada de deixar faltar letras. Por que isso?
dezembro 7th, 2011 - 13:24
Eu percebi que a letra ‘d’ foi substituída pelo ‘h’ e a falta da letra ‘l’, ‘o’
A princípio pensei que a letra ‘l’ e ‘o’ seria para evitar confusão com os números ’1′ e ’0′, porém a retirada da letra ‘d’ e substituição pela repetição do ‘h’ me confundiram.
Procurei rapidamente sobre o assunto, mas não achei nada que definisse de fato o significado disso, mas como eu disse, procurei rapidamente, e inclusive vi situações que é usando o alfabeto completo e correto em alguns sistemas semelhantes.
Essa função eu utilizava a muito tempo para um sistema de sorteios e agreguei ao sistema de cadastro, porém desde a primeira vez que usei nunca questionei isso… falha minha.
Se eu souber de algo a respeito eu torno a responder… e se vc descobrir antes de mim, fala aí.
Abração
novembro 27th, 2011 - 18:48
Bom domingo!
passei o dia estudando esse formário que baixei…tá tudo fucionando certinho mais….mais pra levar o usuario cadastrado o TAL PAGINA RESTRITA não tá facil. não mesmo usar os comandos. Poderia me mandar ai um exemplo para que eu posso conniuar a editar!
Abraço
novembro 28th, 2011 - 16:13
OLá @Gil, eu não te entendi… vc quer mais exemplificado do que já está no tutorial?
Faça o que eu ensino no tutorial e tente acessar o arquivo area_restrita.php sem estar logado.
Não vai conseguir.
O nome do arquivo é ‘area_restrita’, apenas para ilustrar, mas poderia ser qualquer nome e pode ter quantos arquivos restritos quiser.
Basta seguir o exemplo do topo do arquivo que usei como exemplo.
Bons estudos.
dezembro 1st, 2011 - 19:50
Olá amigo! Primeiro parabéns pelo sistema excelente que montou aqui!
Gostaria de saber qual o problema que está havendo em meu script.
Quando eu cadastro meus dados na pagina de cadastro, retorna uma pagina com um erro:
Warning: mail() [function.mail]: SMTP server response: 501 Syntax error in parameters or arguments in C:\…\lidyconstrucoes.com.br\httpdocs\cadastra.php on line 175
Foi enviado para seu email – (meuemail@hotmail.com ) um pedido de confirmação de cadastro, por favor verifique e sigas as instruções!
pode me ajudar?
dezembro 3rd, 2011 - 11:24
Se vc está testando localmente, o envio de email utilizando a função mail irá te barrar… precisa ter um server de envio… da uma olhada no meu tutorial de envio de email usando a classe phpmailer.
Assim conseguirá enviar localmente usando server do google.
http://www.sistemabasico.com.br/2011/01/20/como-enviar-email-localmente-com-php-apache-phpmailer-gmail-windows
Bons estudos
dezembro 2nd, 2011 - 22:08
Ótimo tutorial. Parabéns pelo trabalho e paciência em responder a todos. Abraços!
dezembro 3rd, 2011 - 04:03
Em primeiro lugar gostaria de parabenizá-lo pelo excelente tutorial!!!
Minha dúvida é a seguinte: é possível fazer um login simultâneo entre dois sites distintos
e.x. quero cadastrar usuários no meu site e, quando esses usuários cadastrados fizerem o login na minha página, quero que em uma parte da página a ser exibida eles vejam o conteúdo de outro site (que exige senha e login também)?
é possível? se sim, você poderia fazer um exemplo
obrigado
dezembro 7th, 2011 - 13:19
Há possibilidade sim, mas estaria completamente ligado à outros métodos.
Se os domínios estiverem no mesmo server facilita um pouco.
Bons estudos
dezembro 7th, 2011 - 22:56
Quais outros métodos? você poderia exemplificar?
dezembro 23rd, 2011 - 12:02
Amigo, foge muito do escopo do tuto, assim que eu tiver tempo pra respirar eu abordo essa questão.
Geralmente eu presto suporte um pouco mais direcionando pra quem efetua doação para manutenção do site que não tem patrocinador e banco de meu bolso.
O que posso te ajudar no momento é sugerir que estude sobre CURL, SESSIONS, COOKIES, e no estudar sobre isso vai perceber que precisará estudar outros temas ligados que envolvem uma questão muito importante… segurança.
Bons estudos
dezembro 7th, 2011 - 18:21
Olá Roberto! gostei muito do seu tuto, até aprendi um pouco mais de php só testando o sistema no meu site!
Mas eu tava querendo fazer o seguinte: na hora de fazer o login, cada usuário seria enviado para uma página específica, por exemplo: usuario A vai pra página A, usuário B vai pra página B e assim por diante..
Tem como fazer isso? se tiver pode me ajudar? ou até mesmo fazer um tutorial para isso?
obrigado!
dezembro 10th, 2011 - 22:05
@João, além do tutorial, os coments e minhas respostas podem te ajudar muito na tua questão… vale a pena a leitura, mesmo sendo extensa.
Bons estudos.
dezembro 12th, 2011 - 12:41
Roberto Gostaria de saber.se voçe não pode criar um sistema que o usúario escolhe a senha que quer botar,não que o gerador em php envie uma senha!Se Der por favor crie um pra nós concerteza muitos usúarios querem isso
dezembro 20th, 2011 - 22:38
Infelizmente no momento não posso focar nisso devido a demanda de meu trabalho, mas assim que for possível eu faço.
Obrigado
dezembro 17th, 2011 - 03:57
Como faço um perfil do usuário cadastrado?
dezembro 20th, 2011 - 22:43
No arquivo exemplo area_restrita.php vc ve um exemplo de página restrita apenas ao usuário cadastrado e logado, sendo assim vc pode criar um arquivo o qual é restrito da mesma forma… onde neste vc poderá fazer uma consulta no banco de dados relacionando com o id do usuário logado, que no caso vc tem na session criada na hora do login.
Bons estudos
dezembro 18th, 2011 - 19:35
Esse foi o melhor tutorial explicativo que achei na WEB, simples, bem adaptável e eficaz.
Vlw mesmo, estou utilizando em meu site todos os conceitos.
dezembro 20th, 2011 - 22:45
Valeu @Leonardo, bons estudos.
dezembro 21st, 2011 - 09:45
Roberto, tó com uma dúvida será que você pode ajudar? fiz uma adaptações no seu código, mas na hora de logar a página que pretendo restringir só reconhece a $_SESSION['login'] = $login e $_SESSION['password'] = $password; Estou querendo que ela reconheça a $_SESSION['nomeusuario'] = $nomeusuario e $_SESSION['nivel_acesso'] = $nivel_acesso.
Não sei onde estou errando… o código está abaixo:
<?php
// inclui o arquiv o de configuração do sistema
include "configuracaodosistema.php";
// revebe dados do formulario
$login = htmlspecialchars($_POST['login']);
$password = $_POST['password'];
// verifica se o usuario existe
$existe = mysql_query("select * from tabela where login='$login' AND ativacao='1'");
$espacos = mysql_num_rows($existe);
if($espacos != 0) {
// se o usuario existir verifica a senha dele
if($password != mysql_result($existe,0,"password")) {
echo "
Senha incorreta!
“;
exit;
} else {
// estiver tudo certo vamos ver se ele é o administrador
if($login == $loginadmininstrador) {
// se for o login do administrador vamos verificar a senha dele
// se é igual a do administrado
if($passowrd == $passwordadministrador) {
// se for o administrador vomos criar a sessão
session_start();
$_SESSION['usuario_identifica'] = $usuario_identifica;
$_SESSION['login'] = $login;
$_SESSION['password'] = $password;
$_SESSION['nomeusuario'] = $nomeusuario;
$_SESSION['nivel_acesso'] = $nivel_acesso;
mysql_query (“UPDATE usuarios SET data_login = now() WHERE login=’{$login}’”);
// redireciona o link para a página do administrador
header(“Location: paginaadministrador.php”);
}
} else {
// se o login não for do administrado vamos criar a sessão dele
session_start();
$_SESSION['usuario_identifica'] = $usuario_identifica;
$_SESSION['login'] = $login;
$_SESSION['password'] = $password;
$_SESSION['nomeusuario'] = $nomeusuario;
$_SESSION['nivel_acesso'] = $nivel_acesso;
mysql_query (“UPDATE usuarios SET data_login = now() WHERE login=’{$login}’”);
// redireciona o link para uma outra pagina
header(“Location: paginausuario.php”);
}
}
} else {
echo “
O usuario não existe
“;
exit;
}
?>
Obrigado
att.
dezembro 23rd, 2011 - 20:24
Amigo, tuas adaptações não estão boas não.
Deves seguir o tutorial, pois a consulta no banco de dados que fiz no tutorial recebe todos os campos do banco de dados dentro de um foreach e atribui o seu valor para uma variável com o respectivo nome do campo no bd.
Perceba que na sua consulta no banco de dados vc não selecionou o nome do usuário e nivel de acesso, sendo assim a session que está gravando para esses valores está vazia.
Outro erro grave é a localização do session_start()… vc deve utilizar apenas uma vez em cada arquivo e no topo …. sempre.
Tente entender melhor a lógica do arquivo original no tutorial e refaça as tuas adaptações com mais cuidado.
Bons estudos
dezembro 29th, 2011 - 20:07
Valeu pelo post… está td funfando certinho.
Estou aprendendo php, e com estes fontes bem estruturado ajuda muito.
dezembro 30th, 2011 - 04:05
Parabéns pelo post :D
Vai seer muuuuito útil pra quem ta começando .
janeiro 4th, 2012 - 18:20
Ola Roberto muito bom esse sistema, aqui em casa testei com o wampserver,
não alterei nada, aceto pelos meus dados do meu banco, mas ta dando alguns erros…
1° – Quando abro o formulario de cadastro, nos campos ao invés de ficar em branco fica o seguinte…
Notice: Undefined index: nome in C:\site\formulario_cadastro.php on line 12
… em todos os campos aparecem isso, o que pode ser?
2° – Quando preencho todo o formulario da os seguintes erros…
Notice: Undefined variable: pass in C:\cadastra.php on line 118
Warning: mail() [function.mail]: Failed to connect to mailserver at “localhost” port 25, verify your “SMTP” and “smtp_port” setting in php.ini or use ini_set() in C:\site\cadastra.php on line 194
Foi enviado para seu email – ( nome_do_email@hotmail.com ) um pedido de confirmação de cadastro, por favor verifique e sigas as instruções!
… o que poder ser tbm?
mais uma vez te parabenizo pelo sistema, valeu!
janeiro 11th, 2012 - 01:19
AS NOTICES não são erros propriamente dito, são avisos de algo que está fora dos padrões.
Eu os encaro como erros tbm…
Provavelmente porque nos campos do form nos VALUEs há uma variável já chamada sem ter sido definida, ou seja, sem existir ainda.
Substitua em todos os campos no parâmetro VALUE dos campos … a variável pela variável GLOBAL $_POST
Exemplo: ao invés disso
... echo $sobrenome;, faça issoecho $_POST['sobrenome'];Faça isso com todos os campos e as NOTICES desaparecerão
Quanto ao WARNING, pé porque vc tentou enviar uma mensagem de email sem ter um servidor de email (SMTP)
Para contornar esse problema de envio de emailk via sevidor local (sua máquina), ou instala um server SMTP no teu pc…(não abordarei como fazer isso) ou da uma lida em outro tutorial meu sobre envio de emails localmente utilisando PHPMailer e contas de email do GMAIL.
Bons estudos.
janeiro 15th, 2012 - 19:52
Obrigado pela resposta Roberto!
Consegui as NOTICES…
e tambem instalei Easy SMTP Server 2.9 no meu pc, não configurei nada, pq esta em ingles, rsrs, e tambem não entendo muito, sou meio leigo,
tah instalei daí tentei cadastrar e aparece o seguinte…
“Notice: Undefined variable: pass in C:\site\login\cadastrar.php on line 106
Foi enviado para seu email – ( nome_email@hotmail.com ) um pedido de confirmação de cadastro, por favor verifique e sigas as instruções!”
…não recebi o email ainda, e essa NOTICE é um erro? e que pode ser?
Valeu!
janeiro 17th, 2012 - 16:39
Quanto a vc receber o email ou não, provavelmente é algo relacionando a confuguração do servidor smtp que está usando e que no caso, não posso ajudar.
Quanto a Notice, é interessannte deixar habilitado no php.ini para exibir todos os erros e notices na plataforma de desevolvimento, mas saiba que na maioria dos servidores de hospedagem as NOTICES estão desabilitadas para exibição… e ainda assim mesmo que nnão estejam, vc pode desabilitar diretamente no script… procure por ‘desabilitar exibição de erros no php’ e bons estudos.
‘Notices’ não atrapalharão no processo do teu script.
;)
janeiro 13th, 2012 - 14:14
carra deu exatamente tudo certinho aki, mas na parte cadastro quando eu entro para cadastrar ele não espera eu preencher os dados para informar se tem erros, ele ja carrega a ´pagina dizendo isso em cima:
ERRO: Você não enviou as seguintes informações requeridas para o cadastro!
Nome é um campo requerido.
Sobrenome é um campo requerido.
Email é um campo requerido.
Nome de Usuário é um campo requerido.
Preencha os campos necessários abaixo:
—————————-
DAE AKI TEM O FORMULARIO
—————————-
oque deve estar errado?
outra coisa q eu precizo mudar q é o usuario poder escolher a senha, e não ela ser automatica, por favor eu precizo meeesmo, e tbm dá pra tirar a parte + informações sobre você e colocar lá o campo senha e repetir senha
outra, na parte recuperar senha tbm deveria ter essa opção de escolher uma senha nova tipo:
didite seu e-mail: dae confere se ele existe e redireciona para a pagina nova_senha.php dae lá dah para eu por senha: minhanovasenha entende??
por favorrrrr isso é urgente mesmo tenho q terminar o meu progeto ate este final deste mes (janeiro)
entra em contato no meu msn sanderluis@hotmail.com vlwwwww supermassa este sistema ae….
janeiro 14th, 2012 - 10:52
Olá @Sander, vamos com calma….
Em relação às informações de erros aparecerem direto, é porque vc está acessando o arquivo cadastrar.php, o correto é acessar o formulario_cadastro.php.
Este sim é o formulário que envia os dados para o arquivo cadastrar.php que por sua vez verifica os dados enviados e se não estiver(em) correto(s) ele informa os erros.
Acessando o cadstrar.php diretamente, obvio qeu aparecerá os erros, pois ele não estará recebendo os dados do form e acusará os erros de campos não preenchidos corretamente.
Entendeu isso? Se não entra em contato.
Quanto ao fato das senhas poderem ser definidas pelo usuário, há a possibilidade sim de se fazer essa alteração, mas será necessário a edição de diversos arquivos coligados.
Se não fizer as alterações corretamente em todos os arquivos relacionados à definição de senha o sistema não funcionará corretamente.
Se ler todos os coments (sei que são muitos) deste tutorial, irá perceber que não é o primeiro que solicita essas modificações e em todos eu respondi que não faz parte do escopo deste tutorial, dar suporte gratuíto à modificações.
Este suporte eu presto para quem colaborar com o site que se sustenta graças as doações dos usuários que se beneficiam do material e por gratidão fazem suas doações via Paypal ou PagSeguroUol através do banner na lateral esquerda do site.
Qualquer dúvida spbre isso, pode entrar em contato.
Grande abraço
Bons estudos!
janeiro 27th, 2012 - 00:13
Olá, tudo bem?
Ótimo script, parabéns.
Sou novo em php, testei seu script, deu quase tudo certo, usei num servidor kinghost, com suporte a enviou emails, então:
Quando faço o cadastro, chega a senha randomica e o usuário tudo certinho no meu email do gmail, porém, quando vou em “gerar_nova_senha.php” e digito meu e-mail cadastro, o script não envia o email para mim.
É estranho, pois recebo o e-mail de cadastro mas não o de redefinição de senha.
“Ah, já ia me esquecendo, quando envio email de redefinição, o script muda minha senha no banco, só não está enviando no e-mail…
“Não fiz nenhuma modificação nos script, só abri e apenas estudei-os.
Tem alguma idéia do que seria esse issue?
Obrigado.
janeiro 27th, 2012 - 01:17
Antes de testar o gerador de nova senha vc confirmou o cadastro no primeiro email enviado à vc?
O que posso dizer é que não faço ideia do que possa ser, visto que não tem nada de errado com o script.
Testei e deu tudo certo pra mim.
Pegue seu arquivo de gerar nova senha e ‘debugue’ ele… ou seja, ao invés de processar o script, apenas imprima as variáveis e querys para ver se os valores estão sendo passados.
Bons estudos!
janeiro 27th, 2012 - 17:16
Ah sim, fiz isso, pegou, mudei o 2 emails demonstrativos para o mesmo um do meu dominio que tinham no plugin e funcionou agora.
Se caso eu queira que qualquer um possa acessar o arquivos “area_restrita.php”.
Quero tirar a restrição, pq quando uma pessoa não cadastrada vai acessar “area_restrita ele redireciona para formulario_login…
É que tou fazendo um site projeto pessoal, e quero colocar na pagina principal index.php
<?php
session_start();
include "functions.php";
session_checker();
echo "(Mensagem exemplo)”;
echo “”;
echo “Bem vindo “. $_SESSION['nome'] .” “. $_SESSION['sobrenome'] .”!
Você está acessando área restrita para usuários cadastrados!”;
echo “Seu nível de usuário é “. $_SESSION['nivel_usuario'].”.
Com esse nível, você tem permisão de acesso à algumas áreas exclusivas do site.”;
/*if($_SESSION['nivel_usuario'] == 0){
echo “- SITE – Acesso à áreas exclusivas do site”;
}
if($_SESSION['nivel_usuario'] == 1){
echo “- PAINEL ADMINAcesso total ao site e painel administrativo para gerenciar todos os usuários do site.”;
}*/
echo “Sair“;
?>
mas quero que que não esteja logado ou n tenha cadastro veja o restante do site ainda, e que quem tenha cadastro veja as informações, o script tá bloqueando o restante do conteudo…
janeiro 27th, 2012 - 19:16
Amigo, se queres apenas usar o sistema para exibir mensagens expecíficas, basta retirar o session_checker() e apenas no espaço que quer exibir a mensagem verificar se algumas das sessions que são registradas na hora do login estão abertas. É lógico o racioncínio… se alguma das sessions estiver aberta vc exibe a mensagem senão, não exibe… deves trabalhar apenas com condicionais… simples.
Bons estudos
janeiro 27th, 2012 - 21:04
Boa noite Roberto,
cara, estou com um problema aqui
o e-mail de ativação só chega para usuários que usam Gmail
nenhum outro chega, seja hotmail, ig, uol, yahoo.
O que pode estar errado?
Obrigado
janeiro 28th, 2012 - 00:25
Olá @Vitor… da uma lida nos coments… vai te ajudar muito… essa questão foi levantada em 20% dos coments aqui postados.
Qualquer coisa fala aí depois.
Abraço e bons estudos!
janeiro 29th, 2012 - 13:23
O, desculpa cara
valeu, Obrigado
fevereiro 6th, 2012 - 13:12
Ola.. Roberto.
Tive a fazer todo este topico, mais estou com um erro no começo do registro de usuario!!
1. Faço o cadastro no formulário de cadastro de usuário
2. aparece a mensagem para verificar o email cadastrado a confirmação e finalização do cadastro.
3. vou ate o email que recebe o pedido de confirmação. Clico no link para ativar o usuário e aparece a mensagem que a conta não pode ser ativada.
OBS. OS DADOS SÃO INSERIDO CORRETAMENTE NO BD E O EMAIL DE CONFIRMAÇÃO TAMBÉM CORRE BEM SÓ O CAMPO DA TABELA USUÁRIOS ATIVADO PERMANECE {0}
fevereiro 6th, 2012 - 16:27
Verifique se quando copiou o codigo não foi alguma sugeira.
Veja se não alterou nada em relação ao banco de dados como os tamanhos dos campos do tipo VARCHAR.
Fica difícil adivinhar o que pode estar fazendo errado.
Bons estudos
fevereiro 6th, 2012 - 15:24
Sistema muito bom, achei códigos de segurança que não utilizava em meus sistemas, entre códigos mais organizado relados aqui. Obrigado.
fevereiro 6th, 2012 - 16:25
Que bom que curtiu.
Bons estudos
fevereiro 7th, 2012 - 11:45
olá roberto, seu codigo através do post ficou incrivel, td funcionando certinho on line , e ai queria te pedir algo mais se não lhe for pedir muito hahaha.
Cara como faço para direcionar cada login para uma pagina especifica.
Exemplo: Login: fernando ( se estiver ok) avança para a pagina Fernando_restrito.php
marcela ( se estiver ok) avança para a pagina marcela_restrito.php
douglas ( se estiver ok ) avança para a pagina douglas_restrito.php
sei qeu tenho que usar if e else e sei tbm que tem que ser na pagina verifica usuario mas não sei como nem em que parte do codigo posso fazer isto.
se puder dar essa ajuda o/, mesmo assim nota mil brown , abraçoss!
fevereiro 7th, 2012 - 22:17
Olá @Marko.
Poderia me dizer a finalidade?
Se for para cada user ter uma página específica para exibir seus dados, não é necessário.
Basta entender a lógica do sistema.
Visto que se um user logado gera uma session com o valor de seu ID, que por sua vez ID este que está registrado no banco de dados, então é possível exibir todos os dados deste usuário unicamente baseando-se no ID gravado na session, ou seja, fazendo a consulta no bd em relação à este ID o arquivo puxa todos os dados do user logado e exibe na página.
Para tanto é necessário um arquivo apenas que faça essa consulta e a cada user logado será exibido apenas as suas respectivas informações.
Não vejo outra forma de se fazer isso… qualquer outra forma, como criar um arquivo para cada user e através de algum campo no BD fazer uma verificação que arquivo à ser exibido, seria o caminho errado, mesmo que funcione.
Bons estudos
fevereiro 8th, 2012 - 17:21
Olá Roberto…
Tive a mandar um Email para verificar se você pudesse fazer uma atualização no seu sistema e o mesmo não foi respondido. Se caso você não recebeu o Email me informe para que eu possa mandar outro. Para qual Email?
Obrigado..
Leandro Medeiros
fevereiro 8th, 2012 - 17:27
Olá @Leandro, verifiquei seu email.
Aguarde resposta através dele.
Abraço
fevereiro 14th, 2012 - 23:29
Olá, Roberto!
Bem, fiz tudo certinho, não ‘copiei e colei’… mas mesmo assim estou enfrentando problemas! Eu uso os serviços de hospedagem do http://www.000webhost.com, que inclusive fornece aos seus usuários o MySQL. Sempre aparece mensagens de erro no serviço, não faço ideia de qual seja o motivo. aqui está o link para o cadastro ‘http://bebserver.net63.net/formulario_cadastro.php’ cadastre-se e veja o erro que aparece. Desculpe-me se o erro for algo banal; mas é porque sou totalmente leigo nesse assunto. Agradeço profundamente a sua resposta.
fevereiro 15th, 2012 - 00:17
O únio problema se dá nas suas definições de conexão com o banco de dados.
Verifique o arquivo config.php… é ali que deve ter os dados definidos corretamente.
Esses dados devem ser de acordo com o servidor de hospedagem que está utilizando.
Entre em contato com o Host.
Bons estudos
fevereiro 15th, 2012 - 12:26
Ok! Já entrei em contato e estou aguardando um resposta. Obrigado! :)
fevereiro 22nd, 2012 - 11:53
Erro
consulta SQL:
{ \ rtf1 \ ansi \ ansicpg1252 \ deff0 \ deflang1046{ \ fonttbl{ \ f0 \ fswiss \ fcharset0 Arial;
Mensagens do MySQL : Documentação
#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘{\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial’ at line 1
amigo to com esse problem PODE ME AJUDA
fevereiro 22nd, 2012 - 13:20
Olá @Valdenir, isso acontece porque vc não digitou os códigos.
Provavelmente o arquivo .sql deve ter tido interpretação errada pelo teu gerenciador mysql.
Vou salvar ourto arquivo .sql e disponibilizar no download, mas não espere por isso, pois o propósito é vc digitar o código.
Outra saída é vc clicar duas vezes sobre o codigo direto no tutorial e ele ficará em forma de codigo e poderá ser copiado com Ctrl+C e colado com Ctrl+V.
Bons estudos!
fevereiro 23rd, 2012 - 09:20
Perfeito o sistema, Removi o MD5, pois vai ser somente para uso interno,
Muito Obrigado..
fevereiro 29th, 2012 - 13:07
No verifica_usuario.php, na parte que você define os valores da session, eu não entendi. Você usou varias variaveis, cada uma para uma parte da session, até ai tudo bem. Mas de onde vieram essas variaveis? Elas não tinham sido criadas antes, de onde vem o valor delas?
Esse $_SESSION['nivel_usuario'] = $nivel_usuario; por exemplo, não daria erro? Afinal o $nivel_usuario ainda não foi criado e está vazio….
fevereiro 29th, 2012 - 14:20
Olá @Bruno, foram criadas sim bruno todas elas foram ciradas antes do registro da session, lá dentro do foreach()
Mais precisamente nesse trecho:
foreach ($row AS $key => $val){$$key = stripslashes( $val );
}
Você não percebeu isso dentro do
foreach()que está dentro do while da consulta sql?$$key??De uma lida sobre Variáveis Variáveis
Resumindo, com esse
foreach(), cada seleção de um campo no banco de dados é criado uma variável de mesmo nome.Pegou?
Bons estudos.
fevereiro 29th, 2012 - 21:19
Valeu, esse for each foi um pouco complexo pra mim, ainda não entendi, mas agora já sei sobre o que pesquisar para entende-lo. Valeu.
fevereiro 29th, 2012 - 21:29
Nossa, segui o seu link e ja entendi. Basicamente o conteudo de uma variavel vira o nome da outra.
Deixa eu aproveitar e mandar outra pergunta. Sobre o uso da chave ‘{‘ ou ‘}’ em uma string. Eu não entendi pra que serve. É pra concatenar? Porque se eu fizer simplesmente echo “blabla $var” ele ja substitui a variavel por seu conteudo, sem precisar fazer echo “blabla {$var}” ou echo “blabla “.$var
fevereiro 29th, 2012 - 21:48
@Bruno, existem diversas formas de escrever PHP, porém nem todas sempre funcionarão nas diversas configurações dos servidores remotos por aí a fora e nem todas as versões terão uma mesma interpretação correta de um modo de escrita ou de outro.
As CHAVES antes e depois de uma variável numa string diz ao PHP que o que tem dentro delas é de fato uma variável e o que deve ser retornado é seu valor e não seu nome literal.
Não colocar as chaves muitas vezes irá funcionar perfeitmente, porem algumas vezes pode haver equivocos de serem interpretadas como uma string literal. Por isso as chaves podem ser uma boa prática.
Eu particularmente tenho o hábito de concatenar escapando o que é string literal e o que é variável.
Exemplo:
$a = "concateno";
$b = "Eu ".$a." minhas strings desta forma";
echo $b;
Bons estudos.
março 1st, 2012 - 15:11
quando envio o formulario de cadastro aparece somente uma tela em branco??? o que seria e nao grava no bd
março 1st, 2012 - 16:38
Olá @Wesley.
Pode ser mil coisas…
Por eliminatória eu verificaria se fez tudo corretamente em relação ao BD e ao arquivo cadastra.php
março 1st, 2012 - 17:13
por favor me ajude fiquei umas 2 horas e li todos os comentarios e nao consegui achar a causa do meu problema
(quando envio os dados da pagina cadastro simplismente aparece uma pagina em branco e nada acontece, ja testei todas as outras paginas li e reli todo o codigo mas nao encontrei a solução)
a pagina de cadastra.php fica em branco e nao faz nada nao cadastra nem nada
meu servidor e da uolhost nao sei qual e o problema;;;
me ajude…. por favor…
março 2nd, 2012 - 09:19
Amigo para que eu te ajude vc tem que me ajduar, afinal ainda não sou adivinho… quem sabe um dia.
Nos coments há muitas possibilidades que poderiam se encaixar como respostas às tuas dúvidas e problemas, mas já que disse que não achou nada que pudesse ajudar.
Bom ele não está cadastradndo nada no banco de dados, é possível que teu arquivo de conexão esteja com os dados erraods e não sei como funciona o UOL em relação à tratamentos dos erros… se ele exibe mensagens ou não. Se o PHP do UOL está programado para não exibir erros, pode ser que seja isso que citei acima, mas tbm pode ser outras diversas possibilidades.
Existem muitas maneiras de encontrar os erros em um script, uma delas é observação do script linha por linha, mas para iniciantes pode ser falho.
Uma maneira interessante é ao invés de registrar no banco de dados vc imprime na tela com
'echo'a sua query SQL, ou seja, ao enviar o form o arquivo responsável por pegar os dados enviados e registrar no bd vai ser modificado… em vez de$var = mysql_query("INSERT...etc");vc apenas atribui à variável a string de consulta.Exemplo:
$var = "INSERT...etc";echo $var;
Desta forma vc poderá ver na tela se os dados enviados pelo form estão sendo enviados corretamente e de fato completam perfeitamente a query de registro.
Se tudo Ok vamos adiante que o erro é em outro lugar.
março 12th, 2012 - 13:49
boa tarde, eu sou leigo em php ainda rs
o erro que ta dando aqui é que quando em clico pra abrir o cadastrar.php, o site fica com os codigos de php em vez de mostrar o formulario, não sei se é falta de instalar alguma coisa
eu fiz o banco de dados em wamp server e não sei se tenho que instalar esse tal de md5 e se tiver, por favor, pode me mandar o link ?
valeu cara o/
fora isso, nos seus demos funcionou perfeitamente
março 12th, 2012 - 18:09
Olá @Danilo, esse problema ocorre devido a ma configuração do teu PHP/Apache.
Vamos pro partes… se tiver usando ‘
< ?' substitua por '< ?php'Verifique tbm se está tentando acessar os arquivos PHP via http://localhost/caminho-do-arquivo.php e não pelo endereço dele no teu computador.
Enfim...
Bons estudos
março 14th, 2012 - 11:36
Ola, o tutorial eh mt bom, quando eu clico em enviar para cadastrar no formulario.cadastro.php ele nao envia para o banco e aparece uma tela falando pra mim abaixar o cadastrar.php, oque pode ser?
março 14th, 2012 - 22:25
Você precisa ter um servidor juntamente com PHP e MySQL instalados no seu computador para que os scripts possam ser executados.
Estude o meu tutorial: Instalando PHP 5.3.x VC9 + APACHE + MySQL no Windows 7
Bons estudos
março 15th, 2012 - 11:08
Bom dia Roberto, primeiramente parabens e obrigado pelo tutorial.
No meu teste apresentou uma problema, qdo finalizo o cadastro ele diz Foi enviado para seu email – ( “meuemail…@gmail.com” ) um pedido de confirmação de cadastro, por favor verifique e sigas as instruções!
porem não chega nada.
Fiz o mesmo teste no DEMO deste site e funciona. Tem alguma configuração que devo fazer ?
obrigado
março 15th, 2012 - 11:19
Resolvido Roberto, alterei as informações do meu dominio no cadastrar.php.
Obrigado
março 15th, 2012 - 16:54
Ok, qualquer coisa só falar.
Bons estudos.
março 15th, 2012 - 15:09
Certo, consigui agora, o unico problema eh q o email nao eh enviado, nao da erro nenhum, apenas nao envia o email
março 15th, 2012 - 17:06
@Ricardo, para resolver esse problema deve estar atento à alguns detalhes.
Um deles é que vc precisa ter um servidor SMTP de email no seu computador para poder enviar emails a partir dele.
Uma alernativa para isso é usar o servidor do google com uma conta do gmail para esses envios locais.
Para tanto deves seguir este tutorial: Como enviar email localmente com PHP + Apache + PHPMailer e Gmail no Windows.
Uma outra alternativa ainda é ler todos os coments deste tutorial de cadastros e com certeza irá verificar diversas dúvidas como a sua… algumas resolvidas, outras não.
Bons estudos
março 15th, 2012 - 17:35
MARAVILHOSO ESSE SEU TUTORIAL ROBERTO!
nenhum erro! rodou redondissimo e era exatamente o que eu precisava!
TÁ DE PARABÉNS !!!
março 15th, 2012 - 18:41
Obrigado pelas palavras @Gabriel.
Bons estudos!
março 16th, 2012 - 08:45
Roberto no meu caso estou, nao estou usando ele local, eu tenho um site e estou usando ele para hospedar, caso queria da uma olha o site é http://www.prosperebrasil.com.br/sistema/formulario.cadastro.php , neste caso a ond devo configurar o smtp?
março 16th, 2012 - 10:00
@Ricardo, é como eu já te disse.
Se você tivesse seguido uma das alternativas que eu dei, “Ler os coments anteriores“, teria encontrado informações de que o provedor de hospedagem o qual você utiliza (@locaweb) não da um suporte adequado para função
mail()do PHP, a qual é utilizada para o envio de mensagens no sistema de cadastros deste tutorial, sendo assim, deverá usar a dica que eu dei sobre estudar o tutorial de envio autenticado de emails usando a classe PHPMAILER, o qual deverá substituir alguns parâmetros para funcionar com seu email gerado no seu domínio no seu Host.. como a conta de email que envia as mensagens, substituindo pela sua ao invés de uma do gmail, susbtituir o Host pelo ensedreço do teu server de email do teu server de hospedagem e retirando alguns parâmetros de segurança do google comoSMTPSecure (protocolo tls)ePort, que serverm apenas para autenticar no google (gmail).Enfim…
Estude aquele tuto e implemente no sistema de cadastro substituindo pela função mail().
Qualquer dúvida a respeito da config do phpMailer, pergunte no tutorial específico sobre o envio de emails.
Bons estudos!
março 16th, 2012 - 11:18
Como configura niveis de permissao nesse negocio?
março 16th, 2012 - 15:37
@Igor, primeiro não tem ‘negócio’ nenhum aqui, sim um script simples para aprendizado.
Quanto aos níveis, se ler o tutorial com atenção, perceberá que montei ele de forma que fosse possível trabalhar com níveis de acesso posteriormente, mas isso seria algo para quem se interessasse em ir adiante, por conta própria.
Para implementações extras nos scripts dos tutoriais os quais escrevo, somente após doação via Paypal ou PagSeguroUol, ou se a implementação for mais complexa envolvendo um sistema completo para alguma finalidade, com relação ou não aos meus tutorias… somente após prévio orçamento.
Bons estudos.
março 23rd, 2012 - 21:23
Olá Roberto, tudo bem
Estou seguindo o tutorial passo-a-passo, e está bem completo e bem comentado.
Eu já consegui cadastrar varios usuarios, definindo níveis de permissão e tudo mais!
Só está falhando na hora de logar no sistema.
Pode me orientar para ver onde errei?
Grato,
Leonardo
março 24th, 2012 - 02:02
Poder ajudar eu posso, só não sei como.
poderia inumerar 1000 falhas que poderiam ocorrer na hora de logar se o script não estiver correto.
Me ajude a te ajudar.
março 26th, 2012 - 21:38
Olá Amigo , parabéns pelo site..
Baixei os arquivos e ao importar o SQL apresntou o seguinte erro”Erro
consulta SQL:
{ \ rtf1 \ ansi \ ansicpg1252 \ deff0 \ deflang1046{ \ fonttbl{ \ f0 \ fswiss \ fcharset0 Arial;
Mensagens do MySQL : Documentação
#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘{\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial’ at line 1
Como posso resolver..
Abraços
março 26th, 2012 - 23:14
@Adilson, faça assim: Digite no campo SQL do phpMyadmin ao invés de importar o arquivo sql.
O que ocorreru é que o arquivo está salvo com formatação, não ficou um sql puro e ao importar há caracteres inválidos.
Irei recolocar um arquivo SQL no ZIP, mas sugiro digitar o cod.
Bons estudos!
março 27th, 2012 - 22:47
Ola Roberto , Obrigado deu certo , agora quando usei o formulario de cadastrar e dei enviar apareceu este erro “Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/contabil/public_html/cadastra.php on line 54
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/contabil/public_html/cadastra.php on line 55
Unknown column ‘sobrenome’ in ‘field list’ ”
Obrigado..
Abs
março 28th, 2012 - 09:18
Olá @Adilson. Veja com atenção a mesnagem de erro. Oque ela te sugere?
Na tua tabela no banco de dados existe o campo ‘sobrenome’?
Se sim, verifique se foi digitado errado o nome do campo no bd ou errado o nome do campo na query SQL no seu arquivo cadastra.php
Bons estudos!
abril 3rd, 2012 - 13:11
tem como vc simplificar para mim esse esse tutorial pq como faço para direcionar para pagina que eu quero
e como bloquear alguns arquivos para ter acesso so quem pagar .
como eu faço para conveter o codigo php para html ?
onde fica armazaenado os dados dos clentes ?
como deixar seguro protegido?
estou aguardando resposta obg.
abril 4th, 2012 - 18:13
Olá anonimo ¬¬
Simplificar mais que isso não tem como.
Para redirecionar para página que você quer, basta defini-la no arquivo verifica_usuario.php. De uma analisada.
Tem como bloquear sim, mas a implementação de verificação se foi pago você deve contruir a parte.
Eu tenho uma solução com pagamento via Paypal, mas não é graatuito -> R$800,00 -> DEMO – PAYPAL WEBSITE INTEGRATION
Amigo, código HTML não faz isso. HTML é só a marcação da estrutura das páginas.
O Armazenamento fica no banco de dados MySQL (Você leu o tutorial?)
Para deixar seguro e protegido, o que foi passado no tutorial já da uma base boa, mas se desejar algumas aprimorações, uma grande dica é tratar tudo que vem dos forms, verificando sempre se não vem código malicioso.
Bons estudos
abril 5th, 2012 - 10:37
Bom dia.
estou tentando usar seu tutorial, mas estou com um simples problema, rsrsrsrsrs
nao recebo no email a informação do cadastro.
mysql funciona perfeitamente.
quando cadastro o usuario, diz q foi enviado para o email uma solicitação de confirmação. porem isso nao chega ao email.
poderia me ajudar?
desde ja agradeço
abril 6th, 2012 - 00:22
Olá Davi a melhor ajuda que posso te dar em relação à isso é rever todos os coments antes do teu.
Encontrará muitas respostas em relação à isto.
Bons estudos!
abril 10th, 2012 - 22:34
Olá amigo estou com um probleminha, talves seja ate coisa boba…eu fiz e dava esse erro..ai ate baixei o DEmo que vc desponibilizou e continuou dando erro..coloquei ate do jeio que esta aparecendo..
Desde já agradeço sua atenção
Notice: Undefined index: nome in C:\Program Files (x86)\EasyPHP-5.3.9\www\login-\formulario_cadastro.php on line 19
Notice: Undefined index: sobrenome in C:\Program Files (x86)\EasyPHP-5.3.9\www\login-\formulario_cadastro.php on line 24
Notice: Undefined index: email in C:\Program Files (x86)\EasyPHP-5.3.9\www\login-\formulario_cadastro.php on line 28
Notice: Undefined index: usuario in C:\Program Files (x86)\EasyPHP-5.3.9\www\login-\formulario_cadastro.php on line 33
Notice: Undefined index: info in C:\Program Files (x86)\EasyPHP-5.3.9\www\login-\formulario_cadastro.php on line 37
abril 11th, 2012 - 01:08
Olá @Erick essas mensagens não são propriamente erros, e sim apenas notificações.
O teu PHP está configurado para exibir todas as mensagens de erros e também as notificações, ou melhor, NOTICES.
Eu já respondi sobre isso nos comentários…. aliás nessa quantidade de comentários tem muita solução postada para muitos tipos de dúvidas.
Recomendo a leitura dos comentários na sua totalidade tanto quanto a leiutra do tutorial para seu aprendizado.
No seu caso talvez você consiga encontrar solução através desse coment: http://www.sistemabasico.com.br/2007/12/07/tutorial-php-sistema-cadastro-usuarios-login-sessions/#comment-3338
Bons estudos
abril 20th, 2012 - 09:54
cara muito bom…
cara tem como cadastrar uma imagem para esse usuário e ter uma forma dele trocar…acho que já que ele tem sua própria página poderiamos personalizar…com logo ou imagem dele mesmo…
abril 20th, 2012 - 19:34
Basta adicionar o campo de envio de imagem no form.
Adicionar o campo no banco de dados.
Criar uma pasta para armazenar as fotos/imagens
Escrever algumas linhas de código para manipular o envio, armazenar no bd o seu nome e a imagem na pasta.
Desenvolver um painel para edição dos dados cadastrados de todos os usuários para o admin gerenciar.
Desenvolver um painel de controle para o usuário gerenciar seus próprios dados.
A lógicas é essa… bons estudos!
abril 20th, 2012 - 15:19
Olá, parabéns mt bom o tuto.
Eu fiz o download dos arquivos e quando eu crio um usuario ou tento recuperar a senha ele da essa msgm:
Notice: Undefined variable: pass in C:\xampp\htdocs\…\gerar_nova_senha.php on line 60
Como faço pra remove ela?
Muito obrigado.
abril 20th, 2012 - 19:30
Olá @Marcus, isto é uma Notice, não se trata de um erro propriamente dito.
O sistema continuará a funcionar.
Como o sistema foi feito a alguns anos, algumas coisas devem ser alteraqdas.
Deve-se definir a variável ‘pass’ no arquivo gerar_nova_senha.php
Da uma olhada nos coments, eu já ajudei respondi isso em detalhes.
O ideal é escrever scripts que não gerem Notices, mas se não se preocupa com isso, tem como definir no oho.ini para não apresentar as Notices e outras mensagens.
Da uma olhada http://php.net/manual/pt_BR/errorfunc.configuration.php
Bons estudos
abril 25th, 2012 - 09:33
Olá Robert, ótimo sistema, muito bom!
Porém estou iniciando e preciso de um sistema um pouco mais complexo, partiria de um cadastro, igual o seu mesmo.
Só que ao fazer o login, o usuário teria 5 fichas para preencherem, como novos formulários, e essas fichas ficariam no banco. entende?
Me cadastrei, me loguei, na página restrita encontrei 5 fihas para eu preencher, preenchi com as minhas informações pessoas e ficou no BD.
Cada usuário preencheria as suas ficha.
Como faço isso? me de uma dica pois estou na dúvida de como asocciar as fichas aos usuários.
Pois preciasaria criar também uma administração que visse todos os usúarios e suas fichas.
Poderia me ajudar com isso?
Desde já muito obrigado! Forte Abraços!
abril 25th, 2012 - 13:06
Olá @William.
É tranquilo fazer esta relação Wiliam, basta gravar o id do usuário quando for registrado os dados dessas fichas de formulário que vc disse.
Crie uma tabela para armazenar essas fichas… nessa tabela além do id das fichas vc adiciona um campo para receber o id do user que respondeu as fichas.
Para relacionar as fichas com o ususário que respondeu, basta fazer a consulta com relação ao id do user na tabela de usuários e o id do user na tabela das fichas.
A igualdade desse ID liga o memso com as fichas.
Como pegar o id do user na hora que ele está respondendo as fichas??
Simples… o id dele já está numa session a partir do momento que ele se logou.
Para criar um painel admin é outra situação à qual não poderei ajudar no momento, pois não está na proposta do tutorial.
Se tiver interesse através de orçamento prévio, podemos tratar sobre a criação deste teu painel, formulários e banco de dados para as ‘fichas’ tão como essa relação de ids que mencionei.
Bons estudos.
abril 25th, 2012 - 16:03
Olá Roberto, tudo bem? Primeiramente parabens e MUITO obrigado pelo tutorial, são poucos os que querem ajudar e sem dúvida você e´um desse poucos.
meu problema é o seguinte, preciso de um sistema de cadastro no meu site, (www.contabiliza.net.br/contabiliza).
após ver seu tutorial resolvir abandonar outro que estava tentando, porem, ao tentar importar a tabela usuarios.sql. tenho o erro abaixo, vir que outro leitor teve o mesmo problema e você recomendou digitar em vez de importar, no meu caso não resolveu e gostaria de sua ajuda.
Erro
consulta SQL:
{ \ rtf1 \ ansi \ ansicpg1252 \ deff0 \ deflang1046{ \ fonttbl{ \ f0 \ fswiss \ fcharset0 Arial;
Mensagens do MySQL :
#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘{\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial’ at line 1
uso WAMP5, local, Win XP,
obrigado
abril 25th, 2012 - 19:38
Olá @Jario, esse erro que dá é porque o arquivo .sql no pacote deve estar comrrompido, não foi salvo por da forma correta por mim.
Indiquei sim à outro user que digitasse diretamente na caixa SQL do phpMyAdmin para que desse certo e de fato não tem como dar erro quando feito dessa forma.
Cuidado ao copiar e colar o cod da página do tuto, pois virá com codificação desnecessária.
Deves dar 2 cliques sobre a caixa de cod no tuto e assim ele ficará em formato texto e desta forma copiar somente o codigo.
Bons estudos, se não der manda aí mais um coment.
abril 26th, 2012 - 14:02
ROBERTO, nais uma vez muito obrigado, depois de rever seu tutorial e refazer algun passos agora deu certo quanto ao cadastro já está certinho.
minha outra dúvida é comrrelação a área do usuário, não estou conseguindo fazer com que cada usuário tenha sua área, todos abrem a mesma página de teste (area_restrita.php), o que preciso mudar para resolver isso?
mais uma vez muito obrigado e desclupa minha ignirância.
abril 26th, 2012 - 14:57
Entenda que se no arquivo area_restrita.php quando acessado com sucesaso após lçogin, vc ve o seu nome na mensagem de olá.
Se outro usuário acessar esse mesmo arquivo logado com os dados dele ele verá o nome dele.
Está entendendo a lógica?
Quando um usuário ‘loga’, este tem disponível numa session o seu respectivo ID que está cadastrado no banco de dados.
Tendo o ID, é possível fazer a consulta no banco de dados e exibir toos os dados baseado no ID.
Obviamente cada ID refere-se à dados unicos de cada usuário, sendo assim cada usuário verá apenas os seus próprios dados.
Com isso vc pode montar um formulário e definir os VALUES dos inputs com os dados vindos da consulta no banco de dados.
Vc pode ir mais além… caso tenha outros sistemas que utiliza banco de dados, pode relacionar o conteúdo com o ID da tabelka de usuários, assim cada user pode ter mais opções exclusivas, como galeria de imagens, postagens, etc… de acordo com os outros sistemas que venha a relacionar.
Enfim… tua criatividade e conhecimento da linguagem é teu limite… ultrapasse essa linha e você faz qualquer coisa.
Bons estudos
maio 10th, 2012 - 14:42
ROBERTO, tudo bem?
não estou conseguindo enviara arquivos para o sevidor SQL!!
vc tem algum código para enviar arquivos para o servidor SQL?
1º
Descrição Arquivo
Descrição
Arquivo
2º
require(“dbconnect.inc.php”);
$arquiivo = $_FILES['arquivo']['tmp_name'];
$tamanho = $_FILES['arquivo']['size'];
$tipo = $_FILES['arquivo']['type'];
$nome = $_FILES['arquivo']['name'];
$titulo = $_POST['titulo'];
if ( $arquivo != “none” )
{
$fp = fopen($arquivo, “rb”);
$conteudo = fread($fp, $tamanho);
$conteudo = addslashes($conteudo);
fclose($fp);
$qry = “INSERT INTO arquivos VALUES
(0,”$nome”,”$titulo”,”$conteudo”,”$tipo”)”;
mysql_query($qry);
if(mysql_affected_rows($conn) > 0)
print “O arquivo foi gravado na base de dados.”;
else
print “Não foi possível gravar o arquivo na base de dados.”;
}
else
print “Não foi possível carregar o arquivo para o servidor.”;
3º
require(“dbconnect.inc.php”);
$qry = “SELECT id, nome, titulo, tipo FROM arquivos”;
$res = mysql_query($qry);
while($fila = mysql_fetch_array($res))
{
print “$fila[titulo]
$fila[nome] ($fila[tipo])
Fazer Download
“;
}
o que estou fazendo errado..?
se vc tiver outra maneira mais simples eu agradeço…
maio 10th, 2012 - 15:12
Tudo, acredsito que esteja fazendo tudo errado.
Mais simples? Google, ‘tutorial upload arquivos gravar banco de dados mysql’
Sua dúvida não diz respeito ao tutorial e confesso tambémq ue seu código está muito confuso.
O erro que mandou no coment anterior, na verade não é erro, e sim o código… ou seria melhor dizer… erro mesmo.
Enfim… talvez se me disser em detalhes o que deseja fazer eu possa auxiliar com pelo menos uma lógica mais limpa e simples.
De qualquer forma, Boa sorte … o google tem diversos resultados para esse esquema que deseja fazer.
maio 10th, 2012 - 15:48
ROBERTO, mil desculpas a minha ignorãncia e se não mim expresei muito bem,
realmente e código postado não refere-se ao seu.
vou tentar se o mais claro possivel pois realmente estou precisando muito dessa ajuda e vindo de um profissional como vc não tem preço.
1º Com seu código eu conseguir cadastrar e logar os osuários.
tudo bem…
ao logar aparece a seguinte menssagem…
>>
(Mensagem exemplo)
——————————————————————————–
Bem vindo 6 contabiliza@contabiliza.net.br!
Você está acessando área restrita para usuários cadastrados!
Seu nível de usuário é 0.
Com esse nível, você tem permisão de acesso à algumas áreas exclusivas do site.
Sair
>>>
tudo bem….
2º Como faço para carregar os arquivos e ligar com cada usuário..?
os arquivos são PDF, JPEG, etc…
Obrigado.
maio 10th, 2012 - 16:36
1º Ter uma pasta no servidor para onde será enviado os arquiovos através de um form e processado por script de upload
2º Vc precisa ter uma tabela no banco de dados mysql para armazenar o nome destes arquivos que acabaram de ser salvos na pasta mencionada acima
3º Nessa tabela que falo deverá ter campos para registrar valores como id do registro que será automátio (autoincrement), id do usuário que pode ser pego no valor da session aberta pelo user logado, conforme tutorial (é esse id que fará a relação dos arquivos com o determinado usuário dono do mesmo ID), nome do arquivo e já seria o sufuciente, pode ainda registrar o nome da pasta dos arquivos para não precisar declara-lo em todos arquivos que for exibir os arquivos, pode registrar a data do registro dos dados tbm.
Acho que é por aí o caminho @Jario.
abril 27th, 2012 - 12:48
Não estou conseguindo resolver estes errros…
Vi uma pergunta e resposta mas não funcionou…
Desde já agraedeço.
Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at /home/zmaisweb/www/novahome/index.php:9) in /home/zmaisweb/www/novahome/conteudo/angulocentral.php on line 2
Warning: Cannot modify header information – headers already sent by (output started at /home/zmaisweb/www/novahome/index.php:9) in /home/zmaisweb/www/novahome/LG/functions.php on line 7
maio 1st, 2012 - 15:15
Não se pode dar nenhum tipo de saída html, nem mesmos espaços antes de session_start().
Já respondi sobre isso aí nos coments e se procurar vai achar uma solução.
Se quiser dar uma vasculahda no google procure por ob_start() e ob_end_flush()
Bons estudos
maio 1st, 2012 - 12:15
Estou tentando testar seu sistema, mas de cara tenho a MSG
PHP Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in E:\home\mobilepet\Web\Banco8\cadastra.php on line 54
PHP Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in E:\home\mobilepet\Web\Banco8\cadastra.php on line 55
O que pode ser ?
maio 1st, 2012 - 15:20
Sem saber oque vc fez na linha 54 e 55 não tenho como ajudar.
Cole aí o cod da linha 50 até a 55.
Provavelmente a $var à que vc atribuiu mysql_query(“… não é a mesma que utilizou em mysql_fetch_array($var)
Aguardo
Bons estudos!
maio 1st, 2012 - 15:52
Puxa, que retorno rápido.. Obrigado amigo..
Eu não mudei nada em seu php, criei o banco da forma que vc falou, mas parece que o comando mysql_fetch_array(): supplied argument is not a valid MySQ , não pe suportado no meu Mysql..
/* Vamos checar se o nome de Usuário escolhido e/ou Email já existem no banco de dados */
$sql_email_check = mysql_query(“SELECT COUNT(email_id) FROM usuarios WHERE email=’{$email}’”);
$sql_usuario_check = mysql_query(“SELECT COUNT(usuario_id) FROM usuarios WHERE usuario=’{$usuario}’”);
$eReg = mysql_fetch_array($sql_email_check);
$uReg = mysql_fetch_array($sql_usuario_check);
$email_check = $eReg[0];
$usuario_check = $uReg[0];
//$email_check = mysql_num_rows($sql_email_check);
Já tentei ver seus tópicos e internet, mas não entendi o erro, conheço um pouco de banco, mas o básico…
Acho que vc poderia me ajudar em meu projeto, já tenho patente, e se puder me ajudar na parceria do negócio, podemos conversar.. o site é http://www.mobilpet.com.br
abs
Marcio
11 7871-8338 id 84*57382
maio 1st, 2012 - 16:41
Estranho…
Quanto a não ser suportado no seu MySQL é impossível… pois é uma função comum e necessária.
Entrarei em contato.
ps.: quanto ao site o link que me passou não existe.
Abraço
maio 1st, 2012 - 17:12
Desculpe, passei errado, faltou o e do Mobil, se quiser ligar podemos conversar ainda hoje.. . O projeto é algo mais complexo, o banco precisa ser modificado.. abs Marcio
maio 1st, 2012 - 18:53
@Marcio, te enviei um email anteriormente. Chegou a receber?
Da uma olhada no seu email do Hotmail.. cover…
Quanto ao seu projeto vamos conversar por email também, pelo menos inicialmente.
Abraço
maio 1st, 2012 - 23:49
@Marcio respondi por email, mas repasso aqui também para que fique de referência para outras pessoas que possam ter a mesma falta de atenção. Isso é normal.
Se você verificar melhor o cod do arquivo cadastra.php que me mandou por email, tem um erro na seguinte linha:
$sql_email_check = mysql_query("SELECT COUNT(email_id) FROM usuarios WHERE email='{$email}'");Verifique que na função
COUNT()você está fazendo referência ao campoemail_id, porém além desse campo não existir, o correto seria fazer referência ao campousuario_id, afinal a ideia ali é a contagem de IDs que possuem aquele email que foi utilizado no cadastro, ou seja uma verificação para não se repetir cadastros com mesmo email.Enfim… fiquei na dúvida e verifiquei se o arquivo ZIP que disponibilizo no final do tutorial estava com esse erro, mas não está.
Verifiquei o tutorial em si, e também está correto.
Sendo assim, acredito que se ajustar isso que indiquei, tudo ficará correto pra você.
Tente aí.
Bons estudos.
maio 4th, 2012 - 16:25
Boa tarde. Primeiramente parabéns pela iniciativa, tem me ajudado muito.
Consegui testar a maioria das funcionalidades aqui no meu computador e to aprendendo a usar o phpMyAdmin.
A parte do cadastro funciona ok, ele insere os cadastros na tabela, mas não recebo nenhum e-mail para ativar e assim não consigo fazer login! Mesmo abrindo a tabela e mudando manualmente o valor de “ativado” para 1 ele não reconhece nem faz login nunca!
Fiz muita confusão? rsrs sabe o que estou fazendo de errado?
Desculpa a dúvida boba,
Abraços!
maio 4th, 2012 - 18:29
A dúvida não é boba, mas tentei ajudar sobre isso em uma boa % dos coments acima.
Alguns servers não aceitam a funcção mail() do PHP e para tanto a saída seria usar PHPMAILER, uma classe PHP para envio SMTP autenticado, o qeu ajuda muito na hora de ser tratado como gente ou como lixo pelos servidores. Já fiz um tutorial para envio com PHPMAILER com contas do GAMAIL, talvez possa adapatar pra sua necessidade. http://www.sistemabasico.com.br/2011/01/20/como-enviar-email-localmente-com-php-apache-phpmailer-gmail-windows/
maio 8th, 2012 - 00:25
oi boa noite queria sabe como colocar esse arquivo no blog ou se tem como colocar no blog e como er não entendo e como fazer para bloqueia a pagina do blog obrigado espero resposta vlw
maio 8th, 2012 - 17:12
Olá @Show, primeiramente precisaria saber que blog é, mais especificamente que tipo de sistema de blog, ou seja, blogger, wordpress.com já adianto que não vai rolar aassim tão fácil, pelo menos eu desconheço a possibilidade, mas… sempre tem saída pra tudo, wordpress .org já é mais acessível, pois se tem acesso aos arquivos fontes do mesmo.
maio 8th, 2012 - 14:14
Oi Roberto! Nossa, muito obrigada pele post. Me ajudou bastante. Com ele pude aprender várias coisas!
Bom, eu queria saber se por acaso vc tem um post sobre imprimir noticias cadastradas em tela… é que estou fazendo um TCC e estou empacada nessa parte… e.e’
Desde já agradeço.
Att. Midori
maio 8th, 2012 - 17:18
Olá @Midori, por favor, me explique melhor o que você deseja, ficou muito vago.
Baseado no que mencionou posso imaginar mil situações e nenhuma ser de fato a sua dúvida.
Abraço
maio 11th, 2012 - 19:55
Olá, Roberto!
Gostaría de saber se há como cada usuário ser direcionado para uma página específica ao realizar o login.
maio 14th, 2012 - 10:57
Olá @Ulíscio, há como fazer sim… porém não vejo a necessidade disso, por isso te pergunto, qual a intenção com esse processo?
Sei de mil possibilidades do porque, mas dependendo, se for a mais óbica ou outras 890 possibildiades mais inusitadas, ainda não há necessidade desse redirecionamento para cada user para uma página específica. Todos podem ser redirecionadnos para uma mesma página/arquivo e neste arquivo processar para que seja exibido informações relacionadads com o user logado.
Se deres uma boa lida nos coments vai eprceber que tem muito amterial adicional, dúvias esclarecidas que também podem te auxiliar pelo menos com alguma ideia do que fazer.
Bons estudos
maio 14th, 2012 - 14:54
Olá, Roberto!
Obrigado pela resposta. Na verdade, cada cliente precisaria de sua página por que será exibido relatórios gerenciais de compras, vendas, contas em atraso e links para downloads de documentos. Então para mim, que não compreendo muito bem de programação, seria mais viável que, ao realizar login, cada usuário/ cliente seja redirecionado para uma página específica. Se souberes de algum tutorial do ‘sistemabasico.com.br’ que contenha esclarecimentos sobre minha dúvida e que você possa postar o link aqui, ficaria muito agradecido! Mas de qualquer forma, continuarei pesquisando nos comentários.
Mais uma vez, obrigado!
maio 14th, 2012 - 16:15
@Ulíscio, é como eu disse, essa tua necessidade está entre as 890 possibilidades que dispensam página/arquivo específico.
Você tem um arquivo específico ok? Este servirá de container para organização e exibição do conteúdo de cada user, baseado no ID deste user no banco de dados que estará registrado numa session a partir do login efetuado com sucesso.
No caso do tuto eu usei como exemplo um arquivo chamado area_restrita.php
Entenda que do princípio de que se o user está logado, o tutorial ensina que é gravado uma SESSION com o valor ID deste user… esse ID é único, pois é o registro deste user no banco de dados…
Não importa se é usuário ciclano ou beltrano ou fulano acessando o arquivo area_restrita.php, pois lá só será exibido dados vindos do banco de dados, referentes ao ID do user acessando.
O que eu ver não é o mesmo que vc vê, entende?
Sendo assim esses relatórios, links para downloads devem estar registrados em Banco de dados tbm, e relacionadaos com o id do user, assim cada user verá apenas seus relatórios, etc.
Não necessáriamente apenas um arquivo deve estar atrelado aos dados do usuário, vc pode ter mais de um arquivo para organizar e exibir dados, documentos, fotos, relatórios, links etc, ligados à este mesmo user, pois como a session está registrada com ID dele, enquanto ele estiver logado, não importa a página que ele estiver, poderá ser exibido material relacionadno apenas com este user logado e material público tbm, claro.
Inclusive pelo site todo vc condiciona ao user o conteúdo, pois para distinguir o material restrito deve condincionar ao fato do user estar logado ou não conforme ensino no tutorial com o arquivo functions.php que tem uma função que faz a verificação. Se está logado, obviamente o ID do user estará pronta pra ser usada e assim condicionar uma consulta SQL na clausula
WHERE iduser = ".$_SESSION[iduser]."(não lembro se usei estes nomes de campo e sessions, faça conforme está desenvolvendo aí).Espero ter dado uma luz.
Abraço e bons estudos
maio 15th, 2012 - 09:30
Bem, lhe sendo bem sincero, acho que essa não seria a maneira mais prática para mim de montar esse sistema de login, visto que tenho pouquíssima instrução nessa área. O jeito mesmo é estudar! Muitíssimo obrigado por sua ajuda; irei analisar o tutorial e tentar adaptá-lo as minhas necessidades.
Mais uma vez, obrigado!
maio 15th, 2012 - 10:55
Deixa te explicar @Ulíscio, não vejo forma mais prática. Eu não saberia fazer de outra forma. Qualquer outra forma seria uma gambiarra inviável.
Imagina a situação de vc ter 1000 usuários… como vc faria para ter 1000 redirecionamentos específicos??
É que você não tá pegando o espirito da coisa… mas é normal, só não pode desistir… eu não desisti e aprendi um pouco.
No início tudo era ‘Esperanto’ para mim, eu não entendia nada, porém depois que aprende a ler os códigos o entendimento melhora muito.
Da forma que indiquei simula infinitos redirecionamentos, tantos quanto for o número de users cadastrados.
Da mesma fora que se regisdra dados no banco de dados, se consulta os mesmos dados, alterando um pouco a sintaxe (forma de escreve) sql.
Estou bolando um curso básico de PHP (pago -> Baratinho) e vou ministrar via Web, quem sabe é a solução pra teus problemas.
Tudo que mencionei sobre essa solução está claro, mas vc precisa achar a ponta do carretel de linha, depois vc desenrola numa boa.
Fazer pra vc não seria o proprosito, interessante seria o entendimento e ir em frente tirando as dúvidas a cada passo.
Se for algum trsabalho que tenha que entregar, sugiro a contratação de alguém que possa fazer e te ensinar ao mesmo tempo.
Fiz isso algumas vezes nos primórdios.
Bons estudos!
maio 15th, 2012 - 20:52
Não é bem um trabalho que tenho que entregar. Eu gostaria de integrar esse sistema no site da minha empresa para oferecer mais comodidade aos nossos clientes, oferecendo, por exemplo, a 2ª via dos boletos bancários, notas fiscais e outros documentos.
Dependendo do valor cobrado pelo curso que você irá ministrar, posso pensar na possibilidade em me inscrever.
Mas de uma coisa é certa: não irei desistir mesmo de aprender esse conteúdo!
Desde já agradeço a presteza e a eficiência nas suas respostas e ajudas! Depois podes entrar em contato comigo por email!
Até logo!
maio 13th, 2012 - 18:24
Roberto preciso de sua ajuda.. Primeiramente ADOREI o sistema Parabéns. Bom eu estava testando o sistema e fui me cadastrar para ver ele funcionando, aconteceu que ele cadastra no banco de dados porem ele não envia o email.(Pelo menos eu não o encontrei aqui.)
E tambem gostaria de saber se tem algum problema em usar o EasyPHP?? Porque é o eu estou acostumada a usar e …
Obrigada
maio 14th, 2012 - 11:16
Oi @Jaqueline vou responder à todas as tuas questões apenas nesse coment ok?
Quanto ao email, se der uma analisada em coments anteriores pode achar uma solução viável, muitos passam por esse problema de acordo com o servidor que utilizam. Ainda mais se estiver testando localmente, pois vai precisar de um servidor de envio, acredito que a utilização do phpMailer seja a solução amsi apropriada ao invés da função mail().
Já postei um tutorial de envio de email com PHPMAILER localmente aqui no site… podes utiliza-lo para envio local e com adaptações simples pode usar remotamente também.
Quanto ao EasyPHP, nunca utilizei nenhum pacote integrado destes, e não recomendo nem pra iniciantes. Mas se ainda assim preferir utilizar, acredito que não terá problemas nenhum se o mesmo estiver bem instalado e funcionando perfeitamente, e nessa situação de utilização local do sistema, para estudo ou qualquer outra forma, se faz necessário o PHPMAILER e a forma que ensino no tutorial citado acima.
Quanto ao erro gerado na linha 194, se puder postar a menssagem de erro na integra eu agradeço, só assim podrerei ajudar, poisa esse erro foi gerado pelo teu cod e não o apresentado no tutorial, sendo assim não consigo reproduzi-lo.
Fico no aguardo.
Bons estudos!
maio 14th, 2012 - 22:12
Muito obrigada por estar me ajudando primeiro de tudo né. :)
Bom os erros que aparecem são esses.
Quando eu vou cadastrar no formulario
Notice: Undefined variable: pass in H:\Jaqueline\Login e Senha\sistema-cadastro-login-sessions-php-mysql\cadastra.php on line 118
Warning: mail(): Failed to connect to mailserver at “127.0.0.1″ port 25, verify your “SMTP” and “smtp_port” setting in php.ini or use ini_set() in H:\Jaqueline\Login e Senha\sistema-cadastro-login-sessions-php-mysql\cadastra.php on line 194
Foi enviado para seu email – ( o email que eu digitei ) um pedido de confirmação de cadastro, por favor verifique e sigas as instruções!
Mas ele não aparece. :(
Ai ele pega e registra a senha no banco, tudo direitinho.
Quando eu peço pra ele gerar uma nova senha aparece isso:
Notice: Undefined variable: pass in H:\Jaqueline\Login e Senha\sistema-cadastro-login-sessions-php-mysql\gerar_nova_senha.php on line 60
Warning: mail(): Failed to connect to mailserver at “127.0.0.1″ port 25, verify your “SMTP” and “smtp_port” setting in php.ini or use ini_set() in H:\Jaqueline\Login e Senha\sistema-cadastro-login-sessions-php-mysql\gerar_nova_senha.php on line 93
Sua nova senha foi gerada com sucesso e enviada para o seu email!
Por favor verifique seu email!
Ele é alterada no banco, mas não chega nada tambem no email. HELP Please.
Obrigada e desculpa estar te pertubando, eu fiquei muito tempo analisando esse codigo até uma hora que não deu mais…
maio 15th, 2012 - 02:07
@Jaqueline teu problema na verdade é simples… vamos por partes.
A mensagem de ‘Notice:’ não é um erro que faz o script falhar, é literalemtne uma notificação de que, no caso, uma variável está sendo chamada para exibir seu valor sem ter sido testado se a variável existe e que a mesma temnha um valor, mesmo que vazio ou nulo. Ocorre porque o tuto é de anos atrás e os servidores e configurações do PHP ignoravam isso.
Para resolver basta dar uma lida em alguns coments acima do teu que vai achar alguma ajuda, pois já respondi diversas vezes sobre isso.
Quanto ao ‘Warning: mail():’ esse sim é um erro, está te avisando que a função mail() não pode ser processada justamente porque vc está testando o sistema localmente e como você não tem um server SMTP para envios de email configurado no seu servidor, esse erro será gerado sempre. Na minha resposta anterior eu havia falado sobre a utilização da classe phpMailer para envio autenticado de emails de forma local usando emails do gmail… da uma olhada nos coments acima tbm, já respondi diversas vezes sobre isso e talvez possa achar alguma conversa que ajude um pouco mais.
Bons estudos.
maio 15th, 2012 - 10:55
olá, gostaria se possível, ajuda com um trabalho de faculdade, como dicas e sugestões do que fazer para:
criar um site fictício com os seguintes requisitos:
1. Área administrativa (login de acesso) para inserção, edição e exclusão de dados.
2. Apresentação visual (layout) utilizando Tableless, ou seja, Folhas de Estilos, CSS. NÃO utilizem tabelas (table) para criar o layout.
3. Banco de Dados para a manipulação dos dados e dos usuários que terão acesso à área restrita (obrigatoriamente Firebird – não será aceito MySql ou qualquer outro SGBD).
4. Área administrativa que permita a inserção, edição e exclusão das notícias.
5. Formulário de Fale conosco, não necessariamente precise estar funcionando,
6. Upload de imagens ou arquivos (pode-se fazer o upload de foto no cadastro de usuários, por exemplo).
7. Utilize a linguagem JavaScript para validar os campos dos formulários (Fale Conosco e cadastros).
8. Topos, rodapés, laterais e o arquivo de conexão que se repetem em várias páginas devem ser criados uma única vez e devem ser incluídos através do método include, nas páginas que o utilizam.
Não sei por onde começar, a resolver, por isso estou procurando ajuda.
maio 15th, 2012 - 15:28
WTF…rs*
Vc não está pedindo ajuda e sim uma formação profissional rs*
Te respondi no email, vamos ver no que dá.
;)
maio 16th, 2012 - 14:00
ROBERTO tudo bem.
kara mais uma vez estou precisando de sua ajuda…
1º tenho essa função para ger senha (seu tutorual) como faço um formulário para que o usuário possa alterar essa senha a seu gosto…?
// Se tudo OK vamos gerar uma nova senha e enviar para o email do usuário!
function makeRandomPassword(){
$salt = “012345678901234567890123456789″;
srand((double)microtime()*1000000);
$i = 0;
while ($i <= 5){
$num = rand() % 33;
$tmp = substr($salt, $num, 1);
$pass = $pass . $tmp;
$i++;
}
return $pass;
}
obrigado..
maio 16th, 2012 - 15:11
@Jairo essa função é pra gerar senha randômica e automática.
Para fazer como vc deseja, deverá além de desativar a utilização dessa função, alterar varios arquivos interligados.
Se não fizer em todos os arquivos necessários obterá erros diversos.
Deves alterar todos arquivos relacionados com a senha, tanto o arquivo de cadastro como o arquivo de gerar nova senha, como tbm o arquivo de verificar usuário quando é feito o login e mais alguns.
Perceba também que além da senha ser gerada automaticamente é passado por uma função nativa do PHP, no caso a MD5(), que criará um hash da string, ou seja uma nova string de 32 caracteres como se fosse uma criptografia da mesma, porém sem caminho inverso, ou seja, uma vez esquecida a senha, só gerando outra. Não recomendo retirar essa função do script por motivos de segurança.
Para alterar tais funcionalidades que deseja, precisa prmeiro entender bem todo o código do sistema e não terá problemas.
Faça uma leitura e procure captar como ele funciona e o que faz oque.
Entenda que a cada login que um user faz o dado SENHA entrado no input do form é trasnformado nesse hash de 32 caracteres e só depois comparado com o que está no banco de dados, pois o que está lá é apenas o hash da senha gerada no cadastro.
- No Form de cadastro então deverá adicionar um campo para senha.
- No arquivo cadastrar.php deverá retirar aquela função de gerar senha e passar o que vier do form enviar para o user por email e passar pela MD5() e gravar no bd.
- No arquivo de gerar nova senha deverá solicitar o email como já é feito, enviar para o user um link para este gerar uma nova senha e nesse arquivo oferecer o campo de senah para ele crair uma nova.
- Ajustar o arquivo que receberá essa nova senha, retirando a função de gerar senha, envair a senha para o user e passar pelo MD5() e gravar no bd.
- No arquivo que verifica o login, e todos os ouitros que mencionaei deverá sempre utilizar o MD5() como já é feito na semnha gerada automaticamente, porém agora será na senha criada manualmente.
Obs.: Como é criado um hash de 32 caracteres para senha,, obrigatóriamente o campo senha no banco de dados deverá ter o valor de VARCHAR 32
Se resolver numa ação infeliz de retirar a função MD5(), deverá dar atenção a todos esses arquivos que mencionei acima.
Espero que esse coment ajude a todos que desejam fazer essa alteração e não sabem como começar ou já tentaram e não sabem porque deu errado.
Se quiser pagar um RedBull eu agradeço ;)
Bons estudos!