Ir ao conteúdo
  • Cadastre-se

PHProblemas com senha e secreta


Ir à solução Resolvido por PanteraCordPreto,

Posts recomendados

Boa noite

Venho por meio deste solicitar um 'Help'.

Estou criando uma página em PHP, bem simples, até por sinal.

Sou novata e estou tendo dificuldades em após digitar minha senha, conseguir logar e aparecer a página "secreta.php".

Vou postar meus códigos aqui.

 

Este é meu index

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Luana Martins</title><link href="style.css" rel="stylesheet" type="text/css"></head><body> <div id="geral"> <div id="logo"><img src="simbol.jpg" width="200" height="40" alt="" /></div>   <div id="logon">      <form id="form1" name="form1" method="post" action="senha.php">Nome:                                       <input name="login" type="text" id="textfield" size="30" />                          Senha:                 <input name="senha" type="password" id="textfield2" size="15" />             <input type="submit" name="button" id="button" value="Submit" />         </form>        </div>        <div id="conteudo" align="center"><img src="led.jpg" width="800" height="390" alt="" /></div>        <div id="rodape"><img src="ledze.jpg" width="800" height="50" alt="" /></div></div></body></html>
O "senha.php"
 
<?php // senha.php$login = $_POST['login'];$senha = $_POST['senha'];if(($login=='luana')&&($senha=='123456')){session_start();session_name('secreta');$_SESSION['validacao']=1; $_SESSION['login']=$login;header('Location:secreta.php');}else{echo "Login ou senha errados!!!";}?>
e o meu secreta.php
 
<?php // secreta.phpsession_start();session_start('secreta');if($_SESSION['validacao']==1){?>echo "luana";<?php}else{echo "acesso negado";}?>

 

Sendo que dentro deste secreta, ainda necessito criar um menu com 4 opções.
O problema é que quando digito minha senha no index não vai para a página secreta e sim mostra todo o texto do meu arquivo senha.
 
 
 
Please me dem uma Luz, o que eu estou fazendo de errado??
E se possível me tirem mais uma dúvida , se eu posso montar uma página com "css" tudo junto dentro desta secreta ? Ficaria ali onde escrevi "echo luana"?
 
Desde já agradeço, muito obrigado a toda equipe do fórum.

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@PanteraCordPreto

A princípio o erro que acontece é porque o servidor apache não está rodando para poder interpretar o php.
Por exemplo, utilizando o easyPHP que é um pacote de serviços utilizado para o desenvolvimento web em localhost, é constituido pelo servidor apache, servidor mysql e seu gerenciador phpmyadmin.
Com o easyPHP rodando, o servidor apache e o servidor mysql  ficará automaticamente online, permitindo assim a interpretação das páginas em php.

Sobre seu código, tem alguns pontos que quero frisar.

No arquivo senha.php, a linha 6  e 7,  seria interessante colocar cima de tudo.

No arquivo secreta.php  as linhas 3 e 4 são redundantes.

Ainda no secreta.php, a linha 7 não iria executar pois está fora do bloco do php.. mas você poderia inserir ali as marcações html

 

No geral, seu código não está errado, na verdade está ótima para um começo de aprendizado. :)

 

Sobre sua segunda dúvida,  sim  pode e deve montar a estrutura html e sua estilização em css!

 

Edit: havia escrito outras coisas... mas deu crash no FF e perdi tudo que já tinha escrito lol

 

Edit2:  Vou resumir... 

 

Veja o exemplo do seu código em funcionamento: http://coderdif.esy.es/cdh/PanteraCordPreto/

 

Recomendações:

Edentar o código para que fique o máximo legível possível.

 

Sugestões:

O php possui uma sintaxe alternativa que na minha opinião deixa mais elegante. vamos a alguns exemplos:

 

Bloco de IF na sintaxe normal:

