Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ae galera estou com uma duvida no seguinte
Ex. Crio uma pagina chamada pagina1.php e atribuo uma variavel $variavel = "teste"
Crio outra pagina, ex pagina2.php e quero pegar o resultado da $variavel da pagina1.php, como faço isso?
Obrigado.
Vão surgir inúmeras opções, não tenho certeza se alguém vai apresentar alguma com herança...
Algumas opções:
- cookie;
- sessão;
- post;
- get;
- arquivo;
- banco de dados;é pq fiz uma pagina chamada login.php e dentro de uma td eu coloquei escrito Login inválido! e deixei hidden, quero que apareça somente quando o login estiver errado, porém a validação de usuário é feita na página valida.php, então queria saber como pego o login dessa página e passo pra TD da outra página pra poder aparecer a msg de login inválido ou não.
como você fez o sistema de login? usou session ou cookie? pode adicionar mais um valor à session/cookie já usado na autenticação
<!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>:: TRADE NET::</title>
<style type="text/css">background-color: #369;
}
</style>
<script type="text/javascript">
function ValidaForm()d = document.cadastro;
if (d.usuario.value == ""){
alert("O campo " + d.usuario.name + " deve ser preenchido!");
d.usuario.focus();
return false;
}
if (d.senha.value == ""){
alert("O campo " + d.senha.name + " deve ser preenchido!");
d.usuario.focus();
return false;
}
return true;
}
</script>
<?php session_start(); ?>
</head>
<body>
<p> </p>
<table width="1318" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="148" align="center"> </td>
<td width="1170" align="center"><font color="#333333" size="+6" ><b><img src="img/menu001.gif" width="667" height="176" /></b></font></td>
</tr>
</table>
<p> </p>
<form method="post" action="valida.php" name="cadastro" onsubmit="return ValidaForm()">
<table width="273" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2" bgcolor="#000033"><font color="#FFFFFF" ><b>Para logar, informe login e senha abaixo:</b></font></td>
</tr>
<tr>
<td width="59"><label>Usuário</label></td>
<td width="214"><input type="text" name="usuario" maxlength="50" /></td>
</tr>
<tr>
<td><label>Senha</label></td>
<td><input type="password" name="senha" maxlength="50" /></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Entrar" name="Enviar" onclick="return validaLogin();"/></td>
</tr>
<tr>
<td colspan="2" bgcolor="#000033" align="center" ><font color="#FFFF00" style="visibility: <?php echo $_SESSION['visivel']; ?> id="esconde" "><b> Login inválido!</b></font></td>
</tr>
</table>
</form>
</body>
</html>
esse é meu formulario de login
pelo $_SESSION, suponho que usou session, então é só adicionar mais um valor ao array $_SESSION e recuperá-lo onde precisar
Mas como você viu eu passei a sessão la dentro da td <?php echo $_SESSION['visivel']; ?> porém não funciona, não sei o pqO correto não é visibility, e sim display.
O display possui vários atributos para exibição e somente um para ocultar, que é o NONE.
Como você está usando TD, o display correto é table-cell. Então:
<table>
<tr>
<td style="display:none;">invisível</td>
<td style="display:table-cell;">visível</td>
</tr>
</table>>
Mas como você viu eu passei a sessão la dentro da td <?php echo $_SESSION['visivel']; ?> porém não funciona, não sei o pq
mas o que aparece no código-fonte HTML gerado pela execução? Fica vazio mesmo?
>
O display possui vários atributos para exibição e somente um para ocultar, que é o NONE.
Como você está usando TD, o display correto é table-cell. Então:
Dessa eu não sabia :)
De qualquer forma, veja o HTML gerado. Se estiver vazio, veja se iniciou a session (session_start()). Se aparecer algo (inline, non, etc), siga a dica do Gabriel Heming e veja se usou o atributo certo
Não aparece nada, o HTML fica vazio, eu coloquei o <?php session_start(); ?> entre as tagas <HEAD> </HEAD> é isso mesmo ? quando eu executo a página já vem aparecendo Login inválido, ele teria que vir oculto e só mostrar quando a pessoa errasse o loginNão aparece nada, o HTML fica vazio, eu coloquei o <?php session_start(); ?> entre as tags <HEAD> </HEAD> é isso mesmo ? quando eu executo a página já vem aparecendo Login inválido, ele teria que vir oculto e só mostrar quando a pessoa errasse o logino session_start() deve ser a primeira coisa da página. Deve estar antes de qualquer saída para o navegador, inclusive antes de tags html
e ative todas as mensagens de erro. coloque isto no topo do script
ini_set( 'display_errors', 1 );
error_reporting( E_ALL );Notice: A session had already been started - ignoring session_start() in D:\webs\newtr3\tradenet\seguranca.php on line 26
o session_start() não tem que ser no topo de todas as páginas ?
Só que agora eu logo, ele vai pro index.php mas continua na tela de login, é como se tivesse negado o acesso pra aquele usuário
>
o sessio_start() não tem que ser no topo de todas as páginas ?
sim, mas não pode ser executada duas ou mais vezes. Veja se já não há um session_start() em uma página sendo incluída
quando eu coloco
<?php
include("seguranca.php");
protegePagina();
?>
pra proteger a página ele fica dando tela de login toda hora, nunca loga no sistema, e se eu tiro a função se eu digitar /inde.php ele entra no index sem passar pelo login
É, isso não tem nada a ver com herança, olha analisei teu código, primeiramente a propriedade CSS não é visibility, e sim display como disseram, no seu caso só vai ser display: inline; para exibir e display:none; para ocultar a mensagem. Porém precisamos saber o que está acontecendo no valida.php, a session tabém deve ser a primeira coisa nas páginas que a utilizam. Eu sugiro que no valida você salve na session o nome do usuario logado, o id dele (dependendo da sua aplicação) e uma posição com um boleano de logado ou não, tipo $_SESSION['logado'], daí você direciona devolta para a tela de login, usando o header do php: header("Location: login.php"); por exemplo, então aí você analiza, if($_SESSION['logado']){header("Location: inicial.php")}else{echo 'fala na autenticação'};Se eu coloco none e inline aparece o erro style="display: <br />
<b>Notice</b>: Undefined variable: _SESSION in <b>D:\webs\newtr3\tradenet\login.php</b> on line <b>75</b><br />Deu certo, o problema é que não abria a sessão, ai não achava o valor da variável, agora da certo, mas agora ficou o problema da segurança.
Se eu coloco
<?php include "seguranca.php";
protegePagina();
?>
Ele fica só na tela de login, pedindo usuario e senha toda hora, não sei o pq disso, se eu tiro funciona mas fica sem a segurança, se eu digitar /index.php ele entra sem precisar colocar login e senha
>
<!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>:: TRADE NET::</title>
<style type="text/css">background-color: #369;
}
</style>
<script type="text/javascript">
function ValidaForm()d = document.cadastro;
if (d.usuario.value == ""){
alert("O campo " + d.usuario.name + " deve ser preenchido!");
d.usuario.focus();
return false;
}
if (d.senha.value == ""){
alert("O campo " + d.senha.name + " deve ser preenchido!");
d.usuario.focus();
return false;
}
return true;
}
</script>
<?php session_start(); ?>
</head>
<body>
<p> </p>
<table width="1318" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="148" align="center"> </td>
<td width="1170" align="center"><font color="#333333" size="+6" ><b><img src="img/menu001.gif" width="667" height="176" /></b></font></td>
</tr>
</table>
<p> </p>
<form method="post" action="valida.php" name="cadastro" onsubmit="return ValidaForm()">
<table width="273" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2" bgcolor="#000033"><font color="#FFFFFF" ><b>Para logar, informe login e senha abaixo:</b></font></td>
</tr>
<tr>
<td width="59"><label>Usuário</label></td>
<td width="214"><input type="text" name="usuario" maxlength="50" /></td>
</tr>
<tr>
<td><label>Senha</label></td>
<td><input type="password" name="senha" maxlength="50" /></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Entrar" name="Enviar" onclick="return validaLogin();"/></td>
</tr>
<tr>
<td colspan="2" bgcolor="#000033" align="center" ><font color="#FFFF00" style="visibility: <?php echo $_SESSION['visivel']; ?> id="esconde" "><b> Login inválido!</b></font></td>
</tr>
</table>
</form>
</body>
</html>
esse é meu formulario de login
Como o pessoal já disse seu problema não tem nada a ver com herança.
você está passando o formulário por POST, então é só acessar as variáveis pelo array $_POST[] na página valida.php;
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];
Primeiramente, isso não tem nada a ver com Herança. Herança é um conceito da Orientação a Objetos. Pelo que entendi, você não está usando objetos
Para "passar" variáveis entre páginas, você pode usar session ou cookies. Também é possível passar variáveis via GET, se você acessar pagina2.php?variavel=valor