• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Статья Учим PHP: Основы и принцип работы

Доброго времени суток, codeby.

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

1.1. Принцип работы Интернета

Сама сеть "Интернет" представляет собой множество , которые соединены друг с другом с помощью а также спутниковыми каналами и так далее. Однако, думаю почти всем известно и понятно то что одних кабелей и радиоволн для передачи информации недостаточно. Чтобы обеим сторонам осуществлять передачу информации, им необходимо придерживаться каких-нибудь правил, соглашений которые как раз и позволят нам осуществлять передачу данных и гарантировать её доставку. Набор правил и соглашений называется .

1.2.
Протоколы передачи данных

Для разных целей существуют различные протоколы. Нам не нужно иметь представление и понимание о каждом из них, в нашем случае нам будет достаточно знать лишь о тех, которые мы будем использовать в Web. Один из таковых является , а если быть более точным , который базируется на протоколе TCP. Протокол http используется и При отправке запроса клиентом (браузером) пользователя на определённый веб-сервер для получения ресурсов (изображения, файлы и т.д.) которые обозначаются адресами. В ответ веб-сервер отправляет клиенту данные которые он запросил. Сама передача этих данных осуществляется с помощью протокола HTTP. Давайте рассмотрим схему для того чтобы лучше понять как это работает.
schema1.png
Исходя из приведённой схемы можно понять, что на самой схеме указано направление передачи данных стрелками. Каждый из протоколов ничего не знает о том какой протокол стоит над ним (да-да между ними существует иерархия). Как пример, протокол TCP даже не знает о существовании протокола HTTP, а его в свою очередь понимает как браузер так и веб-сервер.

3. Семейство TCP/IP

Вот уже много-много лет основным протоколом Интернета является - TCP. Протоколы TCP и IP сильно связаны и поэтому принято объединять их в одну группу под названием "Семейство TCP/IP", на самом деле в эту группу входит также протокол , но в прочем это уже совсем другая история. Основные особенности и преимущества протокола TCP (коротко):
  • Корректная доставка данных до места назначения.
  • Протокол TCP/IP устроен так, что он выбирает оптимальный путь распространения сигнала между обеими сторонами.
  • При передаче данных они разбиваются на фрагменты - пакеты, которые доставляются вместо назначения по отдельности.
1.4.

Здесь я решил оставить ссылку на статью, все предыдущие пункты и в принципе весь текст в данной статье я писал сам из головы, опираясь на свои знания и понимание работы.

1.5. IP-адрес

Любой машине, которая подключена к сети Интернет, а также желает производить обмен и передачу информации с другими машинами, должна иметь некое уникальное имя или же IP-адрес. Здесь можно было бы ещё много чего написать про стандарты ipv4, а также ipv6, но само собой в одну статью это не влезет и я считаю что лучше прочитать всеми нашу любимую

1.6. Заключение первой части статьи

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

Очередное небольшое отступление перед тем как приступить к самому PHP. Стоит понимать что в интернете есть 2 типа веб-сайтов:
  • Статические (Это сайт состоящий из HTML файлов, без использования базы данных и без какой-либо функциональности).
  • Динамические (Это сайты которые чаще всего динамически генерируют страницы на стороне сервера).
2.1. Что такое PHP? И где он применяется?

