使用 file_get_contents 将数据从 Swift 传递到 PHP for JSON?
Passing Data from Swift to PHP for JSON using file_get_contents?
我是 Swift 3 的新手,我正在尝试使用 PHP 将一些数据传递到服务器。可以肯定的是,我是两种语言的初学者。
我正在尝试接收从 SWIFT 到 PHP 的数据。
但是,我意识到 PHP 中的 $_POST 或 $_REQUEST 不适用于 JSON。相反,我听说有必要使用 'file_get_contents' 或 'PHP://input'.
所以我真的花了很多时间来弄清楚如何让它发挥作用。
以下是PHP这边的代码。但是,它似乎只适用于原始数据,不适用于 JSON 编码。
有没有人认为下面的代码不正确,无法从 SWIFT 接收数据?
<?php
header("Content-Type: application/json");
$con=mysqli_connect("localhost","123","123!!","123");
$menu_main_item_store_id = file_get_contents('php://input');
$menu_main_item_store_id_received = $menu_main_item_store_id;
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "SELECT * FROM menu_main_items WHERE menu_main_item_store_id=$menu_main_item_store_id_received AND menu_main_item_in_use_check = 'yes'";
if ($result = mysqli_query($con, $sql)) {
$resultArray = array();
$tempArray = array();
while($row = $result->fetch_object()){
$tempArray = $row;
array_push($resultArray, $tempArray);
}
echo json_encode($resultArray);
}
mysqli_close($con);
?>
// 你可以试试这个代码
<?php
define('HOST','localhost');
define('USER','DatabaseUserName');
define('PASS','Password');
define('DB','DataBaseName');
$con = mysqli_connect(HOST,USER,PASS,DB);
$sql = "select * from DATABAS_TABLE_NAME";
$res = mysqli_query($con,$sql);
$result = array();
while($row = mysqli_fetch_array($res)){
array_push($result,
array('Username'=>$row[0],
'Cell'=>$row[1],
));
}
echo json_encode(array("result"=>$result));
mysqli_close($con);
?>
file_get_contents('php://input')
将为您提供一个字符串,其中包含发布到 PHP 的任何数据。它不会自动计算出数据的格式,因此您需要以某种方式解析数据,例如json_decode()
.
记得检查 JSON 格式中的错误,并且所有输入都是不受信任的 - 您不确定是您的应用程序发送数据,有人可以找出 URL 并发送一些奇怪的东西来破解你的 PHP 代码。
Swift 似乎正在使用 POST.
发送正确的数据
let url:NSURL = NSURL(string: url)!
let session = URLSession.shared
let request = NSMutableURLRequest(url: url as URL)
request.httpMethod = "POST"
let paramString = "table_id='1'"
request.httpBody = paramString.data(using: String.Encoding.utf8)
但是,当 PHP 收到它时,
它returns没什么。
$contents = $_REQUEST['table_id'];
$abc = $contents;
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "SELECT * FROM menu_main_items WHERE table_id='".$abc."'";
if ($result = mysqli_query($con, $sql)) {
$resultArray = array();
$tempArray = array();
while($row = $result->fetch_object()){
$tempArray = $row;
array_push($resultArray, $tempArray);
}
echo json_encode($resultArray);
}
如果我手动输入 $content="1";然后检索数据。
您认为问题是什么?
我是 Swift 3 的新手,我正在尝试使用 PHP 将一些数据传递到服务器。可以肯定的是,我是两种语言的初学者。
我正在尝试接收从 SWIFT 到 PHP 的数据。
但是,我意识到 PHP 中的 $_POST 或 $_REQUEST 不适用于 JSON。相反,我听说有必要使用 'file_get_contents' 或 'PHP://input'.
所以我真的花了很多时间来弄清楚如何让它发挥作用。
以下是PHP这边的代码。但是,它似乎只适用于原始数据,不适用于 JSON 编码。
有没有人认为下面的代码不正确,无法从 SWIFT 接收数据?
<?php
header("Content-Type: application/json");
$con=mysqli_connect("localhost","123","123!!","123");
$menu_main_item_store_id = file_get_contents('php://input');
$menu_main_item_store_id_received = $menu_main_item_store_id;
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "SELECT * FROM menu_main_items WHERE menu_main_item_store_id=$menu_main_item_store_id_received AND menu_main_item_in_use_check = 'yes'";
if ($result = mysqli_query($con, $sql)) {
$resultArray = array();
$tempArray = array();
while($row = $result->fetch_object()){
$tempArray = $row;
array_push($resultArray, $tempArray);
}
echo json_encode($resultArray);
}
mysqli_close($con);
?>
// 你可以试试这个代码
<?php
define('HOST','localhost');
define('USER','DatabaseUserName');
define('PASS','Password');
define('DB','DataBaseName');
$con = mysqli_connect(HOST,USER,PASS,DB);
$sql = "select * from DATABAS_TABLE_NAME";
$res = mysqli_query($con,$sql);
$result = array();
while($row = mysqli_fetch_array($res)){
array_push($result,
array('Username'=>$row[0],
'Cell'=>$row[1],
));
}
echo json_encode(array("result"=>$result));
mysqli_close($con);
?>
file_get_contents('php://input')
将为您提供一个字符串,其中包含发布到 PHP 的任何数据。它不会自动计算出数据的格式,因此您需要以某种方式解析数据,例如json_decode()
.
记得检查 JSON 格式中的错误,并且所有输入都是不受信任的 - 您不确定是您的应用程序发送数据,有人可以找出 URL 并发送一些奇怪的东西来破解你的 PHP 代码。
Swift 似乎正在使用 POST.
发送正确的数据let url:NSURL = NSURL(string: url)!
let session = URLSession.shared
let request = NSMutableURLRequest(url: url as URL)
request.httpMethod = "POST"
let paramString = "table_id='1'"
request.httpBody = paramString.data(using: String.Encoding.utf8)
但是,当 PHP 收到它时, 它returns没什么。
$contents = $_REQUEST['table_id'];
$abc = $contents;
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "SELECT * FROM menu_main_items WHERE table_id='".$abc."'";
if ($result = mysqli_query($con, $sql)) {
$resultArray = array();
$tempArray = array();
while($row = $result->fetch_object()){
$tempArray = $row;
array_push($resultArray, $tempArray);
}
echo json_encode($resultArray);
}
如果我手动输入 $content="1";然后检索数据。
您认为问题是什么?