Рубрика «php» - 168

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

Статья содержит описание некоторых базовых приемов использования Laravel при разработки сайтов и будет полезна тем, кто начинает осваивать данный фреймворк. Для примера использую Ubuntu 12.04, PostgreSQL 9.3, Nginx 1.1.19, PHP 5.5.7, Composer и свежий проект, созданный с использованием Laravel 4.1. Под управление PostgreSQL крутится база данных examples, к которой имеет доступ пользователь examples c одноименным паролем. Nginx же настроен таким образом, что при обращении по адресу http://examples.loc в браузере открывается главная страницу-заглушка, которая идет с Laravel в комплекте, с надписью «You have arrived.»
Читать полностью »

Здравствуйте, Хабросообщество. В этой статье хочу рассказать, как можно подружить известный фреймворк Symfony2 и не менее известный трекер Jira.

Зачем связывать Jira и Symfony2?

В компании, где я работаю, возникла необходимость связать систему саппорта и трекер задач через API, чтобы заявки от клиентов могли быть легко преобразованы в тикеты. Первостепенной проблемой, которая встала на нашем пути, была интеграция аутентификации Jira (использовался механизм “Basic Authentication”) и системы безопасности Symfony2. Для понимания механизмов аутентификации и авторизации фреймворка необходимо ознакомиться с официальной документацией: http://symfony.com/doc/current/book/security.html.
Читать полностью »

В далекие детские годы я не понимал важность резервного копирования данных. Но, как говориться, понимание приходит с опытом. Зачастую опыт бывает очень горький. В моем случае хостинг два раза убивал базу сайта MathInfinity, созданного еще в студенческие годы.

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

Идея создания архивов на сервисах вроде Dropbox, Ubuntu One, Яндекс Диск, Диск Google и др. уже давно притягивала мое внимание. Десятки гигабайт бесплатного места, которое теоретически можно использовать резервирования данных.

Теперь эта идея получила мое первое воплощение. В качестве сервиса для создания архивов был выбран Яндекс Диск.
Читать полностью »

Предыстория

Жил-был один старый-старый сайт. Родители от него отказались, и на втором десятке лет существования он попал к нам. Он представлял из себя джунгли PHP кода, разбросанного по папкам. Все это было написано в разное время, с использованием разных паттернкостылей, в разных кодировках (до 3ёх кодировок в пределах одного файла). MVC тогда, наверное, еще не было известно, да и о шаблонизаторах разработчики не слышали, так что не стоит удивляться внезапному

<? if (cond) { ?>

в HTML разметке. Я провел не один час в увлекательных поисках нужного

<? } ?>

Разработчики не забывали и про бэкапы: в корне можно было найти index.php, index_old.php, index.php.bak. Но несмотря ни на что, это чудо работало. А что работает — не трожь.

Завязка

Эта история началась, когда солнечным декабрьским утром специалист по продвижению с удивлением обнаружил ссылки на чужеродные сайты в футере. Немного покопавшись выяснилось 2 вещи:

  1. это сапа;
  2. заказчик недоумевает.

Читать полностью »

Привет! В статье хотел поделится то как я сделал свой framework за вечер используя уже готовые библиотеки!
Данная статья будет полезна начинающим php программистам, так как делал все как можно проще без лишних наворотов!

Предыстория

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

Сделайте данную задачу с использованием ООП, возможно какие-нибудь паттерны программирования сможете внедрить, а также данный скрипт должен с легкостью дорабатываться, если потребуется расширить его функционал!

Тестовое задание

1. Есть агентство, которое поздравляет клиентов с государственными праздниками. При этом клиенты с каждым праздником поздравляются не все, а выборочно. С праздниками по половым признакам поздравляется только клиенты соответствующего пола. О клиентах известны: ФИО, email, адрес, пол. О праздниках известны: дата и название. Предложите структуру БД, где хранится информация о клиентах, информация о праздниках, и информация о том, кто с каким праздником был поздравлен.
 
2. Напишите пример SQL запроса, отбирающий девушек, не поздравленных в настоящий момент с 8 марта, но поздравленных с новым годом.
 
3. Теперь Вам нужно скинуть информацию о клиентах дружеской конторе в виде xml. Информацию о том, кто с каким праздником поздравлялся/не поздравлялся, скидывать не надо. Напишите скрипт, который по имеющейся базе данных строит xml-файл с информацией о клиентах фирмы.
 
4. Ниже приведен код, реализующий во фронтэнде сайта, отправление на сервер данных клиента.
Допишите функции валидации формы, отправления данных формы, а также скрипт добавления клиента в имеющуюся базу данных.
После отправки данных, необходимо отобразить результат добавления.
 
<?php
        if (isset($_POST['do_insert'])) {
                //добавление данных клиента в БД, email не должен повторяться
                //...
        }
?>
<html>
<head>
<title>Форма регистрации клиентов</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
var validateForm = function() {
        //валидация формы
        //все поля формы являются обязательными для заполнения
        //...
};
 
var sendForm = function() {
        if (validateForm()) {
                //отправление данных формы, используя AJAX методом POST
                //...
        } else {
                return false;
        }
};
</script>
</head>
<body>
<div id="insert_result" style="display:none;"></div>
<form name="user" id="user" action="" method="POST" onsubmit="return sendForm();">
<input type="hidden" name="do_insert" value="">
ФИО: <input type="text" name="fio" id="fio" value="" /><br />
Пол: <input type="radio" name="sex" id="male" value="m" /><label for="male">мужской</label>/<input type="radio" name="sex" id="female" value="f" /><label for="female">женский</label><br />
Email: <input type="text" name="email" id="email" value="" /><br />
Адрес: <textarea name="adress" id="adress"></textarea><br />
<input type="submit" value="Отправить" />
</form>
</body>
</html>

смотрю задание, отвечаю, завтра будет готова!
Читать полностью »

В своих двух предыдущих статьях я рассказал о Dependency Injection и IoC контейнере, и о том, как они работают конкретно в Laravel. Данный пост будет посвящен практическому применению DI и IoC на реальном примере. А так же, какие все таки преимущества нам дают эти два прекрасных инструмента и паттерна в приложении.

Читать полностью »

imageСегодня Фабиен Потенсьер сообщил, что SensioLabs смогла привлечь €5 млн евро (около $7 млн) на развитие Symfony и экосистемы фреймворка.

Фабиен замечает, что несмотря на наличие таких крупных игроков в мире PHP, как Automattic, Acquia и Zend, привлечение здесь инвестиций подобного размера — дело нечастое.

Что изменится для Symfony? Разработку Symfony Фабиен начал 7 лет назад, поставив своей целью улучшить уровень использования PHP в компаниях и создать фреймворк, реализующий часть лучших практик программирования. Поэтому лицензия останется прежней (MIT), и разработчики не намерены ее менять в будущем или создавать условно-бесплатную версию фреймворка — по их мнению, это попросту не имеет смысла. На полученные деньги планируется развивать экосистему, окружающую Symfony — бандлы (уже создано более 2200 бандлов) и приложения (CRM/CMS/e-commerce, сделанные на Symfony), а также улучшить средства разработки при помощи фреймворка.
Читать полностью »

Конечно, этот новый год, все из вас хотели бы провести дома. Не будем спорить о том, что такое дом, у каждого свое представление об этом, но лично у меня дом ассоциируется с семьей, родителями. Наверное самый доступный способ оказаться дома в новый год на территории России (помимо метро или нескольких часов пробок) — это конечно же поезд от всеми любимой компании РЖД.

Покупаем билеты на поезд в Новый год

Но спрос явно превышает предложение. Особенно на плацкарт, который, прямо скажем, самый выгодный. Так что же делать? Если интересно, то можно пройти под кат. Но, конечно, все может быть не так драматично, а просто вам надо куда-то уехать, в любое время года, а цены на люкс от РЖД вас не устраивают. Все мы знаем про бронь которая снимается и билеты которые могут возвращать, их то мы и будем ловить :)

Читать полностью »

Привет!
Недавно я разработал чат на вебсокетах для своего сервиса http://internetsms.org/chat.
При реализации, я столкнулся с тем, что в интернете большинство чатов сделаны с использованием повторяющихся ajax запросов, которые проверяют новые сообщения по заданному промежутку времени. Такой подход для меня был неприемлем, т.к при наплыве пользователей, нагрузка на сервер вырастет экспоненциально. На самом деле, есть более интересные варианты реализации:
Long polling
Клиент отправляет на сервер «долгий» запрос, и при наличии изменений, сервер отправляет ответ. Таким образом, число запросов снижается. Кстати, эта технология используется в Gmail.
Web sockets
В html5 появилась встроенная возможность использовать WebSocket соединения. Парадигма запрос-ответ здесь вообще не используется. Между клиентом и сервером один раз устанавливается канал связи. На сервере работает один демон, который обрабатывает входящие соединения. Таким образом, нагрузки на сервер практически нет даже при большом количестве пользователей онлайн.
Читать полностью »

image
Сегодня я написал последний тест для версии 3.0 модуля доступа к БД для PHPixie. Когда я начал казалось что это займет всего несколько недель, но на самом деле все растянулось на где-то 2 месяца из-за огромного количества рефакторинга и переписывания сначала. Зато теперь мы имеем расширяемую библиотеку, которую можно использовать даже вне самого фреймворка (то есть если вас заставят писать на каком-то другом фреймворке или CMS вы сможете захватить свою любимую библиотеку с собой).

Я сделаю релиз после того как закончу модуль ORM и поправлю существующие модули для работы с новым API. Но если вам интересно вы можете заглянуть в ветку 3.0 на гитхабе (следует однако предупредить что документации там пока нет, она появится вместе с ORM). А теперь давайте посмотрим на новые возможности.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js