Доход с нуля
Все что относится к интернету.

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

Сообщение Slash 25 фев 2016, 20:20

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

Советы по PHP (Для тех кто пишет сайт сам) - php
Советы по PHP (Для тех кто пишет сайт сам) - php (68.2 КБ) Просмотров: 844


И так первый мой совет:
Не используйте закрывающий тег ?> в файле набирая php код, если ниже нет HTML тегов, это удар по безопасности.
Как это может повлиять на безопасность? - скорее всего зададите этот вопрос.

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

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

Спасибо за внимание.
Аватара пользователя
Slash
Эксперт
 
Сооб­щения: 432

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

Сообщение Всезнающий

 Всегда можно начать с нуля и найти способ получать доход без вложений.
Всезнающий
 


Сообщение Administrator 25 фев 2016, 20:39

Сейчас посмотрел несколько файлов phpbb, там везде есть закрывающий тег ?>, и действительно без пробела после него. Если убрать этот тег, то такой сайт будет работать?
Аватара пользователя
Administrator
Администратор
 
Сооб­щения: 7049
Откуда: Россия

Сообщение Slash 26 фев 2016, 05:35

Administrator писал(а):Если убрать этот тег, то такой сайт будет работать?

Да, конечно.
Я во всех своих движках стараюсь убрать.

В phpFOX во многих файлах, после закрывающего тега, несколько переносов на новую строку сделано, все удаляю.
Аватара пользователя
Slash
Эксперт
 
Сооб­щения: 432

Сообщение Slash 27 фев 2016, 09:17

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

Пример работы функции:
Код: Выделить всё
$name = mysqli_real_escape_string($mysqli$_POST['name']); 
Аватара пользователя
Slash
Эксперт
 
Сооб­щения: 432

Сообщение Slash 03 мар 2016, 18:10

Если сценарий выдал вам необходимый результат, то остановите его, что бы снизить нагрузку на сервер. Например остановить сценарий можно функцией exit. Пример:
Код: Выделить всё
# Сравниваем два значения
if ($this->master == $this->go($count))
{
    echo 
'Всё верно!'# Если значения одинаковы, выводи сообщение на экран
    
exit; # Останавливаем дальнейшее выполнение сценария
Аватара пользователя
Slash
Эксперт
 
Сооб­щения: 432

Сообщение Slash 28 апр 2016, 04:58

Многие начинают работать в кодировке CP1251.
Советую не использовать эту кодировку, лучше всего UTF-8.
Аватара пользователя
Slash
Эксперт
 
Сооб­щения: 432

Сообщение Slash 09 июн 2016, 05:50

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

Ниже PHP 5.4 не использую давно (5.6 - 7.0), но все ровно пишу полные теги.
Аватара пользователя
Slash
Эксперт
 
Сооб­щения: 432

Сообщение x64 05 окт 2016, 13:32

Slash писал(а):Не используйте короткие теги <?=

Не совсем понял, чем эта замечательная конструкция, полностью аналогичная <?php echo, не угодила? (:
Шорт-теги в новых версиях пыха отменены, да, но именно этот — оставлен. Более того, начиная с версии 5.4.0 тег <?= доступен всегда.
Аватара пользователя
x64
Участник
 
Сооб­щения: 27
Откуда: Подмосква

Сообщение Slash 05 окт 2016, 14:55

x64 писал(а):чем эта замечательная конструкция

Кому как, мне это не кажется замечательной конструкцией.

Пример: переход на новый хостинг, который не поддерживает короткие теги.
Аватара пользователя
Slash
Эксперт
 
Сооб­щения: 432

Сообщение x64 05 окт 2016, 15:04

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

Сообщение Slash 06 окт 2016, 03:56

x64 писал(а):Пример несколько устаревший)

Так и совет для устаревших версий:
Slash писал(а):Если Ваш PHP меньше 5.4, советую использовать полный тег: <?php.

x64 писал(а):Более того, начиная с версии 5.4.0 тег <?= доступен всегда.

Об этом я и сказал:
Slash писал(а):С PHP 5.4 - включен всегда.

x64 писал(а):не осуждаю

За это я не переживаю.
Аватара пользователя
Slash
Эксперт
 
Сооб­щения: 432

Сообщение x64 19 окт 2016, 15:01

Slash писал(а):За это я не переживаю.

Да, крупный «специалист» :facepalm:
Бежать надо от таких советов и советчиков.

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

Сообщение Slash 19 окт 2016, 15:54

x64 писал(а):Бежать надо от таких советов и советчиков.

А кто тебя держит? Беги.
На свой форум я тебя не тянул, сам появился. :facepalm:
x64 писал(а):когда пытался заместо стандартной implode()

На то были свои причины.
x64 писал(а):Второй раз было сегодня.

Второй раз был из за твоего тона.
x64 писал(а):привёл пару способов из чистого JS и jQuery по правильному началу работы с контентом страницы после загрузки

И что?
x64 писал(а):Не может же Верховный Одминистратор не блистать на своём сайте.

Как ярко сказано. Видимо "звезду" обидели, тем, что не дали поблистать ей и его (или ее) заели амбиции. :lol:
Аватара пользователя
Slash
Эксперт
 
Сооб­щения: 432

на главнуюна главную



Вверх Вниз