【问题标题】:Write Post data to file with PHP使用 PHP 将 Post 数据写入文件
【发布时间】:2011-06-12 04:33:08
【问题描述】:

我需要使用下面的代码将数据发布到 php 文件,该文件会将其保存在文本文件中。 我只是不知道如何创建 php 文件来接收下面的数据并将其保存在文本文件中。 尽可能简单。

try {  
    // Add your data  
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);  
    nameValuePairs.add(new BasicNameValuePair("stringData", "12345"));  
    nameValuePairs.add(new BasicNameValuePair("stringData", "AndDev is Cool!"));  
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));  

    // Execute HTTP Post Request  
    HttpResponse response = httpclient.execute(httppost);  
    String responseText = EntityUtils.toString(response.getEntity()); 
    tv.setText(responseText);             
} catch (ClientProtocolException e) {  
    // TODO Auto-generated catch block  
} catch (IOException e) {  
    // TODO Auto-generated catch block  
}  

【问题讨论】:

    标签: php http post text


    【解决方案1】:

    1) 在 PHP 中,要从传入请求中获取 POST 数据,请使用 $_POST 数组。 PHP 中的 POST 数组是关联的,这意味着每个传入的参数都是一个键值对。在开发过程中,了解您在 $_POST 中实际得到的内容会很有帮助。您可以使用 printf() 或 var_dump() 转储内容,如下所示。

    var_dump($_POST);
    

    -- 或--

    printf($_POST);
    

    2) 选择一种有用的基于字符串的格式来存储数据。 PHP 有一个 serialize() 函数,您可以使用它来将数组转换为字符串。将数组转换为 JSON 字符串也很容易。我建议使用 JSON,因为在各种语言中使用这种表示法是很自然的(而使用 PHP 序列化会在某种程度上限制你在未来使用 PHP)。在 PHP 5.2.0 及更高版本中,json_encode() 函数是内置的。

    $json_string = json_encode($_POST);
    
    // For info re: JSON in PHP:
    // http://php.net/manual/en/function.json-encode.php
    

    3) 将字符串存储在文件中。尝试使用 fopen()、fwrite() 和 fclose() 将 json 字符串写入文件。

    $json_string = json_encode($_POST);
    
    $file_handle = fopen('my_filename.json', 'w');
    fwrite($file_handle, $json_string);
    fclose($file_handle);
    
    // For info re: writing files in PHP:
    // http://php.net/manual/en/function.fwrite.php
    

    您需要针对所使用的文件路径和文件名提出特定位置和方法。

    注意:也可以使用 $HTTP_RAW_POST_DATA 直接获取 HTTP 请求的 POST 正文。原始数据将是 URL 编码的,它是一个字符串,您可以如上所述写入文件。

    【讨论】:

    • 我只需要知道,我的服务器上的 php 文件应该是什么样子"
    • 标签放在 Hamish 的答案周围,你就可以开始了。
    • 我做到了,它奏效了,非常感谢,一旦我了解它一点点,然后我会用你的方式。感谢您的快速答复
    • From php.net/manual/en/wrappers.php.php -- php://input 允许您从请求正文中读取原始数据。在 POST 请求的情况下,它比 $HTTP_RAW_POST_DATA 更​​可取,因为它不依赖于特殊的 php.ini 指令。此外,对于那些默认情况下不填充 $HTTP_RAW_POST_DATA 的情况,与激活 always_populate_raw_post_data 相比,它可能是一种内存密集度较低的替代方案。 php://input 不适用于 enctype="multipart/form-data"。
    【解决方案2】:

    简单如下:

    file_put_contents('test.txt', file_get_contents('php://input'));
    

    【讨论】:

    • 如果您想获取某个特定键的值并保存它,那么可以。如果您只想转储原始 POST 数据(不必是键值对 - 例如,它可以是二进制数据),那么 'php://input' 流将读取它。这个问题很模糊,要求“尽可能简单”..它并没有变得更简单。
    • 另外,file_put_contents 一键执行 fopen、fwrite 和 fclose - 更易于使用和阅读。
    • 如果答案对您有帮助,请随时点赞。这就是你说谢谢的方式。
    • 将第三个参数FILE_APPEND 添加到file_put_contents 以将请求数据附加到文件中,而不是一直覆盖。
    猜你喜欢
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多