Ir para conteúdo

Arquivado

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

Fabyo

Sistema de Login

Recommended Posts

Fabyo,

 

Tá dando esse erro na pagina de protecao:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at c:\arquivos de programas\apache group\Apache\htdocs\teste\protecao.php:2) in c:\arquivos de programas\apache group\Apache\htdocs\teste\protecao.php on line 3Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at c:\arquivos de programas\apache group\Apache\htdocs\teste\protecao.php:2) in c:\arquivos de programas\apache group\Apache\htdocs\teste\protecao.php on line 3Warning: Cannot modify header information - headers already sent by (output started at c:\arquivos de programas\apache group\Apache\htdocs\teste\protecao.php:2) in c:\arquivos de programas\apache group\Apache\htdocs\teste\protecao.php on line 36

você tem alguma idéia do que esta acontecendo?

 

protecao.php

<?session_start();//função anti sql injectionfunction anti_injection($txt){//Verifico se esta ativado magic_quotes caso esteja desativado uso a função addslashes$txt = get_magic_quotes_gpc() == 0 ? addslashes($txt) : $txt;//referencia://http://www.php.net/get_magic_quotes_gpc//http://www.php.net/addslashes// retiro da variavel esses caracteres (--, #, *,;) return preg_replace("@(--|\#|\*|;|=)@s", "", $txt); }function verifica_usuario($nome, $senha){//conecto ao servidor de banco de dados passo o nome do servidor usuario e senhainclude "Connections/conexao.php";/*faço uma pesquisa perguntando a quantidade de usuarios com o nome e a senha passada pelo usuario usando o count ele conta a quantidade de ocorrencias no select essa maneira é a forma mais rapida e correta desse tipo de pesquisa, muitas pessoas usam o select * from e pega com mysql_num_rows() dessa forma prejudica muito mais o acesso ao banco podendo travar se tiver muitos acessos simutaneos*/$re = pg_query("select count(*) as total from tb_usuario where nome = '$nome' and senha = md5('$senha')");//referencia: http://www.php.net/md5 e http://www.php.net/mysql_result$total = pg_fetch_result($re, 0, "total");pg_close();/* se o total for diferente de 1 é porque o usuario nao esta cadastrado usando dessa forma o resultado esperado sempre sera 1 porque você precisa tbm criar um sistema de cadastros que deixe apenas um usuario ser cadastrado evitando usuarios repetidos */if($total != 1){// redireciono para pagina de loginheader("Location: login.html");exit;} // se nao existir ja a sessao eu gravo elaif(!isset($_SESSION["dados"])){$dados["nome"] = $nome;$dados["senha"] = $senha;//gravo a sessao por padrao o php hj ja passa o serialize automaticamente nao precisa mais passar ela$_SESSION["dados"] = serialize($dados);} } //verifico se existe a sessao e ja pego os dados que nela contemif(isset($_SESSION["dados"])){$dados = unserialize($_SESSION["dados"]);$nome = $dados["nome"];$senha = $dados["senha"];verifica_usuario($nome, $senha);}else{//aqui eu verifico se o usuario esta vindo de um formulario e pego os valores$nome = isset($_POST["nome"]) ? anti_injection($_POST["nome"]) : "";$senha = isset($_POST["senha"]) ? anti_injection($_POST["senha"]) : "";verifica_usuario($nome, $senha);}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvi o problema do session_start() !!!to usuando o ob_start();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora é outro!!Java script: Linha:127Caractere:4Erro Linguagem é nulo ou não é um objeto!!Também tem outro!Digito o usuario e a senha e enviar, mas não vai para lugar algum!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fabyo, eu estou com uma duvida. Eu tenho um servidor de um jogo e estou fazendo o sistema de login com as devidas opções do jogo mas tudo isso prescisa ser em MD5 e a pagina de cadastro contem esse codigo

 

