Ir para conteúdo

POWERED BY:

Arquivado

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

MadPatryk

Porque nao verifica direito?

Recommended Posts

tipo galera, eu to com um script de login aki...

mas tipo, na hora da verificação com o bd, eu to com problemas...

eh ki na hora de validar, eu soh to conseguindo validar ou se o usuário existe ou nao na table, ou se a senha pro user eh valida...

eu ja tentei de tudo!!!

to kebrando o coco aki!!!

 

segue ai o script... quem puder me ajudar!!!

 

 

index.php

PHP [/tr][tr]

<?

ob_start();

session_start("iLogin");

include "config.php";

if ($id == "login")

{

if ($_POST[login] == "" or $_POST[senha] == "")

{

header("location:$PHP_SELF?id=blank_fields");

}

else

{

$con=pg_pconnect("host=$hostdb dbname=$banco user=$userdb");

$sql="select * from $table WHERE login='$login' and senha='$senha'";

$result=pg_query($sql);

$linhas=pg_num_rows($result);

for($x=0;$x<$linhas;$x++)

{

$id=pg_fetch_result($result,$x,0);

$login_bd=pg_fetch_result($result,$x,1);

$senha_bd=pg_fetch_result($result,$x,2);

$acc_type=pg_fetch_result($result,$x,3);

if ($login==$login_bd AND $senha==$senha_bd)

{

session_name();

session_destroy();

session_register("login","senha","acc_type"); //Registra as variáveis na sessão

header("Location:$pagina"); //Redireciono para a página principal

exit;

}

}

}

if ($linhas != 0)

{

if ($_POST[senha] != $senha_bd) header("location:$PHP_SELF?id=pass_error");

}

else

{

header("location:$PHP_SELF?id=login_error");

}

}

 

 

// Switch com as variaveis pros links $id...

switch ($id)

{

case"login_error":

echo "<center><b>Usuário Inválido!</b></center>";

break;

case"pass_error":

echo "<center><b>Senha Inválida!</b></center>";

break;

case"full_error": // esse case aki

echo "<center><b>Usuário e Senha Inválidos!</b></center>"; // eu nao to usando

break; // mas acho ki pretendo usar... :P

case"blank_fields":

echo "<center><b>Ambos os campos são obrigatórios por favor preenche-os</b></center>";

break;

case"logout":

session_destroy();

print <<<HTML

<center>Sessão Finalizada<p>

<a href="#" onClick="location='index.php'" style="text-decoration:none">Voltar</a>

</center>

HTML;

exit;

break;

}

 

if(!(session_is_registered("login") AND session_is_registered("senha")))

{

print <<<HTML

<br>

<center>

Preencha os campos abaixo:

<FORM ACTION="$PHP_SELF?id=login" method=post>

Login:  <INPUT TYPE=text NAME=login value=""><br>

Senha: <INPUT TYPE=password NAME=senha value=""><br><br>

<input type=submit value="Ingressar">

</FORM>

</center>

HTML;

exit;

}

else

{

header("Location:$pagina");

}

ob_end_flush();

?>

[/tr]

 

 

valeus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola amigo, eu dei umas dicas pra você nesse script tenta fazer caso nao consiga ou der erro posta ai

 

ob_start();

//use session_start()

session_start("iLogin");

//nao inclua a conexao assim abra uma conexao com o banco de dados só na hora de usar e feche em seguida

 

include "config.php";

 

// de onde vem essa $id ? use $_GET["id"] e você primeiro tem que testar se existe ela com isset()

if ($id == "login")

{

//aqui você esqueceu das aspas $_POST["login"] e $_POST["senha"]

if ($_POST[login] == "" or $_POST[senha] == "")

{

//aqui você esta usando uma variavel que ficou obsoleta use no lugar a $_SERVER["PHP_SELF"]

header("location:$PHP_SELF?id=blank_fields");

}

 

else

{

$con = pg_pconnect("host=$hostdb dbname=$banco user=$userdb");

 

// aqui esta sem segurança nenhuma só usar um sql injection que qualquer um entra no seu site

//procure filtrar os dados e passar por parametros,e criptografar a senha com md5

//e use esse tipo de busca ela é mais rapida nesse caso e o mais correto veja:

$re = pg_query("select count(*) as total from $table WHERE login='$login' and senha='$senha'");

$linhas = pg_fetch_result($re, 0, "total");

 

if ($total != 0) {

 

//aqui use as variaveis de sessao aquelas que você tava usando estao obsoletas

$_SESSION["login"] = $login;

$_SESSION["senha"] = $senha;

 

//daonde esta vindo a $pagina? pegue ela com $_POST ou $_GET se for get

header("Location:$pagina");

exit;

}

}

}

