javascript ajax не отправляет буквенные символы в php - PullRequest
0 голосов
/ 29 июня 2019

в моем javascript-коде ajax я посылаю некоторые данные в другие php-файлы для записи данных в базу данных mysql. когда я использую только числовые данные, это записывает все данные в MySQL (как это)

var myKeyVals = { pays: '123', order_id :'555' } 

var saveData = $.ajax({

  type: 'POST',
  url: "<?=$base_url?>pay/Paypal2.php",
  data: myKeyVals,
  dataType: "text",
  success: function(resultData)
  {
      alert('Transaction completed by ' + details.payer.name.given_name+'--'+data.orderID)
  }
}

но когда я использую буквенный символ в данных, ajax-скрипт не отправляет данные как это

 var myKeyVals = { pays: 'abc784', order_id :'ab45c' } 

 var saveData = $.ajax({

  type: 'POST',
  url: "<?=$base_url?>pay/Paypal2.php",
  data: myKeyVals,
  dataType: "text",
  success: function(resultData)
  {
      alert('Transaction completed by ' + details.payer.name.given_name+'--'+data.orderID)
  }
}

мой php-код записывающего устройства выглядит следующим образом

      $x=$_POST['pays'];
      $y=$_POST['order_id'];

      $sql = "INSERT INTO table(pays, order_id) VALUES ($x, $y)";
      if ($conn->query($sql) === TRUE) {
        echo "New record created successfully";
      } 
      else {
          echo "Error: " . $sql . "<br>" . $conn->error;
      }
      $conn->close();

1 Ответ

0 голосов
/ 29 июня 2019

Если вы хотите предотвратить некоторые SQL-инъекции и решить вашу проблему, просто используйте параметры

$stmt = $conn->prepare("INSERT INTO table(pays, order_id) VALUES (?, ?)");
if(!$stmt) die('we have had some problem here');
$stmt->bindparam('s', $x); //replaces first ?
$stmt->bindparam('s', $y); //replaces second ?
$stmt->execute();

Также есть некоторые полезные практики, которые вы можете применить, например, если $ y является числовым

$y=$_POST['order_id'];
if( !is_numeric($y) ) die('$y must be a numeric value');

Или, если $ y является хэшем, образованным только буквенно-цифровыми символами, вы также можете проверить его

if( !preg_match("/[^a-z0-9]+$/i",$y) ) die('$y has other characters other than a-z0-9');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...