0

私はいたるところにあるようなプロジェクトに取り組んでいます。私の表示ファイルは index.php です。そこから、jquery を介して ajax 関数を呼び出します。この関数は、mysql テーブルからユーザー データを取得および受信する php ファイルを呼び出します。php 関数は一部のデータを php セッション変数に保存し、データを ajax に戻すだけの場合もあります。

私は ajax、php、およびほとんどのセッションにかなり慣れていないため、ファイル パスの作成方法に問題がある可能性があります。 /functions/updateUser.php だけでリンクが壊れる可能性があります。

私の質問は、サーバーがphpセッションを介して変数をどのように正確に渡すのですか?

ファイル構造が次の場合、問題が発生する可能性はありますか? 私の 2 番目の質問は、ファイル構造も ajax データの返される方法に影響を与えることができるかということです。

ルート > index.php
ルート > sessions.php
ルート > 関数 > (データベースを呼び出す php ファイル)
ルート > スクリプト > (php 関数を呼び出す js ファイル)

この情報がページからページへどのように渡されるかについて、より明確な理解 (およびイメージ) を得るのに役立つチュートリアルを検索しましたが、何も見つかりませんでした!

4

2 に答える 2

0

ファイル構造は問題なく、コーディングの問題とは何の関係もありません。

AJAX呼び出しを行うときは、URLを呼び出しているため、完全なURLで問題ありません。ただし、関数を呼び出すときは、実際にはサーバーフォルダーにあると予想されるファイルを含めるため、呼び出しはURLではなく呼び出しファイルの場所に関連している必要があります。

セッション

session_start()を呼び出すと、Cookieが生成され、セッションIDがクライアントブラウザに保存されます。したがって、Cookieを拒否するように構成されているクライアントブラウザは、セッションを使用できません。セッション変数を設定すると、サーバーはそれをサーバー上のセッションファイルのセッションIDファイルに保存します。プログラムがセッションから値を要求すると、PHPはそのセッションファイルでその変数をチェックし、その値を返します。アイデアは、セッションファイルに保持される大きなデータがサーバーを遅くし、コーディングするための理想的な方法ではないということです。プログラムでは、jQueryを確認し、jQueryの数行のコードでプログラムを持ち上げてAJAXとJSONを利用し、非常に大量のデータを非常に効率的に送受信する方法を確認できます。

PHPセッションの詳細については、こちらをご覧ください。

jQueryAJAX情報はここにあります。

于 2012-05-20T12:18:59.540 に答える
0

興味深い問題に取り組むだけで、それを正しく行う必要があります。

あなたの質問に答えるには:

1) $_SESSION は、アプリで永続的な動作を構築するために使用されます。つまり、リクエスト間でデータを渡すことができます。シリアル化できるものはすべて、文字列としてシリアル化され、ファイルに書き込まれます。要求されると、データはそのファイルからシリアル化解除され、$_SESSION 配列に再構築されます。セッションの詳細については、こちらをご覧ください

2) いいえ、適切な Content-Type などを使用して (PHP スクリプトから) 有効な文字列を返す限り。「ajax データ」は、PHP スクリプトから単純にエコーされた文字列です。ヘッダーを適切に設定します ex:header('Content-Type: text/javascript');エコーする前に。

コンテンツ タイプに関する注意: 反対側で何を達成したいかによって異なります。jQuery を使用していて、それを使用してクライアント側のロジックを構築する場合は、おそらく JSON を送信する必要があります。この場合、コンテンツ タイプを「application/json」である「適切な」タイプではなく、「text/javascript」に設定することをお勧めします。Internet Exploder と Firefox では、ブラウザーが application/json と混同されるという問題がよくありました。JSONはjavascript(表記)であるため、「text/javascript」で常に期待どおりに機能します。

include_path特定のニーズに合わせて微調整できる素敵な ini ディレクティブ " " があります。便利な関数はset_include_path()get_include_path()です。この2つだけで驚くべきことができます。

PHP のファイルは、「include_path」ディレクティブの順序でインクルードされます。ファイルを含める/要求する際に柔軟性を高めるには、最もよく使用される 3 つのプラクティスを検討してください。

  1. ファイル構造で include_path を設定します
  2. ファンシーなオートローダーを構築します ( spl_autoload機能を参照) 。
  3. 5.3+ のみ、名前空間を使用

誰もが「適切な方法」やその他の不十分な言い訳で物事を吹き飛ばす傾向があるため、最近include_pathはあまり人気がありません. 別の Facebook、Twitter、または Youtube 用のアプリを作成しない場合は、include_path を検討してください。シンプルで、非常に強力です (肥大化した手法を使用する代わりに)。

構造を計画し、次のようにディレクトリを追加します。

<?php
// somewhere at the very top of your entry script
set_include_path(implode(PATH_SEPARATOR, array_merge(array(
    '/path/to/app/dir1',
    '/path/to/app/dir2',
    '/even/path/outside/your/app',
    // ...
), explode(PATH_SEPARATOR, DEFAULT_INCLUDE_PATH))));
?>

これにより、php.ini ファイル (DEFAULT_INCLUDE_PATH) に設定されている現在のパスが結合されます。

スクリプトを含める/要求すると、このリストの順序で含めようとします。

長い説明で申し訳ありません。それが役に立ったことを願っています;)

于 2012-05-20T12:46:44.363 に答える