为了账号安全,请及时绑定邮箱和手机立即绑定

javascript ajax 不发送字母字符到 php

javascript ajax 不发送字母字符到 php

PHP
冉冉说 2021-09-18 10:58:20
在我的 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 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

如果你想防止一些 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');


查看完整回答
反对 回复 2021-09-18
  • 1 回答
  • 0 关注
  • 157 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信