Php

Как сделать регистрацию на php сайте: Регистрация и Авторизация на PHP + MySQL

Содержание

PHP

PHP (Hypertext Preprocessor) это самый популярный скриптовый язык программирования, который используется для разработки WEB приложений, то есть сайтов.

Почти все сайты из интернета, написаны именно с помощью этого языка. Поэтому, если Вы хотите стать WEB программистом и научиться создавать динамические сайты самостоятельно, то обязательно выучите язык PHP.

А точнее, PHP используется для генерации тех или иных страниц, в зависимости от того какой запрос отправил пользователь.


Естественно, перед тем как приступить к изучению языка PHP, вы должны знать как минимум основы языка гипертекстовой разметки HTML. Без него никак.

С помощью языка PHP можно реализовать такие вещи как:

  • Поиск на сайте
  • Регистрация и авторизация пользователей на сайте
  • Обработка различных форм
  • Отправка электронных писем
  • ЧПУ (Человеко Понятный Урл)
  • И много других важных и полезных вещей.

Что надо для работы с PHP ?

Для того чтобы писать динамические сайты на языке PHP, Вам потребуется:

  1. Интерпретатор PHP — который обрабатывает скрипты написанные на языке PHP, и возвращает результат браузеру в виде HTML страницы.
  2. Сервер Apache
  3. MySQL
  4. phpMyAdmin — Приложение для работы с базами данных
  5. SendMail — Приложение для отправки электронной почты

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

Существуют такие пакеты: Open Server, WAMP, XAMPP, LAMP(для ОС Linux), и старый Danwer.

Я рекомендую пользоваться пакетом Open Server

Раньше я пользовался пакетом Danwer, но, большой недостаток этого пакета состоит в том он уже давно не обновлялся.

Теперь после того как узнали что такое PHP, зачем он нужен и что необходимо для работы с ним, можете приступить к чтению статей из этого раздела, посвящённые языку PHP.

Желаю Вам удачи и больших успехов!


Начиная с версии 5.3, в PHP появился практичный и важный инструмент, активно использующийся в других языках программирования — пространство имен или namespace. Позволяет организовать код в определенную виртуальную иерархию, сравнимую со способом формирования каталога.

Добавлено: 2020-09-01 18:20:35

Автор статьи: Мунтян Сергей

Просмотров: 240

Подробнее

Пишем авторизацию пользователя на PHP — Блог веб-разработчиков

Совсем недавно я рассказывал, как при помощи PHP написать систему регистрации для своего сайта. Такой же принцип мы использовали и в своём проекте, созданию которого посвящён раздел «Сайт с нуля» на этом блоге (сам проект я покажу вам гораздо позже). Сегодня же я опишу, как написать авторизацию на сайте, используя данные, полученные от пользователя при регистрации. То есть, будет использоваться таблица MySQL, структура которой была описана в статье про регистрацию. Поэтому я настоятельно рекомендую прежде прочитать ту статью, ибо данная статья является её непосредственным продолжением. Авторизация будет работать с использованием сессий и cookie. Также в статье будет рассмотрено несколько приятных дополнений, таких, как «разлогинивание» (выход) и время последней активности пользователя. Итак, приступим…

Для начала необходимо сверстать главную страницу сайта и поместить её в корне сайта в папку template. Для данного урока нам достаточно, чтобы в этом файле была форма ввода логина и пароля, а также кнопка «Вход». Далее приведён код этой формы:

1
2
3
4
5
<form action="/" method="post">
 Логин: <input type="text" name="login" />

 Пароль: <input type="password" name="password" />
 <input type="submit" value="Войти" name="log_in" />

 </form>

Файл назовём index. html.

Метод передачи post необходим. Ведь мы не хотим, чтобы при авторизации логин и пароль светились в адресной строке.

Как только форма готова, создадим самый важный файл будущего сайта — главный контроллер, т. е. файл, лежащий в корне сайта — index.php. Именно он и будет запускаться при входе на сайт. На момент написания статьи на нашем проекте код этого файла занимает 92 строки, нам же понадобится пока лишь около 25 строк. Вот его код:

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
<?
include ('lib/connect.php'); //подключаемся к БД
include ('lib/module_global.php'); //подключаем файл с глобальными функциями

 
if($_GET['action'] == "out") out(); //если передана переменная action, «разавторизируем» пользователя
 
if (login()) //вызываем функцию login, определяющую, авторизирован юзер или нет

{
	$UID = $_SESSION['id']; //если юзер авторизирован, присвоим переменной $UID его id
	$admin = is_admin($UID); //определяем, админ ли юзер

}
else //если пользователь не авторизирован, то проверим, была ли нажата кнопка входа на сайт
{
	if(isset($_POST['log_in'])) 
	{
		$error = enter(); //функция входа на сайт

		if (count($error) == 0) //если нет ошибок, авторизируем юзера
		{
			$UID = $_SESSION['id'];

			$admin = is_admin($UID);
		}
	}
}
include ('tpl/index. html'); //подключаем файл с формой

?>

Теперь более подробно разберёмся, как всё это работает.

В первых трёх строках мы просто подключаем файлы с функциями, которые будем использовать далее в коде. О них чуть позже. Далее проверим, был ли передан get-параметр action=out. Если он был передан, значит пользователь нажал на ссылку выхода с сайта. Вот, кстати, код этой ссылки. Добавьте его в файл с кодом формы для входа.

<a href="/?action=out">Выход</a>

Саму функцию, как и все остальные, рассмотрим позже. Сперва логика…