PHP (от англ. Hypertext Preprocessor) - это (Cи-подобный) язык программирования, который изначально создавался для генерации HTML-страниц и назывался Personal Home Page Tools — «Инструменты для создания персональных веб-страниц» ) но он эволюционировал и стал языком общего назначения. Сам PHP является . Это означает то что написанные на нём программы или как их иногда называют "скрипты" сначала переводятся в байт-код при этом проверяя синтаксис ну и затем PHP выполняет этот самый байт-код. Из этого можно сразу сделать вывод, что просто в блокноте писать PHP код как в случае с HTML не выйдет, ну оно то выйдет, но без самого PHP это соответственно работать не будет. Поэтому нам необходимо, для того чтобы начать писать код на PHP, нам необходимо "создать" свою среду разработки, а именно:
  • Выбрать или же (для начала я бы посоветовал , а для серьезных проектов и что использую лично я в повседневной жизни -
  • Локальный сервер, я рекомендую использовать потому что он позволяет легко настраивать необходимые модули, а также имеет поддержку последних версий PHP.
Перед тем как начать писать код стоит упомянуть о том, что PHP - это язык с . Это значит что нам не нужно самим присваивать тип данных переменной. Таким образом, тип данных определяется не при объявлении самой переменной, а при присваивании самого значения.

2.2. Пишем Hello World!

Начнём с правила объявления переменных в PHP. Имена всех переменных в языке PHP должны начинаться со знака доллара $, имена переменных не должны содержать кириллицу, а также названия переменных чувствительны к регистру.

pic1.png

PHP:
<?php

$codeby = 'codeby.net';
$codeBY = 'codeby.net';
Переменная $codeby и $codeBY в PHP являются разными так как выше я упомянул то что чувствительны к регистру, хотя и имеют одинаковый тип данных.
Как и в любом другом языке, переменная занимает область в оперативной памяти, а доступ к ней осуществляется с помощью ее имени.
В PHP знак равно ( = ) присваивает значение переменной, забегая вперед в условиях нужно использовать == (2 равно) для проверки определенного значения, либо строгое (===).
Давайте выведем Hello World! на экран, делается это с помощью конструкции языка

pic2.png

PHP:
<?php

echo 'Hello World!';
Давайте разберем наш код

pic3.png


1) Даем понять интерпретатору и что мы будем писать PHP код, можно использовать более короткий вариант <?, но он будет работать на тех веб-серверах, где включена функция short_open_tag (не забываем что имя расширение файла должно быть php).

pic4.png


2) Мы написали языковую конструкцию echo, которая принимает в себя определенные аргументы.
3) Мы заключили текст в одинарные кавычки, это означает то что тип данных str (string) строка.
4) Мы написали (точку с запятой), для того чтобы завершить инструкцию читаем ->

Теперь давайте напишем следующий код:

pic5.png

PHP:
<?php

echo 'Hello World!';
echo "Hello World!";
Эти 2 строки имеют одинаковый тип данных string. Но как я думаю вы уже заметили на 3-ей строке одинарные кавычки, на 4-ой двойные кавычки. Отличие этих двух строк в том, что если мы объявим переменную codeby с типом integer

pic6.png


И захотим отобразить значение переменной, то в случае 5-ой строки у нас на экране отобразится название переменной, а в случае с 6-ой строкой - значение. Это можно сделать с помощью объединив Hello World с нашей переменной прямо внутри echo. Но в нашем случае мы можем просто вставить название нашей переменной в строку.

pic7.png

PHP:
<?php
$codeby = 1;

echo 'Hello World!$codeby';
echo "Hello World!$codeby";
Так как я пишу в PHPStorm, а это достаточно умная IDE. Она уже подсвечивает переменную в 6 строке т.к. - это верно, а в 5 мы можем заметить что переменная не подсвечивается (если что это называется подсветка синтаксиса).
Давайте посмотрим что мы увидим на сайте:

pic8.png


Также их отличие в том, что когда интерпретатор будет "смотреть" код, он выведет 5 строку на экран быстрее чем в 6, потому что он не будет её обрабатывать, а выведет сразу как строку. А в случае со строкой с двойными кавычками, интерпретатор PHP будет думать что внутри какая-то переменная и будет обрабатывать данную строку, а не выводить не думая.

Итог
Мы познакомились с основами работы сети Интернет, поняли зачем и для чего нужен язык PHP, разобрались с тем как объявлять переменные и базовые основы синтаксиса. В следующей части мы разберем типы данных, строковые операции, конкатенацию строк и не только.
 

explorer

Platinum
05.08.2018
1 081
2 474
BIT
14
Статические (Это сайт состоящий из HTML файлов, без использования базы данных и без какой-либо функциональности).

Совершенно с этим не согласен. На чистом HTML5+CSS3 пишутся слайдеры, фотогалереи, анимация, и ещё 100500 разных штук. Кроме этого на статических сайтах в полный рост используется js, который ещё круче расширяет функционал.

За саму тему +, программирование это очень нужная вещь.
 

Citizen4433

Green Team
12.09.2019
16
26
BIT
0
Про php почитать будет интересно, особенно если Вы преподнесете разные способы его эксплуатации или наоборот, меры предостережения от взлома.
Мы дойдем до этого. Впереди ещё много всего интересного, ООП и т.д.. Ну и конечно разберём написание безопасного кода от и до, для этого будет отдельная статья в цикле статей по PHP, но это будет ещё через парочку статей.
Совершенно с этим не согласен. На чистом HTML5+CSS3 пишутся слайдеры, фотогалереи, анимация, и ещё 100500 разных штук. Кроме этого на статических сайтах в полный рост используется js, который ещё круче расширяет функционал.

