【问题标题】:How to prevent removal of special characters like '/' from user input?如何防止从用户输入中删除“/”等特殊字符?
【发布时间】:2011-01-14 23:36:09
【问题描述】:

一个新手问题....

我正在开发一个 Joomla 模板,在此我想从远程位置或本地加载资产(图像、JavaScript 和 CSS)。

我正在使用以下代码:

<?php

class MyclassName {

function CDNPath(){
return $this->getParam("cdn-path","templates/myTemplate/cdn");
}

}
?>

现在我想通过用户输入调用$cdn_path 的值。我能够获得路径,但它正在删除 '/' 标记。请看下面的例子:

CDN 的正确路径是http://mydomain.com/cdn

假设读作:

&lt;link rel="stylesheet" href="/joomla/http://mydomain.com/cdn/css/template.css" type="text/css" media="screen" /&gt;

而它的读法是:

&lt;link rel="stylesheet" href="/joomla/http:mydomain.comcdn/css/template.css" type="text/css" media="screen" /&gt;

这个joomla的分解是joomla的根目录,http://mydomain.com/cdn/是用户输入

两个挑战:

  1. 它正在从用户输入中删除所有'/' 字符。

  2. 它将 Joomla Root 'joomla' 添加到路径的开头。

我编码错了吗?如果是,那么正确的语法是什么。

如果您觉得比这更好,请随时提出任何新方法。

请帮忙。

【问题讨论】:

  • 您是否尝试过对用户输入进行 url 编码?
  • 嗨@Naatan 感谢您的帖子,但实际上我没有尝试这样做,因为我完全是编程新手并且不知道该怎么做。我还处于学习阶段。然而,我的问题还有第二个挑战,即在用户输入的开头添加 Joomla 的根目录。
  • @Naatan 还表示此变量将是通过templateDetails.xml 文件的用户输入。因此,用户可能无法输入编码的 URL。
  • 输入内容如何在生成的 html 页面中结束?您将需要对此进行某种形式的控制。如果你不能,那么你可以在你的 joomla 目录的根目录中创建一个代理脚本,它将你的用户输入作为代理的 url。绝不是一个好的解决方案,但一个解决方案永远不会少。
  • 嗯...我不确定。可能会有一些 Joomla 专家能够提供帮助。

标签: php url path


【解决方案1】:

如果您通过帖子获取输入(我不确定您是如何从用户那里获取输入的。) 所以你可以尝试这样的事情来添加斜杠:

<?php
//create array to temporarily grab variables
$input_arr = array();
//grabs the $_POST variables and adds slashes
foreach ($_POST as $key => $input_arr) {
$_POST[$key] = addslashes($input_arr);
}
?> 

如果它的数组..

【讨论】:

  • 嗨@Ayaz 感谢您的帮助。我正在使用 Joomla,因此输入是通过 XML 格式的 templateDetails.xml 文件获取的。示例:&lt;param name="cdn-path" type="text" default="templates/myTemplate/cdn/" size="50" label="Path to your CDN" description="Path to your CDN" /&gt;
  • 因为我没有尝试过 joomla,所以我不能给你太多建议,我做了一些研究,发现了这个 .. 试一试,但要备份你的文件 :) 解决方法,您可以通过在 cb.core.php:99 (cb 1.1) 行修改 cb.core.php 将 sefRelToAbs($uimage) 修改为 sefRelToAbs('/'.$uimage) 来修复
猜你喜欢
  • 2013-12-11
  • 2015-06-10
  • 2016-01-06
  • 2012-02-17
  • 2016-02-14
  • 2018-02-22
  • 1970-01-01
  • 2016-10-16
  • 1970-01-01
相关资源
最近更新 更多