Jump to content


Photo

Sistema De Login Senha Com Sessão


  • Faça o login para participar
18 replies to this topic

#1 fernando_sanchez

fernando_sanchez

    Turista

  • Usuários
  • 47 posts
  • Sexo:Não informado

Posted 31/05/2004, 16:46

Oi pessoal,

Estou com dificuldades em um sistema de login/senha usando session. Achei que estava funcionando mas o que estava acontecendo é que ele não estava filtrando os dados e direcionando qualquer login/senha para a área interna.

Refiz tudo, tentando não cometer nenhum erro, mas como sou iniciante, sempre tem algo que foge do meu entendimento.

Agradeço a força da galera.

A mensagem de erro que está dando é a seguinte:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/muralcultural/www/hospedagem/michi_dojo/login_cadastro_aluno_session.php:13) in /home/muralcultural/www/hospedagem/michi_dojo/login_cadastro_aluno_session.php on line 39

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/muralcultural/www/hospedagem/michi_dojo/login_cadastro_aluno_session.php:13) in /home/muralcultural/www/hospedagem/michi_dojo/login_cadastro_aluno_session.php on line 39

Warning: Cannot modify header information - headers already sent by (output started at /home/muralcultural/www/hospedagem/michi_dojo/login_cadastro_aluno_session.php:13) in /home/muralcultural/www/hospedagem/michi_dojo/login_cadastro_aluno_session.php on line 43


Eu cadastro os alunos com a página cadastro_aluno.php:

<html>
<head>
<title>Cadastramento do aluno</title>
</head>
<body>

<form name="form1" method="post" action="cadastro_aluno_resultado.php">
  <p> login_aluno :
    <input name="login_aluno" type="text" id="login_aluno" size="10" maxlength="30">
  </p>
  <p> senha_aluno :
    <input name="senha_aluno" type="text" id="senha_aluno" size="10" maxlength="30">
  </p>
  <p>
    <input type="submit" name="Submit" value="Enviar">
  </p>
</form>

</body>
</html>



Verifico se o banco de dados registrou o aluno em cadastro_aluno_resultado.php (sempre aparece os cadastrados):

<html>
<head>
<title>Documento sem t&iacute;tulo</title>
</head>

<body>
<?

$con = mysql_connect("mysql.meudominio.com.br", "meuusername", "minhasenha");
mysql_select_db("meubancodedados", $con);

mysql_query("INSERT INTO aluno VALUES ('$login_aluno', '$senha_aluno')") or die ("Não foi possível fazer a gravação!");
echo "Registro efetuado com sucesso!<br>";
echo "<a href=\"cadastro_aluno.php\">voltar</a>";

?>
</body>
</html>


Minha página principal é frame_principal.php, aqui eu tenho dois campos de formulário para inserir o login e a senha e, enviar essas variáveis para a página que verificará se estes estão cadastrados:

<html>
<head>
<title>index</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>
<link href="muralcultural_teste_ycom.css" rel="stylesheet" type="text/css">
<LINK REL="SHORTCUT ICON" href="pip.gif">
</head>

<body background="graficos/01_background_morihei.jpg" bgproperties="fixed">

INFORMAÇÕES DO SITE

     
      <div id="Layer8" style="position:absolute; left:647px; top:329px; width:113px; height:80px; z-index:9">
        <form name="form2" method="post" action="login_cadastro_aluno_session.php">
          <div align="center">
            <p class="verdana_vermelho_9_bold"><span class="verdana_az_esc_9_bold">*
              &Aacute;REA EXCLUSIVA *<br>
              Alunos Michi Dojo: <br>
              </span><span class="verdana_preta_9_normal">LOGIN:<br>
              </span>
              <input name="login_aluno" type="text" id="login_aluno" size="10" maxlength="30">
              <br>
              <span class="verdana_preta_9_normal">SENHA:<br>
              </span>
              <input name="senha_aluno" type="password" id="senha_aluno" size="10" maxlength="30">
              <br>
              <input name="enviar_senha2" type="submit" id="enviar_senha2" value="Enviar">
            </p>
          </div>
        </form>
      </div></td>
  </tr>
</table></body>
</html>


Página que verificará as variáveis e criará as variáveis super globais de sessão, login_cadastro_aluno_sessao.php:

<html>
<head>
<title>Login cadastro</title>
</head>
<body>
<?
$login_aluno = $_POST["login_aluno"];
$senha_aluno = $_POST["senha_aluno"];

// acesso ao banco de dados
include "conecta_mysql.php";
$resultado = mysql_query("SELECT * FROM aluno where login_aluno='$login_aluno' and senha_aluno='$senha_aluno'");

$linhas = mysql_num_rows($resultado);
if($linhas == 0) // testa se a consulta retornou algum registro
{
echo "<html><body>";
echo "<p align=\"center\">Usuário não encontrado!</p>";
echo "<p align=\"center\"><a href=\"frame_principal_novo_session.php\">Voltar</a></p>";
echo "</body></html>";
}
else {
if ($senha_aluno != mysql_result($resultado, 0, "senha_aluno")) // confere a senha
{
  echo "<html><body>";
  echo "<p align=\"center\">A senha está incorreta!</p>";
  echo "<p align=\"center\"><a href=\"frame_principal_novo_session.php\">Voltar</a></p>";
  echo "</body></html>";
}
else // usuário e senhas corretos. Vamos criar os cookies
{
  session_start();
  $_SESSION["login2"] = $login_aluno;
  $_SESSION["senha2"] = $senha_aluno;
  // direciona para a página inicial dos usuários cadastrados
  header ("Location: frame_principal_novo_interno.php");
}
}
?>
</body>
</html>



Página de validação da sessão, valida_sessao.php

<?
session_start();
if(IsSet($_SESSION["login2"]))
$login_aluno = $_SESSION["login2"];
if(IsSet($_SESSION["senha2"]))
$senha_aluno = $_SESSION["senha2"];
if(!(empty($login_aluno) OR empty($senha_aluno)))
{
include "conecta_mysql.php";
$resultado = mysql_query("SELECT * FROM aluno WHERE login_aluno='login_aluno'");
if(mysql_num_rows($resultado)==1)
{
  if($senha_aluno != mysql_result($resultado,0,"senha_aluno"))
  {
  unset ($_SESSION['login2']);
  unset ($_SESSION['senha2']);
  echo "Voce não efetuou o LOGIN!";
  exit;
  }
  }
  else
  {
  unset ($_SESSION['login2']);
  unset ($_SESSION['senha2']);
  echo "Voce não efetuou o LOGIN!";
  exit;
  }
}
else
{
  echo "Você não efetuou o LOGIN!";
  exit;
}
mysql_close($con);
?>


Página interna do site, com o include de validação de sessão, frame_principal_novo_interno.php

<?
include "valida_sessao.php";
?>
<html>
<head>
<title>index</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>
<link href="muralcultural_teste_ycom.css" rel="stylesheet" type="text/css">
</head>
<p><a href="logout.php">LOGOUT</a></p>
<body background="graficos/01_background_morihei.jpg" bgproperties="fixed">

INFORMAÇÕES DO SITE
     
    </td>
  </tr>
</table></body>
</html>


Valeu pessoal,

FS

#2 paes

paes

    GustavoPaes.Net

  • Usuários
  • 1393 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP
  • Interesses:Rumo ao topo!

Posted 31/05/2004, 16:50

olá... vi que vc colocou o session_start() no meio da página...
vc deve colocar ela no início de tudo... :)

<?
session_start();
?>
CODIGO HTML

<?
// MAIS CÓDIGO EM PHP
?>

tenta ai... flw

Edição feita por: paes, 31/05/2004, 16:51.

Site: GustavoPaes.net

^ Rumo ao Topo ^

#3 fernando_sanchez

fernando_sanchez

    Turista

  • Usuários
  • 47 posts
  • Sexo:Não informado

Posted 31/05/2004, 17:27

Isso é onde? No login_cadastro_aluno_sessao.php?

Se for aí, eu coloquei assim:

<?
session start();
?>
<html>
<head>
<title>Login cadastro</title>
</head>
<body>
<?
$login_aluno = $_POST["login_aluno"];
$senha_aluno = $_POST["senha_aluno"];

// acesso ao banco de dados
include "conecta_mysql.php";
$resultado = mysql_query("SELECT * FROM aluno where login_aluno='$login_aluno' and senha_aluno='$senha_aluno'");

$linhas = mysql_num_rows($resultado);
if($linhas == 0) // testa se a consulta retornou algum registro
{
echo "<html><body>";
echo "<p align=\"center\">Usuário não encontrado!</p>";
echo "<p align=\"center\"><a href=\"frame_principal_novo_session.php\">Voltar</a></p>";
echo "</body></html>";
}
else {
if ($senha_aluno != mysql_result($resultado, 0, "senha_aluno")) // confere a senha
{
  echo "<html><body>";
  echo "<p align=\"center\">A senha está incorreta!</p>";
  echo "<p align=\"center\"><a href=\"frame_principal_novo_session.php\">Voltar</a></p>";
  echo "</body></html>";
}
else // usuário e senhas corretos. Vamos criar os cookies
{
  $_SESSION["login2"] = $login_aluno;
  $_SESSION["senha2"] = $senha_aluno;
  // direciona para a página inicial dos usuários cadastrados
  header ("Location: frame_principal_novo_interno.php");
}
}
?>
</body>
</html>


Mas deu esse erro:

Warning: Cannot modify header information - headers already sent by (output started at /home/muralcultural/www/hospedagem/michi_dojo/login_cadastro_aluno_session.php:13) in /home/muralcultural/www/hospedagem/michi_dojo/login_cadastro_aluno_session.php on line 43


E aí, o que pode ser?

Obrigado,

FS

#4 luiz000

luiz000

    Expert

  • Banidos
  • PipPipPipPipPipPip
  • 530 posts
  • Sexo:Não informado

Posted 31/05/2004, 19:06

ta vendo lá no final do codigo que vc usou o header() ????
nao pode nao,
vc nao pode usar ele antes de alguma saida que tenha na pagina, tipo, algo que saia escrito na pagina, como uma tag html ou a funcao echo do PHP,

tipo, ao inves de:
header ("Location: frame_principal_novo_interno.php");
coloque isso:

print "<script>window.location='frame_principal_novo_interno.php'</script>";


e seja feliz (y)

#5 fernando_sanchez

fernando_sanchez

    Turista

  • Usuários
  • 47 posts
  • Sexo:Não informado

Posted 01/06/2004, 12:08

Olá pessoal,

Agora consegui fazer com que funcionasse tudo só que tem um porém:

SE NÃO TIVER NADA PREENCHIDO EM LOGIN E SENHA, E A PESSOA SIMPLESMENTE CLICAR NO BOTÃO ENVIAR, ELE VAI PARA A PÁGINA INTERNA!!!!!!!! É MOLE?????

Se o nome tá errado, dá mensagem de erro. Se a senha está errada, dá mensagem de erro. Se não tem senha, dá mensagem de erro. Se tem senha e não tem nme, dá erro.

Mas se não tem nada e ele clica em entrar, ele entra!!!!

Dêem uma olhada, e me digam como posso resolver isso, certo?

Valeu pessoal,

FS

<?

// acesso ao banco de dados
include "conecta_mysql.php";
$resultado = mysql_query("SELECT * FROM aluno where login_aluno='$login_aluno'");
$linhas = @mysql_num_rows($resultado);
if($linhas == 0) // testa se a consulta retornou algum registro
{
echo "<html><body>";
echo "<p align=\"center\">Usuário não encontrado!</p>";
echo "<p align=\"center\"><a href=\"frame_principal.php\">Voltar</a></p>";
echo "</body></html>";
}
else {
if ($senha_aluno != mysql_result($resultado, 0, "senha_aluno")) // confere a senha
{
  echo "<html><body>";
  echo "<p align=\"center\">A senha está incorreta!</p>";
  echo "<p align=\"center\"><a href=\"frame_principal.php\">Voltar</a></p>";
  echo "</body></html>";
}
else // usuário e senhas corretos. Vamos criar os cookies
{
print "<script>location='frame_principal_novo_aluno.php'</script>";
}
}
?>


Coloquei o session_start na página valida_sessao.php

<?
session_start();
$_SESSION["login2"] = $login_aluno;
$_SESSION["senha2"] = $senha_aluno;

if(IsSet($_SESSION["login2"]))
if(IsSet($_SESSION["senha2"]))
if(!(empty($login_aluno) OR empty($senha_aluno)))
{
include "conecta_mysql.php";
$resultado = mysql_query("SELECT * FROM aluno WHERE login_aluno='$login_aluno' and senha_aluno=$'senha_aluno'");
if(mysql_num_rows($resultado)==1)
{
  if($senha_aluno != mysql_result($resultado,0,"senha_aluno"))
  {
  unset ($_SESSION['login2']);
  unset ($_SESSION['senha2']);
  echo "Voce não efetuou o LOGIN!";
  exit;
  }
  }
  else
  {
  unset ($_SESSION['login2']);
  unset ($_SESSION['senha2']);
  echo "Voce não efetuou o LOGIN!";
  exit;
  }
}
else
{
  echo "Você não efetuou o LOGIN!";
  exit;
}
?>



#6 fernando_sanchez

fernando_sanchez

    Turista

  • Usuários
  • 47 posts
  • Sexo:Não informado

Posted 01/06/2004, 12:21

Cara, não acredito, eu acessei meu banco de dados e havia, não sei como, uma inclusão vazia, onde não havia nem lgin nem senha.

Só podia, né! Quando clicava em entrar ele localizava o "fantasma" no banco de dados.

Bem, parece que consegui, agradeço a força da galera,

FS

#7 fly2k

fly2k

    Super Veterano

  • Usuários
  • 2262 posts
  • Sexo:Não informado

Posted 01/06/2004, 13:43

é, pelo que vi em seu código:
cadastro_aluno_resultado.php

Você está permitindo que o usuário digite qualquer coisa e o que for digitado é inserido no banco....cuidado com isso....
Quer aprender PHP? -> www.manjaphp.com.br
Tutoriais, código colaborativo (pastebin), curso de PHP, artigos e etc.

#8 fernando_sanchez

fernando_sanchez

    Turista

  • Usuários
  • 47 posts
  • Sexo:Não informado

Posted 02/06/2004, 09:35

Oi Edgar,

Valeu o toque, mas não entendi. Você tem que considerar que essas páginas:
cadastra_aluno e cadastra_aluno_resultado, somente eu tenho acesso.

Onde você está vendo que posso ter algum problema?

Obrigado,

FS

#9 fly2k

fly2k

    Super Veterano

  • Usuários
  • 2262 posts
  • Sexo:Não informado

Posted 02/06/2004, 09:53

Se você se garantir, que em nenhum momento, você, acidentalmente, clicará em OK! ..não há nenhum problema... mas se acidentalmente você o fizer....aew você dará acesso a qualquer um que não digitar nada.....eu vejo isso como uma brecha, desculpe, é uma opinião particular.
Quer aprender PHP? -> www.manjaphp.com.br
Tutoriais, código colaborativo (pastebin), curso de PHP, artigos e etc.

#10 fernando_sanchez

fernando_sanchez

    Turista

  • Usuários
  • 47 posts
  • Sexo:Não informado

Posted 02/06/2004, 17:36

Não entendi direito, onde você está vendo uma brecha? Em que momento clicar em ok?

Valeu.

FS

#11 fly2k

fly2k

    Super Veterano

  • Usuários
  • 2262 posts
  • Sexo:Não informado

Posted 03/06/2004, 08:30

exato..
Quer aprender PHP? -> www.manjaphp.com.br
Tutoriais, código colaborativo (pastebin), curso de PHP, artigos e etc.

#12 fernando_sanchez

fernando_sanchez

    Turista

  • Usuários
  • 47 posts
  • Sexo:Não informado

Posted 03/06/2004, 11:37

Em que lugar dos cõdigos estã essa brecha:

Valeu,

FS

#13 fly2k

fly2k

    Super Veterano

  • Usuários
  • 2262 posts
  • Sexo:Não informado

Posted 03/06/2004, 11:45

PHP


<html>
<head>
<title>Documento sem t&iacute;tulo</title>
</head>

<body>
<?

if ((!empty($login_aluno)) && (!empty($login_aluno))) {
$con = mysql_connect("mysql.meudominio.com.br", "meuusername", "minhasenha");
mysql_select_db("meubancodedados", $con);

mysql_query("INSERT INTO aluno VALUES ('$login_aluno', '$senha_aluno')") or die ("Não foi possível fazer a gravação!");
echo
"Registro efetuado com sucesso!<br>";
echo
"<a href=\"cadastro_aluno.php&#092;">voltar</a>";
} else {
echo
"Alguns dos campos não está preenchido!!";
}
?>
</body>
</html>


Com isso você garante que não haverá cadastros acidentais com campos em brancos!
Quer aprender PHP? -> www.manjaphp.com.br
Tutoriais, código colaborativo (pastebin), curso de PHP, artigos e etc.

#14 fernando_sanchez

fernando_sanchez

    Turista

  • Usuários
  • 47 posts
  • Sexo:Não informado

Posted 03/06/2004, 17:55

Agora entendi o qaue vocë quis dizer. Perfeitamente, se eu nao colocar essa condição, fica vulnerável.

Valeu o toque,

FS

#15 fly2k

fly2k

    Super Veterano

  • Usuários
  • 2262 posts
  • Sexo:Não informado

Posted 04/06/2004, 08:42

beleza,
Sempre pense na validação de dados, isto é muito importante.
Uma coisa que recomendo á você, é pesquisar também sobre "SQL Injection"
Quer aprender PHP? -> www.manjaphp.com.br
Tutoriais, código colaborativo (pastebin), curso de PHP, artigos e etc.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq