【发布时间】:2014-06-02 07:31:11
【问题描述】:
我有以下脚本:
<?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());
?>
当我使用网络浏览器打开此页面时
import.php?receiver=316XXXXXXXX&sender=316XXXXXXXX&message=Wtf&date=1401700682&date_utc=1401693482&reference=4665583XX
信息已添加到我的数据库中。
但是,当 API 访问(并尝试发布到)页面时,什么都不会发生。但是,在我的 Apache 访问日志中,访问是存在的:
212.61.XXX.XXX - - [02/Jun/2014:09:18:02 +0200] "GET /import.php?receiver=3164XXXXXXXX&sender=316XXXXXXXX&message=Wtf&date=1401700682&date_utc=1401693482&reference=4665583XX HTTP/1.1" 200 44 "-" "-"
我不知道发生了什么。对此有什么想法吗?
【问题讨论】:
-
是的,api 正在使用 GET 到达终点,您是否还可以检查错误日志并查看有什么内容,并且您在 api 中使用 /import.php 而不是尝试提供完整路径即
GET http://yourdomain.com/import.php?.... -
SQL 转义你的参数 如果你在
$_GET['message']中有一个'它会坏掉!!! -
强制性建议,Don't use
mysql_*functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解prepared statements,并使用PDO 或MySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial.