Страница 1 из 1

Советы по PHP (Для тех кто пишет сайт сам)

Добавлено: 25 фев 2016, 19:20
Slash
Здравствуйте.
Решил создать тему, где буду давать разного рода советы по языку программированию PHP, советы, которыми пользуюсь сам.
php.jpg
php.jpg (68.2 КБ) 16351 просмотр
И так первый мой совет:
Не используйте закрывающий тег ?> в файле набирая php код, если ниже нет HTML тегов, это удар по безопасности.
Как это может повлиять на безопасность? - скорее всего зададите этот вопрос.

Допустим, вы набираете код, ставите закрывающий тег и случайно делаете пробел после закрывающего тега ("?> "), этот файл инклюдится к вызываемому файлу. Пользователь при обращению к файлу может получить вместо результата сценария, исходный код файла, где стоит пробел после закрывающего тега. Этого может и не произойти, как вам повезет. Но представьте, что пользователь получит исходник вашего конфига, где записаны данные доступа к БД. Обычному пользователю все ровно, он посчитает, что сайт на реконструкции или ещё чего и закроет страницу с исходником. А кто-та может воспользоваться моментом и сотворить с вашей базой, все, что ему вздумается...

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

Спасибо за внимание.

Советы по PHP (Для тех кто пишет сайт сам)

Добавлено: 25 фев 2016, 19:39
Administrator
Сейчас посмотрел несколько файлов phpbb, там везде есть закрывающий тег ?>, и действительно без пробела после него. Если убрать этот тег, то такой сайт будет работать?

Советы по PHP (Для тех кто пишет сайт сам)

Добавлено: 26 фев 2016, 04:35
Slash
Administrator писал(а):Если убрать этот тег, то такой сайт будет работать?
Да, конечно.
Я во всех своих движках стараюсь убрать.

В phpFOX во многих файлах, после закрывающего тега, несколько переносов на новую строку сделано, все удаляю.

Советы по PHP (Для тех кто пишет сайт сам)

Добавлено: 27 фев 2016, 08:17
Slash
Спецсимволы в строках получаемых от пользователей необходимо экранировать, что бы избежать SQL инъекции. Сделать это можно при помощи функции mysqli_real_escape_string, которая создана специально для экранирования спецсимволов.

Пример работы функции:

Код: Выделить всё

$name = mysqli_real_escape_string($mysqli, $_POST['name']); 

Советы по PHP (Для тех кто пишет сайт сам)

Добавлено: 03 мар 2016, 17:10
Slash
Если сценарий выдал вам необходимый результат, то остановите его, что бы снизить нагрузку на сервер. Например остановить сценарий можно функцией exit. Пример:

Код: Выделить всё

# Сравниваем два значения
if ($this->master == $this->go($count))
{
    echo 'Всё верно!'; # Если значения одинаковы, выводи сообщение на экран
    exit; # Останавливаем дальнейшее выполнение сценария
} 

Советы по PHP (Для тех кто пишет сайт сам)

Добавлено: 28 апр 2016, 03:58
Slash
Многие начинают работать в кодировке CP1251.
Советую не использовать эту кодировку, лучше всего UTF-8.

Советы по PHP (Для тех кто пишет сайт сам)

Добавлено: 09 июн 2016, 04:50
Slash
Не используйте короткие теги <? (<? | <?=)
До версии PHP 5.4, для использования коротких тегов, должна быть включена php.ini опция short_open_tag.
С PHP 5.4 - включен всегда. Если Ваш PHP меньше 5.4, советую использовать полный тег: <?php.

Ниже PHP 5.4 не использую давно (5.6 - 7.0), но все ровно пишу полные теги.

Советы по PHP (Для тех кто пишет сайт сам)

Добавлено: 05 окт 2016, 12:32
x64
Slash писал(а):Не используйте короткие теги <?=
Не совсем понял, чем эта замечательная конструкция, полностью аналогичная <?php echo, не угодила? (:
Шорт-теги в новых версиях пыха отменены, да, но именно этот — оставлен. Более того, начиная с версии 5.4.0 тег <?= доступен всегда.

Советы по PHP (Для тех кто пишет сайт сам)

Добавлено: 05 окт 2016, 13:55
Slash
x64 писал(а):чем эта замечательная конструкция
Кому как, мне это не кажется замечательной конструкцией.

Пример: переход на новый хостинг, который не поддерживает короткие теги.

Советы по PHP (Для тех кто пишет сайт сам)

Добавлено: 05 окт 2016, 14:04
x64
Пример несколько устаревший)
Из официальной документации: «Начиная с версии PHP 5.4.0 Тег <?= доступен всегда, вне зависимости от настройки short_open_tag».
Версии младше встретить можно, но это надо постараться ещё. Как и найти хостинг, предоставляющий довольно древнюю версию пыха с short_open_tag = off.
Дело привычки, понимаю и не осуждаю, ибо сам до сих пор пишу array() заместо [] :D

