Tratar formulário na mesma página PHP
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
Posts
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'] : '';
11/08/2015
Marcio Araujo
11/08/2015
William
11/08/2015
William
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?
Clique aqui para fazer login e interagir na Comunidade :)