Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过php将post数据保存到文件中_Php_Html - Fatal编程技术网

通过php将post数据保存到文件中

通过php将post数据保存到文件中,php,html,Php,Html,我正在使用一个简单的HTML表单以这种格式发送http post请求:key1=value1&key2=value2&key3=value3&key4=value4&key5=value5,我正在尝试使用PHP将http post数据保存到文本文件中 这是我想到的PHP代码: $data1 = $_POST['key1'] ; $data2 =$_POST['key2'] ; $data3 =$_POST['key3'] ; $data4 =$_POST['key4']; $data5 =$_P

我正在使用一个简单的HTML表单以这种格式发送http post请求:
key1=value1&key2=value2&key3=value3&key4=value4&key5=value5
,我正在尝试使用PHP将http post数据保存到文本文件中

这是我想到的PHP代码:

$data1 = $_POST['key1'] ;
$data2 =$_POST['key2'] ;
$data3 =$_POST['key3'] ;
$data4 =$_POST['key4'];
$data5 =$_POST['key5'];
$fp = fopen('data.txt', 'a');
fwrite($fp, $_POST['data1'], $_POST['data2'], $_POST['data3'], $_POST['data4'], $_POST['data5']);
fclose($fp);
但它只创建了文件“data.txt”,而没有将任何值添加到文本文件中

我做错了什么?改变

fwrite($fp, $_POST['data1'], $_POST['data2'], $_POST['data3'], $_POST['data4'], $_POST['data5']);

您定义的所有“数据”变量都是单独的,它们不是$\u POST数组的一部分

fwrite需要单个数据字符串,而不是一组单独的数据,因此需要将它们连接在一起。我在它们之间加了逗号,这样你就有机会把它们区分开来,但很明显,你可以根据自己的需要改变它。文件:

另外,如果您的变量是在URL查询字符串(而不是请求正文)中发送的,那么您需要使用$\u GET来检索它们,如下所示:

$data1 = $_GET['key1'];
$data2 = $_GET['key2'];
$data3 = $_GET['key3'];
$data4 = $_GET['key4'];
$data5 = $_GET['key5'];
<?php

$data1 = $_REQUEST['key1'];
$data2 = $_REQUEST['key2'];
$data3 = $_REQUEST['key3'];
$data4 = $_REQUEST['key4'];
$data5 = $_REQUEST['key5'];
$fp = fopen('data.txt', 'a');
fwrite($fp, implode("\n", [$data1, $data2, $data3, $data4, $data5]));
fclose($fp);

即使请求方法是POST,也应使用
$\u GET
访问查询字符串参数

此外,请求中不存在索引
data1
data2
data3
data4
data5

fwrite
最多接受3个参数

最终代码应如下所示:

$data1 = $_GET['key1'];
$data2 = $_GET['key2'];
$data3 = $_GET['key3'];
$data4 = $_GET['key4'];
$data5 = $_GET['key5'];
<?php

$data1 = $_REQUEST['key1'];
$data2 = $_REQUEST['key2'];
$data3 = $_REQUEST['key3'];
$data4 = $_REQUEST['key4'];
$data5 = $_REQUEST['key5'];
$fp = fopen('data.txt', 'a');
fwrite($fp, implode("\n", [$data1, $data2, $data3, $data4, $data5]));
fclose($fp);

file\u put\u contents('data.txt',json\u encode($\u POST))
可能是一个不错的选择,因为它允许以后轻松解码和访问原始数据?是的,
file\u put\u contents
带有
file\u APPEND
标志(OP的
fopen
运行
a
),以及
json\u encode>(如果他打算直接阅读,可能使用
JSON\u PRETTY\u PRINT
flag),这似乎是一个有用的方法。不,没有像我预期的那样工作,这段代码没有创建文件,它只显示php文件“代码”的内容以形式回应submit@Arad016您应该以
开始PHP标记。您应该添加
它不会在提交页面显示内容,但也不会将值添加到文本文件中。如果查询字符串中存在参数,它只创建data.txt文件并创建5行,但不会在这些行上创建数据(编辑答案)。如果你看到页面上显示的PHP代码,这意味着你没有正确设置PHP,或者你试图在没有.PHP扩展名的文件中运行它。它只在文件中添加了4个逗号“,,,,,,”。我忘记了在代码开头添加PHP标记,现在我添加了标记,现在它只显示了逗号“它只显示逗号”…在屏幕上,还是在文件中?描述发生了什么时,请清晰准确。另外,如果这些值是在查询字符串上发送的(而不是在请求正文中-问题中也不是很清楚),那么您必须使用GET来检索它们。请参阅编辑的答案。