2012-03-26 26 views
1

同じページに送信するフォームがあります。今すぐそれが提出され、それが処理された後、私はユニークなクエリ文字列を持つ必要があります。phpクエリ文字列を設定する

たとえば、ユーザーが情報を入力してから送信をクリックすると、そのページはサーバーに情報を保存し、サーバーはその情報の一意のクエリ文字列を使用して情報を返します。

私が$_SERVER['QUERY_STRING']を設定しようとすると、ハングするだけです。これを行う別の方法がありますか?

リダイレクトは可能ですか?

EDIT、私はmysite.com/から行くよとフォームアクションはmysite.com/であると私はブラウザが、私は運

と私のページの私の上にこれを入れてみました mysite.com/?blah

OKに行きたいです

<?php 
if ($_POST['data']) header('location: /?' . idFromDifferentFunction()); 
?> 

しかし、それはちょうど読み込みを続ける、私はそれがちょうど死にリダイレクトすると思います。私はあなたが今、私は

+0

SQLクエリ文字列ですか? – Dion

答えて

3

リダイレクトする必要があるコードの後に​​スクリプトが実行されている可能性があります。あなたはまた、ヘッダをより正確にする必要があります:あなたは上記のコードを使用している場合

<?php 
    if (isset($_POST['data'])) { 
     header('Location: /?' . idFromDifferentFunction()); 
     exit; 
    } 
?> 

は、それが出力され、リダイレクトが表示され、ブラウザをダンプスクリプトの終了を行います(場所の資本Lに注意してください) 。

重要な点は、リダイレクトヘッダーに続く出口です。それがなければ、PHPはあなたがスクリプト内で行っている他のコードの作業を続ける可能性が非常に高いでしょう。

0

$ _SERVER [「QUERY_STRING」]をやろうとしているものを理解してほしい

は、PHPのグローバルの一部です。これらの変数を設定するのではなく、セッションを介して変数を設定し、提出後にそれを返すべきです。

あなたは、特定のURLにユーザーをリダイレクトしようとしている場合は、使用します。$ _SERVERへの書き込み

header('Location: mysite.com/bla/bla'); 
+0

それは同じ場所から来たのと同じページでなければなりませんが、今はクエリ文字列 – qwertymk

+0

を参照してください。編集を参照してください。私が尋ねているものをクリアします。 – qwertymk

0

は無意味です。どのような方法でもクライアントブラウザには影響しません。クライアントブラウザに表示されるクエリ文字列を変更する場合は、header('Location: ...')呼び出しを使用して301/302リダイレクトを使用する必要があります。

+0

編集を参照してください。私が何を求めているのか – qwertymk

1

あなたが何をしているかは完全にはっきりしていませんが、処理が完了すると、クエリ文字列(?の後のビット)に一意の値を持つページに行きたいということですか?このユニークな値は、システム内の何かを実際に参照する必要があります(新しく作成されたDBエントリは新しいエントリのIDを参照する必要があります)か、一意でなければなりませんか?

それは後者だ場合、あなただけgenerate a random unique ID次の操作を行うことができます:

header ('location: /path/to/script?id=' . uniqid()); 

それはかつてのだ場合は、データベース・キーの値とuniqidの呼び出しを交換してください。

$ _SERVERの値は、実行時にPHPによって設定されているため、読み込み専用である必要があります。値を変更しても意味のある効果はありません。

+0

編集を参照してください、たぶんそれは私が求めているものをクリアします – qwertymk

関連する問題