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

система авторизации

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


В этом уроке мы попробуем написать свою простую систему авторизации. У нас будет секретная страница — допустим, это будет страница администратора, доступ к которой мы будем предоставлять только для авторизованного пользователя. Наша система авторизации будет основана на работе механизма сессий. Перед продолжением этого урока я рекомендую Вам ознакомиться с одним из предыдущих своих уроков, в котором мы, в частности, рассматриваем работу сессий — http://webformyself.com/kak-opredelit-ip-adres-polzovatelya/.

Время ролика: 31:32

Ссылка для скачивания исходников: Скачать исходники

Ссылка для скачивания всего архива (видео+исходники): Скачать одним архивом. Размер: 47.7 mb.

Вкратце всю работу с сессиями можно разделить на 3 этапа:

Открытие сессии. На всех страницах, где подразумевается работа с сессиями, обязательно должен быть осуществлен старт сессии функцией session_start().

Регистрация сессионных переменных.

Разрегистрирование сессионных переменных при помощи функции unset() и закрытие сессии функцией session_destroy().

Шаг 1

Итак, для нашей работы создадим 3 файла — Главная страница (index.php), Контакты (contact.php) и Админка (admin.php). Обращаю внимание на то, что расширение файла, к которому мы будем ограничивать доступ должно быть .php. Как Вы догадались, ограничивать доступ мы будем к файлу admin.php. Код всех файлов самый простой — это своеобразное меню в строку со ссылками на другие страницы, и под ним индивидуальный текст каждой страницы, чтобы мы могли отличать их друг от друга. Вот, к примеру, код индексной страницы:

<p><a href="index.php">Главная</a> | <a href="contact.php">Контакты</a> | <a href="admin.php">Админка</a></p>
<hr />
Это главная страница

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

Шаг 2

Пока что мы свободно можем ходить по всем страницам, включая страницу админки. Как же мы ограничим к ней доступ? Каков вообще будет алгоритм? Мы будем делать следующее: в самом начале страницы мы будем проверять, есть ли нужная нам метка в сессии или, проще говоря, существует ли определенная сессионная переменная (также можно проверять равно ли значение сессионной переменной определенному значению). Если такой переменной нет, значит пользователь, запрашивающий эту страницу, не авторизован, а значит мы осуществим его редирект на страницу авторизации, где ему будет предложено заполнить форму с именем и паролем. Алгоритм предельно прост — реализуем его. Переходим к файлу admin.php, открываем в самом верху конструкцию PHP и напишем такой код:

<?php
session_start();

if(!$_SESSION['admin']){
	header("Location: enter.php");
	exit;
}
?>

Давайте теперь прочитаем это код. Во-первых, мы открыли сессию, как Вы помните — это обязательное условие при работе с сессиями. Далее, мы создали простое условие, которое можно прочитать так: «если в массиве $_SESSION не существует элемента admin — будем выполнять блок действий, заключенный в операторные скобки». А в блоке кода мы при помощи функции header() производим редирект пользователя на страницу enter.php (это страница авторизации). После функции header() обязательно завершаем выполнение скрипта при помощи функции exit(). Если же условие не выполнится, т.е., в массиве $_SESSION будет элемент admin — это значит, что пользователь уже успешно авторизован, и мы пропустим блок действия в операторных скобках, т.е., никакого редиректа происходить не будет, и мы покажем запрошенную страницу.

Шаг 3

Теперь нам нужно создать страницу авторизации — enter.php. Для этого скопируем код, к примеру, страницы contact.php, создадим новый файл и вставим в него скопированный код. Файл сохраняем под именем enter.php. Теперь на этой странице напишем простенькую форму для ввода логина и пароля:

<p><a href="index.php">Главная</a> | <a href="contact.php">Контакты</a> | <a href="admin.php">Админка</a></p>
<hr />
Это страница авторизации.
<br />
<form method="post">
	Username: <input type="text" name="user" /><br />
	Password: <input type="password" name="pass" /><br />
	<input type="submit" name="submit" value="Войти" />
</form>

Здесь все просто. В форме 2 поля: поле для ввода логина (ему мы дали имя «user») и поле для пароля (с именем «pass»). Также мы создали кнопку (имя «submit»), по нажатию на которую будут отосланы данные из формы. Данные отсылаются методом post — это мы указали в атрибуте method тега form — и будут обработаны на этой же странице. Теперь мы можем попробовать зайти на страницу админки. Если все сделано без ошибок — мы туда попасть не сможем, а неизменно будем оказываться на странице авторизации.

Замечательно!

Шаг 4

