Fórum Tratar formulário na mesma página PHP #528330
10/08/2015
0
Estou tentando tratar um formulário na mesma página PHP via action. Como?
Tenho uma página index.php com um formulário:
<form action="index.php?action=autenticar" method=POST> inputs... </form> ]
Ele envia esses dado para essa mesma página, porém, quando eu carrego ela no navegador diz que a variável action não é definida/não existe;
Segue o código fonte:
codigo_fonte_12.3.php
<?PHP
if($_REQUEST['action'] == 'login')
{
if($_POST['CAMPO_USUARIO'] == 'andre' && $_POST['CAMPO_SENHA'] == 'abc123')
{
session_start();
$_SESSION['usuario'] == $_POST['CAMPO_USUARIO'];
$_SESSION['autenticado'] = 'TRUE';
header("location: codigo_fonte_12.4.php");
}
else
{
echo "Seu nome de usuário e senha está incorreto!";
}
}
else
{
?>
<form action="codigo_fonte_12.3.php?action=login" method="POST">
Digite seu nome:
<input type=text name=CAMPO_USUARIO><BR>
Sigite sua Senha:
<input type=text name=CAMPO_SENHA><BR>
<input type="SUBMIT" value="Autenticar">
</form>
<?php } ?>
codigo_fonte_12.4.php
<?PHP
session_start();
if(!isset($_SESSION['autenticado']) || $_SESSION['autenticado'] != TRUE)
{
echo "Acesso não autorizado!";
echo "Por gentileza, faça seu login:
<a href=\"codigo_fonte_12.3.php\">Clicando aqui</a>";
exit();
}
else
{
echo "Você está logado com o usuário: ". $_SESSION['usuario'];
}
?>
<BR><BR>
Conteúdo privado de sua aplicação!
Carlos Eduardo
Curtir tópico
+ 0Posts
11/08/2015
William
1 - Você informa que vai submeter o formulário via POST mas envia informações via URL também!
<form action="index.php?action=autenticar" method=POST>
2 - Você verifica se action é igual a 'login', mas passa o valor 'autenticar'
if($_REQUEST['action'] == 'login')
3 - Trabalhar aceitando submissões com $_REQUEST não é uma boa prática de segurança.
4 - Nunca trabalhe direto com os parâmetros enviados pela submissão, primeiro trate esses valores, a forma mais simples de fazer isso seria usando expressão ternária:
$action = (isset($_REQUEST['action'] )) ? $_REQUEST['action'] : ''; $usuario = (isset($_POST['CAMPO_USUARIO'])) ? $_POST['CAMPO_USUARIO'] : ''; $senha = (isset($_POST['CAMPO_SENHA'])) ? $_POST['CAMPO_SENHA'] : '';
Gostei + 0
11/08/2015
Marcio Araujo
Gostei + 0
11/08/2015
William
Gostei + 0
11/08/2015
Marcio Araujo
Gostei + 0
11/08/2015
William
Gostei + 0
11/08/2015
Marcio Araujo
Gostei + 0
11/08/2015
Carlos Eduardo
Consegui resolver meu problema:
Na linha 8 do codigo_fonte_13.3.php
$_SESSION['usuario'] == $_POST['CAMPO_USUARIO'];
Eu estava fazendo a atribuição errada, a não conseguia exibir o nome no codigo_fonte_13.4.php pois não estava atribuindo a variável do POST.
Agora funciona, porém, a mensagem continua aparecendo por que eu não dei um submit pelo que entendo..
Aconteceu um equivoco ali no primeiro código que passei, não é aquele o form, desculpe me distraí na hora de escrever o post, o form que envia os dados é o do codigo_fonte_13.3.php.
Quanto ao submeter os forms via método POST e passar os parâmetros via url também, teria uma forma mai segura então de enviar vários forms em uma mesma página php?
Por exemplo, tenho um cadastro de produto e de cliente em uma página index.php, ambos separados em abas diferentes, como posso submeter esses formulários tratando-os separados em um mesmo arquivo php?
Outra dúvida, no caso do $_REQUEST, eu teria que usar o $_GET?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)