Enviar dados através de URL externa utilizando formulário, com carregamento na mesma página
Olá!
Sou iniciante em PHP e estou montando um formulário para receber dados através de POST, e imprimi-los em uma URL customizada. O objetivo do form é o cadastramento de leads em uma plataforma terceira de CRM, que só aceita a inclusão de dados desta forma.
A estrutura da URL é a seguinte: https://crm4u.azurewebsites.net/api/Android/PutLead/< NOME >;< E-MAIL >;< TELEFONE >;< OBSERVACOES >/281/739164197
Aparentemente estou conseguindo executar o script e manipular o endereço, mas só consegui fazer isso com a função header("Location").
Formulário:
mail_lead_santos.php
Com isso, após o preenchimento do formulário, naturalmente o usuário cai nesta URL final. De que forma eu conseguiria executar essa função através do formulário, mas mantê-lo na página de preenchimento? Entendo que a melhor forma talvez seja através de jquery/ajax, mas como trabalhar em conjunto com a função header?
Obrigado!
Sou iniciante em PHP e estou montando um formulário para receber dados através de POST, e imprimi-los em uma URL customizada. O objetivo do form é o cadastramento de leads em uma plataforma terceira de CRM, que só aceita a inclusão de dados desta forma.
A estrutura da URL é a seguinte: https://crm4u.azurewebsites.net/api/Android/PutLead/< NOME >;< E-MAIL >;< TELEFONE >;< OBSERVACOES >/281/739164197
Aparentemente estou conseguindo executar o script e manipular o endereço, mas só consegui fazer isso com a função header("Location").
Formulário:
<form id="formulario" action="mail_lead_santos.php" method="post"> Nome: <input type="text" id="nome" name="nome"><br> E-mail: <input type="text" id="email" name="email"><br> Telefone: <input type="tel" id="telefone" name="telefone"><br> Motivo: <select id ="observacoes" name="observacoes"> <option value="Opção 1">Opção 1</option> <option value="Opção 2">Opção 2</option> <option value="Opção 3">Opção 3</option> </select><br> <input id="enviar" name="enviar" type="submit" value="Enviar!"> </form>
mail_lead_santos.php
<?php $nome = $_POST['nome']; $email = $_POST['email']; $telefone = $_POST['telefone']; $observacoes = $_POST['observacoes']; $final = 'Location: https://crm4u.azurewebsites.net/api/Android/PutLead/'.$nome.';'.$email.';'.$telefone.';'.$observacoes.';'.'/281/739164197'; header($final); ?>
Com isso, após o preenchimento do formulário, naturalmente o usuário cai nesta URL final. De que forma eu conseguiria executar essa função através do formulário, mas mantê-lo na página de preenchimento? Entendo que a melhor forma talvez seja através de jquery/ajax, mas como trabalhar em conjunto com a função header?
Obrigado!
Chico
Curtidas 0
Respostas
Chico
23/04/2020
Olá!
Sou iniciante em PHP e estou montando um formulário para receber dados através de POST, e imprimi-los em uma URL customizada. O objetivo do form é o cadastramento de leads em uma plataforma terceira de CRM, que só aceita a inclusão de dados desta forma.
A estrutura da URL é a seguinte: https://crm4u.azurewebsites.net/api/Android/PutLead/< NOME >;< E-MAIL >;< TELEFONE >;< OBSERVACOES >/281/739164197
Aparentemente estou conseguindo executar o script e manipular o endereço, mas só consegui fazer isso com a função header("Location").
Formulário:
mail_lead_santos.php
Com isso, após o preenchimento do formulário, naturalmente o usuário cai nesta URL final. De que forma eu conseguiria executar essa função através do formulário, mas mantê-lo na página de preenchimento? Entendo que a melhor forma talvez seja através de jquery/ajax, mas como trabalhar em conjunto com a função header?
Obrigado!
Sou iniciante em PHP e estou montando um formulário para receber dados através de POST, e imprimi-los em uma URL customizada. O objetivo do form é o cadastramento de leads em uma plataforma terceira de CRM, que só aceita a inclusão de dados desta forma.
A estrutura da URL é a seguinte: https://crm4u.azurewebsites.net/api/Android/PutLead/< NOME >;< E-MAIL >;< TELEFONE >;< OBSERVACOES >/281/739164197
Aparentemente estou conseguindo executar o script e manipular o endereço, mas só consegui fazer isso com a função header("Location").
Formulário:
<form id="formulario" action="mail_lead_santos.php" method="post"> Nome: <input type="text" id="nome" name="nome"><br> E-mail: <input type="text" id="email" name="email"><br> Telefone: <input type="tel" id="telefone" name="telefone"><br> Motivo: <select id ="observacoes" name="observacoes"> <option value="Opção 1">Opção 1</option> <option value="Opção 2">Opção 2</option> <option value="Opção 3">Opção 3</option> </select><br> <input id="enviar" name="enviar" type="submit" value="Enviar!"> </form>
mail_lead_santos.php
<?php $nome = $_POST['nome']; $email = $_POST['email']; $telefone = $_POST['telefone']; $observacoes = $_POST['observacoes']; $final = 'Location: https://crm4u.azurewebsites.net/api/Android/PutLead/'.$nome.';'.$email.';'.$telefone.';'.$observacoes.';'.'/281/739164197'; header($final); ?>
Com isso, após o preenchimento do formulário, naturalmente o usuário cai nesta URL final. De que forma eu conseguiria executar essa função através do formulário, mas mantê-lo na página de preenchimento? Entendo que a melhor forma talvez seja através de jquery/ajax, mas como trabalhar em conjunto com a função header?
Obrigado!
Pessoal,
Conversei com um amigo e ele me disse que um caminho melhor seria fazer essa função por jquery, e acabei reescrevendo dessa forma:
<form id="formulario" action="" method="get"> <input type="hidden" id="unidade" name="unidade" value="281"> <input type="hidden" id="chave" name="chave" value="739164197"> Nome: <input type="text" id="nome" name="nome"><br> E-mail: <input type="text" id="email" name="email"><br> Telefone: <input type="tel" id="telefone" name="telefone"><br> Motivo: <select id ="observacoes" name="observacoes"> <option value="Opção 1">Opção 1</option> <option value="Opção 2">Opção 2</option> <option value="Opção 3">Opção 3</option> </select><br> <input id="enviar" name="enviar" type="submit" value="Enviar!"> </form> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script type="text/javascript"> $(function () { $("#formulario").on('submit', function (event) { var nome = $("#nome").val(); var email = $("#email").val(); var telefone = $("#telefone").val(); var observacoes = $("#observacoes").val(); var unidade = $("#unidade").val(); var chave = $("#chave").val(); $.get( `https://crm4u.azurewebsites.net/api/Android/PutLead/$;$;$;$/$/$/`) .done(function( data ) { alert("Sucesso"); }) .fail(function() { alert( "Erro" ); }) event.preventDefault(); }); }); </script>
O problema é que ele está retornando erro. Alguém sabe o que eu posso estar fazendo de errado?
Obrigado!
GOSTEI 0
Ayrton Pereira
23/04/2020
Chico,
Poderia postar o código do erro aqui?
Poderia postar o código do erro aqui?
GOSTEI 0
Chico
23/04/2020
Chico,
Poderia postar o código do erro aqui?
Poderia postar o código do erro aqui?
Ayrton, obrigado pelo retorno. Demorei para responder porque o pessoal mudou tudo e desenvolveram uma API (via SOAP) para o envio das informações. Com isso, precisei começar novamente todo o script, e parti pra uma solução em PHP, apesar de ser bem iniciante no assunto.
Como é um CRM que não tem muita abrangência, a documentação só dá algumas instruções, e tentei pesquisar algumas soluções para começar o desenvolvimento. Primeiro, precisei procurar algumas soluções para a validação, etapa necessária antes do envio do formulário. Testei e deu tudo certo - estou trabalhando com o seguinte código:
<?php $client = new SoapClient('http://crm4u.azurewebsites.net/WS_Integracao.asmx?WSDL'); $function = 'GetToken'; $arguments= array('GetToken' => array( 'ApiKey' => XXXXXXXX )); $options = array('location' => 'http://crm4u.azurewebsites.net/WS_Integracao.asmx'); $result = $client->__soapCall($function, $arguments, $options); $json = $result->GetTokenResult; $item = json_decode($json, true); print_r($item); $apikey = 'XXXXXXXX'; $apipassword = 'YYYYYYYY'; $combinacao = $apikey."|".$apipassword."|".$item; $combinacaomd5 = md5($combinacao); $tokenfinal = $combinacaomd5."|".$apikey; print_r($tokenfinal); ?>
Agora que tenho o token validado, criptografado e concatenado (modelo solicitado) para envio do formulário, preciso entender como devo prosseguir para realizar uma chamada através do método "PutLead", enviando o elemento "Pessoa" e o "Token Final" (gerado no código anterior). Para "Pessoa", devo enviar os seguintes campos:
Nome: string com tamanho máximo de 150 caracteres
E-mail: string com tamanho máximo de 150 caracteres
Telefone: string com tamanho máximo de 20 caracteres
Observações: string com tamanho máximo de 500 caracteres
Com isso, o formato da realização da chamada deverá ser o seguinte:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/"> <soapenv:Header/> <soapenv:Body> <tem:PutLead> <tem:pessoa> <tem:Nome>Nome do lead</tem:Nome> <tem:Email>lead@email.com</tem:Email> <tem:Telefone>11 99999-9999</tem:Telefone> <tem:Observacoes>Observações do lead</tem:Observacoes> </tem:pessoa> <tem:Key>TOKEN GERADO PELO CÓDIGO ANTERIOR</tem:Key> </tem:PutLead> </soapenv:Body> </soapenv:Envelope>
Caso a requisição seja concluída com sucesso, deveremos ter o retorno do ID do lead - conforme código abaixo:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <PutLeadResponse xmlns="http://tempuri.org/"> <PutLeadResult>ID DO LEAD</PutLeadResult> </PutLeadResponse> </soap:Body> </soap:Envelope>
Pesquisei por diversas coisas, mas não encontrei nada relevante sobre o assunto - não sei nem se é a melhor forma de realizar este processo. Preferi seguir com o PHP pois tenho alguma afinidade, mesmo sendo pouca. Alguém consegue me dar uma luz?
Obrigado!
GOSTEI 0
Chico
23/04/2020
Chico,
Poderia postar o código do erro aqui?
Poderia postar o código do erro aqui?
Ayrton, obrigado pelo retorno. Demorei para responder porque o pessoal mudou tudo e desenvolveram uma API (via SOAP) para o envio das informações. Com isso, precisei começar novamente todo o script, e parti pra uma solução em PHP, apesar de ser bem iniciante no assunto.
Como é um CRM que não tem muita abrangência, a documentação só dá algumas instruções, e tentei pesquisar algumas soluções para começar o desenvolvimento. Primeiro, precisei procurar algumas soluções para a validação, etapa necessária antes do envio do formulário. Testei e deu tudo certo - estou trabalhando com o seguinte código:
<?php $client = new SoapClient('http://crm4u.azurewebsites.net/WS_Integracao.asmx?WSDL'); $function = 'GetToken'; $arguments= array('GetToken' => array( 'ApiKey' => XXXXXXXX )); $options = array('location' => 'http://crm4u.azurewebsites.net/WS_Integracao.asmx'); $result = $client->__soapCall($function, $arguments, $options); $json = $result->GetTokenResult; $item = json_decode($json, true); print_r($item); $apikey = 'XXXXXXXX'; $apipassword = 'YYYYYYYY'; $combinacao = $apikey."|".$apipassword."|".$item; $combinacaomd5 = md5($combinacao); $tokenfinal = $combinacaomd5."|".$apikey; print_r($tokenfinal); ?>
Agora que tenho o token validado, criptografado e concatenado (modelo solicitado) para envio do formulário, preciso entender como devo prosseguir para realizar uma chamada através do método "PutLead", enviando o elemento "Pessoa" e o "Token Final" (gerado no código anterior). Para "Pessoa", devo enviar os seguintes campos:
Nome: string com tamanho máximo de 150 caracteres
E-mail: string com tamanho máximo de 150 caracteres
Telefone: string com tamanho máximo de 20 caracteres
Observações: string com tamanho máximo de 500 caracteres
Com isso, o formato da realização da chamada deverá ser o seguinte:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/"> <soapenv:Header/> <soapenv:Body> <tem:PutLead> <tem:pessoa> <tem:Nome>Nome do lead</tem:Nome> <tem:Email>lead@email.com</tem:Email> <tem:Telefone>11 99999-9999</tem:Telefone> <tem:Observacoes>Observações do lead</tem:Observacoes> </tem:pessoa> <tem:Key>TOKEN GERADO PELO CÓDIGO ANTERIOR</tem:Key> </tem:PutLead> </soapenv:Body> </soapenv:Envelope>
Caso a requisição seja concluída com sucesso, deveremos ter o retorno do ID do lead - conforme código abaixo:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <PutLeadResponse xmlns="http://tempuri.org/"> <PutLeadResult>ID DO LEAD</PutLeadResult> </PutLeadResponse> </soap:Body> </soap:Envelope>
Pesquisei por diversas coisas, mas não encontrei nada relevante sobre o assunto - não sei nem se é a melhor forma de realizar este processo. Preferi seguir com o PHP pois tenho alguma afinidade, mesmo sendo pouca. Alguém consegue me dar uma luz?
Obrigado!
GOSTEI 0