我正在尝试在支付界面网站上收到JSON POST,但我无法对其进行解码.
当我打印:
echo $_POST;
Run Code Online (Sandbox Code Playgroud)
我明白了:
Array
Run Code Online (Sandbox Code Playgroud)
当我尝试这个时,我什么也得不到:
if ( $_POST ) {
foreach ( $_POST as $key => $value ) {
echo "llave: ".$key."- Valor:".$value."<br />";
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试这个时,我什么也得不到:
$string = $_POST['operation'];
$var = json_decode($string);
echo $var;
Run Code Online (Sandbox Code Playgroud)
我尝试这个时得到NULL:
$data = json_decode( file_get_contents('php://input') );
var_dump( $data->operation );
Run Code Online (Sandbox Code Playgroud)
当我做:
$data = json_decode(file_get_contents('php://input'), true);
var_dump($data);
Run Code Online (Sandbox Code Playgroud)
我明白了:
NULL
Run Code Online (Sandbox Code Playgroud)
JSON格式是(根据支付站点文档):
{
"operacion": {
"tok": "[generated token]",
"shop_id": "12313",
"respuesta": "S",
"respuesta_details": "respuesta S",
"extended_respuesta_description": "respuesta extendida",
"moneda": "PYG",
"monto": "10100.00",
"authorization_number": "123456",
"ticket_number": "123456789123456", …Run Code Online (Sandbox Code Playgroud) 是否有PHP的内置函数将采用布尔值并返回其整数等价?0表示FALSE,1表示TRUE?当然你可以轻松创建一个函数来做到这一点,我只是问一下PHP内部是否有内置函数.我已经尝试过intval()将它投射到(int)但是它们没有工作,它们在TRUE和FALSE两种情况下都返回0.
编辑:问题是它不是真正的布尔值,它是一个字符串"false","true",php没有检测到它传递了一个布尔值的jquery帖子.问题解决了,谢谢!
我从来没有使用PHP但是现在,我需要编写一个PHP文件,在日志文件中显示POST HTTP请求正文的内容.
我已经读过你可以通过_POST数组访问正文的变量.不幸的是,它似乎是空的,虽然我很确定我的HTTP请求的正文中有东西!
我应该使用什么来100%确定我的HTTP正文的内容?
谢谢.
我正在向内容中带有XML的php服务器发送请求:
POST /index3.php HTTP/1.0
Connection: Close
Accept: application/xml
Content-Type: text/xml
<?xml version="1.0" encoding="UTF-8"?>
<root />
Run Code Online (Sandbox Code Playgroud)
我在全局检查瓦尔(如$_GET,$_POST,$_ENV,$_FILES,$_REQUEST...),但它们都是空的.
我怎样才能检索服务器中的内容?
以下代码按预期工作.在Google Chrome上打开" https://wiki.epfl.ch/ " 页面,然后在Developer Console上执行此代码.注意:页面" https://wiki.epfl.ch/test.php "不存在,因此无法加载,但这不是问题.
response = await fetch(""https://wiki.epfl.ch/lapa-studio/documents/DTS/laser%20tutorial.pdf"");
response.text().then(function(content) {
formData = new FormData();
console.log(content.length);
console.log(content);
formData.append("content", content);
fetch("https://wiki.epfl.ch/test.php", {method: 'POST', body: formData});
})
Run Code Online (Sandbox Code Playgroud)
它记录:
content.length: 57234
content: %PDF-1.3
%?????????
4 0 obj
<< /Length 5 0 R /Filter /FlateDecode >>
stream
x??K??F?????;¢?
...
Run Code Online (Sandbox Code Playgroud)
转到Developer Network选项卡,选择'test.php'页面,导航到"Requested payload:",您可以看到以下内容:
------WebKitFormBoundaryOJOOGb7N43BxCRlv
Content-Disposition: form-data; name="content"
%PDF-1.3
%?????????
4 0 obj
<< /Length 5 0 R /Filter /FlateDecode >>
stream
...
------WebKitFormBoundaryOJOOGb7N43BxCRlv
Run Code Online (Sandbox Code Playgroud)
问题是请求文件是二进制文件(PDF),文本被"损坏".当实际文件大小(使用wget命令获取)为60248字节时,它报告大小为57234字节.
问题是:如何获取和发送二进制数据,而不进行修改?
我试着更换response.text()的response.blob(),如下: …
我试图使用JUTery.ajax()与PUT和DELETE方法,并与请求一起发送一些数据,但在打印请求时在PHP端,它是空的.
$.ajax({
url: 'ajax.php',
type: 'DELETE',
data: {some:'some',data:'data'},
}
Run Code Online (Sandbox Code Playgroud)
在PHP中:
print_r($_REQUEST);
Run Code Online (Sandbox Code Playgroud)
我得到一个空数组.我不知道它是一个jquery或php的东西,或者只是我无法以这种方式发送数据.我知道DELETE方法是在没有发送附加数据的情况下使用的,但是这里每个ajax请求都被发送到同一个脚本.
我在对一个新的API进行了一些测试之后发现了这一点,而那边的管理员说我正在做GET,而我正在做我的POST.启用调试后,我发现请求将执行初始POST,然后对新的302 URL执行GET.
在我理解了问题所在之后,我的问题现在得到解决,但这是一个错误还是预期的行为?如果您在POST上收到302,则不应引发异常,或者重试POST到新URL.
我不想把它作为一个bug记录在GitHub上,除非我确定它是一个.只想要一些输入.
谢谢
我想学习php和mySQL,我买了一本书(php&mySql:缺少的手册2edition)
我在win8 64bit机器上安装了Wampserver2.4.
服务器配置
Apache版本:2.4.4
PHP版本:5.4.12
在第一课我得到这个错误:(
Notice: Use of undefined constant STDIN - assumed 'STDIN' in C:\wamp\www\study\sayHello.php on line 5
Run Code Online (Sandbox Code Playgroud)
这是文件"sayHello.php"中的php代码
<?php
echo "Hello there. So I hear you're learning to be a PHP programmer!\n";
echo "Why don't you type in your name for me:\n";
$name = trim(fgets(STDIN));
echo "\nThanks, " . $name . ", it's really nice to meet you.\n\n";
?>
Run Code Online (Sandbox Code Playgroud) 我有一个内置AS3的视频播放器.我使用以下代码拍摄视频播放器的快照:
var uploadUrl = 'http://localhost:8000/assets/uploadframegrab';
var bitmap = new Bitmap();
var graphicsData : Vector.<IGraphicsData>;
graphicsData = container.graphics.readGraphicsData();
bitmap.bitmapData = GraphicsBitmapFill(graphicsData[0]).bitmapData;
var jpgEncoder:JPGEncoder = new JPGEncoder(85);
var jpgStream:ByteArray = jpgEncoder.encode(bitmap.bitmapData);
var loader:URLLoader = new URLLoader();
var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
var csrf:URLRequestHeader = new URLRequestHeader("X-CSRF-Token", csrfToken);
var request:URLRequest = new URLRequest(uploadUrl);
request.requestHeaders.push(header);
request.requestHeaders.push(csrf);
request.method = URLRequestMethod.POST;
request.data = jpgStream;
loader.load(request);
Run Code Online (Sandbox Code Playgroud)
我需要使用我的一个Laravel路线将编码上传到JPG.我的路线看起来像:
Route::post('assets/uploadframegrab', 'AssetController@uploadFramegrab');
当我运行AS3代码时,它调用laravel路由,但我的$request变量似乎是空的.Request Payload网络信息选项卡上显示所有标题和内容的属性包含的内容类似于图像文件的来源.
如果我做了return Response::json(['filedata' => $request]);所有我得到的是这个:
filedata: {
attributes: {},
request: …Run Code Online (Sandbox Code Playgroud) 场景一发送x-www-form-urlencoded数据
POST /path HTTP/1.1
Content-Type: application/x-www-form-urlencoded
foo=bar
Run Code Online (Sandbox Code Playgroud)
运行print_r($request->getParsedBody());返回正常:
Array
(
[foo] => bar
)
Run Code Online (Sandbox Code Playgroud)
运行print_r($request->getBody()->getContents());返回一个字符串foo=bar
场景2发送application/json数据
POST /path HTTP/1.1
Content-Type: application/json
{
"foo": "bar"
}
Run Code Online (Sandbox Code Playgroud)
运行print_r($request->getParsedBody());返回一个空数组。Array ( )
但是,运行print_r($request->getBody()->getContents());效果很好:
{"foo":"bar"}
这是预期的行为吗?
这意味着,如果我们要发送x-www-form-urlencoded数据,我们应该使用getParsedBody().
getBody()->getContents()如果我们发送 application/json?则应使用while 。
附加信息:
请求对象是使用以下命令创建的:
$request = \Laminas\Diactoros\ServerRequestFactory::fromGlobals(
$_SERVER, $_GET, $_POST, $_COOKIE, $_FILES
);
Run Code Online (Sandbox Code Playgroud)