PHP и AJAX - проблема с mkdir - PullRequest
       5

PHP и AJAX - проблема с mkdir

0 голосов
/ 19 августа 2010

Я работаю над интранет-приложением, которое использует PHP и jQuery. Когда пользователь отправляет форму, форма передается другому сценарию через AJAX.

В одной такой форме пользователь указывает UNC-путь Windows к серверу в сети. Сценарий обработчика должен создать каталог, указанный пользователем, чтобы файлы могли быть перемещены с помощью другого процесса.

Если я запускаю скрипт с веб-сервера, используя mkdir('\\server\path1\newpath'), он работает просто отлично. Итак, я знаю, что пользователь веб-сервера имеет правильные права доступа.

Но когда я использую ту же самую команду для того же сетевого сервера в сценарии, вызываемом через AJAX, происходит сбой с «Нет такого файла или каталога».

Потеряло ли приложение свою идентичность при вызове ajax? Есть идеи?

Спасибо.

Ответы [ 3 ]

1 голос
/ 19 августа 2010

Нашел ответ - один из тех "ах!" моменты. Поле формы пользователя имеет пробел в начале (оно заполняется из поля базы данных). Простая обрезка исправила эту проблему.

Спасибо за чтение вопроса и извинения за мои стареющие глаза.

0 голосов
/ 19 августа 2010

В Javascript вам нужно будет экранировать значение пути с помощью encodeURIComponent (). На стороне PHP вам нужно будет декодировать его с помощью rawurldecode (). Это наверняка устранит проблемы с обратной косой чертой.

Приложение теряет свою идентичность при вызове ajax? Есть идеи?

При нормальных условиях - нет. Это должно сохранить сессию. Но если вы как-то манипулируете куки - убедитесь, что вы не перезаписываете куки с идентификатором сессии.

0 голосов
/ 19 августа 2010

Я понятия не имел, с обратными слешами может быть так сложно справиться.Вы можете выбрать

  1. Заставить пользователей ввести альтернативный разделитель каталогов и использовать str_replace на стороне php.
  2. Попросить пользователей ввести 2 обратной косой черты и разделитель каталогов, а затем использовать escapeпри публикации, когда он достигнет php, он будет правильным разделителем одной обратной косой черты.

    submitForm = function (path) {$ .ajax ({type: 'POST', url: 'your_script.php', data: {путь: выход (путь)}, успех: функция () {}});}

    submitForm ('[2 обратная косая черта] уродливая [2 обратная косая черта] windows [2 обратная косая черта] путь')

Не удивительно, что обратная косая черта мешает мне использовать кодформатирование в редакторе.

...