Intereting Posts
UNIX timestamp (0): Европа / Лондон возвращает UTC + 1 Предупреждение: preg_replace (): Неизвестный модификатор 'g' «Обманчивый сайт впереди» на Google Chrome и вредоносный код не могут быть изолированы MySQL Query не вставлен, когда переменная PHP содержит одинарные кавычки PHP – рекурсивный многомерный матричный итератор Отправка formData с Uploadify, не работающая с большим размером файла возможно ли использовать регулярное выражение для поиска внутри массива, используя php ubuntu 12.10 – проблемы с установкой php 5.3 json_decode () работает неправильно Фильтровать сообщения WordPress по расстоянию между координатами событие onclick открывает окно и в поле отправляет его ссылки на php-функцию, которые устанавливают некоторые значения в db Угловая HTTP-почта для PHP и неопределенная Запись видео с веб-камеры с помощью jquery / flash непосредственно в браузере? Функция PHP для получения статуса Facebook? Стратегии кэширования в MVC Framework?

Что такое символ?? В URL, который используется в php?

Я новичок в PHP. На пути изучения языка PHP я замечаю, что на каком-то веб-сайте будет такой URL-адрес:

www.website.com/profile.php?user=roa3 & …

Мои вопросы:

  1. Что это "?" символ используется?

  2. Если бы я разрабатывал веб-сайт php, я должен использовать его в своем URL-адресе? Например, после того, как пользователь (roa3) успешно войдет в систему, я перенаправляюсь на «www.website.com/profile.php?user=roa3» вместо «www.website.com/profile.php»,

  3. Каковы преимущества и недостатки его использования?

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

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

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

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

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

Я не знаю вашего технического опыта или знаний, поэтому, пожалуйста, простите меня …

Существует два разных способа веб-страницы для предоставления данных обратно на веб-сервер. Они известны как методы POST или GET. Там также есть множество других, но ни один из них не должен использоваться в каком-либо веб-дизайне при работе с обычным пользователем. Метод POST отправляется невидимо на сервер и предназначен для «загрузки» данных, тогда как метод GET отображается пользователю как строка запроса в URL-адресе и предназначен только для буквальной «получения» информации.

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

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

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'], чтобы получить только информацию из метода GET
  • $ _REQUEST ['keyname'], чтобы вы могли захватить POST, GET и любую информацию COOKIE, которая могла быть отправлена. Сортировка, особенно в тех случаях, когда вы не знаете, какой метод может использовать страница для отправки данных.

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

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

Это далеко не конец, все для безопасности PHP, но мы здесь не для этого. Если вы хотите узнать больше по линии, ну, то это еще один вопрос для SO.

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

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

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

Использование Framework CodeIgniter даст вам дружественные URL-адреса по умолчанию и устранит необходимость ? s в ваших URL-адресах. См. Эту страницу для примера.

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

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

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

 $y=($x==1) ? 2 : 3; 

«?» означает, что некоторые GET-переменные должны следовать. В примере используется переменная с именем «user» и присваивается переменная, называемая «roa3».

Преимущества использования переменных GET:

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

Недостатки

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

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

Другие варианты:

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

    • Вы можете отправлять переменные через переменные POST. Эти переменные передаются в заголовке запроса, а не в URL-адресе запроса. они не сразу очевидны и не кэшируются серверами в пути, но их все еще можно прочитать. если у вас не установлено соединение HTTPS.
    • переменные в форме могут быть отправлены методами POST или GET. Вы указываете это в «методе» формы. <form action="index.php" method='post'/>
  • Переменные SESSION

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

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

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

( user может быть заменен именем используемой переменной)

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

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

В противном случае есть несколько отличных ответов выше.

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

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

  1. "?" используется для разделения URL-адреса и параметров. Например, это похоже на http://www.url.com/resourcepath?a=b&c=d . В этом случае a = b выглядит как request_parameter = request_value.

  2. Ya, Не рекомендуется использовать многие параметры, потому что общий размер url ограничен, и это похоже на запрос GET, где все параметры показаны на URL-адресе, и пользователь может его изменить. В вашем примере скажите, что, если пользователь изменит URL-адрес на «user = techmaddy».

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