从APP提交的数据与Php本地脚本不同

时间:2016-07-20 14:16:57

标签: javascript php mysql json cordova

我目前正在开发一个带有Phonegap,PHP和MySQL的混合应用程序项目,该API涉及发送电子邮件和数据填写程序调用将其保存在数据库(MySQL)上,电子邮件还可以但是我在保存MySQL数据方面遇到了问题,我创建了一个带有表单的单个文件来测试API并且工作,我注意到当我使用APP将数据发送到API时,数据带有特殊字符,如@,当我使用表单时,数据来自例如%40(@的ASCII代码),并且过程调用正常。

代码如下,测试代码以及​​API代码,API版本使用来自APP的JSON发送到PHP的数据。

API版

 <?php

Include("dbconect.php"); #DB Connector

if (!empty($_GET)) {

/* Recuperando Dados do GET */
$DestinoEmail = "webmaster@testfab.com"; //Destino para o Email de   Notificação

$NomeCompleto  = $_GET['Nome'];
$TelefoneFixo  = $_GET['TelefoneFixo'];
$TelefoneMovel = $_GET['TelefoneMovel'];
$email       = $_GET['Mail'];
$cor           = $_GET['CorSelecionada'];
$Rg         = $_GET['NumeroRG'];
$cep           = $_GET['NumeroCEP'];
$assunto       = $_GET['AssuntoEmail'];
$descricao   = $_GET['descricaoEmail'];
$mobileID     = $_GET['MobileReg'];
$sexo         = $_GET['Sex'];
$nCasa       = "0";

/* Envia o email notificando */

#Corpo do Email
$msg= "<!DOCTYPE html>
    <html>
       <head>
          <meta charset='utf-8'>
          <style type='text/css'>
          body {

           color: #3A6EA5;
          }

          h5 {
              background-color: #3A6EA5;
              padding: 10px 30px 10px 30px;
              width: 950px;
          }
          </style>
       </head>
         <body>
          <p>&nbsp;</p>
          <p>Prezado $NomeCompleto,</p>
          <p>Seu Teste foi encaminhado com sucesso para nossa linha , favor aguarde retorno.</p>
          <p>&nbsp;</p>
          <p>&nbsp;</p>
        </body>
    </html>";

# Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= 'From: <webmaster@testemat.com>' . "\r\n";
$assuntoMail = "Teste de Material";
#Codificar Assunto para aceitar os acentos
$assunto_codificado = sprintf('=?%s?%s?%s?=', 'UTF-8', 'B', base64_encode($assuntoMail));
#Quebra de Linha caso a linha ultrapasse 70 caracteres
$msg = wordwrap($msg,70);
#Envio do Email
mail($DestinoEmail,$assunto_codificado ,$msg,$headers);

/*  Executar a Proc para armazenar os dados    */

$ncasa = "0";
$sth = $db->prepare('CALL    PR_REGISTER_REPORT(?,?,?,?,?,?,?,?,?,?,?,?,@out)');
$sth->bindParam(1,  $NomeCompleto, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(2,  $TelefoneFixo, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(3,  $TelefoneMovel, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(4,  $email, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(5,  $cor, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(6,  $Rg, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(7,  $cep, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(8,  $ncasa, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(9,  $mobileID, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(10, $sexo, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(11, $assunto, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(12, $descricao, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->execute();

//Retorno OK para o APP
$resultados["validate"] = "ok";
$resultadosJson = json_encode($resultados);
echo $_GET['jsoncallback'] . '(' . $resultadosJson . ');';

}else{

Echo "Interface Somente com APP";

}

?>

测试版本(test-process.php)

<?php

  Include("dbconect.php"); #DB Connector

  if (!empty($_GET)) {

  /* Recuperando Dados do GET */
  $DestinoEmail = "webmaster@testfab.com"; //Destino para o Email de       Notificação

  $NomeCompleto  = $_GET['Nome'];
  $TelefoneFixo  = $_GET['TelefoneFixo'];
  $TelefoneMovel = $_GET['TelefoneMovel'];
  $email         = $_GET['Mail'];
  $cor         = $_GET['CorSelecionada'];
  $Rg           = $_GET['NumeroRG'];
  $cep         = $_GET['NumeroCEP'];
  $assunto     = $_GET['AssuntoEmail'];
  $descricao     = $_GET['descricaoEmail'];
  $mobileID   = $_GET['MobileReg'];
  $sexo       = $_GET['Sex'];
  $nCasa         = "0";

  /* Envia o email notificando */

  #Corpo do Email
  $msg= "<!DOCTYPE html>
      <html>
       <head>
          <meta charset='utf-8'>
          <style type='text/css'>
          body {

           color: #3A6EA5;
          }

          h5 {
              background-color: #3A6EA5;
              padding: 10px 30px 10px 30px;
              width: 950px;
          }
          </style>
       </head>
         <body>
          <p>&nbsp;</p>
          <p>Prezado $NomeCompleto,</p>
          <p>Seu Teste foi encaminhado com sucesso para nossa linha , favor aguarde retorno.</p>
          <p>&nbsp;</p>
          <p>&nbsp;</p>
        </body>
    </html>";

# Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= 'From: <webmaster@testemat.com>' . "\r\n";
$assuntoMail = "Teste de Material";
#Codificar Assunto para aceitar os acentos
$assunto_codificado = sprintf('=?%s?%s?%s?=', 'UTF-8', 'B', base64_encode($assuntoMail));
#Quebra de Linha caso a linha ultrapasse 70 caracteres
$msg = wordwrap($msg,70);
#Envio do Email
mail($DestinoEmail,$assunto_codificado ,$msg,$headers);

/*  Executar a Proc para armazenar os dados    */

$ncasa = "0";
$sth = $db->prepare('CALL    PR_REGISTER_REPORT(?,?,?,?,?,?,?,?,?,?,?,?,@out)');
$sth->bindParam(1,  $NomeCompleto, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(2,  $TelefoneFixo, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(3,  $TelefoneMovel, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(4,  $email, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(5,  $cor, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(6,  $Rg, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(7,  $cep, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(8,  $ncasa, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(9,  $mobileID, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(10, $sexo, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(11, $assunto, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->bindParam(12, $descricao, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->execute();

//Retorno OK para o APP
$resultados["validate"] = "ok";
$resultadosJson = json_encode($resultados);
echo $_GET['jsoncallback'] . '(' . $resultadosJson . ');';

}else{

echo"

<form action='test-process.php' method='get'>
Nome Completo:<br>
<input type='text' name='Nome' value=''><br>
Telefone Fixo:<br>
<input type='text' name='TelefoneFixo' value=''><br>
 Telefone Movel:<br>
<input type='text' name='TelefoneMovel' value=''><br>
  Email:<br>
<input type='text' name='Mail' value=''><br>
 Cor:<br>
<input type='text' name='CorSelecionada' value=''><br>
 NumeroRG:<br>
<input type='text' name='NumeroRG' value=''><br>
NumeroCEP:<br>
<input type='text' name='NumeroCEP' value=''><br>
 AssuntoEmail:<br>
<input type='text' name='AssuntoEmail' value=''><br>
  DescricaoEmail:<br>
<input type='text' name='descricaoEmail' value=''><br>
  MobileReg:<br>
<input type='text' name='MobileReg' value=''><br>
Sex:<br>
<input type='text' name='Sex' value=''><br>
<input type='submit' value='Submit'>
</form>";

}

?>

有什么建议吗?

  

已经尝试强制使用utf8_encode($ foo);   还没有工作=(

0 个答案:

没有答案