Далее нам нужно написать на странице с формой ее обработчик, который будет принимать данные из формы и сравнивать, совпадают ли логин и пароль из формы с теми, которые есть у нас. Для этого откроем вверху страницы авторизации конструкцию PHP и начнем писать код. Для начала мы должны открыть сессию — ведь именно здесь мы будем создавать метку в сессии, если получены верные логин и пароль. На этой же странице мы будем хранить логин и пароль администратора. Обычно эти данные хранятся в базе данных (БД), но у нас будет только 1 пользователь (администратор), а потому хранить его данные для входа в БД не совсем рационально. Если же пользователей будет не один, т.е., мы, к примеру, пишем проект, в котором имеется регистрация, то, конечно же, без БД в таком случае обойтись будет сложно.

Итак, наш логин будет «admin» и хранить мы его будем в переменной $admin. Пароль будет «mypass» и он будет храниться в переменной $pass. Но хранить пароли в открытом виде не принято — это противоречит принципам безопасности. Хранить пароль мы будем в зашифрованном виде, а зашифровать его нам поможет функция md5(). Эта функция шифрует строку по специальному алгоритму, и на выходе мы получаем строку из 32 символов (ее называют хеш). Если мы зашифруем строку «mypass» (это можно сделать, например, в файле contact.php):

<?php
echo md5('mypass');
?>

то на выходе получим строку «a029d0df84eb5549c641e04a9ef389e5″ — это и будет наш зашифрованный пароль. Пока что код страницы авторизации будет таким:

<?php
session_start();

$admin = 'admin';
$pass = 'a029d0df84eb5549c641e04a9ef389e5';
?>
<p><a href="index.php">Главная</a> | <a href="contact.php">Контакты</a> | <a href="admin.php">Админка</a></p>
<hr />
Это страница авторизации.
<br />
<form method="post">
	Username: <input type="text" name="user" /><br />
	Password: <input type="password" name="pass" /><br />
	<input type="submit" name="submit" value="Войти" />
</form>

Шаг 5

Теперь проверим то, что мы получили из формы с тем, что у нас есть в переменных с логином и паролем. Делать это мы будем по условию — только в том случае, если нажата кнопка формы. Как мы можем это проверить? У кнопки есть имя («submit»), а данные мы передаем методом post. Соответственно, мы можем просто проверить, существует ли элемент submit в массиве $_POST. Если есть — кнопка была нажата, и мы будем выполнять действия по проверке присланных данных, иначе — ничего делать не будем. После объявления логина и пароля пишем условие:

if($_POST['submit']){
	if($admin == $_POST['user'] AND $pass == md5($_POST['pass'])){
		$_SESSION['admin'] = $admin;
		header("Location: admin.php");
		exit;
	}else echo '<p>Логин или пароль неверны!</p>';
}

Условие по проверке логина и пароля мы сделали как бы двойным. Сделано это при помощи логического оператора AND (его также можно записать таким образом — «&&»). Условие можно прочитать так: «если(переменная $admin равна элементу user в массиве $_POST И переменная $pass равна хешу элемента pass в массиве $_POST) то {выполняем блок действий}else выводим на экран текст ‘Логин или пароль неверны!’

Если же пара логин-пароль совпадает, то мы регистрируем сессионную переменную $_SESSION['admin'] и перенаправляем пользователя на страницу админки — admin.php.
Попробуем теперь протестировать то, что мы уже создали. Если мы введем заведомо ложные логин и пароль, то получим предупреждающее сообщение, что «Логин или пароль неверны!». Попробуем теперь ввести правильные данные для входа. Если мы нигде не ошиблись, то после нажатия на кнопку «Войти» мы окажемся на странице админки.

Отлично!

Шаг 6

Теперь осталось дописать некоторые мелочи. К примеру, мы сейчас авторизованы в системе, но если мы введем в адресной строке адрес страницы авторизации, то спокойно попадем на нее и увидим форму авторизации. Такого быть не должно — форму должен видеть только неавторизованный пользователь. Как мы можем исправить это? Помним, что на странице admin.php мы проверяли, есть ли метка в сессии. Если ее нет — мы переводили пользователя на страницу авторизации. Здесь мы можем сделать то же самое, только наоборот. Т.е., мы также проверяем, есть ли метка в сессии. Только теперь мы будем переводить пользователя на страницу админки, если такая метка есть. Это, в принципе, логично. Если есть метка, значит пользователь уже авторизован, и мы его можем перевести на страницу админки. На странице enter.php после старта сессии допишем такой код:

if($_SESSION['admin']){
	header("Location: admin.php");
	exit;
}

