【问题标题】:Crossdomain file edit跨域文件编辑
【发布时间】:2010-04-24 10:30:06
【问题描述】:

我需要知道,我的脚本是从哪里使用的(它正在出售,我不想要任何小偷)。 我想在我的服务器上写入文件、用户 IP、运行脚本的域、日期等。我试过 fopen、fwrite,但 is_file_writable 返回它不是。文件 CHmods 是 777,它的父目录也有 777 chmods。

现在我正在尝试这样的事情:

<?php
$file = 'http://www.misiur.com/security/seal.txt';

$data = date("Y-m-d H:i:s");
$ip = $_SERVER['REMOTE_ADDR'];
$svr = $_SERVER['SERVER_NAME'];
$str = "[$data] Loaded by $ip at $svr\r\n";

$current = file_get_contents($file);
$current .= $str;
file_put_contents($file, $current);
?>

但是 - 没有任何反应。我该怎么办?

【问题讨论】:

  • HTTP 的核心是文件检索系统,而不是文件发布系统。 HTTP 有各种扩展确实允许它,但我认为你不能以这种方式从 PHP 中使用它们......

标签: php security file writing


【解决方案1】:

HTTP URL 包装器doesn't allow writing

最好的方法是在远程服务器端有一个脚本(在你的例子中,misiur.com:

http://www.misiur.com/security/write_seal.php

使用 POST 将新文本文件的内容发送到该脚本。然后脚本将file_put_contents() 接收到的信息本地

Here 是一个代码 sn-p,它允许您轻松地将 POST 内容发送到远程脚本。您将需要 POST,因为 GET 的大小通常限制为 1-2 KB。

当然,您需要以某种方式保护该脚本以防止恶意使用,例如通过基于.htaccess 的密码保护或密码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 2012-12-21
    • 1970-01-01
    • 2012-11-25
    • 2015-04-06
    相关资源
    最近更新 更多