Ir para conteúdo

POWERED BY:

Arquivado

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

Vivi Maximiano

Problema com o login

Recommended Posts

Gente fiz uma tela de login já pesquisei em vários sites, tudo muito complicado um amigo meu me ajudou a fazer o código mais quando digito o login e a senha não entra na tela de cadastro só da erro porque será, lembrando q num sei mto de php ...

 

essa é a tela de login.php

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link media="screen" rel="stylesheet" href="estilo.css" />
<title> Login </title>
</head>
<body>
<?php
if(!empty($_GET['status']) && $_GET['status']== 'erro'){
echo"<h3> Login/Senha incorretos tente novamente </h3>";
}
?>
<div id="fundoForm">
<div id="topFundoForm"><img class="personalizaImg" src="enfeite.png" /></div>
<div id="conteudoFundoForm">
<fieldset>
<form action="validaLogin.php" method="post">
<label>usuario</label><input type="text" name="nomusuario" id="nomusuario" />
<label>senha</label><input type="password" name="senusuario" id="senusuario" />
<form name="form_consulta" method="post" action="validar_captcha.php">
<label> digite o código </label><input name="codigo" type="text" id="codigo2" size="20">
                            <img src="codigo_captcha.php" alt="código captcha">
<br/>
<br/>
<input type="submit" value="login" />
</form>
</form>
</fieldset>
</div>
<br/>
<br/>
<div id="rodapeFundoForm"><img class="personalizaImg" src="enfeite.png" /></div>
</div>
<br/>
<br/>
<div id="rodape"><img src="logo_.png" /></div>
</body>
</html>

Esse é o arquivo validaLogin

 

 

<?php
$banco = 'test';
$usuario = 'root';
$senha = '';
$host = '127.0.0.1';
$conn = mysql_connect($host,$usuario, $senha) or die ('ERRO NA ROTINA DE CONEXÃO: '.mysql_error());
mysql_select_db($banco) or die ('ERRO AO SELECIONAR O BANCO DE DADOS: '.mysql_error());
// O trecho abaixo resolve problemas de acentuação
mysql_query("SET NAMES 'utf8'");
mysql_query("SET character_set_connection=utf8");
mysql_query("SET character_set_client=utf8");
mysql_query("SET character_set_results=utf8");
?>
<?php
$nomusuario = $_POST['nomusuario'];
$senusuario = md5($_POST['senusuario']);
if($conn == false){
conecta_banco($banco,$usuario,$senha,$host);
}
$query = mysql_query ("SELECT * FROM usuario WHERE nomusuario ='{$nomusuario}' AND ' senusuario = {$senusuario}'",$conn);
$linha = mysql_num_rows ($query);
if($linha >0){
session_start();
$dados = mysql_fetch_assoc ($query);
$_SESSION['senusuario'] = $dados['senusuario'];
$_SESSION['nomusuario'] = $dados['nomusuario'];
header ("Location: ../login/tcc/cadastro_comp.php");
} else {
header ("Location: login.php?status=erro");
}
mysql_close($conn);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Vivi,

 

se você não conhece muito php é bom dar uma olhadinha no youtube, tem vários tutoriais ensinando passo a passo como criar uma página de login. Fica mais fácil de entender do que se postarmos um código aqui pra você.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá brhvitor6....

bom olha tenho certeza que num é dos melhores que vc viu, mais pra quem nunca mexeu com php, até que ta indo, no meu curso tecnico as aulas de php são só teóricas porque pratica mesmo não vimos o que fiz até agora é com ajuda de tutorias, videos e ajuda de amigos e pesquisas axo q pra quem não entende nada ter ja o sistema de cadastro e de consulta montado em 3 meses pra mim considero uma vitória, bom eu pedi a um amigo que arruma-se o q eu fiz ele disse q na casa dele funciono mais aki não, acredito que seja a nomenclatura que ele usa ....



Olá rockrgo então o problema é que tudo que eu ja tentei... fica nisso aí rsrsrsrsrs

Olha sei que num entendo muito mais isso é um trabalho de tcc que eu preciso montar, sei que num tenho muita base mas acredito que dá eu num sabia nada de php e com pesquisas consegui monta a tela de cadastro e consulta ... eu só queria sabe no que eu to errando mais tudo bem obrigada mesmo assim ...



Mesmo assim obrigada aos dois =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite Vivi

 

Tente algo assim para começar.. bem basico e vá avançando em questao de cript. da senha e do login, inicialização de vetores em SSL , PDO para cone. com o banco e algumas expressoes regulares para proteger o banco

 

<?php
mysql_connect("host","login","senha")or die('Erro ao conectar');
mysql_select_db("db")or die('erro ao selecinar banco');

if(!isset($_POST['login']) || !isset($_POST['senha']))
	die('preencha todos os campos');
	
$login = mysql_real_escape_string($_POST['login']);
$senha = mysql_real_escape_string($_POST['senha']);

