Php 脚本在浏览器中工作,但在API请求时不工作
我有以下脚本:Php 脚本在浏览器中工作,但在API请求时不工作,php,mysql,apache,api,get,Php,Mysql,Apache,Api,Get,我有以下脚本: <?php require_once("config/db.php"); mysql_query("INSERT INTO SMS (receiver, sender, message, date, reference) VALUES ('".$_GET['receiver']."', '".$_GET['sender']."', '".$_GET['message']."', '".$_GET['date']."', '".$_GET['reference']."')"
<?php
require_once("config/db.php");
mysql_query("INSERT INTO SMS
(receiver, sender, message, date, reference)
VALUES
('".$_GET['receiver']."', '".$_GET['sender']."', '".$_GET['message']."', '".$_GET['date']."', '".$_GET['reference']."')")
or die(mysql_error());
?>
我不知道发生了什么事。对此有何想法?因此,请尝试转义您的参数,我怀疑您要插入的消息包含
”
,甚至知道您正在对其进行编辑
<?php
require_once("config/db.php");
mysql_query("INSERT INTO SMS (receiver, sender, message, date, reference)
VALUES('".mysql_real_escape_string($_GET['receiver'])."',
'".mysql_real_escape_string($_GET['sender'])."',
'".mysql_real_escape_string($_GET['message'])."',
'".mysql_real_escape_string($_GET['date'])."',
'".mysql_real_escape_string($_GET['reference'])."')")
or die(mysql_error());
?>
问题是在页面上执行的IP检查。我的IP是白名单,API的IP不是。愚蠢的错误
感谢您提供的所有答案和改进代码的方法。是的,api使用GET达到了终点,您是否也可以检查错误日志,看看是否有问题,并且您在api中使用了/import.php,而不是尝试给出完整路径,即GEThttp://yourdomain.com/import.php?....
SQL如果在$\u GET['message']
中有一个'
,则按原样转义您的参数!!!强制性建议。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,非常感谢您的回答。稍后我将查看MySQLi和PDO。但是,目前,脚本正在运行(在我的浏览器中)。当我从浏览器中的Apache访问日志(如上所示)复制请求时,它会将信息添加到数据库中。此外,正如您在日志中看到的,GET请求中没有类似“的字符”。问题是当API请求页面时什么都没有发生。这很奇怪,因为这很可能是问题所在,您是否使用curl来获取API?它返回什么,如果插入查询有问题,那么它将返回mysql_error(),并且您是否有任何SQL限制或为列设置数据类型,例如它们都是varchar()。同时检查error.log以获取线索。
<?php
require_once("config/db.php");
mysql_query("INSERT INTO SMS (receiver, sender, message, date, reference)
VALUES('".mysql_real_escape_string($_GET['receiver'])."',
'".mysql_real_escape_string($_GET['sender'])."',
'".mysql_real_escape_string($_GET['message'])."',
'".mysql_real_escape_string($_GET['date'])."',
'".mysql_real_escape_string($_GET['reference'])."')")
or die(mysql_error());
?>
<?php
$host = "127.0.0.1";
$dbname = "da_database";
$user = "username";
$pass = "password";
try {
$pdo = new PDO('mysql:host='.$host.';dbname='.$dbname, $user, $pass, array(
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
);
} catch(PDOException $e) {
//you could mail() this
die('<pre>'.$e->getMessage().'</pre>');
}
try{
$sql = $pdo->prepare("
INSERT INTO SMS (receiver, sender, message, date, reference)
VALUES(?, ?, ?, ?, ?)");
$sql->bindValue(1, $_GET['receiver']);
$sql->bindValue(2, $_GET['sender']);
$sql->bindValue(3, $_GET['message']);
$sql->bindValue(4, $_GET['date']);
$sql->bindValue(5, $_GET['reference']);
$sql->execute();
} catch(PDOException $e){
//you could mail() this
die('<pre>'.$e->getMessage().'</pre>');
}
?>