Передача параметров URL-адреса при использовании HTTP POST. Передача параметров url


Урок 10: Передача данных через URLrustutorial

При работе с PHP часто необходимо передать переменные с одной страницы в другую. Этот урок - о передаче переменных в URL.

Как это работает?

Возможно, вас удивляло, почему некоторые URL выглядят наподобие этого:

http://html.net/page.php?id=1254

Почему после имени страницы стоит знак вопроса?

Ответ: символы после знака вопроса это строка HTTP-запроса. Строка HTTP-запроса может содержать как имена переменных, так и их значения. В вышеприведённом примере строка HTTP-запроса содержит переменную "id" со значением "1254".

Вот другой пример:

http://html.net/page.php?name=Joe

То есть у вас снова переменная ("name") со значением ("Joe").

Как получить переменную с помощью PHP?

Предположим, у вас есть PHP-страница people.php. Можно вызвать её с использованием URL:

В PHP вы можете получить значение переменной 'name' таким образом:

То есть вы используете $_GET для поиска значения именованной переменной. Попробуем на примере:

<html> <head> <title>Строка запроса</title> </head> <body> <?php echo "<h2>Hello " . $_GET["name"] . "</h2>"; ?> </body> </html>

Попробуйте в этом примере заменить "Joe" вашим собственным в URL и снова вызвать документ! Довольно прикольно, а?

Несколько переменных в одном URL

В URL можно передавать и не одну переменную. Разделяя переменные знаком &, можно передавать несколько:

people.php?name=Joe&age=24

Этот URL содержит две переменные: name и age. Как и ранее, можно получит переменные так :

$_GET["name"] $_GET["age"]

Добавим в пример ещё одну переменную:

<html> <head> <title>Строка запроса</title> </head> <body> <?php echo "<h2>Hello " . $_GET["name"] . "</h2>"; echo "<h2>You are " . $_GET["age"] . " years old </h2>"; ?> </body> </html>

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

<< Урок 9: Функции

Урок 11: Передача переменных через формы >>

ru.html.net

Передача параметров URL-адреса при использовании HTTP POST [soap]

Давайте начнем с простого материала. HTTP-запросы запроса GET поступают из URI. URI является запрошенным ресурсом, поэтому любой веб-сервер должен (и apache) иметь весь URI, хранящийся в некоторой переменной, доступной для модулей или компонентов приложений, работающих на веб-сервере.

Http POST, который отличается от HTTP GET, является отдельным логическим вызовом на веб-сервере, но он по-прежнему определяет URI, который должен обрабатывать сообщение. Хороший веб-сервер (один из apache) снова сделает URI доступным для любого модуля или сервера приложений в нем, затем дополнительно предоставит переменные, которые были отправлены в заголовках POST.

В тот момент, когда ваше приложение получает контроль над apache во время POST, вы должны иметь доступ к переменным GET и POST и быть в состоянии выполнять любую логику управления, включая ответ с использованием протокола SOAP вместо HTML.

Я считаю, что ни один стандарт не определяет концепцию «параметров HTTP» или «переменных запроса». RFC 1738 определяет, что URL-адрес может содержать «часть поиска», которая является подстрокой после вопросительного знака. HTML указывает в протоколе представления формы, как браузер должен обработать элемент FORM. В любом случае, как серверная сторона обрабатывает как часть поиска, так и тело HTTP полностью зависит от сервера - отбрасывание обоих будет соответствовать этим двум спецификациям (но довольно бесполезным).

Чтобы определить, можно ли отправить часть поиска на конкретную услугу, вам необходимо изучить спецификацию протокола этой службы. Если сервис практически определен с помощью HTML-формы, вы не можете использовать микс - вы даже не можете использовать POST, если FORM указывает GET (и наоборот). Если вы отправляете сообщение в веб-службу, вам нужно посмотреть WSDL веб-службы, который обычно будет выполнять POST; со всеми данными в SOAP-сообщении. И т.п.

Конкретные веб-фреймворки могут иметь понятие «переменных запроса» - независимо от того, будут ли они использовать эти переменные как из части поиска, так и из тела запроса, вам необходимо узнать в документации продукта.

