Ir para conteúdo


Tela de Login PHP+MYSQL


  • Por favor, faça o login para responder
5 respostas neste tópico

#1 feju

feju
  • Membros
  • 18 posts

Postado 30 November 2006 - 09:13 AM

Tela de Login com session e header

e ai galera, sou novo aqui e em programação rssss.
eu estou fazendo uma tela de login e não estou conseguindo enviar a sessão para as outras telas.
já li vários tutoriais, foruns, manuais, exemplos sobre SESSION e HEADER mas não estou conseguindo fazer o treco funfar...
os códigos são esses:

Página que começa a desgracera toda rsss...

login.htm

<html>
<head>
<title></title>
</head>
<script language="javascript">
function validar(){
if(form.login.value == "" || form.senha.value == ""){
alert("Favor insira o LOGIN e a SENHA válida grato!");
return false;
}
}
</script>
<body>
<form name="form" method="post" action="logar.php">
<input type="hidden" name="Consultar" value="">

<table border="0" width="100%">
<tr>
<td align="center">
<h2>Login</h2>
</td>
</tr>
</table>
<table border="1" width="100%">
<tr>
<td>
<table border="0" width="98%">
<tr>
<td align="right" width="49%">Login:</td>
<td align="left" width="49%">
<input type="text" value="" name="login">
</td>
</tr>
<tr>
<td align="right" width="49%">Senha:</td>
<td align="left" width="49%">
<input type="password" value="" name="senha">
</td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="submit" value="Entrar" name="entrar" onclick="form.Consultar.value='GERAR'; return validar();">
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</body>
</html>

depois vem essa aqui:

logar.php

<?php
$conn = mysql_connect("localhost","root","") or die ("Você não está logado no MYSQL!!");
mysql_select_db("teste",$conn) or die ("A conexão com o Banco de Dados não foi efeuada!");

// Inicia sessões
session_start();

if($_POST['Consultar'] == "GERAR"){

$login = $_POST['login'];
$senha = md5($_POST['senha']);

$SQL = "SELECT * FROM login
WHERE Login = '$login'";

$connect = mysql_query($SQL,$conn);
while($consulta = mysql_fetch_array($connect)){
if($consulta['Login'] == $login && $consulta['Senha'] == $senha){
//entra no home;
$_SESSION['loginID'] = $consulta['LoginID'];
header ("Location: http://localhost/tes...ste/home.htm");
exit;
}else{
echo "Digite Login e Senha válidos.";
}
}
}
?>

e então onde eu quero que funcione mais não rola de ele entrar aqui nesta página:

home.htm

<html>
<head>
<TITLE>teste</TITLE>
</head>
<frameset rows="15%,85%" border="0">
<frame name="paginalogo" src="PaginaLogo.htm">
<frameset cols="10%,90%">
<frame name="paginalink" src="PaginaLink.php">
<frame name="paginas" src="Paginas.htm">
</frameset>
</frameset>
</html>



segundo todos as coisas que li os manuais indicam que o header(); deveria redirecionar. mas não acontece isso, ele para no logar.php e não sai de lá.

se vocês puderem me ajudar... eu não sei mais o que fazer. rsss sad.gif
muito obrigado pela atenção.

feju[indent=1]

#2 Alex Gotardi

Alex Gotardi
  • Membros
  • 350 posts

Postado 30 November 2006 - 12:55 PM

tá... o cara digita nome e senha.

onde vc faz o SELECT para verificar se ele está cadastrado

faça assm

CÓDIGO
//verifica se o usuario e a senha coincidem já no mysql, dispensando outros ifs
$sql = mysql_query("SELECT * FROM tabela WHERE usuario = '$usuario' AND senha = '$senha' LIMIT 1");

$resultado = mysql_fetch_array($sql);

//se retornou algo, entao o usuario existe
if(count($resultado)) {

//inicia uma nova sessao
session_start();

$_SESSION['id'] = $resultado['id'];

header("Location: http://www.seusite.com.br"); //como vc fez
}



agora, vc precisa criar um arquivo, digamos

verifica.php
CÓDIGO
<?
//verifica se a nao foi criada sessao foi criada, nesse caso, negativando ela (!)
if(!isset($_SESSION['id'])) {
header("Location: http://www.seusite.com.br/login.htm");
}
?>

perceba que somente redireciona se a sessao nao existe
esse arquivo deve estar na primeira linha de cada arquivo que deseja proteger (todos tem q ser php)

