【问题标题】:Trouble storing PHP variables存储 PHP 变量时遇到问题
【发布时间】:2025-12-28 03:10:11
【问题描述】:

首先,我认为自己在 PHP 方面处于初学者和中级之间。在我的网站上,我有一个文本区域,用户可以在其中输入 Web 代码,当按下按钮时,它将代码发送到页面并显示输出。这是该页面的链接:http://opensourcewebsite.host22.com/editpage.php。我遇到的另一个问题是我希望用户输入的任何内容都留在页面上。

目前的代码如下所示:

<?php $source_code = $_POST['source-code'}; ?>
...
<editable_area>
<?php echo $source_code ?>
</editable_area>
...
<form action="" method="post">
input class="result" type="submit" name="submit" value="View Result">
<textarea id="source" class="edit_are" name="source-code"></textarea>

目前,当用户输入包含 id/class/name/etc 的代码时。里面有引号,就像你这样做的时候:

echo "<div id="Name">"

它会添加 \" 从而弄乱代码。我需要找到一种方法来存储代码,以便它能够正确显示。如果你尝试网页,你会第一手看到我的问题。


提交代码时,textarea通过javascript抓取网页的源代码。我发现如果您在代码中省略“”,它会按预期工作。问题是,当它抓取源代码时,其中有引号,因此代码将在 textare 中显示它们。这意味着每次进行更改时,都需要去掉所有引号。


感谢 webbiedave,我使用以下方法解决了报价问题:

<?php echo stripslashes($source_code) ?>

现在我只需要弄清楚如何永久存储更改。

【问题讨论】:

  • 你有没有打开叫magic_quotes_gpc的恶心东西?
  • php.net/manual/en/security.magicquotes.php 可能需要关闭此功能。
  • 哇,您只是在为这样的页面提出各种麻烦。这种页面正是垃圾邮件发送者想要创建的 XXS 注入攻击。确保您至少剥离 &lt;script&gt; 标签
  • 我没有打开 magic_quotes_gpc。我意识到了thenetimp 的担忧,但是这个页面还没有完成。将有一个登录系统,只有该用户可以更改页面。 textarea 不会在 标记之外进行编辑。

标签: php html variables storage


【解决方案1】:
<?php echo htmlentities(stripslashes($source_code)) ?>

【讨论】:

  • 这在一定程度上起作用,除了它在页面上显示标签而不是读取它们。它仍然没有修复引号。
  • 您是否尝试过使用stripslashes 或addslashes 来转义或取消转义引号?
  • 我刚试过,它去掉了斜杠,但它仍然显示代码而不是正确的输出。所以,我只是放了 stripslashes() 并且它起作用了。不确定这是否是您的意思,但它仍然有效。
  • 什么都行 :D 我看不到输出,这就是为什么我建议尝试stripslashesaddslashes
【解决方案2】:

检查您是否打开了magic quotes,并确保您打开了turn them off。此外,您还需要使用 htmlspecialchars 来转义特殊字符。否则,他们可以关闭您的 textarea 并造成其他破坏。

echo htmlspecialchars($source_code);

【讨论】:

  • 我尝试将代码更改为您建议的内容,但是当我输入以下代码时: 将其准确地写在页面上。
【解决方案3】:

你能用单引号代替吗: '

';

【讨论】:

  • 这通常可以工作,但这不是变量的存储方式。 $source_code 通过读取 textarea 中的内容来获取其价值