Теперь если авторизованный пользователь попробует ввести в адресную строку имя страницы авторизации — он будет переведен на страницу админки. Не авторизованный пользователь же сможет свободно попасть на страницу авторизации.

Шаг 7

Следующий момент, который нам нужно предусмотреть — это реализация выхода авторизованного пользователя, т.е., допустим, администратор закончил свою работу и ему нужно выйти, чтобы никто посторонний не смог работать под его учетной записью. Для этого добавим на странице admin.php ссылку «Выход». Ссылка будет вести на эту же страницу, только к ней будет добавлен нужный нам параметр. Параметр добавляется при помощи вопросительного знака:

<a href="admin.php?do=logout">Выход</a>

Эту ссылку можно поставить в том месте, в котором нам нужно — я поставлю ее после текста страницы. Относительно параметра — он будет передан методом GET (вспоминаем, что из формы мы передавали данные вторым параметром — POST). При использовании этого метода данные присоединяются к адресу в адресной строке и отделены от адреса как раз вопросительным знаком. Мы передаем один параметр — do — и при этом присвоили ему значение «logout». Как теперь мы можем разавторизовать пользователя? Очень просто — здесь нам помогут второй и третий этапы при работе с сессиями. При загрузке страницы мы можем проверить значение элемента do из массива $_GET. Если оно будет равно строке «logout» — мы просто разрегистрируем сессионную переменную $_SESSION['admin'] и разрушим сессию. Соответственно, метки в сессии после этого не будет и в следующем блоке, где мы проверяем наличие метки, пользователь будет перенаправлен на страницу авторизации. Все просто.

Итак, на странице admin.php допишем условие после старта сессии (до проверки наличия метки):

if($_GET['do'] == 'logout'){
	unset($_SESSION['admin']);
	session_destroy();
}

Теперь можно попробовать перейти по ссылке «Выход». После выхода мы окажемся на странице авторизации и увидим форму для авторизации. Попасть теперь на страницу админки мы не сможем, пока не авторизуемся.

Шаг 8

И последний штрих. Мы можем ограничивать доступ не только к странице админки, но и к любой другой. Для этого достаточно открыть сессию и проверить наличие метки в ней. Чтобы не копировать на каждую новую страницу эти блоки кода — мы их можем вынести в отдельный файл (auth.php) и затем просто подключать этот файл на страницах, к которым нужно ограничить доступ по паролю. Содержимое файла auth.php будет таким:

<?php
session_start();

if($_GET['do'] == 'logout'){
	unset($_SESSION['admin']);
	session_destroy();
}

if(!$_SESSION['admin']){
	header("Location: enter.php");
	exit;
}
?>

Теперь вместо этой конструкции мы в файле admin.php просто подключим файл auth.php:

<?php
require "auth.php";
?>

И на любой странице, к которой мы хотим ограничить доступ, теперь достаточно будет подключить этот файл таким способом.

Заключение

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

киберсант-вебмастер

Автор: Кудлай Андрей

Редакция: Рог Виктор и Андрей Бернацкий. Команда webformyself.

E-mail: contact@webformyself.com

Регистрация и авторизация на сайте

Прямо сейчас посмотрите курс по созданию скрипта регистрации и авторизации на сайте!

Смотреть курс

Метки:

Комментарии Вконтакте:

Комментарии Facebook:

Комментарии (65)

  1. Владимир

    Мы плавно перешли на PHP…МНЕ ЭТО BASIC напомнило. Урок действительно полезный.Тяжело конечно всё это сразу усвоить,но-уже «взялся за гуж»…..

  2. Василий Сенченко

    С интересом познакомился с вашей работой, Андрей! Как раз вовремя, сегодня я намечал создать закрытую категорию для своего клуба «Новички в интернете». И хоть ваш код применить не удастся, а алгоритм теперь понятен как ясный день. Благо дарю вам!

    Василий Сенченко, проект «Сайт — за 12 часов!»

  3. Валерий

    Можно ли ограничить доступ к Например коментариям или скачиванию файлов? Извените Только прочитал, еще не пробовал.

  4. Никита

    Можно, но как, подсазать не могу, я не знаю как вы сделали

  5. Vakhtang

    Хорошая статья: все четко и ясно.

  6. Отец Виктор

    Огромное спасибо за ваш труд! Статья отменная, все доступно и ясно.
    Успехов вам в вашем благородном деле.

  7. Олег

    Спасибо,ребята!Очень полезные уроки,так держать.

  8. Виктор Старченков

    Андрей, очень полезный и нужный контент.
    Спасибо за чёткую и ясную подачу материала.

  9. Grigorii

    Спасибо за уроки ВМЕНЯ пК ЗАРАБОТАЛ СПЕШУ ВСЕ СФАТИТЬ .
    УСПЕХОВ ВАМ И ВСЕГО ХОРОШЕГО!!!

  10. Людмила

    Спасибо, вам огромное за урок и вашу рассылку, мне очень нравиться! Очень,много полезного и важного.Желаю Вам удачи и больших Успехов! С Уважением Людмила.

  11. Алексей

    Спасибо большое за урок, все понятно объясняете, удачи и развития вашему проекту)

  12. Николай

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

  13. Anna

    Цитата: «Обращаю внимание на то, что расширение файла, к которому мы будем ограничивать доступ должно быть .php.»

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

    • Андрей Кудлай

      Самый простой вариант — это помещать ссылки на файлы XLS на странице, доступ к которой имеют только авторизованные пользователи. Также можно эти ссылки помещать в блок, на любой странице, но показывать этот блок мы опять же будем только авторизованным пользователям, т.е., по условию: если метка в сессии есть — показываем блок, иначе — пропускаем его.
      Остальные варианты будут посложнее.

      • Anna

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

  14. Иван

    Да статья действительно хорошо растолкована. Для новичков будет полезна, чтобы понять основные принципы авторизации. Но как Вы сказали, для серьезных проектов это не подойдет!

  15. Илья!

    - Да, довольно таки, мне понравилось! Доступно рассказали, очень логичное рассуждение… Только, я хотел бы, чтобы поподробней рассказали, как создавать «базы данных» для серьёзных проектов… Момент! А ещё, очень хотелось бы узнать как можно сделать тоже самое, только через «javascript» и как ещё, свою форму, можно модифицировать в разных вариациях. К примеру: Как правильно, с генерировать код, чтобы он save-лся на какой-люби массив т.е.либо сервер, база данных, пч.ящик и др. резервуары для сохранения данных о user-e, и очень интересно, ещё если бы вы рассказывали в своих «видео-экскурсиях». Как правильно, сочетать таблицы:CSS — допустим, с той же простенькой формой, для проекта.ОЧЕНЬ ИНТЕРЕСНО!!!

    • Андрей Кудлай

      Ого сколько пожеланий :)
      Отвечу на некоторые вопросы… На JavaScript такое не делается, точнее, сделать-то можно, но не нужно, поскольку это будет защитой только от новичков. JavaScript ведь, в отличие от PHP, язык клиентский, а, соответственно, клиент (т.е. пользователь) сможет легко увидеть исходный код и пароль в нем… с использованием PHP это невозможно, поскольку интерпретатор отдает клиенту только результат выполнения серверного кода. По поводу создания и работы с базами данных, то в ряде своих уроков я освещал эти вопросы.
      А вообще, все еще впереди… Оставайтесь с нами ;)

  16. Алексей

    Полезная статья, жаль, что на народ не поддерживает динамические страницы. Автор, жжёшь! Спасибо!

  17. Антон

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

    • Виктор Рог

      Скоро Вы увидите этот урок, а также много других не менее полезных. Терпение мой друг.

  18. Альберт

    Это действительно единственная толковая в русском интернете статья по авторизации. А будут ли уроки по MySQL?

  19. meravaz

    Отличный урок. Благодарю за предоставление информации. Но есть несколько вопросов: как сделать так что б пароли и логин хранились в БД? Что если логинов не один а несколько?

    • Андрей Кудлай

      Пожалуйста :)
      Сделать так, чтобы авторизационные данные хранились в БД совсем не сложно. В ближайших планах запись урока по созданию полноценной системы регистрации + авторизации, которая будет включать в себя:
      — работу с БД;
      — защиту от автоматической регистрации;
      — возможно распределение ролей и др.

  20. владимир

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

  21. Максим

    Замечательная статья — спасибо огромное.

    Возник вопрос: а если полностью аналогичная система авторизации будет на другом домене и логин админа будет тот же, то не пустит ли авторизированного пользователя со второга домена в админку на первом автоматически ?

    • Андрей Кудлай

      Нет, конечно. Файлы сессий хранятся на сервере и файл сессии сервера 1 (домена) не будет никоим образом касаться файла сессии (если он существует) на сервере 2.

  22. Максим

    спасибо большое
    а то у меня сомнения закрались и решил уточнить :)

  23. aleksey

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

    • Андрей Кудлай

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

      • aleksey

        У Вас если сессия active — if($_SESSION['admin']){
        header(«Location: admin.php»);
        exit;
        а если не active -
        if(!$_SESSION['admin']){
        header(«Location: enter.php»);
        exit;
        }
        а как сделать мне !! help pliz =)

  24. aleksey

    а как правильно это реализовать??
    а то чет у меня не получается
    Помоги пожалуйста !!!

    • Андрей Кудлай

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

  25. Олег

    Хорошая полезная статья.

  26. slava

    Привет.
    Спасибо за полезные уроки.
    Вот только не получается что то, после ввода правильного пароля выдает
    Warning: Cannot modify header information — headers already sent by (output started at Z:\home\[имя сайта].local\www\admin.php:20) in Z:\home\[имя сайта].local\www\blocks\enter.php on line 11
    пробую на денвере
    Подскажи плз, что не так.
    Заранее спасибо.

    • Андрей Кудлай

      Привет!
      Возможно несколько вариантов:
      1) файлы сохранены в кодировке utf-8 with BOM… в таком случае их нужно пересохранить в кодировке utf-8 without BOM
      2) до редиректа есть вывод в браузер (перенос строки или пробел) — их быть не должно.
      Создайте тему на нашем форуме, выложите в архиве файлы и подскажем конкретнее что не так.

    • eldalomeo

      то же самое вышло.париться не стал,сразу на сервер(сайт) закинул.и там уже заработало.

  27. Иван

    Большое вам СПАСИБО за такую полезную и понятную статью!Вы мне очень помогли!

  28. Владимир

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

  29. Наталья

    а что делать если постоянно выдает ERR_TOO_MANY_REDIRECTS куки не при чем

    • Андрей Кудлай

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

  30. MissMarco

    Сервер ругался на GET запросы. (Может только у меня?)
    Проблема для меня была решена проверкой наличия переменной:
    if(isset($_GET['do']) and $_GET['do'] == ‘logout’){
    unset($_SESSION['admin']);
    session_destroy();
    }
    Может и не то но работает, а автору спасибо ;)

    • Андрей Кудлай

      Пожалуйста ;)
      Все верно Вы сделали MissMarco. У Вас сервер настроен показывать не только ошибки, но и уведомления (Notice). Исправить это можно отключением показа уведомлений или проверкой на инициализацию переменной перед обращением к ней, что, собственно, Вы и сделали функцией isset(). Первый же вариант (с отключением уведомлений) можно посмотреть в этом уроке — Каталог товаров. Контроль ошибок.

  31. Эльдар

    Отличный урок Андрей)
    У меня вот вопрос:
    как сделать В форме авторизации, функцию Запомнить меня.
    Чтобы Логин и Пароль пользователя сохранялся.
    Неудобно постоянно вводить пароль и логин при каждом входе.

    • Андрей Кудлай

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

  32. Дмитрий

    Notice: Undefined index: submit in C:\xampp\htdocs7\enter.php on line 9 но всё работает,странно что ему не нравится

  33. Дмитрий

    c isset заработало,вы лучшее учителя земляки))

  34. Андрей

    Андрей, большое спасибо за статью! Это действительно стоящий материал (если базы данных не нужны). Но у меня есть сомнение. Ведь пароль администратора хранится в файле enter.php, пусть и в зашифрованном виде. Что мешает взломщику скачать этот файл с сайта и дешифровать пароль? Спасибо.

    • Андрей Кудлай

      Мешает тот факт, что сервер не отдает файлы PHP на скачивание. Если бы было иначе, тогда можно было бы легко скачать любой сайт и взломать его. Поэтому скачать этот файл не получится.

  35. Андрей

    Спасибо! Теперь я спокоен и можно приступать в использованию данного примера :) Было бы неплохо осветить теперь урок как на админ страничке возможно править и сохранять другие php-странички, а также закачивать файлы (например картинки) на сайт :)

    • Андрей Кудлай

      Пожалуйста :)
      А уроки и курсы по созданию CMS и загрузке файлов у нас есть на сайте.

  36. Oleg

    Доброе время суток.
    Помогите пожалуйста мне нужно авторизацию из сайта войти в ispmanager
    отправляю скрипт, почему-то не работает? не переходит на ссылку авторизации..

    Логин
    Пароль

    ВЧЕМ ГРАБЛИ???????????

  37. Николай

    Спасибо!
    Тупой копипаст, 5 минут на прочитать как куда что и зачем, еще 3 минуты на отредактировать и докопипастить в нужные места и… всё — всё работает.
    Еще раз спасибо за простоту объяснений и рабочий код без необходимости правок.

  38. Андрей

    Благодарю, статья ооочень понятная, 10 минут хватило, чтобы во всё врубиться)

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree