• Anúncios

    • Novo Fórum

      Pessoal, Atualizamos nossa versão do fórum para a mais recente da Invision Power. Como tínhamos uma versão muito antiga, talvez algumas áreas possam funcionar de forma errada ou com problemas, gostaria de pedir-lhes a compreensão, pois iremos resolvendo aos poucos. Até mais!

Tela de Login PHP+MYSQL

6 posts neste tópico

Postado · Denunciar post

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/teste/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 :(

muito obrigado pela atenção.

feju

Compartilhar este post


Link para o post
Compartilhar em outros sites

Postado (editado) · Denunciar post

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

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

faça assm

//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
<?
//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
<? require("verifica.php"); ?>
nao pode ter espaços, nem nada antes desse codigo, senao o header dá erro. e para fazer logoff
<?
unset($_SESSION);
session_destroy();
header("Location: http://www.seusite.com.br/login.htm");
?>

té +

Editado por Alex Gotardi

Compartilhar este post


Link para o post
Compartilhar em outros sites

Postado · Denunciar post

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


 <?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
<?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 :D verificalogin.php
<?
//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. :D

feju

Compartilhar este post


Link para o post
Compartilhar em outros sites

Postado · Denunciar post

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 :D vlw espero ter ajduado :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Postado · Denunciar post

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

<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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Postado · Denunciar post

opa, no arquivo verifica

coloca assim

@session_start(); antes do if

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!


Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.


Entrar Agora