我正在使用PHP和jQuery的Intranet应用程序。当用户提交表单时,表单将通过AJAX传递给另一个脚本。
在一个这样的表单上,用户将Windows UNC路径提供给网络上的服务器。处理程序脚本需要创建用户指定的目录,以便可以通过另一个进程移动文件。
如果我使用mkdir('\\server\path1\newpath')
从Web服务器运行脚本,它可以正常工作。所以我知道Web服务器用户具有正确的访问权限。
但是当我在通过AJAX调用的脚本中对同一个网络服务器使用完全相同的命令时,它会失败并显示“No such file or directory”。
应用程序是否在ajax调用中失去了身份?有什么想法吗?
感谢。
答案 0 :(得分:1)
找到答案 - 其中一个“哦!”时刻。用户表单字段在其开头有一个空格(它是从数据库字段填充的)。一个简单的修剪修复了这个问题。
感谢你阅读这个问题,并为我衰老的眼睛道歉。
答案 1 :(得分:0)
我不知道反斜杠可能很难处理。你的选择是
要求用户输入2个反斜杠和目录分隔符,然后在发布时使用escape,当它到达php时,它将是一个反斜杠的正确分隔符。
submitForm = function(path) { $就({ 类型:'POST', url:'your_script.php', data:{path:escape(path)}, 成功:function(){} }); }
submitForm('[2反斜杠]丑[2反斜杠]窗口[2反斜杠]路径')
不足为奇的是反斜杠阻止我在编辑器中使用代码格式。
答案 2 :(得分:0)
在Javascript中,您需要使用encodeURIComponent()来转义路径值。在PHP方面,您需要使用rawurldecode()对其进行解码。这肯定会消除反斜杠问题。
应用程序是否在ajax调用中失去了身份?有什么想法吗?
在正常情况下 - 没有。它应该保留会话。但是如果你以某种方式操纵cookie - 确保你不会覆盖会话ID cookie。