Pull to refresh

Comments 88

В рамках недели каверзных вопросов.
Seriously? Прям даже интересно от результатов стало, что в головах у людей происходит…

Надо как-нибудь устроить опрос, например, по стеку протоколов tcp/ip или по параллельным вычислениям: взрыв мозга от результатов практически гарантирован.
Сервер может сделать из этих полей массив :)
во-во, хоть бы правильный ответ в вариантах представили
[x] Ничего из перечисленного
а, он же там есть я слепой
Гм, а чем «Браузер должен отправить все поля с таким именем, а не только последнее» неправилен? Тем, что «должен»?
Тем что браузер и так отправляет все поля, независимо от того, есть ли в имени скобки
Да, но «Браузер должен отправить все поля с таким именем, а не только последнее» вполне укладывается в эту картину. Соответственно вариант верный.
Да, действительно. Просто кажется, что этот ответ подразумевает что из нескольких полей с одинаковым названием без скобок отправится только последнее.
Мне сначала показалось что правильного ответа нет, а теперь оказывается что там даже два верных ответа :)
Вы правы, если учесть что второй вариант верный, последный отпадает. Интересно, автор опроса рассчитывал именно на такую логику? Интересно было бы услышать правильный ответ по мнению автора
UFO just landed and posted this here
То есть автор сам не смог верно ответить на свой вопрос… или дезинформирует вопрошающих.
Вопрос стоит не «найдите верное утверждение», а «что означают квадратные скобки». Они действительно означают это?
А я ответил, поставив две галочки: 3-й и 4-й вариант, потому что как правило это делается для третьего варианта, но т.к. это не обязательно — то 4-й
Сами сервер написали ;)?

Теперь осталось выяснить, что делать как минимум с 90% серверами (Apache, IIS, nginx, lighttpd), которые в принципе не знают такого слова как «массив» за пределами конфигурационных файлов.
а вы что посчитали в «сервер»? веб фронт-енд?)
Считать ли mod_php частью Apache?

А сервер, да, писал, вернее пытался писать несколько раз когда изучал новые языки, в частности python и ruby, но как-то быстро надоедало.
продолжим придираться к словам
какой именно сервер?
если вебсервер — ему обычно абсолютно пофиг
пофиг в большинстве случаев и проксисерверу
не пофиг некоторым серверам приложений, например, похапе
да и другим серверам приложений тоже кагбе непофиг, многие что я встречал — так-же преобразуют брекеты в массив, не знаю зачем
а еще, это зависит вовсе не от сервера приложений (кроме похапе, где эта фича/баг встроена), а от кода, который разбирает хттп заголовки и кверистринг
с другой стороны по спекам — такие символы как квадратные брекеты приравнены к небезопасным

так что да, для любителей позадротствовать — ответ «ничего...»
Если уж придираться, то в случае Apache+mod_php по сути именно веб-сервер (поскольку кроме него ничего и нет) разбирает и запросы, и заголовки, и пользовательские скрипты и формирует из них ответ. И где-то в его нутрях value[] преобразуется в структуру, которая представляет собой массив PHP. То есть да, сервер, например, такой распространенный как Apache может сделать из квадратных скобок массив, в частности, если установлен модуль mod_php и вызывается php скрипт.

Плюс не исключено, что запросы и заголовки преобразуются в массивы и без всяких модулей — я в исходниках Апача не копался и не знаю как там они парсятся, но не исключено, что в массив какой-то, хотя может и список.
Преобразованием в массив занимается исключительно интерпретатор PHP когда получает GET/POST данные на вход.
Кто обеспечивает преобразование адресов типа /users/register в /index.php?q=/users/register? Имхо, веб-сервер в лице mod_rewrite. А mod_php такой же модуль Apache как и, например, mod_rewrite, он является частью Апача.

Аналогия: купите к своему автомобилю прицеп. Вы будете говорить, что прицеп идёт со скоростью, которую ему передает автомобиль, или что автомобиль (с прицепом) едет с такой-то скоростью?
Вы документацию по PHP читали?
А темы в листе рассылки разработки PHP?

На оба вопроса я могу ответить что нет, вы не читали. А я читал. И там чётко написано, что преобразование параметров с [] в массивы происходит во время обработки входящих HTTP данных ядром PHP, и что именно сам PHP делает это преобразование для удобства работы в скриптах.

Другие языки этого не делают на уровне интерпретатора — либо это библиотека системная, либо вообще на уровне приложения.

Если не верите — доки по PHP и гугл вам в помощь. Ну а знающие люди меня поддержат.
И там не написано, что ядро PHP при работе через mod_php работает как часть Apache, в рамках его процесса?
Сервер приложений — это которому шлют RPC-запросы (например, SOAP, XML-RPC или JSON-RPC), он их выполняет и шлёт обратно ответ. Когда серверу возвращает HTML для браузера, это уже веб-сервер. Насчёт многих не знаю, а вот контейнеры сервлетов любые параметры преобразуют в массивы.
на данный момент имеем 19 пехапистов, 8 школьников, 48 программистов… еще 15 — даже не знаю…
Вы перепутали программистов с «даже не знаю» :)
хорошо, даже не знаю = теоретики
48 вёб разработчиков.