vc usa assim

CÓDIGO
<? require("verifica.php"); ?>


nao pode ter espaços, nem nada antes desse codigo, senao o header dá erro.

e para fazer logoff

CÓDIGO
<?
unset($_SESSION);
session_destroy();
header("Location: http://www.seusite.com.br/login.htm");
?>


té +

Editado por Alex Gotardi, 30 November 2006 - 12:56 PM.


#3 feju

feju
  • Membros
  • 18 posts

Postado 01 December 2006 - 09:20 AM

Olá Alex, cara valeu por ter respondido.
entaum num funcionou não cara o que vc me passou.

eu fiz exatamente o que tu disse e até cheguei a copiar e colar o código que você escreveu aqui no forum.
ele chega a setar para o $_SESSION['id'] o ID do usuário cadastrado no banco, mas quando ele vai executar o header não funciona. bbbbbuuuuuuuuuuuaááááááááá
a página fica em branco cara vc sabe o que é? desculpe a amolação.

os códigos ficaram assim:

logar.php

CÓDIGO


<?php
$conn = mysql_connect("localhost","root","") or die ("A conexão não está aberta!!");
mysql_select_db("centro",$conn) or die ("A conexão com o Banco de Dados não foi efeuada!");

    $login = $_POST['login'];
    $senha = md5($_POST['senha']);
                        
    //verifica se o usuario e a senha coincidem já no mysql, dispensando outros ifs
    $sql = mysql_query("SELECT * FROM tabela WHERE Login = '$login' AND Senha = '$senha' LIMIT 1");

    $resultado = mysql_fetch_array($sql);

    //se retornou algo, entao o usuario existe
    if(count($resultado)) {

    //inicia uma nova sessao
    session_start();

    $_SESSION['id'] = $resultado['LoginID'];

    header("Location: http://localhost/centro_01/home.php"); //como vc fez
    }

     ?>


pode ver que eu copiei e colei o código que você me passou. rssssss

o home que era para ele entrar está assim:

home.php

CÓDIGO

<?php
require("Login_Registro/verificalogin.php");

session_start();

echo "<html>";
echo "<head>";
echo "<TITLE>Divina-se</TITLE>";
echo "</head>";

echo "<frameset rows='15%,85%' border='0'>";
echo "    <frame name='paginalogo' src='PaginaLogo.htm'>";
echo "    <frameset cols='10%,90%'>";
echo "        <frame name='paginalink' src='PaginaLink.php'>";
echo "        <frame name='paginas' src='Paginas.htm'>";
echo "    </frameset>";

echo "</frameset>";


echo "</html>";

?>


coloquei o require como você me orientou.
então eu copei e colei o verifica biggrin.gif

verificalogin.php

CÓDIGO

<?
//verifica se a nao foi criada sessao foi criada, nesse caso, negativando ela (!)
if(!isset($_SESSION['id'])) {
header("Location: http://localhost/centro_01/login.htm");
}
?>


bom cara eu não sei o que acontece, eu não se isso tem alguma importância mas eu estou usando o EasyPhp e a interface para programar é o PHP Editor.


bom de qualquer forma muito grato pela ajuda. biggrin.gif


feju




#4 Augusto M.

Augusto M.
  • Membros
  • 93 posts

Postado 01 December 2006 - 06:48 PM

ai cara tipow eu tenho um sistema deste com cadastro aki postado da uma olhada e me fala oq acha


codigo do sistema de login senha, cadastro


vlw ai acrscenta o cadastro.php no sue codigo biggrin.gif vlw espero ter ajduado biggrin.gif

#5 feju

feju
  • Membros
  • 18 posts

Postado 04 December 2006 - 07:12 AM

Galera valeu pela ajuda, mas acabei desistindo de usa o header() no index e acabei achando isso na net:

CÓDIGO

<meta http-equiv='refresh' content='0; url=http://página_para_onde_quer_rediricionar'>


Agora está funcionando tudo muito bem rsssss:D. Valeu mesmo pela ajuda e força que vocês deram.

feju

#6 Alex Gotardi

Alex Gotardi
  • Membros
  • 350 posts

Postado 04 December 2006 - 08:07 AM

opa, no arquivo verifica

coloca assim

@session_start(); antes do if

o @ é para anular caso de algum erro de sessao já iniciada.




0 usuário(s) está(ão) lendo este tópico

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