0

我正在开发一个使用 PHP 和 jQuery 的 Intranet 应用程序。当用户提交表单时,表单会通过 AJAX 传递给另一个脚本。

在这样的一种形式中,用户提供一个 Windows UNC 路径到网络上的服务器。处理程序脚本需要创建用户指定的目录,以便可以通过另一个进程移动文件。

如果我使用它从 Web 服务器运行脚本mkdir('\\server\path1\newpath')就可以了。所以我知道网络服务器用户具有正确的访问权限。

但是,当我在通过 AJAX 调用的脚本中对同一网络服务器使用完全相同的命令时,它会失败并显示“没有这样的文件或目录”。

应用程序是否会在 ajax 调用中丢失其身份?有任何想法吗?

谢谢。

4

3 回答 3

1

找到了答案——其中一个“哦!” 时刻。用户表单字段的开头有一个空格(它是从数据库字段填充的)。一个简单的修剪解决了这个问题。

感谢您阅读这个问题,并为我老化的眼睛道歉。

于 2010-08-19T16:43:01.353 回答
0

我不知道反斜杠会这么难处理。你的选择是

  1. 让用户输入备用目录分隔符并在 php 端使用 str_replace。
  2. 要求用户输入2个反斜杠和目录分隔符,然后在发布时使用escape,当它到达php时,它将是一个反斜杠的正确分隔符。

    submitForm = function(path) { $.ajax({ type: 'POST', url: 'your_script.php', data: {path: escape(path)}, success: function() { } }); }

    submitForm('[2 个反斜杠]ugly[2 个反斜杠]windows[2 个反斜杠]path')

毫不奇怪,反斜杠阻止我在编辑器中使用代码格式。

于 2010-08-19T16:02:57.607 回答
0

在 Javascript 中,您需要使用 encodeURIComponent() 转义路径值。在 PHP 端,您需要使用 rawurldecode() 对其进行解码。这肯定会消除反斜杠问题。

应用程序是否会在 ajax 调用中丢失其身份?有任何想法吗?

在正常情况下 - 没有。它应该保留会话。但是,如果您以某种方式操纵 cookie - 请确保您不会覆盖会话 id cookie。

于 2010-08-19T16:51:22.147 回答