Сообщество - Программирование на PHP

Программирование на PHP

64 поста 1 971 подписчик

Популярные теги в сообществе:

4391

Про взлом сайта

Вспомнил историю, хочу поделиться. Может кому то интересно, что значит "взлом сайта" и как это делают.

Был у меня малюсенький сайт в годах примерно 2010-2014. Сайт - интернет магазин, где я продавал свои же php скрипты и давал возможность любому продавать на нём свои скрипты и брал за это 10%. Сайт был не прибыльным, но и содержание его мне ни чего не стоило. И написал я его полностью сам, совершенствуя навык программирования. Был этот сайт полностью автоматизирован.. Т.е. пополнение баланса через webmoney, покупка, продажа, вывод денег, оповещения о продажах по смс... Всё проходило автоматически и без моего участия. К сайту был привязан кошелек, на котором лежало около 3000р.

Однажды мне позвонил какой-то паренек.. 17 лет ему было. И представился как человек, взломавший мой сайт.

И действительно, парень вывел на свой кошелек все деньги с кошелька сайта. Он их мне вернул и рассказал про уязвимость.

А уязвимость просто наитупейшая... Немного об алгоритме программы: при покупке какого-то товара, программа проверяла, если на счету покупателя денег больше чем цена товара, то из его счета вычиталась эта сумма и отдавался товар. Так вот. В программе при добавлении товара на сайт я не сделал проверку на отрицательную цену. Чувак просто добавил товар с отрицательной ценой, допустим -500р. Потом с другого аккаунта стал покупать свой же товар. Программа проверила, что на его нулевом счету денег больше, чем -500 и вычла из нуля минус пятьсот... Минус на минус дало плюс и его счет увеличился на 500р при покупке товара. Потом он заказал вывод средств и программа в автоматическом режиме перевела деньги на его кошелек.

К тому времени я уже забросил этот сайт.. Больше года им не занимался, и решил просто отдать его тому парню... Он согласился, но видимо ему сайт быстро надоел и уже через пару месяцев он перестал существовать.

Показать полностью
22

Агрегатор контента своими руками. Попытка №2.

Агрегатор контента своими руками. Попытка №2.

Привет моим верным подписчикам и лиге вэб разработчиков! В данном посте я поведаю о:

- паре забавных случаев, возникших при разработке новой версии моего агрегатора котиков и мемасиков (а так же новостей, видео, пабликов, групп, RSS и Telegram каналов );

- текущем состоянии дел и планах развития.


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


Так как по своей натуре я перфекционист, то идея сделать все "красиво" не давала мне покоя и в 2017 году я наконец сдался и решился переписать все с 0, нанять хорошего дизайнера и выкатить ресурс который заткнет за пояс конкурентов :) Получилось ли у меня или это очередное фиаско, я надеюсь узнать сегодня, в комментариях к этому посту :)


Итак, начнем с пары интересных задач, которые пришлось решить при разработке.


1. Как я добавлял вывод телеграмм каналов.


В последний год появляется все больше популярных телеграм-каналов. Но лично мне не удобно читать их в приложении, хотя я не пробовал :). Я сразу запланировал, что в новой версии агрегатора обязательно должна быть возможность вывести в свою ленту посты из любых публичных телеграм-каналов вместе со всеми другими источниками.


Обилие инструкций по работе с телеграм-ботами воодушевляло и я рассчитывал, что задача не займет много времени. И еще я не понимал, почему никто не сделал аналогичного сервиса :)


Как это всегда бывает в разработке, препятствия возникли на ровном месте: оказалось, что для того, что бы бот мог читать какой-то канал, бота надо туда добавить. Поэтому вариант сразу отпал. И я перешел к чтению мануалов на основной API телеграма.


Через 30 минут изучения документации я был в отчаянии.



Все данные у телеграма шифруются, что бы получить что то от их серверов нужно обладать степенью магистра по криптографии... И, конечно, обычные http запросы - это не для них, только низкоуровневые socket, отдающие чистые байты, только хардкор. Вообщем без сторонней помощи задача была нерешаемая.


Несколько дней поиска привели меня к решению: использовать на сервере opensource php телеграм клиент. Дада! Можно использовать телеграм под php, и там даже есть поддержка звонков! Это чудо называется madelineProto и исходники доступны на гитхабе.


В итоге, через 3 дня настройки и две блокировки моего аккаунта из-за чрезмерного количества попыток авторизации я настроил клиент и решил задачу. Теперь у меня есть свой шлюз из telegram в web! А пользователи могут читать любые публичные телеграмм каналы у меня на сайте без регистрации и смс.


2. Парсинг youtube каналов.


С API youtube'a вообще вышло забавно. Их справка предлагает использовать php плагин от гугла для доступа к API.  От их API мне нужно было не много: список видео на канале с метаданными, название канала и его логотип. У vk или fb такой запрос создается парой строчек кода и разобраться можно за пол часа.


Но у гугла свой путь разработки :)

Я смирился с тем, что плагин для доступа к API весит более 30 мегабайт. Но я еще и не смог настроить его за 3 часа!

