Как сделать личный кабинет для самп сервера
|
|
RolanLog |
Дата: Пятница, 11.03.2016, 20:49 | Сообщение # 1
|
Новичок
Сообщений: 24
Статус: Offline
|
Всем привет, я расскажу как сделать личный кабинет для сервера самп. Мод должен быть на MySQL это важно! Для того что-бы создать личный кабинет нужно два файла. index.html - где будут вводится логин и пароль аккаунта. login.php - тут будет сам личный кабинет Приступим: Для начала сделаем форму входа:
Код // index.html <!DOCTYPE html> <html> <head> <meta charset='utf-8'> <title>Вход</title> </head> <body> <form action='login.php' method='POST'> // форма <input type='text' name='login'> // сюда будет вводится ник <input type='password' name='password'> // сюда будет вводится пароль <input type='submit' name='submit' value='Войти'> </form> </body> </html>
У формы (<form>) есть два атрибута, action и method. Action - куда будет переходить страница при нажатии кнопки. Method - метод, их два, POST и GET Форма готова, осталось самое сложное, подключить базу данных, сделать проверку на существование пользователя и сделать таблицу. Почти для каждой строки буду делать комментарий что-бы вы понимали.
Код // login.php <?php if (isset($_POST['submit'])) { // проверка нажатия кнопки, можно написать без isset, if ($_POST['submit']) // подключение базы данных (где хранятся аккаунты) define('HOST', "localhost"); // хост define('USER', "root"); // пользователь define('PASSWORD', ""); // пароль (На локальных серверах его нету) define('DB', "samp"); // Название базы данных
$connect = mysql_connect(HOST, USER, PASSWORD); // подключение к mysql mysql_select_db(DB, $connect); // подключение базы данных
$login = $_POST['login']; // теперь в $login хранится введённое значение которое мы писали в логин $password = $_POST['password']; // аналогично логину $sql = "SELECT * FROM `accounts` WHERE `login` = '%s' AND `password` = '%s'"; // Запрос. Вместо `accounts` свою таблицу, вместо `login` и `password` свои, подробнее о них в конце. $query = sprintf($sql, mysql_real_escape_string($login), mysql_real_escape_string($password)); // защита от инъекций $result = mysql_query($query); // обрабатываем запрос $row = mysql_fetch_assoc($result); // преобразовываем запрос в значения rows if ($login == $row['login'] && $password == $row['password']) { // проверка существования пользователя echo "Информация о аккаунте"; $table = "<table border='1'>"; $table .= "<tr>"; $table .= "<td>Ник:</td>"; $table .= "<td>".$row['login']."</td>"; $table .= "</tr>"; $table .= "<tr>"; $table .= "<td>Пароль:</td>"; $table .= "<td>".$row['password']."</td>"; $table .= "</tr>"; $table .= "</table>"; echo $table; } else { echo "<center><h1>Логин/пароль неверен</h1></center>"; // если логин и пароль не найден в базе данных } } else { header("Location: index.html", true, 303); // если кнопка была не нажата перебрасывает на гл. страницу. }
О sql запросе: По русски он выглядит так: выделить всё в таблице `accounts` где login равен строковому типу, аналогично с паролем Что такое `login`, row['login'] ? Это в phpmyadmin не знаю как объяснить, вот скриншот: http://imgur.com/GDPM8rC | row['login'] - вывести значение с базы данных Вы поняли В моём случае можно в таблицу вывести и email. У меня всего 3 rows это: login, password, email. Если вы чего-то не поняли или хотите что-бы я вам сделал (Бесплатно), т.е. если у вас что-то не получается пишите в вконтакте: *клик*
Добавлено (24.02.2016, 02:04) --------------------------------------------- UPD: Исправил код таблицы.
Добавлено (11.03.2016, 20:49) --------------------------------------------- Добавил защиту от SQL Инъекций
Сообщение отредактировал RolanLog - Воскресенье, 13.03.2016, 23:50 |
|
|
|
[CM]AnyBoom |
Дата: Суббота, 12.03.2016, 23:31 | Сообщение # 2
|
Любитель
Сообщений: 47
Статус: Offline
|
Припиши к название темы: "[ГОВНОКОД]". Ну или в теме напиши: "Никогда так не писать, новички".
|
|
|
|
Just-A-Man |
Дата: Воскресенье, 13.03.2016, 04:42 | Сообщение # 3
|
Coder
Сообщений: 427
Статус: Offline
|
1. Данные бд и соединение с бд лучше держать в отдельном файле, чтобы не писать код по сто раз, а просто заинклюдить. 2. MySQL устарела, сейчас используют MySQLi или PDO. 3. Построчно производить конкатенацию оператором (.=) 4. Без куки или сессий придется каждый раз писать логин и пароль при заходе на страницу login.php 5. Согласен с [CM]AnyBoom, никогда не пишите так. Быдло-код.
|
|
|
|
RolanLog |
Дата: Воскресенье, 13.03.2016, 23:56 | Сообщение # 4
|
Новичок
Сообщений: 24
Статус: Offline
|
Just-A-Man, это самый минимальный код, я не собирался делать сверх-личный кабинет. На mysqli у меня не выходит сделать защиту от инъекций. Ну вообще работает, но я недавно делал сайт методами Ajax, и у меня не получилось. Куки/сессии, я уже сказал что я делал минимальный код, по желанию могу добавить. AnyBoom написал Говно-код из-за того что я не сделал защиту от SQL инъекций, вот я их и добавил)
Сообщение отредактировал RolanLog - Воскресенье, 13.03.2016, 23:57 |
|
|
|
Just-A-Man |
Дата: Вторник, 15.03.2016, 00:46 | Сообщение # 5
|
Coder
Сообщений: 427
Статус: Offline
|
Цитата RolanLog ( ) На mysqli у меня не выходит сделать защиту от инъекций mysqli_real_escape_string($link, $string) $link - дескриптор соединения $string - строка
Цитата RolanLog ( ) AnyBoom написал Говно-код из-за того что я не сделал защиту от SQL инъекций мне кажется не только из-за этого
|
|
|
|