if($var){   //alguma coisa}else{   //outra coisa}

Na sintaxe alternativa:

if($var):  //alguma coisaelse:  //outra coisaendif;

Loop de for normal:

for($i = 0; $i < 10; $i++){  //alguma coisa  }

Na sintaxe alternativa:

for($i = 0; $i < 10; $i++ ):    //alguma coisaendfor;

e assim por diante,  isso permite que você encadeie diversos blocos de ifs,  for.. while  dentro do outro sem usar os delimitadores { }(chaves) deixando o código muito mais limpo!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Dif ontem a noite eu vi suas dicas, mas apesar das mudanças de nada adiantou, ele não vai p página secreta.

Com relação a uma sintaxe alternativa, ainda não tenho conhecimentos mais avançados, estamos começando agora a ver php, e também gostaria de dizer que não tenho tanto mérito no código assim não, kkkk, porque o professor já havia passado parte dele para nós , eu só precisei modificar algumas coisas e acrescentar outras.

Bom quanto ao "apachê" eu fiz tudo de novo com o apachê funcionando e mesmo assim ele não vai p página secreta.

Tô tão desanimada e chateada, porque já faz 3 dias que estou tentando fazer funcionar, já modifiquei um monte de códigos e não consigo saber onde estou errando.E me desculpe, quando postei aqui acabei por não prestar atenção na edentação, mas no meu código tá tudo separadinho, organizado.

Após baixar o exemplo que você deixou acima do meu código, eu vi que esta igual ao meu e neste esquema que você mostrou acima dá p ver o resultado. Para ter certeza que o problema é no meu programa, eu testei o que você me enviou que esta rodando , e no meu programa, mesmo com o apachê , não rodou, estou começando a acreditar que o problema esta no meu programa.

o que foi isso que você usou acima p rodar o php ?

Tem outra maneira de visualizar?

E obrigado até agora pela ajuda.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Moderador

@PanteraCordPreto

 

O exemplo está funcionando porque no servidor está sempre online o apache, então qualquer arquivo .php que eu enviar lá ele vai interpretar.

O objetivo de eu ter posto lá era para provar que seu código estava correto, ou seja, você estava no caminho certo.

O que pode estar acontecendo é que no seu computador esteja com problemas na execução do apache. Posso afirmar com certeza que sem o apache funcionando corretamente o php não vai ser interpretado.

 

O que sugiro fazer é:

 

easyphp-run.PNG

Link para o comentário
Compartilhar em outros sites

  • Solução

Dif muito obrigado pela ajuda. 

Fiz tudo como você ensinou acima.

No entanto agora ele está dando a seguinte informação , quando digito a senha .

 

"Notice: A session had already been started - ignoring session_start() in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Luana Martins\secreta.php on line 3

luana"

 

Pelo que entendi ele esta informando que a sessão já havia iniciado? É isso ?

mas não procede porque foi a primeira vez que executei , depois de ter instalado o easy.

Alguma coisa que preciso mudar? Configuração, nome ... ?

 

Deixa eu explicar melhor. Eu fiz umas modificações no código senha.php e ficou assim :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Luana Martins</title><link href="style.css" rel="stylesheet" type="text/css"></head><body>  <br> <div id="geral">     <br><?php session_start();session_name('secreta');$login = $_POST['login'];$senha = $_POST['senha'];if (($login=='luana')&& ($senha=='123456')){$_SESSION['validacao']=1; $_SESSION['login']=$login;header('Location:secreta.php');}else{echo "<center>Login ou senha errados!!!</center>";echo "</br>";}?><div id="form"><form id="form1" name="form1" method="post" action="index.php">  <label>  <input type="submit" name="botao" id="botao" value="Voltar" />  </label></form><br>        </div>  </div></body></html>
 
 
Agora ele está indo para a página secreta, no entanto informa este código citado acima:
 

Dif consegui...

Entendi o que estava acontecendo de errado, tão claro, mas ao mesmo tempo minhas vistas cansadas, rsrsrs, depois de 5 dias em cima deste PHP, tentando fazer funcionar finalmente e graças a sua ajuda eu consegui.

Nem tenho como agradecer, acho que uma boa maneira de agradecer é deixando o código aqui para que outras pessoas que também tenham dúvida seguir este caminho.

O problema que estava dando acima é que não havia necessidade de uma session_start(); no secreta.php. Agora ele não mostra mais o problema.

então irei deixar aqui para todos que precisarem o "meu senha.php e o secreta.php".

 

senha.php

 

 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Luana Martins</title><link href="style.css" rel="stylesheet" type="text/css"></head><body>  <br> <div id="geral">     <br><?php session_start();session_name('secreta');$login = $_POST['login'];$senha = $_POST['senha'];if (($login=='luana')&& ($senha=='123456')){$_SESSION['validacao']=1; $_SESSION['login']=$login;header('Location:secreta.php');}else{echo "<center>Login ou senha errados!!!</center>";echo "</br>";}?><div id="form"><form id="form1" name="form1" method="post" action="index.php">  <label>  <input type="submit" name="botao" id="botao" value="Voltar" />  </label></form><br>        </div>  </div></body></html>
 
 
E o secreta.php
 
<?php // secreta.phpsession_start();if($_SESSION['validacao']==1){?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Luana Martins</title><link href="style.css" rel="stylesheet" type="text/css"></head><body>  <br> <div id="geral">     <br><div id="logo"><img src="simbol.jpg" width="200" height="40" alt="" /></div>   <div id="logon">                  <div id="menu"><ul><li><a href="#">Link 1</a></li><li><a href="#">Link 2</a></li><li><a href="#">Link 3</a></li><li><a href="index.php">Deslogar</a></li></ul></div>        </div>        <div id="conteudo" align="center"><img src="led.jpg" width="800" height="390" alt="" /></div>        <div id="rodape"><img src="ledze.jpg" width="800" height="50" alt="" /></div></div></body></html><?php}else{echo "acesso negado";}?>
 
ainda estou terminando o restante do layout da página secreta, mas agora é só uma questão de HTML mesmo.
 
Muitooo obrigado mesmo.
Bijx e valeu!!
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Moderador

@PanteraCordPreto

 

Analisando o que aconteceu no código, notei que você meio que "unificou" as coisas.

Provavelmente ele se perdeu.. pois além de estar "redirecionando" para a mesma página, você abriu duas vezes o session_start();

 

Tente seguir  a lógica anterior, criando um arquivo para o formulário por exemplo login.html

Neste login.html, você coloca no action o senha.php( contendo apenas a parte do php, sem as marcações html)

E no secreta.php sim você inclui a marcação html.

Contudo, ainda existe uma maneira de você "contornar isso.. usando o "error_reporting(0)" no seu php.. faz com que ele ignore as mensagens de erro, embora isso não seja recomendado.

 

Por sugestão tenta desta forma:

 

login.html

<form id="form1" name="form1" method="post" action="senha.php">    Nome: <input name="login" type="text" id="textfield" size="30" />    Senha: <input name="senha" type="password" id="textfield2" size="15" />    <input type="submit" name="button" id="button" value="Submit" /></form>

senha.php

<?phpsession_start();session_name('secreta');$login = $_POST['login'];$senha = $_POST['senha'];if (($login == 'luana') && ($senha == '123456')) {       $_SESSION['validacao'] = 1;    $_SESSION['login'] = $login;    header('Location:secreta.php');} else {    echo "Login ou senha errados!!!";}?>

secreta.php

<?php//aqui você abre o session nomeado para secretasession_start('secreta');//testa a validação, ou seja, se a variavel de sessão validação seja igual a 1if ($_SESSION['validacao'] == 1) {?>   <!DOCTYPE html><html lang="pt-br"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="description" content=""><meta name="keywords" content=""><meta name="author" content=""><meta name="reply-to" content=""><meta name="generator" content="Eclipse mars"><script src="http://code.jquery.com/jquery-2.1.1.min.js"></script><title>Insert title here</title><style type="text/css">    .nome{        width: 500px;        height: 200px;        background: green;        color: yellow;        border: 5px solid rgba(255,155,10,0.5);        text-align: center;        font-size: 50pt;        line-height: 200px;        text-shadow: 5px 5px rgba(255, 0, 100, 0.5);            }</style></head><body>	<div class="nome">  	   <?php 	       $meuNome = "Luana";	       	       echo $meuNome; 	   ?> 	</div></body></html><?php } else {    echo "acesso negado";}?>

O que quero que você perceba é que não se pode declarar duas vezes session_start().

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...