【问题标题】:What is the right way to print escaped strings, and to hide backslashes on users end?打印转义字符串并在用户端隐藏反斜杠的正确方法是什么?
【发布时间】:2014-10-09 09:02:20
【问题描述】:

我正在使用 Laravel 4 构建网站。我在打印数据库中的数据或可以被用户操作的数据时使用三重“{”,但我在这里遇到了难题。当使用特殊字符时,它们会用“\”转义,但我不希望“\”出现在网站上。

所以我的问题是如何以正确的方式打印这些字符串?我知道我可以使用stripslashes 删除“\”,但这安全吗?在那里添加斜线是有原因的,所以只是剥离它们不会有问题吗?有没有更好/更安全的方法来实现这一目标?

注意:我不只是要求 Laravel 方法,我也愿意接受纯 php 建议。

谢谢。

【问题讨论】:

  • 如果您的数据中有\,那么您做错了。您的纯数据绝不应该包含任何类型的转义序列。这很可能意味着您在某个地方逃跑了太多次。
  • 我只转义一次,使用 laravel 的“{{{ }}}”打印。据我所知,Laravel 在插入数据库或查询数据库时处理转义。但是即使我没有在打印时逃脱,也会出现“\”。这可能与我的 php/apache 配置有关吗?还是使用 Laravel 配置?
  • 当您使用 phpmyadmin 或其他一些非 Laravel 管理实用程序查看数据库中的数据时,它是否包含反斜杠?如果是这样,也许您对魔术行情有疑问? (谷歌)
  • @deceze 是的,反斜杠也被添加到数据库中。我已经禁用了魔术引号(在 php_info() 中没有它们的踪迹,并且 get_magic_quotes_gpc() 返回 null),但我仍然没有找到这个问题的根源:(。
  • 那么你必须深入挖掘。某些东西在不需要时会引入反斜杠。

标签: php laravel-4 wordpress-theming stripslashes


【解决方案1】:

毕竟我找到了原因。在本网站的公共文件夹中,我们还安装了 wordpress,用作我们网站博客部分的 CMS。似乎 WordPress 正在更改 $_POST/$_GET 变量。

解决方案是在 public/index.php 中初始化 wordpress 之前,在临时数组中捕获 $_GET、$_POST 和 $_REQUEST 变量,并重新分配该数组中的值wordpress 初始化后。

$tmp = array($_GET, $_POST, $_REQUEST);

-

/**
*   Include wordpress
*/
define('WP_USE_THEMES', false);
require __DIR__.'/wordpress/wp-blog-header.php';

-

list($_GET, $_POST, $_REQUEST) = $tmp;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多