【问题标题】:Error exporting PHP string into a file [closed]将 PHP 字符串导出到文件时出错 [关闭]
【发布时间】:2013-06-01 21:34:09
【问题描述】:

我有一个网站,用户可以在其中编写 PHP/HTML 代码并将其保存到他的计算机上。在用户输入斜杠 (/) 之前一切正常。

文件保存到客户端计算机中,但不是保存客户端代码,而是导出 PHP 错误(计算机中的文件有 PHP 错误代码)。文件保存代码如下:

$content = $_REQUEST['code'];   //Get the code

$file = "file.php";
file_put_contents($file, $content); //Writes the content into a file

header('Content-type: text/plain');
header('Content-Disposition: attachment; filename=$file');
readfile(dirname(dirname($con)) . '/'.$file);

该错误仅在客户端使用斜杠时发生。 知道为什么会这样吗? )-:

编辑:

这是其中一个错误:

我尝试导出的代码如下:

/:

让我担心的是,如果我以不同的顺序 (:/) 键入完全相同的字符,那么它们会毫无错误地导出到我的计算机。

【问题讨论】:

  • 那是你的实际代码吗?你的第二个标题有错字。看看你的报价。
  • 使用函数将/ 替换为_,就在门口。加上BIOS 中提到的header('Content-Disposition: attachment; filename=$file); 中缺少的引用@
  • 对不起,你是对的,我错过了报价。那是实际的代码,但我不小心删除了发布代码的引号。发布错误!!!请帮帮我。
  • 您的错误表明您在第 24 行遇到了 readfile(\/105.2.php) 的问题(带有 '\' 和 '/' 的路径?!)。 readfile(dirname(dirname($con)) . '/'.$file); 在第 24 行吗?将print_r($con); 放在readfile() 之前,然后向我们展示结果。
  • 由于客户端正在使用 HTML/PHP 代码,如果我 print_r 代码它会显示相同代码的 HTML 结果。但是,如果我 print_r 我之前提到的示例 (/:) 结果是 /: ...它会打印它应该如何导出。是的,readfile() 在第 24 行

标签: php file slash


【解决方案1】:

我只看到一个错误 - 第 24 行中的 readfile(\/105.2.php) 有问题 - 所以我对其进行了测试。

$file = 'file.php';
$con = '/:';
readfile(dirname(dirname($con)) . '/'.$file);

它给了我不正确的路径\/file.php,如错误消息中所示。

如果我使用$con=':/',它会给我正确的路径./file.php

我只是不知道$con 是什么。也许你的原始代码中有dirname(dirname($content))$content = $_REQUEST['code']; => dirname(dirname($_REQUEST['code'])) => dirname(dirname("/:")) => "\"

【讨论】:

  • $con 是客户端的 PHP/HTML 代码。但是,嘿兄弟,我解决了这个问题......但我真的不知道我是怎么做到的。我只是在标题前的代码中添加了一个 str_replace,突然一切都好了。
  • $con = str_replace("/", "!@%slash@%!", $con);和噗!所有的问题都消失了。让我担心的是我在file_put_contents之后写了str_replace这件事......这意味着代码已经写在文件中了。
  • 无论如何。非常感谢你的帮助。真的很感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-26
相关资源
最近更新 更多