Test access method, whether it is GET or POST

Asked

Viewed 1,598 times

2

I’m having trouble inserting data into my form. The problem involves the transaction mechanism of my form, displaying the error message of die before you even load the page.

My advisor said the problem is because the code is running directly without any treatment. He also said that this would be solved by placing all the code inside a function, only calling it if the access method was POST. For this, a test would be made, where it would be tested if the access method was GET or POST, if it is GET would display the form normally, if it were POST would be called the function that handles the register.

How this test of the access method would be done?

Follow the code that handles the registration forms:

<?php
//CONEXÃO COM O BANCO DE DADOS
include_once("conexao.php");

function cadastrar(){
    //VARIÁVEIS COM DADOS DO FORMULÁRIO
    $nome = $_POST["nome"];
    $email = $_POST["email"];
    $senha = $_POST["senha"];
    $senhaConfirm = $_POST["senhaConfirm"];
    $telefone = $_POST["telefone"];
    $celular = $_POST["celular"];
    $rua = $_POST["rua"];
    $bairro = $_POST["bairro"];
    $numero = $_POST["numero"];
    $cidade = $_POST["cidade"];
    $estado = $_POST["estado"];
    $cep = $_POST["cep"];
    $complemento = $_POST["complemento"];
    $usuario = $_POST["usuario"];
    $nomeMercado = $_POST["nomeMercado"];
    $cnpj = $_POST["cnpj"];
    $telefoneMercado = $_POST["telefoneMercado"];
    $celularMercado = $_POST["celularMercado"];
    $expedienteInicio = $_POST["expedienteInicio"];
    $expedienteFim = $_POST["expedienteFim"];
    $arquivo = $_POST["arquivo"];

    //INICIO DA TRANSAÇÃO
    $pdo->beginTransaction();

    //INSERÇÃO DE DADOS NA TABELA ENDEREÇO
    $insertEndereco = $pdo->prepare("INSERT INTO ENDERECO(BAIRRO, CEP, CIDADE, COMPLEMENTO, ESTADO, NUMERO, RUA) VALUES(:bairro, :cep, :cidade, :complemento, :estado, :numero, :rua)");  
    $insertEndereco->bindValue(':bairro',$bairro);
    $insertEndereco->bindValue(':cep',$cep);
    $insertEndereco->bindValue(':cidade',$cidade);
    $insertEndereco->bindValue(':complemento',$complemento);
    $insertEndereco->bindValue(':estado',$estado);
    $insertEndereco->bindValue(':numero',$numero);
    $insertEndereco->bindValue(':rua',$rua);
    $testaInsertEndereco = $insertEndereco->execute();
    //VERIFICA SE A INSERÇÃO DE DADOS DE ENDEREÇO RETORNA TRUE(FOI REALIZADA)
    if (!$testaInsertEndereco) {
        die("Oops, houve um erro no cadastro de seu endereço, tente novamente ou contacte a adaministração.");
    }
    $cod_endereco = $pdo->lastInsertId();
    //INSERÇÃO DE DADOS NA TABELA USUARIO
    $insertUsuario = $pdo->prepare("INSERT INTO USUARIO(TIPO_USUARIO, NOME_USUARIO, E-MAIL_USUARIO, SENHA_USUARIO, CELULAR, COD_ENDERECO, TELEFONE) VALUES (:usuario,:nome,:email,:senha,:celular,:cod_endereco,:telefone)"); 
    $insertUsuario->bindValue(':usuario',$usuario);
    $insertUsuario->bindValue(':nome',$nome);
    $insertUsuario->bindValue(':email',$email);
    $insertUsuario->bindValue(':senha',$senha);
    $insertUsuario->bindValue(':celular',$celular);
    $insertUsuario->bindValue(':cod_endereco',$cod_endereco); 
    $insertUsuario->bindValue(':telefone',$telefone);
    $testaInsertUsuario = $insertUsuario->execute();
    if (!$testaInsertUsuario) {
        die("Oops, houve um erro no cadastro de seus dados pessoais, tente novamente ou contacte a adaministração.");
    }
    $cod_usuario = $pdo->lastInsertId();

    //INSERÇÃO DE DADOS NA TABELA SUPERMERCADO
    $insertMercado = $pdo->prepare("INSERT INTO SUPERMERCADO (CNPJ, NOME, FOTO_SUPERMERCADO, INICIO_EXPEDIENTE,                 
        FIM_EXPEDIENTE, TELEFONE) VALUES (:cod_endereco_mercado, :cod_usuario, :cnpj, :nomeMercado, :arquivo, :expedienteInicio, :expedienteFim, :$telefoneMercado)");
        $insertMercado->bindValue(':cod_endereco_mercado',$cod_endereco);
        $insertMercado->bindValue(':cod_usuario',$cod_usuario);  
    $insertMercado->bindValue(':cnpj',$cnpj);
    $insertMercado->bindValue(':nomeMercado',$nomeMercado);
    $insertMercado->bindValue(':arquivo',$arquivo);
    $insertMercado->bindValue(':expedienteInicio',$expedienteInicio);
    $insertMercado->bindValue(':expedienteFim',$expedienteFim);
    $insertMercado->bindValue(':telefoneMercado',$telefoneMercado);
    $testaInsertMercado = $insertMercado->execute();
    //CASO TENHA DADO ALGUM ERRO NA TRANSAÇÃO rollBack IRÁ CANCELAR TODAS ELAS
    if (!$testaInsertMercado) {
        die("Oops, houve um erro no cadastro de seu mercado, tente novamente ou contacte a adaministração.");
            $pdo->rollBack();
    }
    //FINALIZANDO TRANSAÇÃO
    $pdo->commit();
}
?>

2 answers

5

The test would be something like:

if($_SERVER["REQUEST_METHOD"] == "POST")
{    //faça algo...
  • I did as follows: if($_SERVER["REQUEST_METHOD"] == "POST"){ register(); } Function register(){ /code that handles the records/ } But the page does not load, giving php error.

  • which error shows ?

  • Well, I was not very specific in the error, actually the error occurs when I submit the form data, that is, tighten in registering. The error is HTTP ERROR 500.

-4

It would be right to do this equal treatment in the above answer, or (if your business logic allows), you can simply put $_REQUEST['nome_parametro'], that it will pick up POST, GET, PUT, DELETE, etc...

  • Why did they give -3 in my answer?

Browser other questions tagged

You are not signed in. Login or sign up in order to post.