if ($linhas == 0)

{

//aspas $_POST["senha"] e use $_SERVER["PHP_SELF"]// aqui prefira destruir a sessao em vez de setar o id

if ($_POST[senha] != $senha_bd) header("location:$PHP_SELF?id=pass_error");

}

else

{

//use $_SERVER["PHP_SELF"] e nao sete o id assim e redirecione pra uma pagina apropriada

header("location:$PHP_SELF?id=login_error");

}

}

 

//aqui pega o $id com $_GET["id"]

switch ($id)

{

case"login_error":

echo "

Usuário Inválido!
";

break;

case"pass_error":

echo "

Senha Inválida!
";

break;

case"full_error": // esse case aki

echo "

Usuário e Senha Inválidos!
"; // eu nao to usando

break; // mas acho ki pretendo usar...

case"blank_fields":

echo "

Ambos os campos são obrigatórios por favor preenche-os
";

break;

case"logout":

session_destroy();

print

Sessão Finalizada

 

Voltar

HTML;

exit;

break;

}

//nao use essas variaveis use $_SESSION["login"]

if(!(session_is_registered("login") AND session_is_registered("senha")))

{

print

 

 

Preencha os campos abaixo:

Login: 

 

Senha:

 

 

HTML;

exit;

}

else

{

header("Location:$pagina");

}

ob_end_flush();

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu fiz uq c disse...

mas num funfou... :( !!!!

 

 

deu a mesma coisa...

 

ve ai como ficou:

 

PHP [/tr][tr]

<?

ob_start();

session_start("iLogin");

include "config.php";

if ($_GET["id"] == "login")

{

if ($_POST["login"] == "" or $_POST["senha"] == "")

{

header("location:$_SERVER[php_SELF]?id=blank_fields");

}

else

{

$con=pg_pconnect("host=$hostdb dbname=$banco user=$userdb");

$re = pg_query("select count(*) as total from $table WHERE login='$login' and senha='$senha'");

$linhas = pg_fetch_result($re, 0, "total");

if ($total != 0)

{

//aqui use as variaveis de sessao aquelas que você tava usando estao obsoletas

$_SESSION["login"] = $login;

$_SESSION["senha"] = $senha;

 

//daonde esta vindo a $pagina? pegue ela com $_POST ou $_GET se for get

header("Location:$pagina");

exit;

}

}

}

if ($linhas == 0)

{

//aspas $_POST["senha"] e use $_SERVER["PHP_SELF"]// aqui prefira destruir a sessao em vez de setar o id

if ($_POST["senha"] != $senha_bd) header("location:$_SERVER[php_SELF]?id=pass_error");

}

else

{

//use $_SERVER["PHP_SELF"] e nao sete o id assim e redirecione pra uma pagina apropriada

header("location:$_SERVER[php_SELF]?id=login_error");

}

 

 

 

// Switch com as variaveis pros links $id...

switch ($_GET["id"])

{

case"login_error":

echo "<center><b>Usuário Inválido!</b></center>";

break;

case"pass_error":

echo "<center><b>Senha Inválida!</b></center>";

break;

case"full_error": // esse case aki

echo "<center><b>Usuário e Senha Inválidos!</b></center>"; // eu nao to usando

break; // mas acho ki pretendo usar... :P

case"blank_fields":

echo "<center><b>Ambos os campos são obrigatórios por favor preenche-os</b></center>";

break;

case"logout":

session_destroy();

print <<<HTML

<center>Sessão Finalizada<p>

<a href="#" onClick="location='index.php'" style="text-decoration:none">Voltar</a>

</center>

HTML;

exit;

break;

}

 

if(!($_SESSION["login"] AND $_SESSION["senha"]))

{

print <<<HTML

<br>

<center>

Preencha os campos abaixo:

<FORM ACTION="$_SERVER[php_SELF]?id=login" method=post>

Login:  <INPUT TYPE=text NAME=login value=""><br>

Senha: <INPUT TYPE=password NAME=senha value=""><br><br>

<input type=submit value="Ingressar">

</FORM>

</center>

HTML;

exit;

}

else

{

header("Location:$pagina");

}

ob_end_flush();

?>

[/tr]

 

valeus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos por partes pega todas variaveis primeiro

 

exemplo:

 

$pagina = $_POST["pagina"];

$login = $_POST["login"];

$senha = $_POST["senha"];

 

 

 

e nessa parte faz assim:

 

header("location: ".$_SERVER["PHP_SELF"]."?id=blank_fields");

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok! ;-)

tipo, eu entendi mais ou menos...

ve ai como ficou...

 

PHP [/tr][tr]

<?

ob_start();

session_start("iLogin");

include "config.php";

$id = $_GET["id"];

$login = $_POST["login"];

$senha = $_POST["senha"];

$self = $_SERVER["PHP_SELF"];

if ($id == "login")

{

if ($login == "" or $senha == "")

{

header("location:".$_SERVER["PHP_SELF"]."??id=blank_fields");

}

else

{

$con=pg_pconnect("host=$hostdb dbname=$banco user=$userdb");

$re = pg_query("select count(*) as total from $table WHERE login='$login' and senha='$senha'");

$linhas = pg_fetch_result($re, 0, "total");

if ($total != 0)

{

//aqui use as variaveis de sessao aquelas que você tava usando estao obsoletas

$_SESSION["login"] = $login_bd;

$_SESSION["senha"] = $senha_bd;

 

//daonde esta vindo a $pagina? pegue ela com $_POST ou $_GET se for get

header("Location:$pagina");

exit;

}

}

}

if ($linhas == 0)

{

//aspas $_POST["senha"] e use $_SERVER["PHP_SELF"]// aqui prefira destruir a sessao em vez de setar o id

if ($_POST["senha"] != $senha_bd) header("location:".$_SERVER["PHP_SELF"]."?id=pass_error");

}

else

{

//use $_SERVER["PHP_SELF"] e nao sete o id assim e redirecione pra uma pagina apropriada

header("location:".$_SERVER["PHP_SELF"]."?id=login_error");

}

 

 

 

// Switch com as variaveis pros links $id...

switch ($id)

{

case"login_error":

echo "<center><b>Usuário Inválido!</b></center>";

break;

case"pass_error":

echo "<center><b>Senha Inválida!</b></center>";

break;

case"full_error": // esse case aki

echo "<center><b>Usuário e Senha Inválidos!</b></center>"; // eu nao to usando

break; // mas acho ki pretendo usar... :P

case"blank_fields":

echo "<center><b>Ambos os campos são obrigatórios por favor preenche-os</b></center>";

break;

case"logout":

session_destroy();

print <<<HTML

<center>Sessão Finalizada<p>

<a href="#" onClick="location='index.php'" style="text-decoration:none">Voltar</a>

</center>

HTML;

exit;

break;

}

 

if(!($_SESSION["login"] AND $_SESSION["senha"]))

{

print <<<HTML

<br>

<center>

Preencha os campos abaixo:

<FORM ACTION="$self?id=login" method=post>

Login:  <INPUT TYPE=text NAME=login value=""><br>

Senha: <INPUT TYPE=password NAME=senha value=""><br><br>

<input type=submit value="Ingressar">

</FORM>

</center>

HTML;

exit;

}

else

{

header("Location:$pagina");

}

ob_end_flush();

?>

[/tr]

 

 

tipo, o $pagina eu nao acho ki seja necessario mexer, pois eu nao to tendo problemas com ele... mas ele eh _POST...

 

 

valeus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

