Что “?” символ в URL, используемом для в php?

Две вещи:

1) DefaultMethod, по-видимому, относится не к методу выбора по умолчанию, а к методу HTTPMethod по умолчанию. Таким образом, это по сути переопределяет httpmethod вашего звонка. Это расширение CXF для JAX-RS, поэтому вы можете попросить команду CXF обновить функциональность или создать новую аннотацию для вашего варианта использования.

2) Если я вас правильно понимаю, вы бы хотели, чтобы был вызван первый метод, если кто-то отправляет тело {"Hello": "World"}? Разве вы не получите ошибки при попытке создать свой MeasurementRepresentation? Если они отправляют неверный запрос, почему бы не позволить CXF ответить соответствующим кодом ошибки HTTP?

10
задан roa3 22 February 2009 в 07:00
поделиться

7 ответов

Хорошие вопросы, кратко,

  1. "?" обозначает запуск запросов строки, которая содержит данные, которые будут переданы серверу. в этом случае Вы передаете user=roa3 profile.php странице. Можно получить данные при помощи $ _GET ['пользователь'] в profile.php. querystring является одним из методов для отправки данных в сервер из клиентского агента. Другой помещает данные в Тело HTTP и POST к серверу, Вы не видите POST data HTTP непосредственно от браузера.

  2. querystring может быть отредактирован пользователем, и это видимо общественности. Если www.website.com/profile.php?user=roa3 предназначается для общественности затем, это прекрасно, иначе можно хотеть использовать сессию для получения контекста текущего пользователя.

  3. это - гибкий способ передать данные серверу, но это видимо и доступно для редактирования пользователям для некоторых уязвимых данных, по крайней мере, произведите некоторый хеш прежде, чем присоединить его к querystring, это предотвращает пользователей для редактирования его или понимание значения его. Однако это не предотвращает достойного хакера, чтобы сделать что-то не так о Вашем веб-сайте. Различные браузеры поддерживают другую макс. длину URL, длинный URL составлен теми querystring параметрами. Если Вы хотите отправить большой объем данных, поместить данные в Тело HTTP и POST к серверу.

22
ответ дан 3 December 2019 в 14:12
поделиться

Большинство ответов, которые я видел до сих пор, было с точки зрения PHP, когда в действительности это не конкретный язык. Ответы, данные до сих пор, были от представления PHP и методов, которые Вы использовали бы для доступа к информации, отличаются от одного языка до следующего, но формат, в котором данные находятся в URL (известный как Строка запроса) останется тем же (Исключая: page.ext? key1=value&key2=value&...).

Я не знаю Ваше техническое образование или знание, поэтому простите мне...

Существует два различных метода для веб-страницы для обеспечения данных назад веб-серверу. Они известны как POST или ПОЛУЧАЮТ методы. Там также также набор других, но ни один из тех не должен использоваться ни в каком виде веб-дизайна при контакте с обычным пользователем. Метод THE POST отправляется невидимо на сервер и предназначен для 'загрузки' данных, в то время как ПОЛУЧИТЬ метод видим пользователю как Строка запроса в URL и только предназначен для литерального 'получения' информации.

Не все сайты следуют за этим эмпирическим правилом, но могут быть причины относительно почему. Например, сайт мог использовать POST исключительно для обхождения кэширования по доверенности серверы или браузер, или потому что они используют двухбайтовые языки и могут вызвать проблемы при попытке выполнить ПОЛУЧЕНИЕ из-за преобразования кодирования.

Некоторые ресурсы об этих двух методах и когда использовать их...

http://www.cs.tut.fi/~jkorpela/forms/methods.html http://weblogs.asp.net/mschwarz/archive/2006/12/04/post-vs-get.aspx http://en.wikipedia.org/wiki/Query_string

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

  • $ _POST ['keyname'], для захвата только информации из метода POST
  • $ _GET ['keyname'], для захвата только информации из ПОЛУЧИТЬ метода
  • $ _REQUEST ['keyname'], чтобы позволить Вам захватывать POST, ДОБИРАЮТСЯ, и любая Информация о куки, которая, возможно, была отправлена. Вид вместилища, особенно в случаях, где Вы не знаете, который метод страница мог бы использовать для представления данных.

Не становитесь неаккуратными путем движения непосредственно с $ _REQUEST метода. Если у Вас нет случая как, я упомянул выше за $ _REQUEST переменную, затем не используйте его. Вы хотите попытаться использовать, 'отклоняют все и только позволяют x, y, z' подход когда дело доходит до безопасности. Только ищите данные, что Вы знаете, что Ваш собственный сайт будет отправлять, только искать комбинации, которые Вы будете ожидать, и чистить всю информацию перед использованием его. Например..

  • Никогда не делайте оценка () на чем-либо передала с помощью вышеупомянутых методов. Я никогда не видел сделанный, но это не означает, что люди не попробовали или делают.
  • Никогда не используйте информацию непосредственно с базами данных, не чистя их (исследование атак с использованием кода на SQL, если Вы не знакомы с ними),

Это - далеко не конец - все, самое важное к безопасности PHP, но мы не здесь для этого. Если Вы хотите знать больше вдоль строки, хорошо затем это - другой вопрос для ТАК.