допустимого? Конечно, это выполнимо, но я склоняюсь к спецификации, предполагающей, что двойные методы не обязательно должны произойти или поддерживаться. RFC2616 определяет HTTP / 1.1, и я бы утверждал, что для каждого запроса предлагается только один метод. если вы думаете о своей типичной транзакции HTTP с клиентской стороны, вы также можете увидеть это ограничение:

$ telnet localhost 80 POST /page.html?id=5 HTTP/1.1 host: localhost

как вы можете видеть, вы можете использовать только один метод (POST / GET и т. д.), однако из-за характера работы разных языков они могут подобрать строку запроса и назначить ее переменной GET. в конечном счете, хотя это запрос POST, а не GET.

так что в принципе, да, эта функциональность существует, она предназначена? я бы сказал, нет .

code-examples.net

javascript - Передача 2 параметров URL?

Ваш вопрос связан не столько с общим развитием, сколько с конкретным коммерческим продуктом; Я не знаю, какой план вы подписали (бесплатно o платить за?) С ними, но в любом случае было бы лучше пройти через их поддержку (см. Также мой вывод)

Тем не менее я постараюсь поставить вас на правильный путь.

Первый,

URL в электронном письме

В письме вам будет как-то построить ссылку с двумя параметрами, которые вы хотите, как объясняет @Jasper. это означает что-то вроде:

http://yourwebsite.com/destination/path/?message=1&name={tag_recipientfirstname}

Все после вопросительного знака представляет собой строку запроса GET. Параметры разделяются символом "&".

Я определенно не знаю, как правильно создавать URL-адреса в электронных письмах BC, но я чувствую, что он должен быть автоматическим, позволяя вам указать дополнительные параметры, если вам нужно.

javascript

То, что у вас есть, по-прежнему будет работать. Это не очень приятно, и вы можете использовать решение Jasper или любое другое, например, как я могу получить значения строки запроса в JavaScript?

Нечего делать, если вы не хотите сделать его лучше и надежнее.

Бизнес-Catalyst (страница)

Обычно у вас есть способы в CMS для получения параметров получения. Часто что-то вроде

{ GET.param_name }

Я не эксперт в БК, но у меня такое чувство, что вы принимаете сложный путь для чего-то, что, вероятно, уже запечено.

Опять же, я предлагаю вам перейти в раздел поддержки (хотя это довольно запутанно, я должен сказать!) И попытаться понять, какой лучший способ достичь вашей цели. Всегда есть много способов ухаживать за бедной кошкой. Если вы получаете поддержку в своем плане, определенно пойдете туда и попытайтесь объяснить, чем вы занимаетесь, а затем, как достичь технического решения, которое, по вашему мнению, является хорошим!

qaru.site

Передача параметров в URL (не с помощью php GET) PHP Lang

Это называется переписыванием URL. В основном это означает, что вы используете модуль apache для перезаписи входящих URL-адресов на новые URL-адреса, которые затем обрабатываются apache

В вашем примере http://www.test.com/page/2/ , вероятно, переписано на что-то вроде http://www.test.com/?page=2 .

Если вы будете искать в Интернете для перезаписи URL-адреса Apache, вы получите достаточно результатов, объясняя, как вы можете это сделать.

Это все конвенции. Параметры GET не специфичны для PHP, так как все браузеры кодируют данные формы. Например, веб-приложения на основе Java используют параметры, разделенные точкой с запятой.

Вы можете написать простой слой для преобразования ?alpha=1&beta=2 в /alpha/1/beta/2 но iw tould будет просто дешевым трюком (за исключением нескольких законных случаев, подобных кэшам Squid).

То, что сегодня делают на веб-сайтах, – это использование единого шаблона точки входа . Обычно с mod_rewrite apache все запросы обрабатываются index.php и есть средство маршрутизации для выбора соответствующего файла PHP обработчика для конкретной схемы URL. Эти схемы легко определяются регулярными выражениями .

Таким образом, все вы решаете, как будут выглядеть ваши URL-адреса. Это непростая задача, и есть много продавцов по продаже змей из SEO, которые заставят вас делать всевозможные сумасшедшие вещи. Хороший URL-адрес заключается в том, чтобы идентифицировать контент (документ) внутри вашей службы, и вы должны использовать этот единственный URL-адрес в своей службе для его обращения.

И не забывайте: классные URL-адреса не меняются. Вы оставите свою текущую базу кода через 2 года и перестройте свой сайт с нуля. Создайте свою схему URL таким образом, чтобы иметь смысл с логической точки зрения, а не что-то, зависящее от вашего дизайна webapp.

Приведенный вами пример по-прежнему является запросом GET.

Что вы ищете, это переписывание URL .

ruphp.com

Передача параметров URL в приложение ClickOnce в любом браузере [deployment]

В ClickOnce есть отличный хитроумный трюк, поскольку вы можете кодировать параметры непосредственно в URL-адрес, который используется setup.exe. Например, чтобы создать файл setup.exe, содержащий ваш параметр «flavor = grape», вы можете запустить из командной строки следующее:

copy setup.exe setup-for-grape.exe setup.exe -url="http://foo.bar/MyApp.application?flavor=grape" /dest=setup-for-grape.exe

Это использует флаг недокументированных / dest для вывода результатов в файл setup-for-grape.exe вместо изменения исходного файла setup.exe. После этого setup-for-grape.exe укажет на ваш URL-адрес и будет содержать ваш параметр flavor = grape. Обратите внимание, что если вы используете подписи, вам нужно сделать это с незарегистрированной копией вашего файла setup.exe, а затем подписать ее после того, как она сломает подпись.

Если количество возможных вариантов параметров довольно ограничено, вы можете просто создать файл setup.exe для всех и связать их с вашим сайтом.

С другой стороны, если есть неограниченное количество вариантов, вы можете настроить веб-службу, которая принимает некоторые параметры, генерирует файл setup.exe с требуемыми параметрами, закодированными в нем, и выплевывает его обратно клиенту. Я использовал этот метод для генерации файла setup.exe для клиентов, подключенных к конкретным серверам. В URL-адресах установки клиента содержится информация о подключении к серверу, поэтому, когда клиент установлен, он автоматически знает, к какому серверу подключиться.

Конечно, если вы не хотите использовать setup.exe, или если ваша ограничительная корпоративная среда запрещает это, все это выходит прямо из окна. Но, надеюсь, вы найдете это полезным или, по крайней мере, информативным.

code-examples.net

url - Передача параметров URL для рендеринга

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

return redirect(reverse('blog:post', args = (post_id,)))

С его помощью страница перенаправляется обратно на предыдущее Post которое считывается, передавая URL-адресу id.

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

return render(request, 'blog/post.html', post_id = post_id)

Но тогда мне нужно вернуться на ту же страницу, что и я, независимо от id в параметре. Мне нужно передать post_id как и в функции redirect, но я не могу найти способ.

Это целый метод:

def write_comment(request, post_id): """ Write a new comment to a post """ form = CommentForm(request.POST or None) if form.is_valid(): post = Post.objects.get(pk = post_id) post.n_comments += 1 post.save() comment = Comment() comment.comment = request.POST['comment'] comment.created_at = timezone.now() comment.modified_at = timezone.now() comment.post_id = post_id comment.user_id = 2 comment.save() return redirect(reverse('blog:post', args = (post_id,))) else: # Need to pass the parameter here, in order to not recreate the form return render(request, 'blog/post.html')

В моем представлении класса для отображения Post зависимости от его id по URL-адресу:

url(r'^post/(?P<id>[0-9]+)/$', views.GetPostView.as_view(), name = 'post'),

И GetPostView:

class GetPostView(TemplateView): """ Render the view for a specific post and lists its comments """ template_name = 'blog/post.html' def get(self, request, id): return render(request, self.template_name, { 'post': Post.objects.get(pk = id), 'comments': Comment.objects.filter(post = id).order_by('-created_at'), 'form': CommentForm() })

qaru.site