2012-03-26 21 views
1

Ich habe ein Formular, das auf der gleichen Seite übermittelt. Jetzt, wenn es übergeben wird und nachdem es verarbeitet wurde, brauche ich eine eindeutige Abfragezeichenfolge.PHP Einstellung der Abfrage Zeichenfolge

So zum Beispiel gibt der Benutzer einige Informationen ein, dann klicken Sie auf Senden, dann speichert die Seite die Informationen auf dem Server, dann spuckt der Server es wieder mit einer eindeutigen Abfragezeichenfolge für diese Information aus.

Wenn ich versuche, $_SERVER['QUERY_STRING'] zu setzen, hängt es einfach. Gibt es einen anderen Weg, dies zu tun?

Ist es mit einer Weiterleitung möglich?

EDIT, ich werde von mysite.com/ und die Form Aktion ist auf mysite.com/ und ich möchte der Browser mysite.com/?blah

gehen OK ich diese auf meinem oben auf meiner Seite ohne Glück

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

aber es wird nur geladen, ich vermute, es leitet sich einfach in den Tod.

Ich hoffe, Sie verstehen jetzt, was ich versuche

+0

Ein SQL-Query-String? – Dion

Antwort

3

Wahrscheinlich wird Ihr Skript weiterhin ausgeführt, nachdem der Code, der besagt, dass es umleiten sollte. Sie müssen auch genauer mit dem Header sein:

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

Wenn Sie den Code oben verwenden, wird es das Skript Ausfahrt machen, die die Ausgabe und den Browser-Dumps wird die Umleitung (beachten Sie die Hauptstadt L in Ort) sehen .

Der entscheidende Punkt ist der Ausgang nach dem Redirect-Header. Ohne sie wird PHP sehr wahrscheinlich weiter an dem anderen Code arbeiten, den Sie im Skript ausführen.

0

$ _SERVER [ 'QUERY_STRING'] zu tun Teil von PHP Globals ist. Sie sollten diese Variablen nicht setzen, sondern über eine Sitzung festlegen und nach der Übergabe zurückgeben.

Wenn Sie versuchen, den Benutzer zu einer bestimmten URL zu umleiten verwenden dann:

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

es muss die gleiche Seite sein, es kam (auch das ist, wo die Aktion war), aber jetzt mit einer Abfragezeichenfolge – qwertymk

+0

bearbeiten sehen, Vielleicht wird klären, das, was ich frage – qwertymk

0

Schreiben auf $ _SERVER ist sinnlos. Es hat keinerlei Auswirkungen auf die Client-Browser. Wenn Sie die im Client-Browser angezeigte Abfragezeichenfolge ändern möchten, müssen Sie eine 301/302-Umleitung mit einem header('Location: ...')-Aufruf verwenden.

+0

bearbeiten sehen, vielleicht wird klar, up, was ich frage – qwertymk

1

Es ist nicht ganz klar, was Sie wollen, aber ich denke, Sie meinen, Sie wollen zu einer Seite mit einem eindeutigen Wert in der Abfragezeichenfolge (das Bit nach dem?) Gehen, sobald die Verarbeitung abgeschlossen ist. Muss dieser eindeutige Wert tatsächlich auf etwas im System verweisen (für einen neu erstellten DB-Eintrag muss er auf die ID des neuen Eintrags verweisen) oder muss er nur eindeutig sein?

Wenn es Letzteres ist, könnten Sie einfach generate a random unique ID wie folgt vorgehen:

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

Wenn es der frühere ist, dann den Anruf ersetzen mit dem Wert der Datenbankschlüssel uniqid.

Die Werte in $ _SERVER werden zur Laufzeit von PHP gesetzt und sollten als schreibgeschützt betrachtet werden. Das Ändern ihrer Werte hat keine sinnvolle Auswirkung.

+0

siehe bearbeiten, Vielleicht wird das klären, was ich frage – qwertymk