2016-02-20 2 views
0

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

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

Когда новая страница генерируется с кодом из базы данных, URL-адрес выглядит следующим образом ...

localhost/newpage.php?id=1 

Тогда, когда я отправить форму в коде из БД изменения в этом ...

localhost/newpage.php?input1=blah&input2=blah 

Но я хочу что-то вроде этого ...

localhost/newpage.php?id=1&input1=blah&input2=blah 

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

Если вы, ребята, нужны явный код (очевидно, я ушел из ненужных вещей) ...

Это searchpage.php, который ищет БД и отображает все соответствующие пункты. Затем пользователь выбирает элемент, который содержит идентификатор и генерирует newpage.php с этим идентификатором ...

//there is a search query then puts all elements in an associative array 
$rows = items->fetch_all(MYSQL_ASSOC); 

foreach ($rows as $row) { 
    $id = $row['id']; 
    echo "<a href='newpage.php?id=$id>User clicks to generate a newpage</a>"; 
} 

Это форма извлекается из базы данных и помещена в newpage.php ...

<form action="newpage.php" method="GET"> 
    <input name="input1"></input> 
    //there can be an x amount of input tags here depending on what id is pulled 
</form> 

Это PHP в верхней части newpage.php при его создании ...

if (isset($_GET['id'])) { 
    //retrieves data from specified id from database 
    if(isset($_GET['inputs'])) { 
     //do something with user inputs 
    } 
} 

есть ли способ для достижения этой цели? Вся помощь приветствуется! Спасибо :)


РЕШЕНИЕ

Для этого, чтобы работать, я должен был создать сеанс, который хранит идентификатор. Следовательно, мне пришлось изменить все мои переменные $ _GET (которые имели дело с идентификационной информацией) на переменные $ _SESSION. Но он работает до тех пор, пока вы не храните важную/чувствительную информацию!

Вот код меняется ...

Изменения в search.php ...

//there is a search query then puts all elements in an associative array 
$rows = items->fetch_all(MYSQL_ASSOC); 

foreach ($rows as $row) { 
    $id = $row['id']; 
    $_SESSION['current_id'] = $id; 
    echo "<a href='newpage.php?id=$id>User clicks to generate a newpage</a>"; 
} 

Изменения в newpage.php ...

<form action="newpage.php?id=" method="POST"> 
    <input name="input1"></input> 
    //there can be an x amount of input tags here depending on what id is pulled 
</form> 

Изменения в PHP из NEWPAGE .php ...

if (isset($_SESSION['current_id'])) { 
    //retrieves data from specified id from database 
    if(isset($_POST['inputs'])) { 
     //do something with user inputs 
    } 
} 

ВСЕ СПАСИБО ...

Sathik Хан

ответ

0

Вы можете получить строку запроса «идентификатор» в упомянутом заголовке. Либо вы можете присоединить эту строку запроса на клиенте или на сервере.

Для получения ссылочного URL-адреса воспользуйтесь $_SERVER['HTTP_REFERER'] и оттуда вы можете получить идентификатор. Если это идентификатор зарегистрированного пользователя, я бы рекомендовал хранить их в сеансе по соображениям безопасности.

На основании ваших комментариев, Вы можете взять любой из этих действий, 1. Держите идентификатор в вашей форме скрытой переменной 2. Обновление свой адрес с идентификатором в качестве одного из строки запроса и отправить обратно клиенту для исправления ошибок. 3. Сохраните идентификатор в сеансе, если применимо. 4. Используйте сообщение и выполните проверку формы перед перенаправлением

Спасибо.

+0

Проблема с использованием $ _SERVER ['QUERY_STRING'] заключается в том, что он изменяется, когда я отправляю новую форму. Это не константа. Или я неправильно рассматриваю ваше решение? Я помещаю строку запроса в действие новой формы, которая сгенерирована. –

+0

Позвольте мне уточнить свой ответ с –

+0

. Я забыл упомянуть, что это мой пост ... Форма должна обрабатываться снова, если есть какие-либо ошибки. Ваше предложение работает, но это только один раз после отправки формы. Поэтому, если я использую HTTP-референт, который будет работать только один раз, если я отправлю форму один раз. Если, опять же, я не сделаю что-то неправильно. Я думаю об использовании POST вместо этого, поэтому он не изменит URL. –

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