0

PHP と jQuery を使用するイントラネット アプリケーションに取り組んでいます。ユーザーがフォームを送信すると、フォームは AJAX を介して別のスクリプトに渡されます。

そのようなフォームの 1 つで、ユーザーはネットワーク上のサーバーへの Windows UNC パスを指定します。ハンドラー スクリプトは、別のプロセスを介してファイルを移動できるように、ユーザーが指定するディレクトリを作成する必要があります。

それを使用して Web サーバーからスクリプトを実行すると、mkdir('\\server\path1\newpath')問題なく動作します。したがって、Web サーバーのユーザーが正しいアクセス権を持っていることはわかっています。

しかし、AJAX 経由で呼び出されたスクリプトで同じネットワーク サーバーに対してまったく同じコマンドを使用すると、「そのようなファイルやディレクトリはありません」というエラー メッセージが表示されて失敗します。

アプリケーションは ajax 呼び出しで ID を失いますか? 何か案は?

ありがとう。

4

3 に答える 3

1

答えが見つかりました - それらの「ああ!」の1つ 瞬間。ユーザー フォーム フィールドの先頭にスペースがありました (データベース フィールドから入力されます)。簡単なトリムでその問題が修正されました。

質問を読んでくれてありがとう、そして私の老眼についてお詫び申し上げます。

于 2010-08-19T16:43:01.353 に答える
0

バックスラッシュがこれほど扱いにくいとは思いもしませんでした。あなたの選択肢は

  1. ユーザーに別のディレクトリ セパレータを入力させ、php 側で str_replace を使用するようにします。
  2. 2 つのバックスラッシュとディレクトリ セパレーターを入力してから、投稿時にエスケープを使用するようにユーザーに依頼します。php に到達すると、1 つのバックスラッシュの正しいセパレーターになります。

    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 呼び出しで ID を失いますか? 何か案は?

通常の状態では - いいえ。セッションを維持する必要があります。ただし、何らかの方法で Cookie を操作する場合は、セッション ID Cookie を上書きしないようにしてください。

于 2010-08-19T16:51:22.147 に答える