【问题标题】:Getting path manually entered into a form field将路径手动输入到表单字段中
【发布时间】:2014-01-23 05:17:34
【问题描述】:

我有一个简单的表单字段,允许用户输入到他们计算机上音频文件夹的特定路径。他们可以输入如下内容:

C:\Users\Zebo\Desktop\TwoToneDetect64\audio

当用户提交该数据时,我需要能够捕获所有正在提交的数据。发生的情况是表单在提交时似乎将其设置为双斜杠 \。我试图做一个str_replace,但 \" 显然会让它变得困难。

如果我执行以下操作:

$temp_dt = explode("\\", $desktop);

然后尝试重建它 - 例如,我在 $temp_dt[0] 位置中完全丢失了 C:。所以我需要弄清楚如何捕捉到这一点。它用于生成文件,然后用户将下载并连接到允许他们使用服务的软件。

【问题讨论】:

  • 您的 PHP 中是否启用了magic_quotes_gpc?关掉它!
  • 呃——呃! stripslashes 会处理它-谢谢!
  • @MrTechie 如果您想在其他设置上使用您的代码,请先检查它。
  • 实际上我可能不得不走那条路-因为当该路径存储在数据库中时-它会从目录路径中删除斜杠。

标签: php arrays forms str-replace


【解决方案1】:

如果您启用了魔术引号,那么您应该将其关闭,如果可以的话。但是如果你不能,那么你可以通过在脚本初始化时运行类似的东西来修复引用的超级全局变量:

<?php 
/**
 * Check for magic quotes, if on fix
 */
function fix_magic_quotes(){
    $inputs = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST, &$_FILES);
    array_walk_recursive($inputs, 'process_mq_array');
}

function process_mq_array(&$value, $key){
    // magic quotes fix
    if (get_magic_quotes_gpc()) {
        $key   = stripslashes($key);
        $value = stripslashes($value);
    }
}
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 2016-07-30
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 2015-11-29
    相关资源
    最近更新 更多