- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对以下内容有些困惑,感谢您的帮助。我已经删除了这个错误检查示例的错误检查代码...
我正在运行 PHP 5.4.14 并使用 PHP 服务器...
编辑:感谢 Álvaro 的帮助,我现在可以看到问题是 $HTTP_RAW_POST_DATA
确实命中了 PHP 开发服务器,但由于某种原因它是不用于填充 $_POST
。
当我单击表单提交按钮时调用的 JavaScript 片段(取自真实代码并在此处进行了简化)是...
xmlhttp = new XMLHttpRequest();
<snip>
params =
"forename=" + encodeURIComponent(form.forename.value) + "&" +
"surname=" + encodeURIComponent(form.surname.value) + "&" +
"nonce=" + encodeURIComponent(form.nonce.value);
<snip>
xmlhttp.open("POST", url, false);
<snip>
if (xmlhttp.overrideMimeType)
{
xmlhttp.overrideMimeType('text/html');
}
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.setRequestHeader("Connection", "close");
alert(params);
xmlhttp.send(params);
从 alert
我可以看到参数没问题。
然后 POST 请求正确命中我的脚本,但是 $_REQUEST
数组(以及 $_POST
)的错误日志给了我一个空数组。 $_REQUEST/_POST
的错误日志在我输入脚本后立即完成。
我的脚本回复并且 javascript 可以获取回复...当然我的脚本只能返回一个错误代码...doh。
知道为什么会这样吗?
编辑:感谢 Álvaro G. Vicario 到目前为止的帮助。现在我可以看到请求确实使浏览器正常。
Request URL:http://localhost:8000/php_database/search_member.php
Request Method:POST
Status Code:200 OK
Request Headers
POST /php_database/search_member.php HTTP/1.1
Host: localhost:8000
Connection: keep-alive
Content-Length: 69
Origin: http://localhost:8000
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
Content-type: application/x-www-form-urlencoded
Accept: */*
Referer: http://localhost:8000/php_database/db_search.php
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: PHPSESSID=954ebbfadb841ef659a3961a44d715871bdedbaa
Form Data
forename=ss&surname=dd&nonce=6c3e75f500dffdbfefe95d91710432dd8fd23fab
Response Headers
HTTP/1.1 200 OK
Host: localhost:8000
Connection: close
X-Powered-By: PHP/5.4.14
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-type: text/xml
PHP 脚本运行...脚本的前两行是...
<?php
$DEBUG = TRUE;
if($DEBUG){ error_log("\n\n\n", 0); error_log("\n\n> SEARCH MEMBER SCRIPT", 0); }
error_log(print_r($_REQUEST, TRUE), 0);
记录输出...
> SEARCH MEMBER SCRIPT
[Mon May 27 15:42:22 2013] Array
(
)
如果我为 $_POST
添加另一个打印,同样...
如果我遵循...评论并让我的脚本打印出一些全局变量...
我得到以下内容
array(0) {
}
array(0) {
}
array(0) {
}
array(25) {
["DOCUMENT_ROOT"]=>
string(7) "C:\TJJT"
["REMOTE_ADDR"]=>
string(3) "::1"
["REMOTE_PORT"]=>
string(5) "59543"
["SERVER_SOFTWARE"]=>
string(29) "PHP 5.4.14 Development Server"
["SERVER_PROTOCOL"]=>
string(8) "HTTP/1.1"
["SERVER_NAME"]=>
string(9) "localhost"
["SERVER_PORT"]=>
string(4) "8000"
["REQUEST_URI"]=>
string(31) "/php_database/search_member.php"
["REQUEST_METHOD"]=>
string(4) "POST"
["SCRIPT_NAME"]=>
string(31) "/php_database/search_member.php"
["SCRIPT_FILENAME"]=>
string(38) "C:\TJJT\php_database\search_member.php"
["PHP_SELF"]=>
string(31) "/php_database/search_member.php"
["HTTP_HOST"]=>
string(14) "localhost:8000"
["HTTP_CONNECTION"]=>
string(10) "keep-alive"
["HTTP_CONTENT_LENGTH"]=>
string(2) "75"
["HTTP_ORIGIN"]=>
string(21) "http://localhost:8000"
["HTTP_USER_AGENT"]=>
string(108) "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36"
["HTTP_CONTENT_TYPE"]=>
string(33) "application/x-www-form-urlencoded"
["HTTP_ACCEPT"]=>
string(3) "*/*"
["HTTP_REFERER"]=>
string(48) "http://localhost:8000/php_database/db_search.php"
["HTTP_ACCEPT_ENCODING"]=>
string(17) "gzip,deflate,sdch"
["HTTP_ACCEPT_LANGUAGE"]=>
string(14) "en-US,en;q=0.8"
["HTTP_COOKIE"]=>
string(50) "PHPSESSID=b1e2eb2ba3d687bfeadee6bc17e1b994c214cd3a"
["REQUEST_TIME_FLOAT"]=>
float(1369666751.2246)
["REQUEST_TIME"]=>
int(1369666751)
}
string(75) "forename=xfvz&surname=zxcvzx&nonce=276083038fdd9a932ff06b94e5786fdd840873a4"
在上面的底部我可以清楚地看到...
string(75) "forename=xfvz&surname=zxcvzx&nonce=276083038fdd9a932ff06b94e5786fdd840873a4"
哇。所以 $HTTP_RAW_POST_DATA
确实命中了 PHP 开发服务器...但由于某些原因,它没有用于填充 $_POST
。
最佳答案
您的客户端代码正在发送一个 POST 请求,其中(显然)预期的数据作为请求正文,信息到达 PHP。但是,信息最终在 $HTTP_RAW_POST_DATA
而不是 $_POST
中。
always_populate_raw_post_data
directive 的手册页解释这个:
Always populate the
$HTTP_RAW_POST_DATA
containing the raw POST data. Otherwise, the variable is populated only with unrecognized MIME type of the data. However, the preferred method for accessing the raw POST data is php://input. $HTTP_RAW_POST_DATA is not available with enctype="multipart/form-data".
这提供了一个可能的解释:PHP 无法识别 Content-Type
请求 header 。
PHP 错误跟踪器 (POST values in Google Chrome XHR) 中有一份报告建议了此解释。原因可能是谷歌浏览器做了一些与其他浏览器不同的事情,PHP 的内置服务器无法处理它。我认为您应该遵循这一研究方向。
关于PHP开发服务器: $HTTP_RAW_POST_DATA is not populating $_POST. ..怎么来的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16775031/
我在 MongoDb 上有具有以下结构的文档, 我正在将 Mongoose 版本 ^4.8.1 与我的 Node 应用程序一起使用。我为上述文档创建了 3 个模式模型,如下所示, Event.js v
选择查询在 waterline-postgresql 的 .populate() 中不起作用。 Model.find(query).populate(assoc.alias,{select:['fie
我正在创建三个下拉菜单,它工作得很好,但我希望第二个下拉列表出现在第一个的选择上,第三个出现在第二个的选择上如何如果有人可以指导我或给我一个例子,我将不胜感激 PS:第二个下拉列表或表有一个来自第一个
我正在尝试使用 Show 模型中的数据填充()我的 User 模型中的所有订阅。我已经尝试过 .populate('subscriptions.show') 但它对结果没有任何作用。 如果我将订阅设置
我有一个集合,它有一个引用另一个集合的 objectId 的属性。 placeSchema = mongoose.Schema({ name: String, category: [{
我有一个像这样的 Mongoose 模式: var Address = { doorNo:String, city:String, state:String, coun
我有以下带有选择多个属性的下拉菜单,我需要将它们转换为普通下拉菜单,保持其功能: 从此: 对此: 以下是带有绑定(bind)的选择下拉列表: 下拉列表最初是从 foreach
我在 Kotlin 上使用 MongoDB 和 Spring,我希望我的应用程序在启动时填充 MongoDB 集合。 (并在每次启动时清洁它) 我的问题是,如果我正在填充的某些数据有问题,我该如何一一
org.apache.commons.beanutils.BeanUtils: BeanUtils.populate(Object bean, Map properties); Populate th
目前,我正在尝试使用一副纸牌填充 ArrayList,通过使用 for 循环来获取每张纸牌。它并没有完全按照我的预期工作,我希望有人能为我指明正确的方向。 我看到以下错误: System.Argume
我正在使用 MongooseDeepPopulate项目的包。我有 SchemaA、SchemaB、SchemaC、SchemaD。我的 SchemaD、SchemaC 连接到 SchemaB,而 S
我正在尝试更好地掌握 Express.js,并尝试创建一个简单的博客网站。 我的用户模型很简单:用户名、显示名称和一系列帖子。 const userSchema = new Schema({
我尝试了几种不同的方法,但我就是无法让 Mongoose 将 Users 信息填充到 Items 集合中。 文件:users.js var mongoose = require( 'mongoose'
我正在为 Spring Batch 作业编写集成测试。我想在每次测试之前使用存储库填充器将测试数据加载到内存数据库中。 到目前为止,我找到的示例似乎表明存储库填充器只会在上下文初始化时填充一次。这对我
这个问题已经有答案了: Get multiple elements by Id (15 个回答) 已关闭 8 年前。 我的网站中有 2 个下拉菜单,一个适用于用户使用手机时,另一个适用于用户使用桌面时
我正在使用 swift 构建一个 iPhone 应用程序,并且我有一个矩形横幅广告,我正试图展示它。我已经为 iAds 正确设置了我的 Dev 帐户,但广告没有填充到应用程序中。我得到了一个测试广告,
我想用指定的用户查询图像表,但我的代码不起作用。 Image.find().populate('user', { id : '1' }).sort({ updatedAt: 'desc' }).exe
所以我有我的改革对象,我想在验证之前解析我的字符串数据,以便能够使用干式验证 需要(:我的字段)。填充(GT?:0) 为了做到这一点,我使用 populator 属性:membership_fee,填
我有一个程序已经运行良好几个月了。今天早上我一直在尝试在服务器上安装 Postfix,突然网站上出现错误。这是回溯 mod_wsgi (pid=11948): Target WSGI script '
我使用函数.populate() 来获取按类别 分组的equipements,所以我的模型是这样的 var mongoose = require('../config/db'); var Equipe
我是一名优秀的程序员,十分优秀!