<html><head><title>Cadastro</title><body><?php$ps_loginname = stripslashes($_POST['ps_loginname']);$ps_email = stripslashes($_POST['ps_email']);$ps_password = stripslashes($_POST['ps_password']);$ps_repassword = stripslashes($_POST['ps_repassword']);$extcode = stripslashes($_POST['extcode']);$extcode1 = stripslashes($_POST['extcode1']);$sql_email_check = mssql_query("SELECT mail_addr FROM MEMB_INFO WHERE mail_addr='$ps_email'"); $sql_username_check = mssql_query("SELECT memb___id FROM MEMB_INFO WHERE memb___id='$ps_loginname'"); $email_check = mssql_num_rows($sql_email_check); $username_check = mssql_num_rows($sql_username_check); if (empty($ps_loginname) || empty($ps_email) || empty($ps_password) || empty($ps_repassword) || empty($extcode) || empty($extcode1)) {	echo "Algum campo foi deixado em branco";  $Error=1;}elseif (($email_check > 0) || ($username_check > 0)){  	if($email_check > 0){ 		echo "E-Mail em uso, por favor escolha outro<br>"; 		$Error=1;	} 	if ($username_check > 0){ 		echo "Login em uso, escolha outro por favor"; 		 $Error=1;	} }elseif ($ps_password != $ps_repassword) {	echo "As senhas nao sao identicas";  $Error=1;}elseif ($extcode != $extcode1) {	echo "Voce inseriu o codigo errado";  $Error=1;}if ($Error!=1){$msquery2 = "SET IDENTITY_INSERT MEMB_INFO ON";$msquery3 = "INSERT INTO MEMB_INFO (memb_guid,memb___id,memb__pwd,memb_name,sno__numb,post_code,addr_info,addr_deta,tel__numb,mail_addr,phon_numb,fpas_ques,fpas_answ,job__code,appl_days,modi_days,out__days,true_days,mail_chek,bloc_code,ctl1_code) VALUES ('1','$ps_loginname','$ps_password','$ps_name', '1','1234','11111','$ps_person_id','12343','$ps_email','$ps_email','$ps_recquest','$ps_recans','1','2003-11-23','2003-11-23','2003-11-23','2003-11-23','1','0','1')";$msquery4 = "INSERT INTO VI_CURR_INFO (ends_days,chek_code,used_time,memb___id,memb_name,memb_guid,sno__numb,Bill_Section,Bill_value,Bill_Hour,Surplus_Point,Surplus_Minute,Increase_Days )  VALUES ('2005','1',1234,'$ps_loginname','$ps_name',1,'7','6','3','6','6','2003-11-23 10:36:00','0' )";$msresults= mssql_query($msquery2);$msresults= mssql_query($msquery3);$msresults= mssql_query($msquery4);?>Sua conta foi criada com sucesso!<?php}?></body></head></html>

No caso eu estou pretendendo usar o seu sistema de login, e queria perguntar se está pagina esta configurada coretamente para, o sistema de login indentificar a senha em MD5 necessaria no Sistema de Login

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa galera..pelo que entendi..esse sistema pega o usuario que esta cadastrado em uma tabela...correto??como que eu faço para pegar um usuario do banco de dados???e também verificar o nivel de acessofalou

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como solucionei. Não a forma mais "elegante", mas funciona!

 

Colocar este código no topo das páginas que quiser proteger por nivel_acesso.

 

 

 

 