Надежда это помогает, и не стесняйтесь задавать любые вопросы.

6
ответ дан 3 December 2019 в 14:12
поделиться

1) Если бы пользователь входит в систему Вашего сайта, Вы использовали бы Сессии для хранения там имени пользователя вместо того, чтобы передать его в URL, например, profile.php?username=roa3

2) Используя a ? символ в URL обычно считают плохим для Search Engine Optimization. Кроме того, URL выглядят немного ужасными. Используя mod_rewrite можно сделать то же самое как profile.php?user=roa3 или products.php?id=123&category=toys с: site.com/profile/roa3 или products/toys/123.

Используя CodeIgniter платформа даст Вам дружественные URL по умолчанию и избавит от необходимости ?s в Ваших URL. Посмотрите эту страницу для примера.

3) ? символ также используется в коде php страницы. Например, if else блок, такой как:

if ($x==1)
   $y=2;
else
   $y=3;

может также быть записан как:

$y=($x==1) ? 2 : 3;
4
ответ дан 3 December 2019 в 14:12
поделиться

? часть стандарта HTTP и не часть PHP. Мысль я должен указать на это поэтому, когда Вы идете дальше на другой язык и видите его снова, Вы не смущены, думая, существует включенный PHP.

Иначе выше существуют некоторые превосходные ответы.

1
ответ дан 3 December 2019 в 14:12
поделиться

С точки зрения сервера? просто другой символ. PHP предоставляет легкие методы для частей URL после? символ, например, для "/profile.php? user=roa3", PHP установит $ _GET ['пользователь'] = 'roa3'.

Причина? полезно в URL, то, что браузеры могут создать динамические URL с помощью форм - в случае выше, я ожидал бы, что URL был создан формой HTTP с полем "пользователь", в которого пользователь - человек ввел "roa3".

0
ответ дан 3 December 2019 в 14:12
поделиться

"?" показывает, что некоторые ДОБИРАЮТСЯ, переменные должны следовать. Вы пример используете переменную, названную "пользователем", и присваиваете переменную, названную "roa3".

Преимущества использования ПОЛУЧАЮТ переменные:

  • они могут быть отмечены как часть URL

Недостатки

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

Можно также использовать "и" символ для разделения многих переменных, например: www.website.com/profile.php?user=roa3&fav_colour=blue

Другие опции:

  • Переменные POST

    • Можно отправить переменные через переменные POST. Эти переменные передаются в заголовке запроса, не URL запроса. они не сразу очевидны, и не кэшируются серверами вдоль поездки, но они могут все еще быть считаны. если Вам не установили соединение HTTPS.
    • переменные в форме могут быть отправлены по почте или ПОЛУЧИТЬ методы.. Вы указываете это в "методе" формы. <form action="index.php" method='post'/>
  • Переменные сеанса

    • Переменные сеанса хранятся на сервере. Идентификатор сессии передается пользователю, и этот идентификатор сессии пасуется назад к серверу каждый раз, когда пользователь выполняет другой запрос. Этот идентификатор сессии может затем использоваться для получения переменных сеанса, которые были сохранены. Таким образом, Вы могли сохранить любимый цвет пользователя, их имя и IP-адрес и т.д. но Вы могли сохранить его на сервере, а не домашнем ПК пользователя.
      Идентификаторы сессии могут быть явлены олицетворением, таким образом, хорошо проверить по IP пользователя, и или перенести их в безопасное соединение. например, https.
    • переменные сеанса не могут быть изменены кем-то, кто прервал запрос.
  • Переменная COOKIE:
    Подобный переменным сеанса, за исключением того, что они хранятся на ПК пользователя, не сервере. Они хранятся против домена, и когда они переходят к тому домену, они повторно отправляют переменные в заголовке запроса к серверу.. это означает, что пользователь мог изменить и взломать переменные, или кто-то еще мог.

Для доступа к этим переменным в php, можно использовать:

  • $x = $_GET['user'] для получить переменной
  • $x = $_POST['user]
  • $x = $_REQUEST['user'] - комбинация добирается, сообщение и переменные cookie
  • $x = $_COOKIE['user'] - переменные cookie
  • $x = $_SESSION['user'] получить доступ к переменным сеанса

(user мог быть заменен названием переменной, которую Вы используете),

Достаточно простой материал, но важный для знания то, что они на самом деле делают.

3
ответ дан 3 December 2019 в 14:12
поделиться
  1. "?" используется для разделения URL и параметров. Для, например, это похоже на http://www.url.com/resourcepath?a=b&c=d. В этом случае a=b похож на request_parameter=request_value.

  2. Ya, не желательный для использования большой части параметров, потому что общий размер URL ограничен и он похож, ПОЛУЧАЮТ запрос, где все параметры показывают на URL, и пользователь может изменить его. В Вашем примере скажите что, если пользователь изменяет URL к "user=techmaddy'.

  3. Преимущество - это, может использоваться для ПОЛУЧИТЬ вида запросов. Недостаток является низкой безопасностью, ограничением в размере.

0
ответ дан 3 December 2019 в 14:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: