1й урок PHP: Создание регистрации, авторизации
| |
cougraAcc | Дата: Суббота, 13 Февраля 2010, 00:10 | Сообщение # 1 |
Яркая личность GD
Сейчас нет на сайте
| Модераторы не кидайте в меня камнями если ошибся темой...:) Простые уроки php из них можно потихоньку собрать игру))) Урок первый: Создание Регистрации, авторизации. Для начала создадим бд. Идем в phpmyadmin, создаем бд например test Далее SQL и вставляем: Code CREATE TABLE `users` ( `id` int(11) NOT NULL auto_increment, `login` varchar(15) NOT NULL default '', `password` varchar(15) NOT NULL default '', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=3 ; БД создана теперь открываем корневую папку нашего сервера создаем файл index.php, открываем его и пишем: Code
<?php session_start(); //Создаем ссесию, чтобы при повторном входе опять не авторизовываться ?> <? $login = $_SESSION['login'] ?> <?php
if (empty($_SESSION['login']) or empty($_SESSION['id'])) { print " <html> <head> <title>Наша первая авторизация</title> </head> <body> <form action='enter.php' method='post'> <p> Ваш логин:<br> <input name='login' type='text' size='15' maxlength='15'> </p> <p> Ваш пароль:<br> <input name='password' type='password' size='15' maxlength='15'> </p> <p> <input type='submit' name='submit' value='Войти'> <br> </p> </form> <br> Незарегистрирован? <a href='reg.php'>жмакай сюда</a> "; //Видимо она пуста, увидомим об этом юзера } else {
print " Привет, $login ты авторизован "; // работает)) знач не надо регится } ?> </body> </html> index.php создали, теперь создаем обработчик Создаем файл enter.php открываем и пишем: Code
<?php session_start(); // Все та же ссесия))
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //Присваеваем логину переменную $login, если она пуста уничтожаем её if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} } //так же присваеваем паролю переменную $password проверяем....
// В общих чертах, или /* if (empty($login)) //Проверяем на введенность данных { exit ("Не введен логин, исправьте"); } if (($password)) //Проверяем на введенность данных { exit ("Не введен пароль, исправьте"); } */ if (empty($login) or empty($password)) //Проверяем на введенность данных { exit ("Введена не вся информация, вернитесь и исправьте"); } //обрезаем всякие тэги и прочую нечисть $login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
//удаляем лишние пробелы $login = trim($login); $password = trim($password);
// подключаемся к базе include ("connect.php");
$result = mysql_query("SELECT * FROM users WHERE login='$login'",$db); //извлекаем из базы все данные о пользователе с введенным логином $myrow = mysql_fetch_array($result); if (empty($myrow['password'])) { //если пользователя с введенным логином не существует exit ("Извините, введённый вами логин или пароль неверный."); } else { //если существует, то сверяем пароли if ($myrow['password']==$password) { //если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел! $_SESSION['login']=$myrow['login']; $_SESSION['id']=$myrow['id'];//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь echo "Вы успешно зашли на сайт, сейчас вы будете перенаправлены на главную страницу. <a href='index.php'>Нажмите если нет сил ждать</a>"; }
else { //Если логин и пасс не сходятся exit ("Извините, введённый вами логин или пароль неверный."); } } ?> Создаем connect.php для соединения с бд Code <?php $db = mysql_connect ("сюда пишем хост","логин","пароль"); mysql_select_db ("названия бд",$db); ?> Создаем регистрационный файл reg.php Code <html> <head> <title>Регистрация нового юзера</title> </head> <body> <form action="reg2.php" method="post"> <p> Ваш логин:*<br> <input name="login" type="text" size="15" maxlength="15"> </p>
<p> Ваш пароль:<br> <input name="password" type="password" size="15" maxlength="15"> </p>
<p> <input type="submit" name="submit" value="Зарегистрироваться"> </p></form> </body> </html> Создаем reg2.php он нужен для занесения в бд зарегистрированных пользователей Code <?php if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //Присваеваем логину переменную $login, если она пуста уничтожаем её if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} } //так же присваеваем паролю переменную $password проверяем....
// В общих чертах, или /* if (empty($login)) //Проверяем на введенность данных { exit ("Не введен логин, исправьте"); } if (($password)) //Проверяем на введенность данных { exit ("Не введен пароль, исправьте"); } */ if (empty($login) or empty($password)) //Проверяем на введенность данных { exit ("Введена не вся информация, вернитесь и исправьте"); }
$login = stripslashes($login); $login = htmlspecialchars($login);
$password = stripslashes($password); $password = htmlspecialchars($password);
$login = trim($login); $password = trim($password);
include ("connect.php");
// проверка на существование пользователя с таким же логином $result = mysql_query("SELECT id FROM users WHERE login='$login'",$db); $myrow = mysql_fetch_array($result); if (!empty($myrow['id'])) { exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин."); }
// если такого нет, то сохраняем данные $result2 = mysql_query ("INSERT INTO users (login,password) VALUES('$login','$password')"); // Проверяем, есть ли ошибки if ($result2=='TRUE') { echo "Вы успешно зарегистрированны, теперь вы можете войти на сайт <a href='index.php'>войти</a>"; }
else { echo "Ошибка! регистрация не прошла"; } ?> Вот и все))) Если будут ошибки пишите, так как писал на ночь глядя, мог и запутаться где нить.... Следующий урок, использование капчи, заверешние сессии, загрузка автара, поиск пользователя по профилю....
Сообщение отредактировал cougraAcc - Воскресенье, 14 Февраля 2010, 12:20 |
|
| |
ПрофЭссор1 | Дата: Суббота, 13 Февраля 2010, 00:27 | Сообщение # 2 |
Le Pallete Studio
Сейчас нет на сайте
| cougraAcc, ну молодец, ждёмс след. уроков.. Кстати, создай топик по поводу создания Транслита.. Буду признателен паппи.. Добавлено (13.02.2010, 00:27) --------------------------------------------- Следовало бы указать для какой игры Рега ! Понимаешь ли, тут на сайте есть и чайники.
>>>>>>ПРОДАЕТСЯ ГОТОВАЯ ОНЛАЙН ИГРА<<<<<< ОПИСАНИЕ: http://www.gcup.ru/forum/13-8911-1
|
|
| | |
cougraAcc | Дата: Суббота, 13 Февраля 2010, 09:55 | Сообщение # 4 |
Яркая личность GD
Сейчас нет на сайте
| Upgrade2009, это мои уроки, я это выдергивал из написанной мною cms конечно похожие есть по всему нэту.... но там только основа.... может быть похожие и где то есть, но и аналоги уроков например как у Assasina тоже есть в нэте.... если не нравится не читай, мои следующие уроки не будут похожими на те что ты видел.... Добавлено (13.02.2010, 09:55) --------------------------------------------- ПрофЭссор, Это не для игры, это вобще))) просто начало)))
|
|
| |
MaximSokol | Дата: Суббота, 13 Февраля 2010, 11:02 | Сообщение # 5 |
Доктор Макс Пэйн
Сейчас нет на сайте
| Хорошие уроки по актуальному на все времена языку PHP. Удобный и богатый язык, сейчас сам занимаюсь его изучением, может, тоже пару уроков напишу. <?php +1 ?>
Моя страница на проза.ру - перейти Я - начинающий писатель.)
|
|
| |
ПрофЭссор1 | Дата: Суббота, 13 Февраля 2010, 14:33 | Сообщение # 6 |
Le Pallete Studio
Сейчас нет на сайте
| Quote (MaximSokol) тоже пару уроков напишу. Смотря в какой сфере эти языки применять....
>>>>>>ПРОДАЕТСЯ ГОТОВАЯ ОНЛАЙН ИГРА<<<<<< ОПИСАНИЕ: http://www.gcup.ru/forum/13-8911-1
|
|
| |
cougraAcc | Дата: Суббота, 13 Февраля 2010, 14:36 | Сообщение # 7 |
Яркая личность GD
Сейчас нет на сайте
| ПрофЭссор, в смысле в какой сфере??
|
|
| |
Krokodil | Дата: Четверг, 04 Марта 2010, 11:20 | Сообщение # 8 |
был не раз
Сейчас нет на сайте
| как смотрю фай индекс и рег, то там остается текст программирования и скобки вот например "Нажмите если нет сил ждать"; } else { //Если логин и пасс не сходятся exit ("Извините, введённый вами логин или пароль неверный."); } } ?>"
|
|
| |
vovnet | Дата: Пятница, 07 Мая 2010, 13:30 | Сообщение # 9 |
почетный гость
Сейчас нет на сайте
| а почему, после регистрации, в базе вместо введенного мной пароля хранится слово password? Добавлено (07.05.2010, 13:30) --------------------------------------------- брррр сори, я чет напутал)) сам набирал от руки и допустил ошибку
|
|
| |
SSS004 | Дата: Воскресенье, 09 Мая 2010, 18:51 | Сообщение # 10 |
был не раз
Сейчас нет на сайте
| видел этот урок и еще 4 следующих на другом сайте. Копипаст 100% ДАЖЕ КОМЕНТЫ ТЕЖЕ.Только там ошибок много - пытался с них чтото выжить - но пришел к выводу что писали их начинающие, мало смыслящие в пхп товарищи самое фиговое в этом примере то , что если добавить 3 поле и попытаться его таким способом заносить в базу (сохранять) - работать не будет где-бы уроки посмотреть от толковых ребят, кто и про защиту знает и практический опыт имеет..... ПС: блицевкие уроки тоже посмотрел - не могу сказать что открылись глаза если тупо повторить что делают они-можно, но сам ничего после таких уроков не напишешь
Сообщение отредактировал SSS004 - Воскресенье, 09 Мая 2010, 20:04 |
|
| |
cougraAcc | Дата: Среда, 12 Мая 2010, 13:36 | Сообщение # 11 |
Яркая личность GD
Сейчас нет на сайте
| SSS004, че за предъява? сначала обоснуй, покажи линки где тоже самое, а потом предъявляй, но если у тебя руки не оттуда растут, то тебе тут ничего не поможет, можно добавить 100 строчек и все будет работать, для начала хоть бы почитай книжки чтобы говорить такое.... Я про защиту много что могу сказать, но! эти уроки написаны для тех кто не имеет в пхп даже теоретических познаний, какой смысл объяснять тебе про закрытие php-inj, sql-inj уязвимость если ты не можешь добавить строчку и сделать её запись в бд.... Ответ бессмысленный...
|
|
| |
ПрофЭссор1 | Дата: Среда, 12 Мая 2010, 14:01 | Сообщение # 12 |
Le Pallete Studio
Сейчас нет на сайте
| Следим за выражениями! - Assasin
>>>>>>ПРОДАЕТСЯ ГОТОВАЯ ОНЛАЙН ИГРА<<<<<< ОПИСАНИЕ: http://www.gcup.ru/forum/13-8911-1
|
|
| |
vladboss | Дата: Понедельник, 17 Января 2011, 22:39 | Сообщение # 13 |
постоянный участник
Сейчас нет на сайте
| cougraAcc, привет) я вернулся...у меня проблема место русского языка выводит каракули...знаю что из-за кодировки, помоги скажи что да куда...мне советовали я и .htaccess делал и [/code]Code mysql_query('SET NAMES utf8'); mysql_query('SET CHARACTER SET utf8'); mysql_query('SET COLLATION_CONNECTION="utf8_general_ci"'); header('Content-Type: text/html; charset=utf-8'); ал в connect и Code <meta http-equiv="content-type" content="text/html; charset=utf8"> ето писал в index не помогло что посоветуешь может что не так писал???
-помог ставь +
АБП production ©
|
|
| |
cougraAcc | Дата: Понедельник, 17 Января 2011, 22:43 | Сообщение # 14 |
Яркая личность GD
Сейчас нет на сайте
| в бд каракули или кодировки документа? если бд заливай utf-8 если в документе самом исправь кодировку на utf-8 без bom Мну сюда не пиши... ниже линка я там
|
|
| |
vladboss | Дата: Понедельник, 17 Января 2011, 23:30 | Сообщение # 15 |
постоянный участник
Сейчас нет на сайте
| сам посмотри клик Добавлено (17.01.2011, 22:57) ---------------------------------------------
Quote (cougraAcc) Мну сюда не пиши... ниже линка я там ладно...Добавлено (17.01.2011, 23:30) ---------------------------------------------
-ето что?
-помог ставь +
АБП production ©
Сообщение отредактировал vladboss - Понедельник, 17 Января 2011, 22:56 |
|
| |
VeKToR | Дата: Вторник, 18 Января 2011, 21:04 | Сообщение # 16 |
был не раз
Сейчас нет на сайте
| Благодарю cougraAcc,отличный урок,все понятно и доходчиво разжевано.
http://hellmusic.tk - Melodic Death Metal and more metal music..
|
|
| |
cougraAcc | Дата: Вторник, 18 Января 2011, 21:11 | Сообщение # 17 |
Яркая личность GD
Сейчас нет на сайте
| VeKToR, не за что:) готовлю цикл уроков, написание функционального сайта с 0 будет интересно, загляните в блог ссылка ниже
|
|
| |
OleGoN | Дата: Вторник, 18 Января 2011, 21:26 | Сообщение # 18 |
Game Maker User
Сейчас нет на сайте
| cougraAcc, куль урок!
|
|
| |
Slavec | Дата: Вторник, 18 Января 2011, 21:40 | Сообщение # 19 |
GameDev - площадка для творчества
Сейчас нет на сайте
| Замечательно)Кстати, как вообще его применять?) На локальном ПК, или в сети на хостинге?
|
|
| |
cougraAcc | Дата: Вторник, 18 Января 2011, 21:44 | Сообщение # 20 |
Яркая личность GD
Сейчас нет на сайте
| Slavec, ставишь на компьютер вирт. сервер типа denwer и вперед:)
|
|
| |
|