Как сделать личный кабинет для самп сервера - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Sanoxxx, Alowir  
Как сделать личный кабинет для самп сервера
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'] - вывести значение с базы данных
Вы поняли smile В моём случае можно в таблицу вывести и 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 инъекций

мне кажется не только из-за этого
  • Страница 1 из 1
  • 1
Поиск:
Статистика Форума
Лучшие пользователи
Admin [39113]

GеNius [7210]

[CM]Russel [5557]

kenlo763 [4952]

[CM]AGRESSOR [4639]

Snake_Firm [4452]

Сэс [4416]

Artem_Buero [4223]

[CM]Durman [3204]

[CM]Рафаэль [3080]

iMaddy [2855]

sky_Woker [2854]

getrekt [2745]

Новые пользователи
PUPS12124 [02:09]

Bioksit [00:15]

Dafdaf [23:27]

ячеченец [21:00]

balbesbizad [12:02]

cpark [11:40]

Mario_Imperator [11:33]

leonovichstas97 [22:40]

ubeyefudu [18:53]

zheniakuzma [17:47]

Moonberg [16:04]

tamararl6 [15:04]

consuelobm3 [08:03]