Open Server, создание домена, базы данных и простого приложения на php
В этом посте я опишу, настройку домена, создание базы данных, и простого скрипта с использованием Open Server - платформы WAMP для веб разработчика. Итак поехали..
Давайте создадим новый тестовый домен, базу данных и подключимся к ней. Для этого, нажимаем правой кнопкой на флажок в трее, выбираем пункт "Папка с сайтами", открывается папка, в которой хранятся все данные по нашим доменам.
По-умолчанию путь этой директории: C:\Progr\OpenServer\domains\
Те кто работал до этого на Denwer-e не должны испытать трудностей с пониманием структуры. Тем кто не работал объясню: это корневая папка, в которой хранятся другие папки, название которых совпадает с именем домена по которому мы будем заходить.
Например, сразу после установки Open Server, мы можем зайти по адресу http://localhost
Так вот, скрипты которые запустятся, находятся именно в папке:
C:\Progr\OpenServer\domains\localhost\
Теперь мы хотим создать домен http://itrem, так же хотим создать базу itrem, подключиться к ней и выполнить какие-нибудь SQL команды.
Поехали по-порядку:
а) Создаем папку C:\Progr\OpenServer\domains\itrem\, она будет являться нашим доменом, т.е. http://itrem
б) В ней создаем файл index.php открываем его в редакторе, например в Notepad++, который можно запустить из контекстного меню Open Server-а, раздела "Офис"
и пишем в нем следующий, проверочный код
1 2 3 4 |
<?php echo 'Hello world'; |
в) Перезапускаем сервер
в случае успешного запуска, в разделе "Мои сайты", вы увидите наш сайт itrem
Если же Вам не удалось увидеть список сайтов после проделанных манипуляций, попробуйте следующий вариант запуска: Open server, ограничение на работу с файлом hosts
г) Проверяем работу сайта в браузере, заходим по адресу: http://itrem
Обратите внимание, что в некоторых браузерах (например Chrome) необходимо задавать адрес включая название протокола ( т.е. http://itrem, а не itrem) иначе он просто перекинет вас на поиск гугла, с именем домена в качестве ключевого слова.
д) Входим в phpmyadmin.
Он находится по адресу: http://localhost/openserver/phpmyadmin/index.php (так же он доступен из контекстного меню OpenServer-а, пункт "Дополнительно>PhpMyAdmin")
Для авторизации используем такие данные:
- пользователь/пароль = root / -пустой пароль-
- пользователь/пароль = mysql / mysql
Можно использовать оба варианта, но я бы рекомендовал второй, а именно mysql/mysql, т.к. для супер пользователя не применяются некоторые настроенные конфиги, например не устанавливается автоматически кодировка соединения с базой, поэтому при его использовании нужно дополнительно, в скриптах писать, что-то типа: mysql_query('SET NAMES "utf8"') либо использовать php функцию: mysql_set_charset('utf8').
Связанно это с тем, что суперпользователям не устанавливается кодировка, через параметр init-connect, который обычно прописывается в секции [mysqld], конфигурационного файла my.cnf (подробнее тут: 10.1.5. Configuring the Character Set and Collation for Applications). В данный момент именно так настроен OpenServer.
Так же, я писал пост, про то, как убрать авторизацию на совсем, пост тут: Openserver, phpmyadmin автовход
е) Создаем базу itrem
ж) Создаем таблицу messages
следующим шагом, указываем какие нам нужны поля (часть столбцов, я пропустил там оставляем значения по-умолчанию)
нажимаем Сохранить.
Если Вам проще будет выполнить SQL код (на вкладке SQL) можете просто его скопировать отсюда:
123456789101112131415 # создаем базуCREATE DATABASE `itrem`;# переключаем на базуUSE `itrem`;# создаем таблицуCREATE TABLE IF NOT EXISTS `messages` (`id` int(11) NOT NULL AUTO_INCREMENT,`message` varchar(255) NOT NULL,`date` date NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
ж) пишем такой код, в файл C:\Progr\OpenServer\domains\itrem\index.php
Внимание: Код написанный ниже не будет работать на версиях PHP 7.0+, т.к. в этих версиях удалена поддержка семейства функций mysql_*. Для корректной работы, либо поставьте в настройках OpenServer-а версию PHP < 5.5, либо используйте код из этой статьи "Пример создания простого приложения на php и mysql 2018", где я рассказал, как работать с базой данных еще проще (не надо писать запросы), используя ORM Idiorm.
Обратите внимание на кодировку файла, она должна быть "UTF-8 без BOM", проверить в Notepad++ это можно в верхнем меню, в разделе "Кодировки". При создании этого поста, я попался в эту ловушку, и долго не мог понять в чем проблема, подробнее тут: Openserver, MySQL, Notepad++ и пропадающая кириллица
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
<?php header('Content-Type: text/html; charset=utf-8'); $db_host = 'localhost'; $db_username = 'mysql'; $db_password = 'mysql'; $db_name = 'itrem'; $db_charset = 'utf8'; $is_connected = @mysql_connect($db_host, $db_username, $db_password); $is_db_selected = $is_connected ? @mysql_select_db($db_name) : FALSE; $errors = array(); if (!$is_connected) $errors[] = 'Не могу соединиться с базой данных'; if (!$is_db_selected) $errors[] = 'Не могу найти базу данных'; if (!empty($_POST['f_submit']) AND $is_connected AND $is_db_selected) { if (empty($_POST['f_text']) OR !trim($_POST['f_text'])) { $errors[] = 'Не введен текст сообщения!'; } else { if (mb_strlen(trim($_POST['f_text']), 'utf-8')>255) { $errors[] = 'Текст сообщения не может превышать 255 символов!'; } else { $sql = 'INSERT INTO `messages` SET `message`="'.mysql_real_escape_string(trim($_POST['f_text'])).'", `date`=NOW() '; $result = mysql_query($sql) or die('Query error: <code>'.$sql.'</code>'); Header('Location:?'); } } } ?> <html> <head> <style type="text/css"> body {font-size:11px; font-family:Arial;} .errors {color:red;} div.message {padding-bottom:5px; margin-bottom:5px; border-bottom:1px dotted silver;} div.message .date {color:blue;} div.message .text {color:green;} </style> </head> <body> <form action="?" method="post"> Текст сообщения <input type="text" name="f_text" value="" /> <input type="submit" name="f_submit" value="Отправить"/> </form> <?php if (!empty($errors)) { echo '<hr /><ul class="errors">'; foreach ($errors as $err) { echo '<li>'.htmlspecialchars($err).'</li>'; } echo '</ul>'; } if ($is_connected AND $is_db_selected) { $sql = 'SELECT * FROM `messages` ORDER BY `id` DESC'; $result = mysql_query($sql) or die('Query error: <code>'.$sql.'</code>'); if ( is_resource($result) ) { echo '<hr />'; while ( $row = mysql_fetch_assoc($result) ) { ?> <div class="message"> <span class="date"><?=date('d.m.Y',strtotime($row['date']))?></span> - <span class="text"><?=htmlspecialchars($row['message'])?></span> </div> <?php } } } ?> </body> </html> |
Лучше использовать MySQLi, но в большинстве учебников пишут про работу именно с старыми MySQL функциями, поэтому тут используем именно такой код. Ознакомиться с MySQLi после изучения MySQL функций, можно, например тут: MySQLi раскладываем все по полочкам. У кого будет желание, перепишите этот скрипт на MySQLi, выложите на pastebin и пришлите мне ссылочку в комментарии - добавлю в пост с указанием вашего авторства :).
з) проверяем в браузере
На этом наш маленький тест закончился: мы создали новый домен, базу данных, таблицу в ней, а так же написали скрипт, который работает с этой базой данных.
Урааа!!!!!
--[добавлено 10.02.2014]--
Записал небольшое видео к данному уроку, смотреть "на весь экран":
--[добавлено 03.08.2016]--
Добавил пост с скриншотами всех вкладок одной из последних версия Openserver: Список вкладок Openserver
--[добавлено 04.07.2018]--
Ввиду того, что семейство функций mysql_* устарело, написал новый пост "Пример создания простого приложения на php и mysql 2018", там рассказал, как работать с базой данных еще проще (не надо писать запросы), используя ORM Idiorm.
Author: | Tags: /
| Rating:
283 comments.
Write a comment