putz... agora, além de continuar com o erro, ele nao deixa logar nem com o user certo e a senha certa... acho ki essa segurança do script ficou forte demais!!! hauhauhau heheheagora serio...poutz kra... ta sinistro!!!tipo, te falar... c(ou o pessoal ai!) nao conhece(m) um exemplo simples, de um script ja pronto nao?valeus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo o que ta acontecendo é que você nao ta entendendo como fazer isso

mas eu fiz um script e ve se você consegue entender

eu testei com o mysql, mas só você mudar pro postgre

 

index.html

<script language="javascript">

 

function checa_formulario(login){

 

if (login.nome.value == ""){

  alert("Nao deixe o nome em branco");

   login.nome.focus();

return (false);

}

 

if (login.senha.value == ""){

  alert("Nao deixe a senha em branco!!!");

   login.senha.focus();

return (false);

}

}

 

.campo {

width:240px;

border:1px solid #036;

padding:0; /* Eliminar espaçamento no Firefox */

  }

.formulario{

position: relative;

 

font-family: Arial, Helvetica, sans-serif;

font-size:12px;

color:#036;

}

.news {

font-family: Arial, Helvetica, sans-serif;

font-size:12px;

color:white;

padding:2px 5px;

font-weight:bold;

letter-spacing:5px;

text-align:center;

background-color:red;

border:1px solid #036;

}

 

.botao {

font-family: Arial, Helvetica, sans-serif;

font-size:12px;

color:#fff;

font-weight:bold;

background-color:red;

margin:20px 0 5px 5px;

cursor: pointer ;

}

 

 

Login

 



 

 

 

 

 


 


 

login.php:

 

 

session_start();

 

if(isset($_POST)){

 

$nome  = strip_tags($_POST["nome"]);

$senha = strip_tags($_POST["senha"]);

 

}

 

//conexao com seu banco;

 

$re    = mysql_query("select count(*) as total from tabela where nome = '$nome' and senha = md5('$senha')");

$total = mysql_result($re, 0, "total");

 

if ($total == 0) {

 

echo "Usuario nao cadastrado";

exit;

 

}

else{

 

 

$_SESSION['nome']  = $nome;

$_SESSION['senha'] = $senha;

 

header("Location: principal.php");

 

}

 

 

?>

 

principal.php:

 

session_start();

 

//verifica se a sessao foi criada

if(isset($_SESSION)){

 

$nome  = $_SESSION["nome"];

$senha = $_SESSION["senha"];

 

}

else{

//senao ele volta pra pagina de login

header("Location: index.html");

exit;

 

}

 

//conexao com seu banco;

 

$re    = mysql_query("select count(*) as total from tabela where nome = '$nome' and senha = md5('$senha')");

$total = mysql_result($re, 0, "total");

 

//se o usuario nao esta no banco volta pra pagina de login

if ($total == 0) {

 

header("Location: index.html");

exit;

}

//se esta tudo certo abre a pagina

else{

 

echo "Bem-vindo";

 

 

 

}

 

 

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra... incrivel mas... seu script deu o mesmo erro ki o meu ta dando!!!nussta sinistro... vo continuar kebrando o coco aki...valeus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

mesma coisa ki o meu erro...

na hora de validar, eu soh to conseguindo validar ou se o usuário existe ou nao na table, ou se a senha pro user eh valida...

 

valeus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ela ta encriptada com o encrypt do mysql...mas tipo... nada haver(por partes)... prq se fosse assim, o script nao retornaria dizendo ki o usuário nao existe, sendo ki ele existe...sacou?dai ki ta f******!!! hehehevaleus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo esse sistema é muito simples mas primeiro você precisa entender como ele funciona

 

por exemplo quando você digita no form nome e senha e clica em enviar

 

os dados vao pra outra pagina dai você pega os dados com $_POST

 

dai só fazer um select simples

 

SELECT * FROM tabela WHERE nome = '$nome' and senha = '$senha'

 

traduzindo:

 

SELECIONE TUDO da tabela aonde nome = $nome e senha = $senha

 

se a pessoa digitou certo vai dar certo

 

agora o que você precisa fazer é prender a testar seu codigo

 

teste os dados vindos do post verifique se esta pegando certo

 

entre no administrador de banco e faça um select por la pra testar

 

e por ai vai ate você descobrir aonde esta o erro

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.