Советы по PHP (Для тех кто пишет сайт сам)

Добавлено: 06 окт 2016, 02:56
Slash
x64 писал(а):Пример несколько устаревший)
Так и совет для устаревших версий:
Slash писал(а):Если Ваш PHP меньше 5.4, советую использовать полный тег: <?php.
x64 писал(а):Более того, начиная с версии 5.4.0 тег <?= доступен всегда.
Об этом я и сказал:
Slash писал(а):С PHP 5.4 - включен всегда.
x64 писал(а):не осуждаю
За это я не переживаю.

Советы по PHP (Для тех кто пишет сайт сам)

Добавлено: 19 окт 2016, 14:01
x64
Slash писал(а):За это я не переживаю.
Да, крупный «специалист» :facepalm:
Бежать надо от таких советов и советчиков.

Один раз на своём форумке потёр моё сообщения, когда пытался заместо стандартной implode() написать свою TRUEЪ-функцию объединения массива в строку, а я привёл простой код «из коробки».
Второй раз было сегодня.
Как же, какой-то пришлый привёл пару способов из чистого JS и jQuery по правильному началу работы с контентом страницы после загрузки. Непорядок! Не может же Верховный Одминистратор не блистать на своём сайте.

Советы по PHP (Для тех кто пишет сайт сам)

Добавлено: 19 окт 2016, 14:54
Slash
x64 писал(а):Бежать надо от таких советов и советчиков.
А кто тебя держит? Беги.
На свой форум я тебя не тянул, сам появился. :facepalm:
x64 писал(а):когда пытался заместо стандартной implode()
На то были свои причины.
x64 писал(а):Второй раз было сегодня.
Второй раз был из за твоего тона.
x64 писал(а):привёл пару способов из чистого JS и jQuery по правильному началу работы с контентом страницы после загрузки
И что?
x64 писал(а):Не может же Верховный Одминистратор не блистать на своём сайте.
Как ярко сказано. Видимо "звезду" обидели, тем, что не дали поблистать ей и его (или ее) заели амбиции. :lol:

Советы по PHP (Для тех кто пишет сайт сам)

Добавлено: 14 окт 2017, 10:47
Екатирина
Доброго времени суток. Подскажите, как связаться со Slash'ом? Срочно нужна его помощь.

Советы по PHP (Для тех кто пишет сайт сам)

Добавлено: 14 окт 2017, 12:07
Administrator
Здравствуйте, Екатирина. Вы можете задать свои вопросы здесь. А ещё у Slash'а есть свой форум danfa точка org.

Советы по PHP (Для тех кто пишет сайт сам)

Добавлено: 15 окт 2017, 06:24
Екатирина
Administrator писал(а):Вы можете задать свои вопросы здесь.
Спасибо.

Slash, Вы исправили все ошибки предыдущего исполнителя на нашем сайте и сказали, что если нужна будет Ваша помощь, мы можем Вас просить, но Ваш скайп всегда в офлайне, мы не можем связаться с Вами.
Мы хотели бы Вас попросить, вот о чём:
- Переделать сайт, чтобы он работал на php7.
- Сделать онлайн проверку почты, чтобы значок нового сообщения загорался без перезагрузки страницы.
- Сделать лайки для заметок с уведомлениями.
И ещё есть пара пожеланий, о них я могу сказать лично.
Вы поможете нам? Спасибо.

Советы по PHP (Для тех кто пишет сайт сам)

Добавлено: 15 окт 2017, 09:26
Екатирина
x64 писал(а):Да, крупный «специалист» :facepalm:
Бежать надо от таких советов и советчиков.
А что с советами? Они по Вашему неверные? По моему советы вполне разумные и к месту.
Зря Вы так об этом человеке отзываетесь. Он между прочем сделал то, что не мог сделать долгое время наш прежний исполнитель с образованием программиста. Slash, сделал всё быстро и качественно, сайт стал работать быстрее и стало меньше нагрузки на сервер, в общем, поставил сайт на ноги.

Советы по PHP (Для тех кто пишет сайт сам)

Добавлено: 21 окт 2017, 06:50
Екатирина
Отпишусь.
Slash, вышел на связь в Скайпе, обговорили и он уже работает!

Я уж начала думать, что с ним, что-то случилось. Слава Богу, ни чего!

Советы по PHP (Для тех кто пишет сайт сам)

Добавлено: 26 окт 2017, 10:43
Slash
Отпишусь и я.
Работа выполнена.

Спасибо за отзыв! С Вами приятно работать!