Пожалуйста, проверьте старый PHP-код для размещения значений переменных в URL - PullRequest
2 голосов
/ 16 декабря 2011

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

Код, написанный автором, который, вероятно, довольно старый -

"completeyourorder.php?p=" . $p . "&service=" . $service;

насколько я могу судить по моим исследованиям, там должно быть хотя бы эхо

"completeyourorder.php? P =" echo. $ р. "& service =". $ Обслуживание;

или, может быть, мне не хватает гораздо большего.

Я был бы признателен за небольшую информацию об этом, так как я новичок и не смог найти ответа, несмотря на многочасовые тиккинг и чтение.

Спасибо

UPDATE:

СТРАНИЦА 1

<form action="send-order.php" method="post">
<p>Name<br /><input name="clientname" value="<?echo $clientname;?>" type="text" style="width: 350px;" /></p>

<p><br /><input type="hidden" name="service" value="<?
echo $_GET['service'];
?>" />

<input type="hidden" name="p" value="<?
echo $_GET['p'];
?>"
 />
<input type="submit" value="Order now" /></p>
 </form>

СТРАНИЦА 2

$go = "completeyourorder.php?p=" . $p . "&service=" . $service;
return header("location:$go");

Дайте мне знать, если вам нужно что-то еще

РЕШИТЬ:

Блестяще спасибо, это работает! Теперь я вижу, что моя ошибка заключалась в том, что я мог использовать значения переменных в расположении: completeyourorder ..... на странице 2, не используя ранее $ _POST в коде на той же странице. Спасибо всем!

Ответы [ 2 ]

1 голос
/ 16 декабря 2011

То, что вы показали здесь, это просто построение части строки.В php точка является оператором конкатенации, поэтому она связывает две строки вместе.Вам нужно echo, print, header или переменное присвоение всей строки, чтобы она что-то сделала.В этом другом сценарии вы можете получить переменные в виде

$p = $_REQUEST['p'];
$service = $_REQUEST['service'];

РЕДАКТИРОВАТЬ: после просмотра обновления он использует заголовок для перенаправления сценария на новую страницу

0 голосов
/ 16 декабря 2011

Вы недавно задавали похожий вопрос относительно $ _GET vars.

В этом случае создается впечатление, что вы создаете строку, которая выводится в виде ссылки или чего-то подобного. Так что, возможно, это то, что вы можете испытывать: (только пример)

<?php

if(isset($_GET['p']))
{
    $p = $_GET['p'];
}

if(isset($_GET['service']))
{
    $service = $_GET['service'];
}

//defaults in case they are not set
$p or $p = 1; //assuming p = page
$service or $service = 'laundry'; //since I don't know what service refers to

$link = "completeyourorder.php?p=" . $p . "&service=" . $service;

?>

<a href="<?php echo $link; ?>">string to click on</a>

Где в этом примере вы можете видеть, что вы собираетесь построить переменную $ link на основе $ _GET vars "p" и "service", и если они не существуют, по умолчанию используется стандартный набор страницы 1 и service "прачечная"

Очевидно, что вы бы приспособили это для своих нужд, но вам нужно будет предоставить больше информации для лучшего, более уместного ответа.

EDIT

Согласно вашему редактированию, основной ответ заключается в том, что ваша форма должна заполнять переменные для $ p и $ service, поэтому пересмотренный код будет выглядеть так:

<?php
if(isset($_POST['p']) && isset($_POST['service']))
{
    $p = $_POST['p'];
    $service = $_POST['service'];

    // do some kind of post processing here
    // possibly do some kind of filtering to ensure the post vars are sanitized 

    header("location: completeyourorder.php?p=" . $p . "&service=" . $service);
    exit;
}
?>

isset не обязателен для обоих, но вы можете изменить это, чтобы отразить ваш предпочтительный выбор для проверки почтовых данных. Некоторые просто делают:

if(!empty($_POST))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...