Далее идёт условие, проверяющее авторизирован ли ты (if (login())). Функция возвращает true в случае, если пользователь вошёл на сайт и false в противном случае. Если вернулось true, записываем в переменную $UID id юзера, а в переменную $admin — результат работы функции is_admin($UID). Данная функция определяет, является ли пользователь администратором и возвращает true, если юзер — админ и false в противном случае. В дальнейшем две эти переменные будут необходимы для вывода определённых элементов на странице. Так, следующим условием можно вывести форму авторизации:

1
2
3
4
5
6
7
8
9
10
<?
If($UID) //если переменной нет, выводим форму
{?>
<form action="/" method="post">

Логин: <input type="text" name="login" />
Пароль: <input type="password" name="password" />

<input type="submit" value="Войти" name="log_in" />
</form>
<?}
?>

Аналогично и с переменной $admin. Кстати, последний код можно включить в файл с формой.
Если же функция login() вернёт false, т. е. пользователь не вошёл на сайт, проверим, нажал ли он на кнопку входа на сайт в форме авторизации:

if(isset($_POST['log_in']))

Если да, запускаем функцию enter(), авторизирующую пользователя. Если ошибок не произойдёт и юзер успешно вошёл, создадим те же 2 переменные: $UID и $admin. В противном случае никакие переменные не создаются – пользователь является гостем. Алгоритм работы представлен на следующей схеме:

Теперь разберёмся со всеми функциями, вызываемыми в данном коде. В первую очередь опишу функцию входа на сайт:

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

function enter ()
 { 
$error = array(); //массив для ошибок 	
if ($_POST['login'] != "" && $_POST['password'] != "") //если поля заполнены 	

{ 		
	$login = $_POST['login']; 
	$password = $_POST['password'];

	$rez = mysql_query("SELECT * FROM users WHERE login=$login"); //запрашиваем строку из БД с логином, введённым пользователем 		
	if (mysql_num_rows($rez) == 1) //если нашлась одна строка, значит такой юзер существует в БД 		

	{ 			
		$row = mysql_fetch_assoc($rez); 			
		if (md5(md5($password). $row['salt']) == $row['password']) //сравниваем хэшированный пароль из БД с хэшированными паролем, введённым пользователем и солью (алгоритм хэширования описан в предыдущей статье) 						

		{ 
		//пишем логин и хэшированный пароль в cookie, также создаём переменную сессии
		setcookie ("login", $row['login'], time() + 50000); 						
		setcookie ("password", md5($row['login'].$row['password']), time() + 50000); 					
		$_SESSION['id'] = $row['id'];	//записываем в сессию id пользователя 				

		$id = $_SESSION['id']; 				
		lastAct($id); 				
		return $error; 			
	} 			
	else //если пароли не совпали 			

	{ 				
		$error[] = "Неверный пароль"; 										
		return $error; 			
	} 		
} 		
	else //если такого пользователя не найдено в БД 		

	{ 			
		$error[] = "Неверный логин и пароль"; 			
		return $error; 		
	} 	
} 	
 

	else 	
	{ 		
		$error[] = "Поля не должны быть пустыми!"; 				
		return $error; 	
	} 

}

Первым делом, функция проверяет, заполнил ли пользователь поля для ввода логина и пароля. Если да — продолжаем работу программы, если нет — пишем в массив $error текст ошибки и возвращаем его в основную программу, которая, узнав размерность полученного массива, не авторизирует пользователя.
Если же работа функции enter() продолжится, проверим, существует ли в БД запись с таким ником, какой ввёл юзер. Если такой записи не оказалось, вернём опять же массив с соответствующей ошибкой. Если в БД есть один пользователь с таким ником, сравним введённый пароль с паролем, хранящимся в базе данных и соответствующим нашему нику.

Сравниваем мы пароли не в чистом виде. Ведь в БД они хранятся хэшированными функцией md5(). Поэтому, прежде чем сравнивать их, необходимо тем же алгоритмом хэшировать и введённый пользователем при авторизации пароль. Если хэши совпадут, значит логин и пароль совпали и скрипт авторизирует пользователя. Если совпадения не произошло, вернём ошибку.

Теперь объясню, что же значит «авторизироваться». В данном скрипте данные об авторизации хранятся в сессии и cookie. В сессию записываем id пользователя:

И создаём два cookie: login и password с продолжительностью жизни — 50000 секунд. В первый пишем логин, а во второй — хэш пароля.

В этой строке мы выполняем функцию, отвечающую за установку времени последней активности юзера. Вот код этой функции:

1
2
function lastAct($id)
{ 	$tm = time(); 	mysql_query("UPDATE users SET online='$tm', last_act='$tm' WHERE"); }

Функция перезаписывает поля online и last_act в БД. Кстати, предварительно, необходимо убедиться в существовании этих полей. Оба они имеют тип int.

Алгоритм работы функции enter() приведён на следующей иллюстрации:

Следующая функция отвечает за проверку, авторизирован ли пользователь на сайте или нет — login().

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
function login () { 	
ini_set ("session. use_trans_sid", true); 	session_start();  	if (isset($_SESSION['id']))//если сесcия есть 	

{ 		
if(isset($_COOKIE['login']) && isset($_COOKIE['password'])) //если cookie есть, то просто обновим время их жизни и вернём true 		{ 			
SetCookie("login", "", time() - 1, '/'); 			SetCookie("password","", time() - 1, '/'); 			

setcookie ("login", $_COOKIE['login'], time() + 50000, '/'); 			

setcookie ("password", $_COOKIE['password'], time() + 50000, '/'); 			

$id = $_SESSION['id']; 			
lastAct($id); 			
return true; 		

} 		
else //иначе добавим cookie с логином и паролем, чтобы после перезапуска браузера сессия не слетала  		
{ 			
$rez = mysql_query("SELECT * FROM users WHEREid']}'"); //запрашиваем строку с искомым id 			

if (mysql_num_rows($rez) == 1) //если получена одна строка 			{ 		
$row = mysql_fetch_assoc($rez); //записываем её в ассоциативный массив 				

setcookie ("login", $row['login'], ti

Как сделать регистрацию на сайте wordpress

Здравствуйте уважаемые читатели!

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

Навигация по статье:

Как включить пользовательскую регистрацию в WordPress

Чтобы включить регистрацию пользователей просто перейдите в раздел «Настройки» => «Общие» и прокрутите вниз к пункту «Членство». Установите галочку рядом с пунктом «Любой может зарегистрироваться».

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

В графе «Роль пользователя по умолчанию» задана «Подписчик». Всего доступно пять профилей:
— Подписчик
— Участник
— Автор
— Редактор
— Администратор

После этого необходимо нажать на кнопку «Сохранить изменения», чтобы сохранить настройки.

Теперь, все кто пожелает, могут зарегистрироваться на вашем WordPress сайте.

Добавление ссылки входа в учетную запись WordPress

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

Вам нужно добавить ссылку на страницу авторизации в системе и регистрационную страницу.

Это можно сделать двумя способами:

  • Добавить специальный виджет в сайдбар
  • Создать свою страницу входа в учетную запись

Добавление виджета в сайдбар

Самый простой способ добавить ссылку авторизации – это добавить Мета-виджет на боковую панель.

Для этого нужно:

  1. 1.Перейти на административной панели в пункт меню «Внешний вид» => «Виджеты».
  2. 2.Перетянуть виджет с названием «Мета» в сайдбар.
  3. 3.У вас на боковой панели появиться виджет с ссылкой входа в учетную запись:
  4. 4. Далее, по необходимости, вам нужно будет поправить оформление блока при помощи стилей CSS.
  5. 5.При нажатии на ссылку «Войти» пользователь будет перенаправлен на стандартную страницу авторизации WordPress.

Добавляем стили для виджета

Как вы видели на скриншоте далеко не каждая тема имеет набор стилей для этого виджета, поэтому если вы хотите как то стилизовать этот виджет, то вам прийдётся дописать несколько css свойств в файл Style.css вашейт темы.
Напоминаю,что данный код нужно добавлять в самом конце данного файла!
А вот и сам код с комментариями в тех строках, где можно поменять цвет, размер и т.д.

.widget_meta ul li{
border-bottom:1px solid #ccc; /*Нижняя граница для пунктов*/
padding: 10px; /*Внутренний отступ в пунктах*/
}
.widget_meta ul li a{
color:#555; /*Цвет ссылок*/
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
transition: all 0.5s ease;
}
.widget_meta ul li a:hover{
color:#2F73B6; /*Цвет ссылок при наведении*/
padding-left:15px; /*Отступ слева при наведении для эффекта смещения ссылки*/
-webkit-transition: all 0. 5s ease;
-moz-transition: all 0.5s ease;
transition: all 0.5s ease;
}
.widget_meta .widget-title{
padding:10px; /*Внутренний отступ заголовка виджета*/
text-align:center; /* Выравнивание по центру в заголовке виджета*/
text-transform:uppercase; /*Надпись заглавными буквами*/
background:#ccc; /*Цвет фона заголовка виджета*/
}

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

.widget_meta ul li{

border-bottom:1px solid #ccc; /*Нижняя граница для пунктов*/

padding: 10px; /*Внутренний отступ в пунктах*/

}

 

.widget_meta ul li a{

color:#555; /*Цвет ссылок*/

-webkit-transition: all 0.5s ease;

-moz-transition: all 0.5s ease;

transition: all 0.5s ease;

}

 

.widget_meta ul li a:hover{

color:#2F73B6; /*Цвет ссылок при наведении*/

padding-left:15px; /*Отступ слева при наведении для эффекта смещения ссылки*/

-webkit-transition: all 0. 5s ease;

-moz-transition: all 0.5s ease;

transition: all 0.5s ease;

}

 

.widget_meta .widget-title{

padding:10px; /*Внутренний отступ заголовка виджета*/

text-align:center; /* Выравнивание по центру в заголовке виджета*/

text-transform:uppercase; /*Надпись заглавными буквами*/

background:#ccc; /*Цвет фона заголовка виджета*/

}

Вот что у меня получилось в итоге:

Создание своей страницы авторизации

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

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

Защита сайта от регистрации ботов

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

Для защиты от регистрации ботов вам необходимо:

  1. 1.Установить из репозитория wordpress плагин Stop Spammers и активировать его.
  2. 2.В административной части сайта находим пункт меню «Stop Spammers» => «Allow Lists» и добавляем свой IP-адрес в белый список.
  3. 3.На начальном этапе все остальные настройки можете оставить по умолчанию.

Stop Spammers является очень мощным плагином с огромным количество опций для борьбы с регистрацией ботов. В одной из следующих статей мы рассмотрим более подробно этот плагин.

Как управлять пользователями в WordPress

Вы можете просматривать всех пользователей, которые зарегистрированы на вашем сайте, перейдя в раздел «Пользователи» в админке WordPress. Здесь вам доступен к просмотру список всех зарегистрированных пользователей, их имена, роли и адреса электронной почты.

Вы можете совершать следующие операции с пользователями:

  • Удалять или добавлять пользователей
  • Редактировать их профиль
  • Менять пароль для входа на сайт
  • Изменять роль пользователя и т.д.

Это дает вам полный контроль над правами пользователей на вашем WordPress сайте.

Вот и все, как видите ничего сложного.

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

Если вам понравилась эта статья – пишите комментарии, поделитесь статьей в социальных сетях и подпишитесь на мою рассылку, а так же не забывайте заходить на мой YouTube — канал с видео-уроками по созданию сайтов на WordPress.

С уважением Юлия Гусарь

Пишем свою авторизацию на PHP и MySQL -Будни программиста

Ну что же, сегодня я вам расскажу о безопасной авторизации на PHP и Cookie. Ну о том что она абсолютна безопасна я не говорю, ибо взломать можно все, но для маленького сайта она вполне подходит. Так же я предвижу комментарии о том что сессии безопаснее. Не спорю куки уступают сессиям в безопасности но для реализации простенькой авторизации вполне подходят. Подробности ниже.

И так, в базе у нас будет 1 база из 4 полей: users_id, users_login, users_password и users_hash. SQL запрос:

1
2
3
4
5
6
7

CREATE TABLE IF NOT EXISTS `users` (
  `users_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `users_login` VARCHAR(30) NOT NULL,
  `users_password` VARCHAR(32) NOT NULL,
  `users_hash` VARCHAR(32) NOT NULL,
  PRIMARY KEY  (`users_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

    Сам скрипт авторизации будет тоже на 4 файлах. А именно:

  • conf.php — Файл конфигурации, в котором так же содержится подключение к бд;
  • register. php — Регистрация нового пользователя;
  • login.php — Авторизация пользователя;
  • check.php — Скрипт проверки авторизации;

Давайте разберем каждый файл.

conf.php

В константах содержится данные SQL подключения, а именно хост, логин, пароль и имя вашей базы. Тут же мы подключаемся к базе, устанавливаем кодировку в которой будут передаваться данные в бд и выбираем бд с которой будем работать. Так же тут содержится массив ошибок которые могут возникнуть при авторизации.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

<?php
# настройки
define (‘DB_HOST’, ‘localhost’);
define (‘DB_LOGIN’, ‘example_user’);
define (‘DB_PASSWORD’, ‘example_password’);
define (‘DB_NAME’, ‘example_base’);
mysql_connect(DB_HOST, DB_LOGIN, DB_PASSWORD) or die («MySQL Error: » . mysql_error());
mysql_query(«set names utf8») or die («<br>Invalid query: » . mysql_error());
mysql_select_db(DB_NAME) or die («<br>Invalid query: » . mysql_error());

# массив ошибок
$error[0] = ‘Я вас не знаю’;
$error[1] = ‘Включи куки’;
$error[2] = ‘Тебе сюда нельзя’;
?>

register.php

Файл регистрации, тут содержится простейшая форма и ее обработчик. Исходный код прокомментирован, но общий процесс я коротко опишу. Вначале проверяем наш логин, он может содержать только английские буквы и цифры. Далее мы проверяем длину логина, от 3 до 30 символов. Проверяем свободен ли логин. При успешных проверках добавляем нового пользователя в базу. Из введенного пароля мы вырезаем пробелы на случай если пользователь хранит свои пароли в каком ни будь текстовом файле (в windows текстовые редакторы любят «хватать» пробелы в начале или конце выделяемого текста). Шифруем пароль в двойном MD5 и добавляем в базу данные о новом пользователе. Перебрасываем пользователя на login.php.

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

<?php
# Подключаем конфиг
include ‘conf. [a-zA-Z0-9]+$/»,$_POST[‘login’]))
    {
        $err[] = «Логин может состоять только из букв английского алфавита и цифр»;
    }
     
    if(strlen($_POST[‘login’]) < 3 or strlen($_POST[‘login’]) > 30)
    {
        $err[] = «Логин должен быть не меньше 3-х символов и не больше 30»;
    }
     
    # проверяем, не сущестует ли пользователя с таким именем
  $query = mysql_query(«SELECT COUNT(users_id) FROM users WHERE users_login='».mysql_real_escape_string($_POST[‘login’]).»‘»)or die («<br>Invalid query: » . mysql_error());
    if(mysql_result($query, 0) > 0)
    {
        $err[] = «Пользователь с таким логином уже существует в базе данных»;
    }
 
     
    # Если нет ошибок, то добавляем в БД нового пользователя
   if(count($err) == 0)
    {
         
        $login = $_POST[‘login’];
         
        # Убераем лишние пробелы и делаем двойное шифрование
       $password = md5(md5(trim($_POST[‘password’])));
         
        mysql_query(«INSERT INTO users SET users_login='». $login.»‘, users_password='».$password.»‘»);
        header(«Location: login.php»); exit();
    }
}
?>

  <form method=»POST» action=»»>
  Логин <input type=»text» name=»login» /><br />
  Пароль <input type=»password» name=»password» /><br />
  <input name=»submit» type=»submit» value=»Зарегистрироваться»>
  </form>
  <?php
    if (isset($err)) {
      print «<b>При регистрации произошли следующие ошибки:</b><br>»;
      foreach($err AS $error)
      {
        print $error.»<br>»;
      }  
    }
  ?>

login.php

Опять кратко расскажу о действиях совершаемых в данном скрипте. В самом начале у нас висит функция для генерации случайной строки, она служит для хеша пользователя (чуть позже более подробно). Далее мы проверяем наличие куков с ошибками (они ставятся в check.php). Подключаем файл конфигурации и проверяем пользователя. Вытаскиваем из бд логин и пароль, сравниваем с введенными и генерируем хеш. Записываем в бд новый хеш пользователя и ставим куки. В куках находится id и хеш пользователя. Пересылаем пользователя на check.php.

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

<?php
  # Функция для генерации случайной строки
  function generateCode($length=6) {
    $chars = «abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPRQSTUVWXYZ0123456789»;
    $code = «»;
    $clen = strlen($chars) — 1;  
    while (strlen($code) < $length) {
        $code . = $chars[mt_rand(0,$clen)];  
    }
    return $code;
  }
 
  # Если есть куки с ошибкой то выводим их в переменную и удаляем куки
  if (isset($_COOKIE[‘errors’])){
      $errors = $_COOKIE[‘errors’];
      setcookie(‘errors’, », time() — 60*24*30*12, ‘/’);
  }

  # Подключаем конфиг
  include ‘conf.php’;

  if(isset($_POST[‘submit’]))
  {
   
    # Вытаскиваем из БД запись, у которой логин равняеться введенному
    $data = mysql_fetch_assoc(mysql_query(«SELECT users_id, users_password FROM `users` WHERE `users_login`='».mysql_real_escape_string($_POST[‘login’]).»‘ LIMIT 1″));
     
    # Соавниваем пароли
    if($data[‘users_password’] === md5(md5($_POST[‘password’])))
    {
      # Генерируем случайное число и шифруем его
      $hash = md5(generateCode(10));
           
      # Записываем в БД новый хеш авторизации и IP
      mysql_query(«UPDATE users SET users_hash='».$hash.»‘ WHERE users_id='».$data[‘users_id’].»‘») or die(«MySQL Error: » . mysql_error());
       
      # Ставим куки
      setcookie(«id», $data[‘users_id’], time()+60*60*24*30);
      setcookie(«hash», $hash, time()+60*60*24*30);
       
      # Переадресовываем браузер на страницу проверки нашего скрипта
      header(«Location: check.php»); exit();
    }
    else
    {
      print «Вы ввели неправильный логин/пароль<br>»;
    }
  }
?>
  <form method=»POST»>
  Логин <input name=»login» type=»text»><br>
  Пароль <input name=»password» type=»password»><br>
  <input name=»submit» type=»submit» value=»Войти»>
  </form>
  <?php
  # Проверяем наличие в куках номера ошибки
  if (isset($errors)) {print ‘<h5>’.$error[$errors].'</h5>’;}

  ?>

check.php

И последний файл, который содержит проверку авторизации пользователя. В начале подключаем конфиг и если существуют куки начинаем проверку, если их нет, то ставим куки с номером ошибки и отсылаем на login.php. И так проверка. Вытаскиваем из бд id и хеш. Если они не проходят проверку на соответствие с теми куками которые стоят у посетителя, то удаляем существующие куки посетителя и ставим куки с номером ошибки, пересылаем на login.php. Если же все нормально то пользователь увидит страницу.

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

<?php
# подключаем конфиг
include ‘conf.php’;  

# проверка авторизации
if (isset($_COOKIE[‘id’]) and isset($_COOKIE[‘hash’]))
{    
    $userdata = mysql_fetch_assoc(mysql_query(«SELECT * FROM users WHERE users_id = ‘».intval($_COOKIE[‘id’]).»‘ LIMIT 1″));

    if(($userdata[‘users_hash’] !== $_COOKIE[‘hash’]) or ($userdata[‘users_id’] !== $_COOKIE[‘id’]))
    {
        setcookie(‘id’, », time() — 60*24*30*12, ‘/’);
        setcookie(‘hash’, », time() — 60*24*30*12, ‘/’);
    setcookie(‘errors’, ‘1’, time() + 60*24*30*12, ‘/’);
    header(‘Location: login.php’); exit();
    }
}
else
{
  setcookie(‘errors’, ‘2’, time() + 60*24*30*12, ‘/’);
  header(‘Location: login.php’); exit();
}
?>
<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Transitional//EN» «http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd»>
<html xmlns=»http://www.w3.org/1999/xhtml» xml:lang=»en»>
<head>
  <meta http-equiv=»Content-Type» content=»text/html;charset=UTF-8″ />
  <title></title>
</head>
<body>
  hello!
</body>
</html>

Выход

Выход можно осуществить любым удобным для вас способом просто удалив куки, допустим так:

1
2
3
4
5
6
7
8
9

<form action=»» method=»post»><input type=’submit’ name=’exit’ value=’Выйти’/></form>
<?php
if($_REQUEST[‘exit’])
  {
        setcookie(‘id’, », time() — 60*60*24*30, ‘/’);
        setcookie(‘hash’, », time() — 60*60*24*30, ‘/’);
        header(‘Location: login.php’); exit();
  }
?>

Сразу хочу предупредить о том что ваши файлы должны быть в кодировке UTF8 и БЕЗ BOM! Приятного пользования!

Теги: Cookie, MD5, MySQL, PHP, Авторизация

Создание сайта с нуля Php и MySQL

Приветствую вас на моем блоге start-luck.ru. Сегодня поговорим про создание сайта с нуля php. Перед началом разработки интернет-проекта вебмастера задают себе такой вопрос: на каком языке программирования создавать блог? Знающие разработчики говорят, что лучше использовать php. Рассмотрим, почему нужно изучать именно этот язык, и как это сделать на практике.

Что это за язык программирования

Php переводится как гипертекстовый препроцессор. Он выполняет команды на уровне сервера, которые встраивается html-код. Почему стоит начать изучение именно с этого языка программирования? Одна из причин заключается в популярности Вордпресс. Сегодня большая часть интернет-проектов создается именно на нем, а он разрабатывался на php.

Хотелось бы немного отойти от темы и рассмотреть вопрос. Где разместить созданный сайт? Это важный момент, так как от него напрямую зависит работоспособность созданного интернет-проекта. Предлагаю вам пять хостингов, которые подойдут для создания блога любой сложности.

Следующая не менее важная причина успеха в том, что php позволяет создавать динамические интернет-проекты. Этого не получится сделать на чистом html потому–что он статичен.

Что нужно для работы

Вы не сможете программировать, если на вашем ПК не будет установлен специальный софт. Рассмотрим, что для этого понадобится:

  • Сервер Apache;
  • База данных MySQL;
  • Браузер;
  • Текстовый редактор, или специализированный софт, в котором будет писаться исходный код. Их выбор огромен. Чтобы вам было легче определиться прочитайте мою статью «Лучшие утилиты для верстки».

Хотелось бы отметить, что устанавливать отдельно локальный сервер, php и базу данных сложно. Нужно разбираться в тонкостях серверного программирования. Поэтому используйте Денвер. Эту программу бесплатно скачайте и установите на ваш ПК. Если вы незнакомы с ним, посмотрите статью «Как установить Денвер». В ней подробно, описано процесс загрузки и установки локального сервера. Все что необходимо для работы находится в одном дистрибутиве и вам останется только установить его на свой ПК.

Но только одного софта для программирования будет недостаточно. Вы должны иметь хотя бы первоначальные навыки по html и css. В этом вам поможет моя статья «Лучшие способы создания сайта».

Перед изучением вы должны уметь разрабатывать простые статические интернет-страницы. Как это сделать посмотрите я уже рассматривал в моей статье «С чего начать изучение HTML».

Почему стоит изучать

Интернет-проект созданный на php отличается от html более удобными настройками. А именно, возможностью автоматизировать процесс создание страницы. Например, достаточно в шапке блога изменить одно слово и все страницы поменяют свой фон. Попробуйте сделать это на html? Нужно будет открыть исходный код каждой страницы и отредактировать его. Это долго и неудобно. Если же вы создали шапку как подключаемый компонент на php, то вам достаточно произвести изменения только в одном файле.

Если вы читаете эту статью, значит решили серьезно заняться веб-программированием. В таком случае без хорошего учебника и обучающего курса не обойтись. Рекомендую обратить внимание на руководство, написанное Дмитрием Котеровым «PHP7». Используйте его как настольную книгу. Она поможет вам в изучении.

Но если вы хотите быстро и профессионально овладеть PHP, то без наставников и домашних заданий не обойтись. Самая популярная школа, которая обучает программированию на php, это Geekbrains. Отзывы о Geekbrains можно почитать тут.

Структура сайта на php

Рассмотрим небольшой пример. У нас имеется интернет-проект с шапкой, подвалом, двумя сайтбарами и блоком для основного контента.

Все страницы создаются с расширением php. Вот так будет выглядеть его код.

Index.php

<html>
<head>
<title>Здесь нужно написать, как называется ваша страница</title>
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/head.php';
?>
</head>
<body>
<div>
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/top.php';
?>
</div>
<div>
<div>
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/sidebar1.php';
?>
</div>
<div>
Основная часть
</div>
<div>
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/sidebar2.php';
?>
</div>
<div>
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/footer.php';
?>
</div>
</div>
</body>
</html>

<html> <head> <title>Здесь нужно написать, как называется ваша страница</title> <?php require_once $_SERVER[‘DOCUMENT_ROOT’].’/head.php’; ?> </head> <body> <div> <?php require_once $_SERVER[‘DOCUMENT_ROOT’].’/top.php’; ?> </div> <div> <div> <?php require_once $_SERVER[‘DOCUMENT_ROOT’].’/sidebar1.php’; ?> </div> <div> Основная часть </div> <div> <?php require_once $_SERVER[‘DOCUMENT_ROOT’].’/sidebar2.php’; ?> </div> <div> <?php require_once $_SERVER[‘DOCUMENT_ROOT’].’/footer.php’; ?> </div> </div> </body> </html>

Важно! Как видно из исходного кода подключаются эти файлы при помощи команды:

require_once <здесь прописываем полный путь/имя>.

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

Head

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

<link rel="stylesheet" type="text/css" href="/style.css"/>
<link rel="shortcut icon" href="/images/favicon.ico" />
<script type='text/javascript' src='/javafile.js'></script>

<link rel=»stylesheet» type=»text/css» href=»/style.css»/> <link rel=»shortcut icon» href=»/images/favicon.ico» /> <script type=’text/javascript’ src=’/javafile.js’></script>

Top

Рассмотрим, из чего состоит шапка созданного интернет-проекта. Обычно сюда добавляют логотип, способы связи, рекламу и прочее. Он может выглядеть так:

<div>
 
Название
</div>

Как разрешить регистрацию пользователей на вашем сайте WordPress

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

Видеоурок

Подписаться на WPBeginner

Если вам не нравится видео или вам нужны дополнительные инструкции, продолжайте читать.

Включение регистрации пользователей в WordPress

WordPress имеет встроенную функцию для управления регистрацией пользователей. По умолчанию он выключен, но вы можете легко его включить.

Перейдите на страницу Настройки »Общие в админке WordPress. Прокрутите вниз до раздела «Членство» и установите флажок « Кто угодно может зарегистрироваться» .

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

Каждая роль пользователя в WordPress имеет свои права и возможности. Ознакомьтесь с нашим руководством по ролям пользователей и разрешениям WordPress, чтобы узнать больше о ролях пользователей в WordPress.

Роль пользователя по умолчанию — подписчик, которую вы можете изменить на любую другую доступную роль. Например, если вы хотите, чтобы пользователи писали сообщения на вашем веб-сайте, вы можете изменить роль пользователя по умолчанию на «Участник» или «Автор».

Важно: Никогда не используйте «Администратор» в качестве роли пользователя по умолчанию для регистрации пользователей.

Не забудьте нажать кнопку «Сохранить изменения», чтобы сохранить настройки.

Теперь ваш сайт WordPress открыт для регистрации пользователей.

Добавление ссылок для входа и регистрации в WordPress

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

Есть несколько способов сделать это.

Метод 1. Добавление мета-виджета на боковую панель WordPress

Самый простой способ добавить ссылку для входа — это добавить мета-виджет на боковую панель.

Перейдите на страницу Внешний вид »Виджеты и добавьте виджет« Мета »на боковую панель. См. Подробные инструкции в нашем руководстве о том, как добавлять и использовать виджеты в WordPress.

Вот как ссылка для входа будет отображаться на вашем сайте.

Метод 2: Создание пользовательских страниц входа

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

Вот как создать свою собственную страницу входа и регистрации в WordPress.

Первое, что вам нужно сделать, это установить и активировать плагин WPForms. Для получения дополнительной информации см. Наше пошаговое руководство по установке плагина WordPress.

WPForms — это плагин премиум-класса для форм WordPress. Для доступа к надстройке регистрации пользователей вам понадобится как минимум профессиональная лицензия.

Пользователи

WPBeginner могут использовать купон WPForms: SAVE50, чтобы получить скидку 50% на свою покупку.

После активации вам необходимо перейти на страницу WPForms »Настройки , чтобы ввести лицензионный ключ.Вы можете получить этот лицензионный ключ в своей учетной записи на сайте WPForms.

После проверки вам необходимо перейти на страницу WPForms »Addons .

Прокрутите вниз до ‘User Registration Addon’ и нажмите кнопку Install Addon рядом с ним.

WPForms загрузит и установит аддон. Вам нужно будет нажать кнопку активации, чтобы начать использовать это дополнение.

Теперь вы готовы создавать собственные формы регистрации и входа с помощью WPForms.

Создание пользовательской регистрационной формы

Посетите WPForms »Добавить новую страницу . Это запустит конструктор форм WPForms.

Сначала вам нужно ввести имя формы, а затем в разделе «Выбрать шаблон» нажмите на «Форма регистрации пользователя» .

WPForms создаст для вас простую форму регистрации пользователя WordPress.

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

Когда вы закончите добавлять поля, нажмите на меню «Настройки» слева и выберите вкладку «Регистрация пользователя».

Здесь вы можете сопоставить каждое поле, выбрать роль пользователя, включить уведомления, выбрать страницу подтверждения и включить активацию пользователя.

Функция активации пользователя помогает уменьшить количество спам-регистраций пользователей в WordPress.

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

Вы можете комбинировать надстройку для регистрации пользователей с другими надстройками WPForms. Вы можете использовать надстройки электронного маркетинга WPForms, такие как MailChimp и AWeber, а также надстройки для оплаты, такие как Stripe.

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

Теперь вы можете выйти из конструктора форм, нажав кнопку закрытия.

Ваша форма регистрации пользователя готова к добавлению на ваш сайт WordPress.

Просто создайте новую страницу WordPress или отредактируйте существующую страницу, которую вы хотите использовать в качестве регистратора

Как создать регистрационную форму


Узнайте, как создать регистрационную форму с помощью CSS.


Попробуй сам »


Как создать регистрационную форму

Шаг 1) Добавьте HTML:

Используйте элемент

для обработки ввода. Вы можете узнать больше об этом в нашем руководстве по PHP. Затем добавьте
входы (с соответствующей меткой) для каждого поля:

Пример

Регистр
Пожалуйста, заполните эту форму, чтобы создать учетную запись.





Создавая учетную запись, вы соглашаетесь
наши Условия и политика конфиденциальности .

Уже
Иметь аккаунт? Войдите .



Шаг 2) Добавьте CSS:

Пример

* {box-sizing: border-box}

/ * Добавить заполнение в контейнеры * /
.container {
отступ: 16 пикселей;
}

/ * Поля ввода во всю ширину * /
input [type = text],
input [type = password] {
ширина: 100%;
отступ: 15 пикселей;
маржа: 5px 0 22px 0; Дисплей
: строчно-блочный;
граница: отсутствует;
фон: # f1f1f1;
}

ввод [тип = текст]: фокус, ввод [тип = пароль]: фокус {
цвет фона: #ddd;
схема: нет;
}

/ * Перезаписать стили hr по умолчанию * /
hr
{
граница: сплошной 1px # f1f1f1;
margin-bottom: 25 пикселей;
}

/ * Установить
стиль для кнопки отправки / регистрации * /
.registerbtn {
цвет фона:
# 4CAF50;
цвет: белый;
отступ: 16 пикселей 20 пикселей;
маржа: 8px 0;
граница: отсутствует;
курсор: указатель;
ширина: 100%;
непрозрачность: 0,9;
}

.registerbtn: hover
{
непрозрачность: 1;
}

/ * Добавление синего цвета текста к ссылкам * /
a {
цвет: голубой;
}

/ * Установите серый цвет фона и отцентрируйте
текст раздела «вход» * /
.signin {
background-color:
# f1f1f1;
выравнивание текста: по центру;
}

Попробуй сам »


Совет: Перейдите в наше руководство по HTML-формам, чтобы узнать
больше о HTML-формах.

Совет: Перейдите к нашему учебному пособию по CSS-формам, чтобы узнать
подробнее о стилизации элементов формы.

Как самостоятельно разместить домен / сайт?

Если вы разработчик / блоггер, технически подкованный и просто предприимчивый, вы можете чувствовать себя достаточно уверенно, чтобы разместить домен / веб-сайт самостоятельно. Верно, в вашем подвале (если вы живете в той части мира, где он есть у большинства людей) или, может быть, просто в своей спальне. Если вы думаете, что такая хостинговая компания, как мы, даже не захотела бы, чтобы поднимала эту тему с вами, то вы ошибаетесь! Мы такие же фанатичные, как и некоторые из вас, и ценим тех, кто любит приключения.

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

Несколько шагов по размещению вашего домена или веб-сайта:

1. Зарегистрируйте доменное имя

Есть несколько веб-сайтов, которые могут выбрать регистрацию вашего доменного имени. Вы также поймете, что после посещения хорошего веб-сайта регистрации доменов домен с расширением .COM — не единственный вариант.

2.Код вашего сайта

Если вы торопитесь, вы можете настроить существующий шаблон из WordPress. Если у вас есть больше времени или вы полны решимости написать код для своего веб-сайта с нуля, использование PHP — хороший способ, учитывая, что WordPress в основном построен на PHP.

3. Узнайте, какой у вас IP-адрес

4. Укажите ваше доменное имя на IP-адрес вашего компьютера.
Получите статический IP-адрес для вашей машины в вашей сети.Статический IP-адрес — это неизменяемый IP-адрес, который идентифицирует вашу машину в сети. Ваш маршрутизатор стоит между вашим компьютером и остальным Интернетом. Дайте вашему маршрутизатору IP-адрес, для которого вы открываете порт, чтобы он был доступен остальной части Интернета.

5. Узнайте, поддерживает ли ваш интернет-провайдер хостинг

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

6.Убедитесь, что ваш домашний компьютер поддерживает хостинг

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

7. Убедитесь, что ваш компьютер защищен

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

8. Загрузите программу AMP

AMP — это сокращенная версия веб-стека Apache, Mysql, PHP.Вот один из них, который вы можете попробовать, если вы пользователь Windows. Он называется WampServer.

9. Следуйте инструкциям по установке по ссылке выше

10. Скопируйте исходный код своего веб-сайта в корневую папку WampServer

11. Запустите свой AMP-сервер
Теперь ваш веб-сайт будет работать!

Причины разместить собственный домен / сайт:

Веские причины:

  • Для обучения и развлечения!
    Это хороший опыт, который познакомит вас с совершенно новым миром.Вы можете перейти от хостинга к программированию и веб-дизайну, и мир — ваша устрица. Еще одна причина, по которой вы многому учитесь, заключается в том, что, размещая домен / веб-сайт, вы можете вносить любые изменения в систему, которые вам нравятся.

Не очень важные причины:

  • У вас есть идея, и вы просто хотите ее проверить:
    Рискованный ход. Если эта идея касается выборочной группы клиентов, первое впечатление имеет первостепенное значение. Самостоятельный веб-сайт (как бы круто он ни работал) вряд ли будет справедливым.
  • Вы думаете, что хостинг стоит дорого:
    Это огромный миф. В ResellerClub доступно несколько вариантов веб-хостинга по цене от 0,49 доллара в месяц. Кроме того, преимущества перевешивают стоимость, поскольку хороший пакет хостинга может предоставить услуги, которые вы действительно не можете найти дома, такие как безопасность, резервное копирование и т. Д.

Итак, вот где вы можете столкнуться с трудностями:

  • Время безотказной работы
    Ваш компьютер должен быть постоянно включен.Если ваш компьютер перезагружается, выключается, взломан или не подключен к электросети, ваш веб-сайт будет недоступен.
  • Производительность и впечатления посетителей
    Даже если у вас есть высокоскоростное соединение от вашего интернет-провайдера, его будет недостаточно для того, чтобы соответствовать скорости, которую может предоставить хорошая хостинговая компания. Учитывая статистику того, как долго посетители ждут загрузки веб-сайта (менее 3 секунд), самостоятельный хостинг не является хорошей идеей для серьезного веб-сайта.
  • Безопасность
    Существует множество потенциальных угроз безопасности веб-сайтам и компьютерам, на которых они размещены, включая вас.Вы можете повредить или удалить важные файлы со смертельным исходом. Что касается онлайн-угроз, вам понадобится все, от сертификатов безопасности до брандмауэров и средств удаления вредоносных программ, чтобы быть полностью защищенным. Все это платные услуги, и вы также можете заключить выгодную сделку с хостинговой компанией.
  • Вы не сможете размещать веб-сайты с высоким трафиком.
    Пропускная способность, которую предоставляет ваш интернет-провайдер, определенно не приблизится к той, которая вам потребуется для веб-сайта с большим количеством посетителей.Только с хостинговой компанией вы можете получить выгодную сделку, соответствующую требованиям вашего сайта.
  • Вы будете посвящать почти все свое время своему веб-сайту.
    Это будет включать в себя мониторинг вашего веб-сайта, обслуживание оборудования вашего компьютера и обеспечение актуальности программного обеспечения сервера.
  • Вам нужно будет оплачивать огромные счета за электроэнергию
    Как мы упоминали ранее, ваша машина должна работать круглосуточно и без выходных.

Как мы уже говорили в начале, это не повод вас расстраивать.Попробуйте сами. Те, у кого есть, могут гарантировать, что обучение будет огромным. Завершив эксперимент, попробуйте разместить свой сайт у хорошего хостинг-провайдера.

Добавить комментарий

Ваш адрес email не будет опубликован.