<?include("./protecao.php");/////////////////////////////////////////////////////////////////////////////////////////// condição de acesso por nível de usuário/////////////////////////////////////////////////////////////////////////////////////////	mysql_connect("localhost", "login", "senha");	mysql_select_db("nomedobanco");	//nivel acesso	$select_user = mysql_query ("SELECT * FROM nomedatabela WHERE login = '$dados[login]'");	while($row = mysql_fetch_array($select_user))		{		$nivel = $row["nivel_acesso"];		$mostra_nome = $row["nome"];		}			if($nivel != 2) // aqui define a condição de qual nível entra na página (0 - nada, 1 - comum, 2 - administrador)			{			echo			"<p> </p>			<p> </p>			<table width=\"350\" border=\"1\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"#FF0000\">			  <tr>				<td>				<center>Você precisa ser Administrador para acessar a página - Gerenciar Login!</center>				</td>			  </tr>			</table>";						exit();			}//echo"$nivel<br>";//echo"$mostra_nome";//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://forum.imasters.com.br/public/style_emoticons/default/cry.gif Fabyo, estou tentando usar seu sistema de login e ocorreu os seguintes erros.Primeiro: Ocorre quando eu erro a senha na linha 25 que é o comando ( header("Location: teste.htm");) Warning: Cannot modify header information - headers already sent by (output started at c:\windows\serv-n\www\paginas\senha\protecao.php:9) in c:\windows\serv-n\www\paginas\senha\protecao.php on line 25Substitui pelo comando (include "login.html";) Não sei se é a mesma coisa, mas funcionou.Segundo: Bom funcionando com o comando (include "login.html";), quando eu vou para a pagina2, volta para o login, e eu não consigo de forma alguam logar novamente.Terceiro:Inclui uma pagina3, porem como eu disse anteriormente, quando eu estou na pagina principal e tento ir para pagina2 eu volto para o login.Você poderia ver o que acontece?

coloca @ na frente da linha, assim: @header("Location: login.html"); =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola a todos, comecei php a poucos dias e comecei logo fazendo sistema em php, tow apanhando muito, e vi este sistema de login e senha e quem fez esta de parabens e muito bom mesmo, e acompanhei as perguntas e vi que faltava um LOGOUT, tentei fazer aki e acho que esta certo se naum estiver por favor me corrija.

 

principal.php

<?// incluo a pagina de protecao que faz a verificação do usuarioinclude "nprotecao.php";?><p><a href="npagina2.php">Pagina2</a></p><form name="form1" method="post" action="nlogout.php">  <input type="submit" name="Submit" value="logout"></form>

logout.php

<?php// Inicializa uma sessão.// Se você está usando session_name("something"), não esqueça!session_start();// Eliminar todas as variáveis de sessão.session_unset();// Finalmente, destruição da sessão.session_destroy();header("Location: login.html"); /* Redirect browser *//* Tenha certeza que o código abaixo não seja executado qunado nós redirecionamos. */exit;?>

Um abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

rsrsrsrsrsrsrs....

Puts que vacilo, estava ontem tarde da noite lendo os posts da primeira pagina ai nem me liguei que tinha uma segunda e cometi a maior erro, de tentar responder uma duvida, mais pelo menos espero que esteja certo.

Mais pra recompensar tow tentando responder ouutro post naum respondido ao amigo Everton Denis, o lance certo e assim amigo.

 

cad_login2.php:

<form id="formulario" name="formulario" action="cad_login2.php" method="post" >			<table width="228" border="0" align="center">			  <tr>				<td width="68">Nome</td>				<td width="244"><input type="text" name="nome" /></td>			  </tr>			  <tr>				<td>Senha</td>				<td><input type="password" name="senha" /></td>			  </tr>			  <tr>				<td>E mail </td>				<td><input type="text" name="email" /></td>			  </tr>			  <tr>				<td>Nivel</td>				<td><input type="text" name="nivel" /></td>			  </tr>			  <tr>				<td colspan="2"><div align="center">				  <input name="submit" type="submit" value="Cadastrar" />				</div></td>			  </tr>			</table></form></body></html>
inclui_usuario.php:

<body><p align="center">  <?	mysql_connect("localhost", "root", "");	mysql_select_db("banco");		$nome  = $_POST["nome"];	$senha = $_POST["senha"];	$email = $_POST["email"];	$nivel = $_POST["nivel"];		if ( get_magic_quotes_gpc() ) {		$nome  = stripslashes($_POST["nome"]);		$senha = stripslashes($_POST["senha"]);		$email  = stripslashes($_POST["email"]);		$nivel = stripslashes($_POST["nivel"]);	}		$nome  = mysql_escape_string($nome);		$senha = mysql_escape_string($senha);	$email  = mysql_escape_string($email);		$nivel = mysql_escape_string($nivel);			$chave = md5( md5(strtolower(trim($nome))) . md5(strtolower(trim($senha))) );			$senha = md5($senha);$sql = "INSERT INTO usuarios (id_usuario, nome, senha, email, nivel_acesso, chave) VALUES (NULL, '$nome', '$senha', '$email', '$nivel', '$chave')";//echo $sql;//$rs = mysqlexecuta($sql);$re = mysql_query(sprintf($sql));?></p><div align="center">Cadastro efetuado com sucesso!!! </div><p align="center"></p><meta HTTP-EQUIV="REFRESH" CONTENT="3; URL=cad_login2.php"></body></html>

Valeu ai...um abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo nao testei o script ainda mas aconselho a usaur um if e else para tippo validar os usuariotipo - if usuario + senha no BD correto mostra pagina prategidaelse usuario + senha no BD nao-correto mostra pagina loginta ai uma dica...

Compartilhar este post


Link para o post
Compartilhar em outros sites

FABIO, estou com um problema nesse sistema novo que você colocou... eu não gosto de usar o 'md5' utilizo o 'sha1', pois o nivel de segurança e maior... porem eu alterei ja a interpretação do sistema de md5 pra sha1, mais não consigo fazer o sistema funcionar... a chave eu nao sei ao certo como funciona, pois eu estou cadastrando direto no banco de dados... entao você poderia me explicar como fazer isso?

 

 

NB-MASTER: posta ai pra gente as alterações que você sugeriu beleza? http://forum.imasters.com.br/public/style_emoticons/default/graduated.gif

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

rsrsrsrsrsrsrs....Puts que vacilo, estava ontem tarde da noite lendo os posts da primeira pagina ai nem me liguei que tinha uma segunda e cometi a maior erro, de tentar responder uma duvida, mais pelo menos espero que esteja certo.Mais pra recompensar tow tentando responder ouutro post naum respondido ao amigo Everton Denis, o lance certo e assim amigo.cad_login2.php:

<form id="formulario" name="formulario" action="cad_login2.php" method="post" >			<table width="228" border="0" align="center">			  <tr>				<td width="68">Nome</td>				<td width="244"><input type="text" name="nome" /></td>			  </tr>			  <tr>				<td>Senha</td>				<td><input type="password" name="senha" /></td>			  </tr>			  <tr>				<td>E mail </td>				<td><input type="text" name="email" /></td>			  </tr>			  <tr>				<td>Nivel</td>				<td><input type="text" name="nivel" /></td>			  </tr>			  <tr>				<td colspan="2"><div align="center">				  <input name="submit" type="submit" value="Cadastrar" />				</div></td>			  </tr>			</table></form></body></html>
inclui_usuario.php:
<body><p align="center">  <?	mysql_connect("localhost", "root", "");	mysql_select_db("banco");		$nome  = $_POST["nome"];	$senha = $_POST["senha"];	$email = $_POST["email"];	$nivel = $_POST["nivel"];		if ( get_magic_quotes_gpc() ) {		$nome  = stripslashes($_POST["nome"]);		$senha = stripslashes($_POST["senha"]);		$email  = stripslashes($_POST["email"]);		$nivel = stripslashes($_POST["nivel"]);	}		$nome  = mysql_escape_string($nome);		$senha = mysql_escape_string($senha);	$email  = mysql_escape_string($email);		$nivel = mysql_escape_string($nivel);			$chave = md5( md5(strtolower(trim($nome))) . md5(strtolower(trim($senha))) );			$senha = md5($senha);$sql = "INSERT INTO usuarios (id_usuario, nome, senha, email, nivel_acesso, chave) VALUES (NULL, '$nome', '$senha', '$email', '$nivel', '$chave')";//echo $sql;//$rs = mysqlexecuta($sql);$re = mysql_query(sprintf($sql));?></p><div align="center">Cadastro efetuado com sucesso!!! </div><p align="center"></p><meta HTTP-EQUIV="REFRESH" CONTENT="3; URL=cad_login2.php"></body></html>
Valeu ai...um abraço
NÃO ACREDITO!!!!!!!!!!!!Cara!!! eu vou testar agora mesmo!!!Eu tinha desistido disso jah. Tentei tentei e nda...Vlw amigo!!!Abraço e qquer coisa tamos ae!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rasp voce deve estar enganado MD5 alem de ser o melhor sistema de criptografia da atualizade, é tbm o mais usado pela maioria das linguagens

 

