2012-03-26 2 views
1

У меня есть форма, которая отправляется на ту же страницу. Теперь, когда он отправляется и после его обработки мне нужно, чтобы он имел уникальную строку запроса.php установка строки запроса

Так, например, пользователь вводит некоторую информацию, затем нажимает кнопку submit, после чего страница сохраняет информацию на сервере, а затем сервер отбрасывает ее с помощью уникальной строки запроса для этой информации.

Если я попытаюсь установить $_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»] является частью глобалов РНР. Вы не должны устанавливать эти переменные, а устанавливать его через сеанс и возвращать его после отправки.

Если вы пытаетесь, чтобы перенаправить пользователя на определенный URL, то используйте:

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

это должна быть та же самая страница, из которой он пришел (также, где было это действие), но теперь с строкой запроса – qwertymk

+0

см. В редакторе, возможно, что выяснит, что я прошу – qwertymk

0

Запись в $ _SERVER бессмысленно. Это никак не влияет на клиентские браузеры. Если вы хотите изменить строку запроса, отображаемую в браузере клиента, вам придется использовать перенаправление 301/302, используя вызов header('Location: ...').

+0

, см. В разделе edit, Возможно, это очистит то, что я прошу – qwertymk

1

Не совсем понятно, что вам нужно, но я думаю, вы хотите, чтобы вы перешли на страницу с уникальным значением в строке запроса (бит после?) После завершения обработки. Нужно ли это уникальное значение действительно ссылаться на что-то в системе (для вновь созданной записи БД необходимо ссылаться на идентификатор новой записи) или просто нужно быть уникальным?

Если это последнее, вы можете просто generate a random unique ID сделать следующее:

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

Если это первое, а затем заменить вызов uniqid со значением ключа базы данных.

Значения в $ _SERVER устанавливаются во время выполнения PHP и должны считаться доступными только для чтения. Изменение их значений не будет иметь значимого эффекта.

+0

, см. в разделе «Редактирование». Возможно, это выяснит, что я прошу – qwertymk

Смежные вопросы