В итоге, кликая на все подряд в справке гугла, оказалось, что плагин можно вообще не использовать, а для получения всей информации - воспользоваться стандартным get запросом, как везде. На формирование запроса мне понадобилось ровно 10 строк кода и 15 минут, вместо 30 мегабайтного плагина.

А потом люди удивляются: "а почему андройд притормаживает на 8-миядерных процессорах и требует 4 гигабайта оперативы?" ;)


3. Что сейчас с агрегатором?


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


4. Планы


- Добавить прямые ссылки на отдельные источники

- Расширять список источников: imgur, rutube, reddit, новостные сайты.

- Привлечь ядро активных пользователей, что бы были данные для формирования ленты популярных постов;

- Добавить в ленту вывод видео и гифок, что бы сократить число внешних переходов;

- Е-маил рассылки с лучшими постами за день/неделю (естественно при желании пользователя);

- Сотрудничество с создателями контента для совместного продвижения.



5. Техническая часть.


Для тех кому интересно то под капотом следующий стек технологий:


Backend: самописный, доставшийся мне в наследство на одном из проектов и переписаный мной под свои нужды. Используется шаблонизатор smarty.

БД: Mysql

Fron-end: HTML + Angular JS 1, так же используется Jquery 2 (в 3-й версии scroll события в firefox не работают периодически) для анимаций.


Парсинг осуществляю с помощью библиотеки php-query или через API раз в 5 минут по CRON'у в порядке живой очереди с приоритетом на публичные источники. Т.е. если за 4 минуты сайт не успел пройтись по всем источникам, то скрипт останавливается. А в следующий раз в начале очереди находятся те источники, которые дольше всего не обновлялись. Очереди для публичных и персональных источников разные - по 2 минуты и на те и на другие.


Если вас заинтересовал проект, то буду очень признателен за любые отзывы и комментарии. Ссылка (на пикабу, вроде, разрешено в конце поста давать ссылку): https://i-c-a.su/

Показать полностью 1

Ребята, помогите разобраться с сайтом

Всем привет, дорогие пикабушники!

На днях получил в наследство сайт одной организации с просьбой "помочь в администрировании". Имеются начальные знания в php + html. Скачал я сайт с ftp, поставил denver, чтобы безопасно экспериментировать со страницами, но вот что получил при попытке открыть index.php:

При этом код самого index.php выглядит так:

Помогите разобраться, как мне запустить сайт.

Показать полностью 1

Помощь в программировании, или встать на путь коддера

Прошу помощи, есть идея написания бота для авто-ставок в букмекерских конторах. Алгоритм в голове есть, т.е. блок схема. А что это такое и как его готовить, и с чем есть, это программирование, неизвестно мне...Помогите, с чего начать, что почитать и т.д. Какой язык выбрать для этого? Возможно кто-то из интереса своего или от безделья изъявит желание написать этого бота (или скрипт, как правильно назвать). Можете пинать и минусить, не столь это важно в жизни))))

Потерял сайт с библиотеками php

Приветствую!

Был у меня в закладках сайт годный со всякими php-библиотеками, теперь не могу найти.

Зелёная шапка, лого в левом верхнем углу с ослом(?), вроде иностранный, хотя не уверен.


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

И просто так спасибо всем прочитавшим тоже :)


КДПВ:

Потерял сайт с библиотеками php
243

Бесплатная книга «Заметки по PHP»

У меня есть сайт, где я публикую свои заметки по программированию. Решил попробовать сделать раздел по PHP в виде книги (формат PDF). В итоге по объёму получилось 72 страницы.


Все статьи уникальны, т.е. написаны мною.


Скачать книгу можно по этой ссылке: https://yadi.sk/i/aSudVcy-3KucBN

Пост помощи! Последняя надежда на вас ребятки)

Добрый день уважаемые пикабушники! Надеюсь Вы мне поможите)

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


Есть шаблон на WordPress - NewsPaper . В этом шаблоне я изменил код в одном из модулей, так чтоб посты полностью выводились на страницу, а не через миниатюру и описание.

И тут появилась проблема, вроде все работает, но посты на главной дублируются (WP_Query duplicate post). Если использовать код как отдельный шаблон, то все нормально. А если встраивать в модуль темы, то дублируются.


Может быть кто-то сможет реально помочь, буду очень признателен.

Прошу не топить в минусах, хотя бы какое то время :) Спасибо ;)


Вот собственно сам код:



<?php

class td_module_17 extends td_module {

function __construct($post) {

//run the parrent constructor

parent::__construct($post);

}

function render() {

ob_start();

?>

<?php $custom_query = new WP_Query('posts_per_page= 5');

while($custom_query->have_posts()) : $custom_query->the_post();

?>

<div class="post-1">

<div <?php post_class(); ?> id="post-<?php the_ID(); ?>">

<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> </h3>

<div class="float-tags">

<div class="bb-td-post-small-box clearfix">

<?php the_tags('','',''); ?>

</div>

</div>

<div class="post-2">

<?php the_content(); ?>

</div>

</div>

</div>

<?php endwhile; ?>

<?php wp_reset_postdata(); // reset the query ?>

<?php return ob_get_clean();

}

}

Показать полностью
Отличная работа, все прочитано!