nao confunda só porque sha1 gera um has de 40 caracteres isso nao quer dizer que é melhor que o MD5 que gera um has de 32

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Fabyo,E prq eu sempre ouvi falar que sha1 é melhor... mais enfim... consegui fazer funcionar o sistema... so queria ver cntg uma coisa (se não for encomodar) alem dos erros que resultam do javascript resulta um erro geral "usuario ou senha incorretos".Tipo eu estava querendo separalos. por exemplo:Voce digita o usuario 'fabyo' e ele nao esta cadastrado, ai o sistema resultado (o usuario fabyo nao esta cadastro...)e a mesma coisa com a senha, claro sem informar a mesma.$resultado = mysql_query("select * from usuarios where login = '$nome'");$linhas = mysql_num_rows($resultado);if ($linhas ==0)/*verifica se a consulta resultou algum registro*/$retorno = "O Login \'' .$nome. '\' não esta cadastrado, Por favor verifique o login digitado.";else { if ($senha != mysql_result($resultado, 0, "senha")) { /*verifica a senha*/ $retorno = "Senha incorreta, Por favor verifique a senha digitada"; }Teria como você me ajudar? acima esta uma parte que eu montei para um outro sistema de login, mais não consigo fazer funcionar no seuVlw cara, abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

FABIO, estou com um problema nesse sistema novo que você colocou... eu não gosto de usar o 'md5' utilizo o 'sha1', pois o nivel de segurança e maior... porem eu alterei ja a interpretação do sistema de md5 pra sha1, mais não consigo fazer o sistema funcionar... a chave eu nao sei ao certo como funciona, pois eu estou cadastrando direto no banco de dados... entao você poderia me explicar como fazer isso?NB-MASTER: posta ai pra gente as alterações que você sugeriu beleza? http://forum.imasters.com.br/public/style_emoticons/default/graduated.gif Abraços.

hehheh vlz... mas eu nao sei nd de PHP so novato!! o Genio é o FABYO...hhehe e ai td beleza??olha ai ! eu uso esse login aki o (você vai ter que editar para o seu SCRIPT) só coloquei pra você ter uma ideia<?session_start();if ($userid && $password){ include "../includes/config.php"; $db_conn = mysql_connect($server, $db_user, $db_pass) or die ("Database CONNECT Error (line 11)"); mysql_select_db($database, $db_conn); $query = "select * from host where refid='$userid' and pass='$password'"; $result = mysql_query($query, $db_conn); if (mysql_num_rows($result) >0 ) { $valid_user = $userid; session_register("valid_user"); }}if (session_is_registered("valid_user")) { } else { if (isset($userid)) { } else { } } include "members_only.php";?>se precisar de ajuda pra configura me manda um POST estou de plantao no Imasters... hehehhe :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Fabyo e Nb-master,Já consegui resolver, brigadão ae! nada que uma madrugada acordado não resolveu, hehehe...Vlw mesmo!abração.

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.