$query = mysql_query ("SELECT * FROM usuario WHERE nomusuario ='$login' AND senusuario = '$senha';") or die('Erro ao buscar no banco');

if(mysql_num_rows($query) == 1)
{
	//sucesso
}
else
{
	//erro
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom depois da ajuda do brhvitor6 eu fiz o código da seguinte forma:

 

<?php 
require "scripts/conexao.php";	

?>
	
<?php

$nomusuario = $_POST['nomusuario'];
$senusuario = md5($_POST['senusuario']);

$query = mysql_query ("SELECT * FROM usuario WHERE nomusuario ='$nomusuario' AND senusuario = '$senusuario';") or die('Erro ao buscar no banco');

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

	 header ("Location: ../login/tcc/cadastro_comp.php");
}
else{
	header ("Location: login.php?status=erro");
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vivi para deixar um pouco mais claro vou explicar algumas coisas:

 

O mysql_num_rows retorna quantos resultados voltaram de seu request ao mysql, mas se não retorna um valor booleano por que compara com 1?

 

Simples, quando é feita uma injection em sua query ele retorna mais de um valor no mysql_num_rows, assim não evitamos o erro, mas evitamos a passagem do hacker

 

O campo senha não precisa de proteção pois vc esta codificando ele em md5 mas o campo login precisa de um tratamento para impedir caracteres que causem um erro de sintaxe.

 

 

Do jeito que o codigo ficou nesse seu ultimo post ele esta funcionando corretamente?

 

edit...

 

não é necessario abrir um <?php só apra o require, você pode deixar tudo junto assim:

 

<?php 
require "scripts/conexao.php";

$nomusuario = $_POST['nomusuario'];
$senusuario = md5($_POST['senusuario']);

$query = mysql_query ("SELECT * FROM usuario WHERE nomusuario ='$nomusuario' AND senusuario = '$senusuario';") or die('Erro ao buscar no banco');

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

	 header ("Location: ../login/tcc/cadastro_comp.php");
}
else{
	header ("Location: login.php?status=erro");
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Noite brhvitor6, olha está funcionando sim graças ao exemplo básico que você me passou e algumas alterações cheguei até aqui, e agradeço de coração, porque sei o quanto é corrido e muito obrigada por compartilhar o que sabe,

Sem querer ser ignorante mais como eu disse não sei muito de php então teria que colocar como você colocou no primeiro código

$login = mysql_real_escape_string($_POST['login']);

 

Seria isso ? e muitoooooooooooo obrigada =)

 

Agora o código ta assim e está funcionando ...

<?php 
require "scripts/conexao.php";

$nomusuario = mysql_real_escape_string($_POST['nomusuario']);
$senusuario = md5($_POST['senusuario']);

$query = mysql_query ("SELECT * FROM usuario WHERE nomusuario ='$nomusuario' AND senusuario = '$senusuario';") or die('Erro ao buscar no banco');

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

	 header ("Location: ../login/tcc/cadastro_comp.php");
}
else{
	header ("Location: login.php?status=erro");
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, o mysql_real_escape_string remove alguns caracteres e o principal (e diria o pior de todos) que é o ' (aspas simples) que não é necessario na senha pois esta sendo convertida em md5

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php

             // Inicia a sessao - isso permite obter acesso ao vetor $_SESSION e verificar se dentro dele
             // existe o valor 1 dentro do elemento login_ok


              // Se o elemento login_ok NAO foi criado ( isset) dentro do vetor $_SESSION e 
            if ( ! isset($_SESSION['login_ok']  || $_SESSION['login_ok'] != 1 ){
                            
                               header("Location: login.php");
                              exit();

           }

?>                         

 

Alguém pode me dizer porque do erro nessa parte que está em rouxo no código desde já obrigada =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

<?php

             // Inicia a sessao - isso permite obter acesso ao vetor $_SESSION e verificar se dentro dele
             // existe o valor 1 dentro do elemento login_ok


              // Se o elemento login_ok NAO foi criado ( isset) dentro do vetor $_SESSION e 
            if ( !isset($_SESSION['login_ok']  || $_SESSION['login_ok'] != 1 ){
                            
                               header("Location: login.php");
                              exit();

           }

?>                         

 

Alguém pode me dizer porque do erro nessa parte que está em rouxo no código desde já obrigada =)

 

 

 

ve se funciona !!

 

<?php

             // Inicia a sessao - isso permite obter acesso ao vetor $_SESSION e verificar se dentro dele
             // existe o valor 1 dentro do elemento login_ok


              // Se o elemento login_ok NAO foi criado ( isset) dentro do vetor $_SESSION e 
            if ( !isset($_SESSION['login_ok']  || $_SESSION['login_ok'] != 1 ){
           
                              $arq = "login.php";
                            
                               header("Location:" .$arq);
                              exit();

           }

?>                         

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.