Иначе это напоминает анекдот про студента
— Сколько будет 2x2?
— По-вашему, я все константы обязан помнить?

Как только увидел опрос, подумал, что ответ для всех будет очевиден. Посмотрел результаты, оказывается, не для всех.
Озвучьте очевидный ответ, пожалуйста.
UFO just landed and posted this here
UFO just landed and posted this here
Вот, грамотный человек нашелся.
то же самое что и любой другой допустимый символ
UFO just landed and posted this here
UFO just landed and posted this here
Зря заминусовали отличный опрос с очень показательными результатами)
минусовали те, кто неверно ответил ;)
По комментариям видно, что многие из тех, кто уверен в правильности своего ответа и/или недоумевают над банальностью опроса на самом деле ответили неверно)
UFO just landed and posted this here
Как предполагается использовать символы [] в Вашем вопросе?
UFO just landed and posted this here
«А и Б сидели на трубе...» на новый лад?
UFO just landed and posted this here
Вот так выглядит запрос к серверу для тех кто не знает.

Ну а вообще сервер не обязан преобразовывать в массив. Как правило, запрос преобразуется в удобоваримый объект для работы какими-нибудь скриптами. И не во всех языках, есть такой тип данных, как массив :-)
Меня радует всёобщее веселье, но я один считаю, что вариант «Браузер должен отправить все поля с таким именем, а не только последнее» верный?

Формулировка немного невнятная, но браузер действительно так поступит :-)
UFO just landed and posted this here
UFO just landed and posted this here
А на мой нет. Если браузер отправляет все одноимённые поля, почему он не должен отправлять все одноимённые поля со скобками?
UFO just landed and posted this here
«Браузер должен отправить все поля с таким именем, а не только последнее». Определённо должен. Разве нет?
UFO just landed and posted this here
UFO just landed and posted this here
Вопрос в том, третий или четвёртый вариант считать за невнимательность…
UFO just landed and posted this here
Подозреваю, цель немного расистская…
UFO just landed and posted this here
Ну, во-первых, такого варианта ответа нет. Плюс вариант всё-таки не настолько нелогичен по отношению к вопросу.
UFO just landed and posted this here
Ахаха, лучший комент :)
Неа.
<зануда>Волга, строго говоря, заканчивается, когда соединяется с более полноводной Окой, но народ решил, что далее течет опять Волга. Да и Каспий не море, строго говоря.</зануда>
SamDark, у вас очень плохо с логикой. Давайте я попробую объяснить на более жизненном примере.

Вы видите указатель — перечеркнутую цифру 60. Что он означает?
— Ограничение скорости 60 км/ч.
— Снятие ограничения скорости 60 км/ч.
— Обгон справа запрещен.

Как известно, на дорогах обгон справа запрещен при любых обстоятельствах. Но это не делает последний вариант ответа верным.
Можно я немного позанудствую :)

«Как известно, на дорогах обгон справа запрещен при любых обстоятельствах.»
Как известно, согласно новым ПДД, на дорогах с правосторонним движением, обгон справа выполнить невозможно, ибо:

Обгон — опережение одного или нескольких транспортных средств, связанное с выездом на полосу (сторону проезжей части), предназначенную для встречного движения, и последующим возвращением на ранее занимаемую полосу (сторону проезжей части).

«Обгон справа» — это теперь опережение. И оно разрешено ПДД.
Минус мне за невнимательность.
UFO just landed and posted this here
Очевидно же. Многие привыкли, что [ ] создать массив на стороне сервера в вэб приложении. С точно зрения html они ничем не отличаются.
В каком же состоянии я это написал?
Вот позволяла бы карма, то сейчас открыл опрос «Что такое КЛЮЧ?»
И варианты ответа:
«инструмент для открывания замка»
«место, где подземные воды вытекают на поверхность земли»
«электронный ключ ЭЦП»
«в зависимости от контекста, a предыдущие опросы были идиотскими».

Такое чувство, что эти опросы только для того чтобы потролить и похоливарить.
Сервер должен может сделать из этих полей массив.

Про остальные варианты все понятно. Так что ничего из перечисленного.
Постараюсь ответить всем сразу.

Правильный ответ, конечно, четвертый. Ни один из других ответов не верен. Первый вообще для отвода глаз, чтобы большинство сказало «а я знаю, это точно неправильный, значит правильный вот тот».

Те, кто подумали, что я ошибся, написав в третьем ответе «должен» вместо «может», ошиблись сами. Потому что сервер может сложить эти поля, может вычесть, может сохранить в базу, может вывести на экран еще раз. Нет смысла говорить о том, что может сделать с данными сервер, вопрос как раз в том, что он должен сделать.

Второй вариант верен логически, но он не является ответом на поставленный вопрос. Браузер отправит все поля вне зависимости от наличия скобок.

Вопрос «что имеется ввиду под сервером в третьем варианте» имеет место быть. Можно было бы написать «библиотека, разбирающая параметры http», но мне кажется это было бы подсказкой. А определение «сервер» вполне нейтрально и олицетворяет собой «все то, что не клиент».

Из результатов можно сделать следующие выводы:
— Большинство людей, участвовавших в опросе — пэхэпэшники (именно там поля с именами, заканчивающимися на [] превращаются в массив) и постулируют поведение php как единственно возможное (3-й вариант).
— Примерно треть из этих людей делают неверные выводы о поведении браузеров (2-й вариант).
— 6% вообще не имеют отношения к web-разработке и выбирали варианты наугад :) (1-й вариант).

На данный опрос меня сподвигли вопросы от человека, который увидел несколько полей с одинаковыми именами: «а разве они все передадутся» и «а как ты потом значения на сервере получишь».
Браузер отправит все поля вне зависимости от наличия скобок.
Браузер никому ничего не должен. Если вы не согласны, посмотрите форму добавления ответного комментария прямо на этой странице (onclick="comment_send(this.form, this)", далее содержание и место назначения запроса определяет функция comment_send).

По поводу третьего варианта: под массивом с гораздо более давних времён понимается серия однородных данных, расположенных последовательно в логической памяти. Ассоциативный массив типа $_GET из PHP очень далёк от этого. Так вот, в определённый момент данные запроса так или иначе окажутся выстроенными в памяти в вида массива символов. Это если притягивать правильный ответ из первых трёх вариантов. А так, конечно, да, «Ничего из перечисленного».
Ох, ежики. Прот отправке формы на сервер, браузер отправит все поля, вне зависимости от наличия скобок. При нажатии на кнопку «написать» отправки формы не происходит. Чего умничать-то?

> под массивом понимается серия однородных данных
Вы удивитесь, но я тоже тут называю массивом однородные данные. А вы путаете ассоциативный массив $_GET, с однородным массивом в нем, который будет одним из его элементов.
Словосочетание «отправка формы» — это бред хотя бы потому, что в спецификации HTTP нет понятия формы. Отправляются не формы, а данные из неё. А коли вы не отправляете данные, как же вы умудрились написать ответ на комментарий?

> Вы удивитесь,
Да, я удивлён, как вы исказили меня при цитировании, опустив часть «с гораздо более давних времён» прямо из середины цитаты.

> с однородным массивом в нем, который будет одним из его элементов
А если я настрою фильтр на nginx, чтобы он резал параметры со скобками? А если я mod_rewrite их перепишет? Не наступайте на грабли собственного опроса. Никто никому ничем не обязан.
UFO just landed and posted this here
Классический веб-сервер ничего не знает о спецификации HTML. Под веб-сервером понимается сервер, принимающий HTTP-запросы от клиентов и выдающий им HTTP-ответы. Единственное требование для веб-сервера — соответствие спецификации HTTP. Вот в ней определены и GET, и POST, и все заголовки, и все ответы, и всё-всё, что нужно для работы. А вот понятия формы там нет, потому что клиентом веб-сервера может быть браузер, а может и не быть. Веб-сервер может поддерживать динамическую генерацию страниц, а может и не поддерживать. Всё это описано в Википедии и печатных источниках.
UFO just landed and posted this here
Периодическая таблица элементов тоже бред. И третий закон Ньютона тоже. Еще что бред, из того, что не входит в спецификацию http? Форма — это понятие из html, там и определено.

> Да, я удивлён
Я сократил и указал на какую часть вашего комментария мой ответ. Судя по тому, что приходится это обсуждать отдельно — сократить не получилось.

> А если я
Я перестал видеть в ваших комментариях любую логику. Зачем вы будете все это делать?
Вы отчасти правы. Здесь подразумевалось, насколько я понимаю, поведение по умолчанию, которое чаще всего встречается. Конечно, никто не запрещает, например, написать браузер, который отправляет не все поля формы. Но здесь не юридический договор, а опрос, и все эти тонкости в каждом пункте не пропишешь.

В любом случае, второй и третий вариант неверные, даже с учетом вашей придирки.
>Те, кто подумали, что я ошибся, написав в третьем ответе «должен» вместо «может», ошиблись сами.

Лично я не подумал, что вы ошиблись, а просто ответил на вопрос :)
Реквестую еще один вариант ответа — «не скруглять уголки». Для дизайнеров.
Квадратные скобки означают квадратные скобки.
Дайте ещё 14 вопросов и миллион в качестве приза.
Sign up to leave a comment.

Articles