Смотря что называть поддержкой. Где-то строка по умолчанию является набором кодовых точек юникода, а массив байт - это исключение. Где-то наоборот - строка по умолчанию это массив байтов, но в определённом контексте она трактуется, как набор кодовых точек юникода. И в том и в другом случае поддержка есть.
Про стандартную библиотеку довод валидный, но, прямо скажем, очень жиденький. Да - и это, и массивы - всё это объективные недостатки. Которые, тем не менее, совсем не тянут на причины смерти. А скорее на объективную критику из раздела "Языки бывают двух видов - те, которые все ругают и те, на которых никто не пишет".
В целом у вас вполне валидный комментарий на тему "почему лично я не люблю РНР". Но пост немного не об этом.
Примеры использования языка тут совсем другие, выше по тексту. А вконтактик приведён как пример гибкости экосистемы. Так себе пример, но и комментарий у вас, прямо скажем, не первой свежести.
Мдаа, я помню в пхпклубе ржали над тогдашними ВДСками, буквально описывая их словами "два студента на коленке", но я даже представить себе не мог, насколько всё больше закручено :-D
У меня самого было проще, хостинг был бесплатный для друзей, так что работал он на обычном компе с Core2 Duo подключенном к домашнему интернету (правда, чтобы не класть канал, качая, кхм-кхм, исходники убунты, я раскошелился на отдельное подключение от Корбилайна, и тупо оплачивал два счёта, причем, кажется, сильно дешевле полутора тысяч в сумме).
Думаю, статью вполне можно добавить в хабы История айти и Компьютерное железо.
Я думаю, дело не в финансировании. Вы правы в том, что никакой менеджмент не решит проблему. Потому что он будет делать только то, что ему скажут. А что именно, и зачем - он не придумает. Тут нужен визионер - Королёв, Фон Браун, Маск. Как только визионеры уходят, тут же начинается бардак и стагнация, и никакие эффективные менеджеры, в кавычках или без, тут ничего не сделают. А точнее будут эффективно делать ничего.
Ошибку (разобранную) я вижу тут только одну, со структурой таблиц. При этом использованное решение объясняется почему-то не показом новой структуры таблиц... а картинками, показывающими интерфейс. Но при этом вижу другие ужасы со структурой таблиц и чудовищный код, на который я дал ссылку, и о котором вы вообще ни словом не заикнулись. То есть со всем остальным, по-вашему, всё в порядке? И вы предлагаете новичкам писать именно так:
if ($_COOKIE["acclogin"] == $login) {
$isAuthor = true;
}
Вот с этим детским лепетом вместо авторизации, когда достаточно подменить куку чтобы авторизоваться под кем угодно?
$publicid = $_GET["id"];
$res = $conn->query("SELECT * FROM `communities` WHERE `publicid` = '$publicid'");
С хрестоматийной инъекцией из комикса про мальчика Bobby Tables?
$res = $conn->query("SELECT `id` FROM `communityposts` WHERE `community` = '$publicid'");
$id = $res->num_rows+1;
с нелепым инкрементом, который сломан даже в рамках своей собственной кривой логики?
Вот вы сейчас это серьёзно, считаете что можно рекомендовать новичкам проект, написанный по стандартам прошлого века, причём с детскими ошибками, которые уже тогда считались позором?
Попробуйте прочитать его ещё раз, не торопясь. Подумайте - о чём он. Посмотрите, нет ли в нём вопросов, на которые вас попросили ответить. Задумайтесь над вопросом, нужно ли в хабе, посвящённом серверному программированию, описывать то, как выглядит ваш сайт. Или интересно ли профессиональным разработчикам, составляющим аудиторию Хабра, получать представление о первом, очень слабом проекте начинающего программиста. просто представьте себе свою потенциальную аудиторию. Кому в принципе адресована ваша статья?
Так никто и так не повторяет :) В таком стиле уже лет как 20 не пишут.
Мне вот даже интересно, откуда вы брали примеры кода? Что за книгу вы купили? Ведь даже идиот Робин Никсон в последних изданиях не пишет настолько чудовищные вещи. Если смотреть правде в глаза, то вас тут не размазали только потому, что никто не потрудился заглянуть в код. А учитывая, что в своей статье вы делали что угодно, только не разбирали этот кошмар, то ваше заявление про "чтобы никто не повторял" выглядит довольно жалко. Собственно, из ошибок вы упомянули только один косяк в структуре таблиц, из, минимум, десятка.
В целом, конечно, к теме "чтобы никто не повторял" это нелепое произведение не имеет никакого отношения. Скорее первая проба пера начинающего автора, такой лучащийся гордостью отчёт о проделанной работе, который годится разве что в школьную стенгазету, а на Хабр он попал по недоразумению.
Впрочем, не принимайте мои слова близко к сердцу (я уверен, что вы и так не принимаете, но всё равно чувствую себя обязанным это сказать). Хотя для Хабра образца хотя бы двухлетней давности эта статья - просто позор, для школьника это довольно сносное произведение. А тот факт, что вы его осилили говорит о том, что у вас есть потенциал и, возможно, со временем вы научитесь писать сносно - как код, так и тексты.
SQL инъекции - просто не нужно класть сырой ввод пользователя в SQL запрос.
Ошибка номер раз: во-первых, понятие "пользовательский ввод" не имеет чёткого определения, что не позволяет построить на его основе гарантированную защиту. Во-вторых, даже если ввод "не пользовательский", ошибки синтаксиса от спецсимволов SQL никто не отменял. Поэтому данное правило звучит гораздо проще: "никогда не класть данные прямо в запрос".
Валидацию никто не отменял.
Ошибка номер два: валидация относится к бизнес-логике. А к безопасности - наоборот, никакого отношения не имеет, за исключением очень редких специальных случаев.
Добавить туда prepared statements и инъекции не страшны
Непонятно, что имеется в виду под "добавить", если это и есть тот самый способ, при котором "данные не попадают прямо в запрос". При этом важно помнить, что сам по себе подготовленный запрос - не панацея, и лучше использовать формулировку "заменять актуальные данные в запросе на знаки подстановки".
Ошибка номер три: помимо данных, есть ещё идентификаторы и ключевые слова. Для них замена подстановками не сработает и их надо фильтровать через белые списки.
XSS атаки - снова валидация пользовательского ввода, html escape
Ошибка номер четыре, которую мы уже разбирали на примере инъекций. Во-первых, валидация пользовательского ввода сама по себе, а обеспечение безопасности - само по себе, они почти не пересекаются. Во-вторых, для защиты от XSS экранируют не "пользовательский ввод", а "любой вывод в зависимости от его контекста": если выводим в HTML, то применяем HTML экранирование, если выводим в JS, то применяем JS-экранирование - и так далее. И пользователь тут ну совершенно вообще не при чём.
Насчёт интервью согласен с вашими оценками, но тут надо понимать, куда идёшь. В FAANG, которого косплеит ВК, идеальным кандидатом является конформист-зубрила, прокачанный винтик. И система найма заточена на отсеивание всего остального.
Замах был на рубль, "я увидел в рекомендациях дурацкую статью". Читатель уж думает, сейчас ему напишут хорошую. А внутри ему открывают глаза на сканирование портов и ключи в репозиториях. Ну офигеть какая новость. А потом и вовсе выясняется, что всё затевалось ради реферальной ссылки.
И сама статья, и - особенно - вывод её хомячками в топ - это какой-то позор.
Ну по крайней мере тут и в комментариях достаточно хомячков, всерьёз дискутирующих с этим текстом. То есть ни заголовок, ни заведомо бессмысленный текст их не смутил. А это как раз те самые "пользователи Хабра". Боюсь, ваши представления о нынешней аудитории немножко слишком радужные.
Проверил
С того же, с чего начну любую незнакомую задачу - загуглю php public node EVM
2023 год: Вам звонит Том Круз: как разоблачить дипфейк во время видеозвонка
2024 год: Разработчик с помощью дипфейка в реальном времени прошёл собеседование за друга
2025 год: проснулась информационная служба Хабра.
Смотря что называть поддержкой. Где-то строка по умолчанию является набором кодовых точек юникода, а массив байт - это исключение. Где-то наоборот - строка по умолчанию это массив байтов, но в определённом контексте она трактуется, как набор кодовых точек юникода. И в том и в другом случае поддержка есть.
Про стандартную библиотеку довод валидный, но, прямо скажем, очень жиденький. Да - и это, и массивы - всё это объективные недостатки. Которые, тем не менее, совсем не тянут на причины смерти. А скорее на объективную критику из раздела "Языки бывают двух видов - те, которые все ругают и те, на которых никто не пишет".
В целом у вас вполне валидный комментарий на тему "почему лично я не люблю РНР". Но пост немного не об этом.
А можете очень кратенько перечислить подводные камни при реализации web3-проекта на РНР?
Примеры использования языка тут совсем другие, выше по тексту. А вконтактик приведён как пример гибкости экосистемы. Так себе пример, но и комментарий у вас, прямо скажем, не первой свежести.
Ghost Riders in the Sky похоже на неофициальное название миссии, просто кто-то увидел очевидное созвучие. А жаль, было бы классно!
Ахаха, прямо анекдот про чукчу и холодильник! Шикарная история!
Белый айпи это конечно печаль, а какая проблема со скоростью? Неужели 100 мегабит не хватает?
Мдаа, я помню в пхпклубе ржали над тогдашними ВДСками, буквально описывая их словами "два студента на коленке", но я даже представить себе не мог, насколько всё больше закручено :-D
У меня самого было проще, хостинг был бесплатный для друзей, так что работал он на обычном компе с Core2 Duo подключенном к домашнему интернету (правда, чтобы не класть канал, качая, кхм-кхм, исходники убунты, я раскошелился на отдельное подключение от Корбилайна, и тупо оплачивал два счёта, причем, кажется, сильно дешевле полутора тысяч в сумме).
Думаю, статью вполне можно добавить в хабы История айти и Компьютерное железо.
Это вам в комментарий чуть выше. А в новости всего лишь ручка с кнопками.
Я думаю, дело не в финансировании. Вы правы в том, что никакой менеджмент не решит проблему. Потому что он будет делать только то, что ему скажут. А что именно, и зачем - он не придумает. Тут нужен визионер - Королёв, Фон Браун, Маск. Как только визионеры уходят, тут же начинается бардак и стагнация, и никакие эффективные менеджеры, в кавычках или без, тут ничего не сделают. А точнее будут эффективно делать ничего.
Ошибку (разобранную) я вижу тут только одну, со структурой таблиц. При этом использованное решение объясняется почему-то не показом новой структуры таблиц... а картинками, показывающими интерфейс. Но при этом вижу другие ужасы со структурой таблиц и чудовищный код, на который я дал ссылку, и о котором вы вообще ни словом не заикнулись. То есть со всем остальным, по-вашему, всё в порядке? И вы предлагаете новичкам писать именно так:
Вот с этим детским лепетом вместо авторизации, когда достаточно подменить куку чтобы авторизоваться под кем угодно?
С хрестоматийной инъекцией из комикса про мальчика Bobby Tables?
с нелепым инкрементом, который сломан даже в рамках своей собственной кривой логики?
Вот вы сейчас это серьёзно, считаете что можно рекомендовать новичкам проект, написанный по стандартам прошлого века, причём с детскими ошибками, которые уже тогда считались позором?
Мне кажется, вы не прочти мой комментарий.
Попробуйте прочитать его ещё раз, не торопясь. Подумайте - о чём он. Посмотрите, нет ли в нём вопросов, на которые вас попросили ответить. Задумайтесь над вопросом, нужно ли в хабе, посвящённом серверному программированию, описывать то, как выглядит ваш сайт. Или интересно ли профессиональным разработчикам, составляющим аудиторию Хабра, получать представление о первом, очень слабом проекте начинающего программиста. просто представьте себе свою потенциальную аудиторию. Кому в принципе адресована ваша статья?
Так никто и так не повторяет :) В таком стиле уже лет как 20 не пишут.
Мне вот даже интересно, откуда вы брали примеры кода? Что за книгу вы купили? Ведь даже идиот Робин Никсон в последних изданиях не пишет настолько чудовищные вещи. Если смотреть правде в глаза, то вас тут не размазали только потому, что никто не потрудился заглянуть в код. А учитывая, что в своей статье вы делали что угодно, только не разбирали этот кошмар, то ваше заявление про "чтобы никто не повторял" выглядит довольно жалко. Собственно, из ошибок вы упомянули только один косяк в структуре таблиц, из, минимум, десятка.
В целом, конечно, к теме "чтобы никто не повторял" это нелепое произведение не имеет никакого отношения. Скорее первая проба пера начинающего автора, такой лучащийся гордостью отчёт о проделанной работе, который годится разве что в школьную стенгазету, а на Хабр он попал по недоразумению.
Впрочем, не принимайте мои слова близко к сердцу (я уверен, что вы и так не принимаете, но всё равно чувствую себя обязанным это сказать). Хотя для Хабра образца хотя бы двухлетней давности эта статья - просто позор, для школьника это довольно сносное произведение. А тот факт, что вы его осилили говорит о том, что у вас есть потенциал и, возможно, со временем вы научитесь писать сносно - как код, так и тексты.
Просто на будущее
Ошибка номер раз: во-первых, понятие "пользовательский ввод" не имеет чёткого определения, что не позволяет построить на его основе гарантированную защиту. Во-вторых, даже если ввод "не пользовательский", ошибки синтаксиса от спецсимволов SQL никто не отменял. Поэтому данное правило звучит гораздо проще: "никогда не класть данные прямо в запрос".
Ошибка номер два: валидация относится к бизнес-логике. А к безопасности - наоборот, никакого отношения не имеет, за исключением очень редких специальных случаев.
Непонятно, что имеется в виду под "добавить", если это и есть тот самый способ, при котором "данные не попадают прямо в запрос". При этом важно помнить, что сам по себе подготовленный запрос - не панацея, и лучше использовать формулировку "заменять актуальные данные в запросе на знаки подстановки".
Ошибка номер три: помимо данных, есть ещё идентификаторы и ключевые слова. Для них замена подстановками не сработает и их надо фильтровать через белые списки.
Ошибка номер четыре, которую мы уже разбирали на примере инъекций. Во-первых, валидация пользовательского ввода сама по себе, а обеспечение безопасности - само по себе, они почти не пересекаются. Во-вторых, для защиты от XSS экранируют не "пользовательский ввод", а "любой вывод в зависимости от его контекста": если выводим в HTML, то применяем HTML экранирование, если выводим в JS, то применяем JS-экранирование - и так далее. И пользователь тут ну совершенно вообще не при чём.
Насчёт интервью согласен с вашими оценками, но тут надо понимать, куда идёшь. В FAANG, которого косплеит ВК, идеальным кандидатом является конформист-зубрила, прокачанный винтик. И система найма заточена на отсеивание всего остального.
Посмотрите в словаре значение этого слова и постарайтесь впредь употреблять его правильно.
Замах был на рубль, "я увидел в рекомендациях дурацкую статью". Читатель уж думает, сейчас ему напишут хорошую. А внутри ему открывают глаза на сканирование портов и ключи в репозиториях. Ну офигеть какая новость. А потом и вовсе выясняется, что всё затевалось ради реферальной ссылки.
И сама статья, и - особенно - вывод её хомячками в топ - это какой-то позор.
Ну по крайней мере тут и в комментариях достаточно хомячков, всерьёз дискутирующих с этим текстом. То есть ни заголовок, ни заведомо бессмысленный текст их не смутил. А это как раз те самые "пользователи Хабра". Боюсь, ваши представления о нынешней аудитории немножко слишком радужные.
Что вы имеете в виду под словом "проходимец"?