2010-12-21 8 views
0

これはおそらく愚かな質問ですが、とにかく私には分かりません。PHPはグローバル変数とフォームリクエストについて質問します

私はフォームに役立つ基本的なPHPコードを書いています。私は、ログインページを持っていると私はlogin.phpページを使用してそれを提供し、それはこのようなlogin.htmlページに呼び出されると言う -

<form action="login.php" method="post"> 

これにより、また、すべてのPOSTは、独自のPHPを必要としていることを暗示していますファイル、それはありませんか?この種の奇妙な感じ。 code.phpのように単一のファイルを作成する方法はありますか?

編集:具体的には、私のアプリケーションで次々と使用される5つのフォームがあるとします。ログイン後、ユーザーはA、B、C、Dの各タスクを行い、それぞれがPOSTリクエストとしてサーバーに送信されます。したがって、A.php、B.php、C.php、D.phpの代わりに、code.phpを1つ持ち、A()、B()、C()、D()を関数として使用したいと考えています。これを行う方法はありますか?

同じメモで、複数のフォーム間でグローバルな配列(現在ログインしているユーザーの配列など)を扱うにはどうすればよいですか?私はDBに書き込まずにこれをやりたい私はおそらくDBとクエリに書き込む方が良いかもしれませんが、それはグローバル配列でも可能ですか?すべてのフォーム関数を1つのファイルにまとめることを考えていたのは、グローバル配列を使うことでした。

おかげで、 - パヴ

+0

「<\form>」のバックスラッシュは入力ミスですか?それは無効なHTMLです。 – deceze

+0

はい、正しいです。エディタは\を使わないでコードを表示しません。私は質問にhtmlコードを入力する方法があると思うが、指示を読まなかった: – user220201

+0

http://stackoverflow.com/editing-help 4 spaces! – deceze

答えて

0

もちろん問題ありません。すべてのフォームを同じ.phpファイルにPOSTし、受信したすべてのPOSTデータを処理します。あなたにそれをさせてくれるものは何もありません。

通常、フォームはさまざまなデータを送信しますが、各フォームにはカスタム処理が必要です。このロジックをすべて同じハンドラファイルに入れると、それはかなり長くて面倒なコードになります。コードが異なる場合は、コードを別のファイルに分ける方がよいでしょう。

データベース接続処理のような共通部分を関数やオブジェクトに抽象化することができますが、それぞれのPOSTハンドラでincludeを抽象化する必要があります。

+0

さて、私はそれも望んでいません。上の質問に対する私の編集によれば、A.phpを持たなくてもcode.phpの中で関数A()を直接呼び出す方法はありますか? – user220201

+0

@userしかし、あなたのコードを* files *にまとめることはあなた次第です。 'A()'を呼び出すときに必ず確認する必要があるのは、あなたが呼び出す前に 'function A(){}'が定義されているということだけです。これを 'a.php'と'インクルード 'に入れるか、' code() '、' B() 'と' Z() '関数を' code.php'に書くことで実現できます。 – deceze

0

あなただけの同じファイルとしてlogin.htmlとし、login.phpを持つことができない理由はありません。これらのページの両方のコードを1つのコードブロックに結合し、ifステートメントを使用してフォームが投稿されているかどうかを確認します。これは、ログインするためにフォームを提供するか、正常に完了したフォームの結果を提示することでした。

セッショングローバル変数は、グローバル配列の問題を処理しますが、私はあなたの例には適していないと思います。この例では、アプリケーションのインスタンス上のグローバル変数を他の誰かのインスタンスから更新する方法がないため、ユーザーがログインしたときに格納するデータベーステーブルが必要です。

EDIT

私が完了しているどのくらいの形の決定するために、セッション変数を使用して、多分、正しいフォームを提供するために、switchステートメントを使用します。

function a(){ 
    //process form A 
    //if form A okay 
     $_SESSION['form_progress'] = 'b'; 
} 
function b(){ 
    //process form B 
    //if form B okay 
     $_SESSION['form_progress'] = 'c'; 
} 
function c(){ 
    //process form C 
    //if form C okay 
     $_SESSION['form_progress'] = 'd'; 
} 


switch($_SESSION['form_progress']){ 
    case 'b': 
     //serve form B 
     break; 
    case 'c': 
     //serve form C 
     break; 
    case default: 
     //serve form A 
     break; 
} 

が、これは

を役に立てば幸い
+0

私の質問に答えるangを読んでくれてありがとう。私は自分自身をもう少し明確にするために上記を編集しました。編集してコメントしてください。 – user220201

関連する問題