PHP和AJAX - mkdir问题

时间:2010-08-19 15:29:58

标签: php ajax mkdir

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

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

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

但是当我在通过AJAX调用的脚本中对同一个网络服务器使用完全相同的命令时,它会失败并显示“No such file or directory”。

应用程序是否在ajax调用中失去了身份?有什么想法吗?

感谢。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我不知道反斜杠可能很难处理。你的选择是

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

    submitForm = function(path) {     $就({         类型:'POST',         url:'your_script.php',         data:{path:escape(path)},         成功:function(){}     }); }

    submitForm('[2反斜杠]丑[2反斜杠]窗口[2反斜杠]路径')

  3. 不足为奇的是反斜杠阻止我在编辑器中使用代码格式。

答案 2 :(得分:0)

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

  

应用程序是否在ajax调用中失去了身份?有什么想法吗?

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