За саму тему +, программирование это очень нужная вещь.
Если честно я знал что мне сделают замечания по поводу этого, спасибо что заметили. В текущем вебе, CSS3 уже почти не используется, а используется SCCS и LESS, так как занимаюсь и frontend'ом знаю о чём говорю. А так да, Вы правы. Я просто отношу это всё равно к статике, если не js.

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

Calibre

Green Team
22.04.2018
39
28
BIT
0
Доброго времени суток, codeby.

Я сейчас всё чаще и чаще вижу негатив в сторону PHP, но многие закрывают глаза на то, что PHP невероятно сильно улучшился за последние годы и умирать он точно не собирается.
Критикуют вполне обоснованно. Язык действительно крутой (стал таковым начиная с седьмых версий), но в среде веб разработчиков есть уже значительный переход из РНР в Python, хотя обратной статистики не наблюдалось.
Но данный яп (РНР) является маст-хев для любого веб-пентестера, то, без чего вообще браться за дело будет чуть ли не грешным из-за распространенности этой технологии. Хочешь-не хочешь, а уметь кодить и знать логику обязан.
 
  • Нравится
Реакции: Citizen4433

SooLFaa

Platinum
15.07.2016
898
1 559
BIT
19
Это совсем никуда не годиться?! Гайд по запуску PHP в котором нет даже этого?! Пишите лучше мне, в следующий раз я подкину более интересные идеи.
 
  • Нравится
Реакции: Citizen4433

Citizen4433

Green Team
12.09.2019
16
26
BIT
0
Гайд по запуску PHP в котором нет даже этого?!

Чего? Что ещё за гайд? Я решил в статье не описывать в миллионный раз процесс установки локального сервера или же самого PHP, я посчитал так нужным. Про опенсервер есть упоминание и любой человек сможет и без меня его установить.
Это совсем никуда не годиться?!

годится и что за знаки вопроса?

Спасибо за предложение, но нет.
 

SooLFaa

Platinum
15.07.2016
898
1 559
BIT
19
Чего? Что ещё за гайд? Я решил в статье не описывать в миллионный раз процесс установки локального сервера или же самого PHP, я посчитал так нужным. Про опенсервер есть упоминание и любой человек сможет и без меня его установить.


годится и что за знаки вопроса?

Спасибо за предложение, но нет.
Спасибо. Писал в 5 утра. В связи с чем голова устала.

А что касаемо темы. Перечитай её еще раз. Эта тема не несет вообще никакой технической или логической пользы сообществу. Рекомендую не воспринимать в штыки, а лучше напиши мне в ЛС. И мы поговорим, что исправить, что улучшить.
 
  • Нравится
Реакции: Citizen4433

Citizen4433

Green Team
12.09.2019
16
26
BIT
0
Спасибо. Писал в 5 утра. В связи с чем голова устала.

А что касаемо темы. Перечитай её еще раз. Эта тема не несет вообще никакой технической или логической пользы сообществу. Рекомендую не воспринимать в штыки, а лучше напиши мне в ЛС. И мы поговорим, что исправить, что улучшить.
Я не воспринимаю в штыки, если так подумали то извиняюсь. Я нормально к ней отношусь, это по сути вводная часть.
 

Lor

New member
19.08.2019
1
0
BIT
0
Автор, какая цель статей? Я стану программером на php после их прочтения? ))
 

Kira Latysheva

New member
02.10.2019
1
0
BIT
0
Есть книга Котерова PHP 7 в подлиннике, мне её посоветовали как первое руководство по PHP для начинающих. Но там не даётся программирование с нуля, посоветуйте, с чего начать полному новичку?
 

Calibre

Green Team
22.04.2018
39
28
BIT
0
Есть книга Котерова PHP 7 в подлиннике, мне её посоветовали как первое руководство по PHP для начинающих. Но там не даётся программирование с нуля, посоветуйте, с чего начать полному новичку?
если уже владеете html, что необходимо перед изучением php, то вот хороший курс. много положительных отзывов о нём.
 
  • Нравится
Реакции: Kira Latysheva

ZaCo

One Level
30.08.2019
7
1
BIT
0
За старание конечно респект, стиль изложения не интересен.
 

NoOpNo95

New member
29.02.2020
1
0
BIT
0
Статья для совсем новичков. Мне понравилось, кратко и по делу, хотя я не совсем понял для чего это введение про основы сетей(это конечно полезно знать) Почитал бы продолжение.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!