Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Какими способами можно защитить систему авторизации/регистрации от взлома пароля?

Какими способами можно защитить систему авторизации/регистрации от взлома пароля??? и от brute force?
Ответ: закрыто, создано во фрилансе.
Вопрос: Как осуществить авторизацию / регистрацию в Yii2 по уникальному никнейму?

как осуществить авторизацию / регистрацию в юии2 по уник никнейму-- как это реализовать
Ответ: Примерно так, но не знаю на сколько это правильно, не пробовал такое в деле

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static function findByNickName($nickname)
    {
        $user = static::find()->where(['and', ['nickname=:nickname']], [':status' => self::STATUS_ACTIVE, ':nickname' => $nickname])->one();
    }
if($user instanceof User)
          return $user;
 else {
            $user = new User();
            $user->nickname = $nickname;
//статус пользователя и т.д
            $user->generateAuthKey();
            if($user->save())
            {
                //$userRole = Yii::$app->authManager->getRole('user');
                //Yii::$app->authManager->assign($userRole, $user->getId());
                //еще манипуляции
               return $user;
            }
        }
return null;
Вопрос: PHP, ошибка при регистрации

Приветствую
есть форма для регистрации и авторизации. Регистрация работает, а вот с авторизацией проблемка небольшая, выдает ошибки, что-то не то с переменными:
Notice: Undefined index: login in C:\USBWebserver - 8.6\root\registration\lib\user_class.php on line 42
Notice: Undefined index: password in C:\USBWebserver - 8.6\root\registration\lib\user_class.php on line 43
Notice: Undefined index: login in C:\USBWebserver - 8.6\root\registration\lib\user_class.php on line 42
Notice: Undefined index: password in C:\USBWebserver - 8.6\root\registration\lib\user_class.php on line 43
.
прошу помочь)
вот полный код рег. и авторизации, здесь 3 файла, ошибка в последнем выложенном
файл registration.php:
Код 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
60
61
62
63
<?php
    header('Content-Type: text/html; charset=CP-1251');
    require_once "lib/user_class.php";
    $user = User::get_object();
    $auth = $user->is_auth();
    
    
    if (isset($_POST["reg"]))
    { 
    if($_POST['kapcha'] == $_SESSION['rand_code'])
        {
         $login = filter_var($_POST['login'], FILTER_SANITIZE_STRING);
         $password = filter_var($_POST['password'], FILTER_SANITIZE_STRING);
         $reg_success = $user->reg_user($login, $password);
        }
        else echo "<span class='error'>Проверочный код введен неправильно. </span>";
    }
 
    elseif (isset($_POST["auth"]))
    {
        $auth_success = $user->login($login, $password);
        if ($auth_success)
        {
            $login = filter_var($_POST['login'], FILTER_SANITIZE_STRING);
            $password = filter_var($_POST['password'], FILTER_SANITIZE_STRING);
            header("Location: registration/registration.php");
            exit;
        }
    }
?>
<!DOCTYPE html>
<html>
<head>
    <title>Регистрация и авторизация</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link rel='StyleSheet' href='/css/login.css' type='text/css'>
    <style>
      .error{color:red;margin-left:15px; font-size: 17px; font-family: 'Lobster', cursive;}
    </style>
</head>
<body>
<?php 
        if ($auth)
        {
            echo "<html><head><meta    http-equiv='Refresh' content='0; URL=/index.php'></head></html>";
        }
        else 
        {
            if (isset($_POST["reg"]))
            {
                if ($reg_success) echo "<span class='error'>Регистрация прошла успешно!</span>";
                else echo "<span style='font-size: 17px; color:red; font-family: Lobster, cursive;margin-left:5px;'>Ошибка при регистрации!</span>";
            }
            elseif (isset($_POST["auth"]))
            {
                if ($auth_success) echo "<span class='error'>Авторизация прошла успешно!</span>";
                else echo "<span class='error'>Ошибка при авторизации!</span>";
            }
            [B]include "form_reg.php";[/B]
}?>
 
</body>
</html>
файл form_reg.php(формочка для рег. и авторизации):
Код HTML5
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
<div id="close_auth">
<div id="login_container">
    <div id="form_container">
        <p class="login-text">Авторизация на сайте</p>
        <form name="auth" action="index.php" method="post">
    
                    <input type="text" name="login" placeholder='Логин' class='text_input'/>
                
                
                    <input type="password" name="password" placeholder='Пароль' class='text_input'/>
            
            
                    <input type="submit" name="auth" value="Войти" class="dop_text1" style="width:80px; margin:15px 0px 0px 105px"/>
        </form>
        <p class="login-text">Нет аккаунта? &nbsp;&nbsp;<input class="text_1" value="Регистрация" type='submit'  onClick="document.getElementById('close_auth').style.display = 'none';document.getElementById('open_reg').style.display = 'block' "/></p>
</div>
</div>
</div>
<div id="open_reg" style="display:none">
<div id="login_container_reg">
    <div id="form_container_reg">
        <p class="login-text1">Регистрация на сайте</p>
        <form method='POST' name="reg"  action="/index.php">
            <table><tr><td><input class='text_input_reg' placeholder="Введите код с картинки..."  type = "text" name = "kapcha" />&nbsp;</td><td><img src = "/kapcha/captcha.php" width="78" height="32"/></td></tr> </table></center>
            <input type='text' placeholder='Логин'  name='login'  class='text_input' />
            <input type='text' placeholder='Пароль'  name='password'  class='text_input' />
            <p><input type='submit' value="Зарегистрироваться" class="dop_text1" name="reg" /></p>
        </form> 
            <p class="login-text">Войти на сайт: &nbsp;&nbsp;<input class="text_1" value="Назад" type='submit' onClick="document.getElementById('open_reg').style.display = 'none';document.getElementById('close_auth').style.display = 'block' "/></p>
    </div>
</div>
</div>
файл user_class.php(там где ошибка-стр. 42-43):
Код 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
60
61
62
63
64
65
<?php
session_start();
class User
{   
    private $db;
    
    private static $user = null;
    
    private function __construct()
    {       
        $this->db = new mysqli("localhost","root","usbw","diplom");
        $this->db->query("SET NAMES 'utf8'");
    }
    
    public static function get_object()
    {
        if (self::$user === null) self::$user = new User();
        return self::$user;
    }
    
    public function reg_user($login, $password)
    {
        if ($login == "") return false;
        if ($password == "") return false;
        $password = md5($password);
        $query = "INSERT INTO `users`(`login`, `password`, `regdate`) VALUES('$login', '$password', '" . time() . "')";
        return $this->db->query($query);
    }
    
    private function check_user($login, $password)
    {
        $resultset = $this->db->query("SELECT `password` FROM `users` WHERE `login` = '$login'");
        $user = $resultset->fetch_assoc();
        $resultset->close();
        if (!$user) return false;
        return $user["password"] === $password;
    }
    
    public function  is_auth()
    {
        
        $login = $_SESSION["login"];
        $password = $_SESSION["password"];
        //if ($_SESSION["login"] = "administrator") {echo "Hellow!!!";} 
        return $this->check_user($login, $password);
    }
    
    public function login($login, $password)
    {
        $password = md5($password);
        if ($this->check_user($login, $password))
        {
            $_SESSION["login"] = $login;
            $_SESSION["password"] = $password;
            return true;
        }
        else return false;
    }
    
    public function __destruct()
    {
        if ($this->db) $this->db->close();
    }
}
?>
как вы поняли, ошибка в последнем файле- user_class.php
буду благодарен очень за помощь
Ответ:
Сообщение от Solitaire Raven
Алекс_,
Я думаю в базе данных существует данная запись.
Попробуйте сделать truncate и заново сделать авторизацию.
Кажись вы тут ошиблись. Запись и должна существовать! Для этого мы и делаем выборку SELECTом. И truncate делать ни в коем случае нельзя, уйдут все аккаунты из базы.
Вопрос: Стандартная авторизация, связь пользователей с сущностями из моей базы

Простите, но я, если что, в ASP.NET полный новичёк.
У меня есть своя база данных, там, вкратце, есть продукт и её владелец (ну и ещё много всего). И я хочу использовать встроенный готовый модуль авторизации/регистрации, и чтобы владельцами продуктов были сами пользователи, которые регистрируются/авторизуются.
Возможно, можно так сделать, чтобы это было в разных базах данных, но мне это кажется не очень, и я бы хотел объединить это в одну базу данных.
Я пытался, я в мою базу скопировал все таблицы из стандартной бд для регистрации, сменил ApplicationDbContext() с "DefaultConnection" на "MyBDEntities", и оно падает на строчке "var user = await UserManager.FindAsync(model.UserName, model.Password);" в функции "Login" - пишет, что "Тип сущности ApplicationUser не входит в модель для текущего контекста". И дальше я не вдупляю.
Подскажите, что делать, правильно ли я вообще начал, или надо делать совсем по-другому.


P. S. И ещё, я там как-то нажал перестроить проект, и, возможно после этого, у меня из модели вроде пропали половина классов, по крайней мере, если пытаться создать контроллер, в выборе класса модели не все показаны. Пришлось проект пересоздавать. Но не хочется всё, что я уже в интерфейсе поменял, копипастить, может, кто подскажет, как исправить?
Ответ: Я сделал авторизацию через FormsAuthentication. Удаляйте тему.
Вопрос: Редирект после авторизации

Всем добрый вечер. Собственно нужен совет знающих. У меня есть подобие сайта, с авторизацией\регистрацией, мне нужно теперь сделать так, чтобы после авторизации, происходил редирект на другую страницу (определенную страницу). В моем случае на лок. сервере имеется 2а сайта, и нужно, чтобы с одного, происходил редирект на друой.

Код PHP
1
2
3
4
function redirect(){
    $redirect = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : PATH;
    header("Location: $redirect");
    exit;
Где и как это прописать?

Давно не брался за сайт и уже позабыл всё...

Код PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function authorization(){
     $login = mysql_real_escape_string(trim($_POST['login']));
    $pass = trim($_POST['pass']);
    
    if(empty($login) OR empty($pass)){
        //если пусты поля логин и пароль
        $_SESSION['auth']['error'] = "<div class='error'>Поля логин и паhоль должны быть заполнены!</div>";
        }else{
            //если получены данные из полей логин и пароль
            $pass = md5($pass);
            
            $query = "SELECT name FROM customers WHERE login = '$login' AND password = '$pass' LIMIT 1";
            $res = mysql_query($query) or die (mysql_error());
            if(mysql_num_rows($res) == 1){
                //если авторизация успешна
                $row = mysql_fetch_row($res);
                $_SESSION['auth']['user'] = $row[0];
            }else{
                //если неверен логин или пароль
                 $_SESSION['auth']['error'] = "<div class='error'>Неверный логин или пароль</div>";
            
            }
        }
Ответ: Да но без тэгов [color]
header("Location: http://www.site.ru");
Код PHP
1
2
3
4
if(mysql_num_rows($res) == 1){
                //если авторизация успешна
               header("Location: http://www.site.ru");
            }
Вопрос: Доступ незарегистрированным только к странице авторизации

Привет всем. У меня такой вот простой вопрос. У меня есть 3 формы: Авторизация, Регистрация и Общий список. Нужно в web-конфиге как-то прописать,чтобы без авторизации не пускало в Общий список. Я находил код, который блокировал доступ ко всем страницам, кроме 1 указанной,в результате получилась чудеса, аля нельзя зарегаться не авторизовавшись. Как сделать так, чтобы на Авторизацию и Регистрацию пускало без авторизации,а в общий список только авторизованных?
Ответ:
 Комментарий модератора Metall_Version
ZaRaSka
реклама своих услуг, на которые у вас нету прав, в бесплатном разделе запрещена


http://metanit.com/sharp/mvc/11.1.php
Вопрос: Реализация регистрации и авторизации пользователя

Здравствуйте!

Необходимо:

Имеется проект, который я сделал по видео:


По этому видео я реализовал запуск хоста, wcf сервис, WPF приложение и .aspx страницы, которые работают через этот сервис, всё в точности как на видео(просто, конкретно и понятно).

Вопрос: как реализовать авторизацию пользователей? То есть заходит человек на страницу .aspx или открывает wpf приложение и ему открывается сначала окно авторизации (+регистрации), после авторизации он видит контент в соответствии с правами этого пользователя. Данные нужно брать из базы данных, где есть User{id, username, password, access_level}.

Облазал весь гугл, не нашел ничего путного, кругом пихают лишнее, никакой конкретики. Никакой аутентификации и прочего лишнего не нужно, оно может быть даже небезопасным, обычная авторизация с обработкой данных из базы. Помогите пожалуйста! Спасибо!)
Ответ:
Сообщение от restor2006
ну когда?)
restor2006, в архиве код самой службы, оттуда только убрана строка соединения с БД. Точно такая служба сейчас размещена на хосте в сети. Вот ее адрес:
Вы можете создать тестовое приложение, добавить ссылку на эту службу и использовать ее. Если будут какие-то баги-скажете. Мне просто нет времени создать клиента.
На данный момент в БД две записи: admin, пароль 111, роль ADMIN, и user, пароль 222, роль USER. Admin может вызывать обе операции службы, а User только одну.
P.S. Я постараюсь сделать клиента, но реально не хватает времени. Извините за задержку.
Вопрос: Почему выводит 2 раза регистрацию и авторизацию?

почему выводит 2 раза регистрацию и авторизацию?

logout.php

PHP
1
2
3
4
5
6
7
<?php
session_start();
unset ($_SESSION["login"]);
unset ($_SESSION["password"]);
header ("Location: ".$_SERVER["HTTP_REFERER"]);
exit;
?>


index.php

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?php
 
require_once "lib/user_class.php";
$user = User::getObject();
$auth = $user->isAuth();
if (isset ($_POST["reg"])){
    $login = $_POST["login"];
    $password = $_POST["password"];
    $reg_success = $user->regUser($login, $password);
}
elseif (isset ($_POST["auth"])){
    $login = $_POST["login"];
    $password = $_POST["password"];
    $auth_success = $user->login($login, $password);
    if ($auth_success){
        header ("Location: index.php");
        exit;
    }
}
?>
<html>
<head>
    <title>Регистрация и авторизация пользователей</title>
</head>
<body>
<?php
if ($auth){
    echo "Здравствуйте, ".$_SESSION ["login"]."(<a href='logout.php'>Выход</a>)";
}
else {
    echo '<h1>Регистрация</h1>
    <form name="red" action="index.php" method="post">
    <table>
    <tr>
    <td>Логин</td>
    <td>
    <input type="text" name="login">
    </td>
    <tr>
    <tr>
    <td>Пароль</td>
    <td>
    <input type="password" name="password">
    </td>
    <tr>
    <tr>
    <td clospan="2">
    <input type="submit" name="reg" value="Зарегистрироваться">
    </td>
    <tr>
    </table>
    </form>
        <h1>Авторизация</h1>
    <form name="auth" action="index.php" method="post">
    <table>
    <tr>
    <td>Логин</td>
    <td>
    <input type="text" name="login">
    </td>
    <tr>
    <tr>
    <td>Пароль</td>
    <td>
    <input type="password" name="password">
    </td>
    <tr>
    <tr>
    <td clospan="2">
    <input type="submit" name="auth" value="Войти">
    </td>
    <tr>
    </table>
    </form>';
}
?>
    <h1>Регистрация</h1>
    <form name="red" action="index.php" method="post">
    <table>
    <tr>
    <td>Логин</td>
    <td>
    <input type="text" name="login">
    </td>
    <tr>
    <tr>
    <td>Пароль</td>
    <td>
    <input type="password" name="password">
    </td>
    <tr>
    <tr>
    <td clospan="2">
    <input type="submit" name="reg" value="Зарегистрироваться">
    </td>
    <tr>
    </table>
    </form>
        <h1>Авторизация</h1>
    <form name="auth" action="index.php" method="post">
    <table>
    <tr>
    <td>Логин</td>
    <td>
    <input type="text" name="login">
    </td>
    <tr>
    <tr>
    <td>Пароль</td>
    <td>
    <input type="password" name="password">
    </td>
    <tr>
    <tr>
    <td clospan="2">
    <input type="submit" name="auth" value="Войти">
    </td>
    <tr>
    </table>
    </form>
</body>
</html>



user_class.php

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
<?php
  class User{
    private $db;
    private static $user = null;
    private function __construct(){
      $this->db = new mysqli("localhost", "root", "", "mybase");
      $this->db->query("SET NAMES 'utf8'");
    }
    public static function getObject(){
      if(self::$user === null) self::$user = new User();
      return self::$user;
    }
    public function regUser($login, $password){
      if ($login == "") return false;
      if ($password == "") return false;
      $password = md5($password);
      return $this->db->query("INSERT INTO `users` (`login`, `password`, `regdate`) VALUES ('$login', '$password', '".time()."')");
    }
    private function chekUser($login, $password){
      $result_set = $this->db->query("SELECT `password` FROM `users` WHERE `login` = '$login' ");
      $user = $result_set->fetch_assoc();
      $result_set->close();
      if(!$user) return false;
      return $user["password"] === $password;
    }
    public function isAuth(){
      session_start();
      $login = $_SESSION["login"];
      $password = $_SESSION["password"];
      return $this->chekUser($login, $password);
    }
    public function login($login, $password){
      $password = md5($password);
      if($this->chekUser($login, $password)){
        session_start();
        $SESSION["login"] = $login;
        $SESSION["password"] = $password;
      }
    }
    public function __destruct(){
      if($this->db) $this->db->close();
    }
  }
?>
Добавлено через 2 часа 24 минуты
gfvfubnttttttttttttttttttttttпамагитеееееееееееее
Ответ:
Сообщение от nasonov13
мне не нужно удалять
мне нужно если человек не вошел(ввел неправильный пароль), то значит форма такая же вывелась
Она появиться. Вам указали правильно. Удалите лишнее.

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php
 
require_once "lib/user_class.php";
$user = User::getObject();
$auth = $user->isAuth();
if (isset ($_POST["reg"])){
    $login = $_POST["login"];
    $password = $_POST["password"];
    $reg_success = $user->regUser($login, $password);
}
elseif (isset ($_POST["auth"])){
    $login = $_POST["login"];
    $password = $_POST["password"];
    $auth_success = $user->login($login, $password);
    if ($auth_success){
        header ("Location: index.php");
        exit;
    }
}
?>
<html>
<head>
    <title>Регистрация и авторизация пользователей</title>
</head>
<body>
<?php
if ($auth){
    echo "Здравствуйте, ".$_SESSION ["login"]."(<a href='logout.php'>Выход</a>)";
}
else {
    echo '<h1>Регистрация</h1>
    <form name="red" action="index.php" method="post">
    <table>
    <tr>
    <td>Логин</td>
    <td>
    <input type="text" name="login">
    </td>
    <tr>
    <tr>
    <td>Пароль</td>
    <td>
    <input type="password" name="password">
    </td>
    <tr>
    <tr>
    <td clospan="2">
    <input type="submit" name="reg" value="Зарегистрироваться">
    </td>
    <tr>
    </table>
    </form>
        <h1>Авторизация</h1>
    <form name="auth" action="index.php" method="post">
    <table>
    <tr>
    <td>Логин</td>
    <td>
    <input type="text" name="login">
    </td>
    <tr>
    <tr>
    <td>Пароль</td>
    <td>
    <input type="password" name="password">
    </td>
    <tr>
    <tr>
    <td clospan="2">
    <input type="submit" name="auth" value="Войти">
    </td>
    <tr>
    </table>
    </form>';
}
?>    
</body>
</html>
Вопрос: Создание системы регистрации/авторизации

Фабула
-----------------------------------------------------------------------------------------------------------------------------
Подумал, подумал и все ж создал новую тему. Мой вопрос относится к созданию системы регистрации/авторизации ... может кто подскажет как действовать или укажет на возможную ошибку .... для того, чтобы разобраться в алгоритме настройки взял простой пример из интернета, поправил ошибки авторов, запустил, все работает, т.е. форма регистрации отправляет в базу данных регистрационные данные, форма авторизации срабатывает, отправляя пользователя на промежуточную страницу с приветственным сообщением, подставляя в качестве имени вошедшего сессионную переменную, в которую принят логин пользователя ( в моем случае он называется username ). Все хорошо, но хотелось бы, чтобы в сессионную переменную принималось регистрационное имя пользователя. То, которое хранится в БД в качестве его настоящего имени. Ну, вот, например, не "Привет, meduza!", а "Привет, Михаил!". Я думаю вы понимаете суть проблемы.

По существу
------------------------------------------------------------------------------------------------------------------------------
Приведу полностью сначала рабочие варианты файла регистрации register.php

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
<?php require_once("includes/connection.php"); ?>
<?php include("includes/header.php"); ?>
<?php
    
    if(isset($_POST["register"])){
    
    if(!empty($_POST['full_name']) && !empty($_POST['email']) && !empty($_POST['username']) && !empty($_POST['password'])) {
  $full_name= htmlspecialchars($_POST['full_name']);
    $email=htmlspecialchars($_POST['email']);
 $username=htmlspecialchars($_POST['username']);
 $password=md5($_POST['password']);
 $query=mysql_query("SELECT * FROM usertbl WHERE username='".$username."'");
  $numrows=mysql_num_rows($query);
if($numrows==0)
   {
    $sql="INSERT INTO usertbl
  (full_name, email, username,password)
    VALUES('$full_name','$email', '$username', '$password')";
  $result=mysql_query($sql);
 if($result){
    $message = "Account Successfully Created";
} else {
 $message = "Failed to insert data information!";
  }
    } else {
    $message = "That username already exists! Please try another one!";
   }
    } else {
    $message = "All fields are required!";
    }
    }
if (!empty($message)) {echo "<p class='error'>". "MESSAGE: ". $message . "</p>";}
    ?>
<div class="container mregister">
<div id="login">
 <h1>Регистрация</h1>
<form action="register.php" id="registerform" method="post"name="registerform">
 <p><label for="user_login">Полное имя<br>
 <input class="input" id="full_name" name="full_name"size="32"  type="text" value=""></label></p>
<p><label for="user_pass">E-mail<br>
<input class="input" id="email" name="email" size="32"type="email" value=""></label></p>
<p><label for="user_pass">Имя пользователя<br>
<input class="input" id="username" name="username"size="20" type="text" value=""></label></p>
<p><label for="user_pass">Пароль<br>
<input class="input" id="password" name="password"size="32"   type="password" value=""></label></p>
<p class="submit"><input class="button" id="register" name= "register" type="submit" value="Зарегистрироваться"></p>
      <p class="regtext">Уже зарегистрированы? <a href= "login.php">Введите имя пользователя</a>!</p>
 </form>
</div>
</div>
<?php include("includes/footer.php"); ?>
файла авторизации login.php

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
<?php  if(isset($_SESSION["session_username"])){
    // вывод "Session is set"; // в целях проверки
    header("Location: intropage.php");
    }
 
    if(isset($_POST["login"])){
 
    if(!empty($_POST['username']) && !empty($_POST['password'])) {
    $username=htmlspecialchars($_POST['username']);
    $password=md5($_POST['password']);
    $query =mysql_query("SELECT * FROM usertbl WHERE username='".$username."' AND password='".$password."'");
    $numrows=mysql_num_rows($query);
    if($numrows!=0)
 {
while($row=mysql_fetch_assoc($query))
 {
    $dbusername=$row['username'];
  $dbpassword=$row['password'];
 }
  if($username == $dbusername && $password == $dbpassword)
 {
    // старое место расположения
    //  session_start();
     $_SESSION['session_username']=$username;    
 /* Перенаправление браузера */
   header("Location: intropage.php");
    }
    } else {
    //  $message = "Invalid username or password!";
    
    echo  "Invalid username or password!";
 }
    } else {
    $message = "All fields are required!";
    }
    }
    ?>
<?php include("includes/header.php"); ?>
<?php require_once("includes/connection.php"); ?>
<?php include("includes/header.php"); ?>
<div class="container mlogin">
<div id="login">
<h1>Вход</h1>
<form action="" id="loginform" method="post"name="loginform">
<p><label for="user_login">Имя опльзователя<br>
<input class="input" id="username" name="username"size="20"
type="text" value=""></label></p>
<p><label for="user_pass">Пароль<br>
 <input class="input" id="password" name="password"size="20"
  type="password" value=""></label></p> 
    <p class="submit"><input class="button" name="login"type= "submit" value="Log In"></p>
    <p class="regtext">Еще не зарегистрированы?<a href= "register.php">Регистрация</a>!</p>
   </form>
 </div>
  </div>
<?php include("includes/footer.php");?>
и промежуточного файла intropage.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php session_start();
 
if(!isset($_SESSION["session_username"])):
header("location:login.php");
else:
?>
    
<?php include("includes/header.php"); ?>
<div id="welcome">
<h2>Добро пожаловать, <span><?php echo $_SESSION['session_username'];?>! </span></h2>
  <p><a href="logout.php">Выйти</a> из системы</p>
</div>
    
<?php include("includes/footer.php"); ?>
    
<?php endif;?>
Комментарии авторов оставил - они мне не мешают.

Теперь то, что нафантазировал я. Сразу скажу, что внес кое-какие изменения: в форме регистрации добавил еще одно поле для ввода имени пользователя (назвал его name) и в код php соот-но тоже, добавил строку в таблице БД. Новая регистрация работает без проблем, все данные заносятся в БД.

А вот подправленный файл login.php

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
60
<?php session_start();?>
<?php require_once("includes/connection.php"); ?>
<?php if(isset($_SESSION["session_name"])){
    // вывод "Session is set"; // в целях проверки
    header("Location: intropage.php");
    }
 
    if(isset($_POST["login"])){
 
    if(!empty($_POST['username']) && !empty($_POST['password'])) {
    $username=htmlspecialchars($_POST['username']);
    $password=md5($_POST['password']);
    $query =mysql_query("SELECT name, username, password FROM usertbl WHERE name='".$name."' AND username='".$username."' AND password='".$password."'");
    $numrows=mysql_num_rows($query);
    if($numrows!=0)
 {
while($row=mysql_fetch_assoc($query))
 {
    $dbname=$row['name'];
    $dbusername=$row['username'];
    $dbpassword=$row['password'];
 }
  if($username == $dbusername && $password == $dbpassword)
 {
    // старое место расположения
    //  session_start();
     $_SESSION['session_name']=$name;
     
 /* Перенаправление браузера */
   header("Location: intropage.php");
    }
    } else {
    //  $message = "Invalid username or password!";
    
    echo  "Invalid username or password!";
 }
    } else {
    $message = "All fields are required!";
    }
    }
    ?>
<?php include("includes/header.php"); ?>
<?php require_once("includes/connection.php"); ?>
<?php include("includes/header.php"); ?>
<div class="container mlogin">
<div id="login">
<h1>Вход</h1>
<form action="" id="loginform" method="post"name="loginform">
<p><label for="user_login">Имя пользователя<br>
<input class="input" id="username" name="username"size="20"
type="text" value=""></label></p>
<p><label for="user_pass">Пароль<br>
 <input class="input" id="password" name="password"size="20"
  type="password" value=""></label></p> 
    <p class="submit"><input class="button" name="login"type= "submit" value="Log In"></p>
    <p class="regtext">Еще не зарегистрированы?<a href= "register.php">Регистрация</a>!</p>
   </form>
 </div>
  </div>
<?php include("includes/footer.php"); ?>
и intropage.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php session_start();
 
if(!isset($_SESSION["session_name"])):
header("location:login.php");
else:
?>
    
<?php include("includes/header.php"); ?>
<div id="welcome">
<h2>Добро пожаловать, <span><?php echo $_SESSION['session_name'];?>! </span></h2>
  <p><a href="logout.php">Выйти</a> из системы</p>
</div>
    
<?php include("includes/footer.php"); ?>
    
<?php endif?>
Идея заключалась в том, чтобы сформировав запрос к БД, дополнительно к username и password вытащить из БД переменную name, произвести как и в рабочем варианте проверку на соответствие логина и пароля, но в качестве сессионной переменной принять не извлеченную из БД переменную $username, а регистрационное имя пользователя $name. И дальше его уже использовать в файле intropage.php ... но что-то пошло не так. При попытке авторизоваться показывается сообщение о неверном логине или пароле. И вот где собака порылась не могу понять. Help, please!
Ответ: Не совсем понял в чем заключалась идея, но думаю, прежде чем править, стоит самому попробовать разработать php код для авторизации пользователя на сайте...
Вопрос: Форма регистраций на php

Добрый день!

Подскажите в чем ошибка. Делаю форму регистраций с проверкой логина и email

Сам код:
Код

<?php
/**
  * registration.php
  * Страница регистрации пользователей.
  */

header('Content-Type: text/html; charset=utf-8');
require_once('config.php');
    
session_start();
if(isset($_SESSION['uname'])!="")
{
    header("Location: index.php");
}
  
// Инициализируем переменные для введенных значений и возможных ошибок
$errors = array();

// Заранее инициализируем переменную регистрации, присваивая ей ложное значение
$reg = false;

// Если была нажата кнопка регистрации
if(isset($_POST['btn-register'])) {
    // Делаем массив сообщений об ошибках пустым
    $errors['uname'] = $errors['email'] = $errors['upass'] = $errors['upass_again'] = '';
    
    // С помощью стандартной функции trim() удалим лишние пробелы
    // из введенных пользователем данных
    $uname = trim($_POST['uname']);
    $email = trim($_POST['email']); 
    $upass = trim($_POST['upass']);
    $upass_again = trim($_POST['upass_again']);
    $upass = md5($_POST['upass']);
    $upass_again = md5($_POST['upass_again']);
    
    // Если логин не пройдет проверку, будет сообщение об ошибке
    $errors['uname'] = $uname == true ? '' : $uname;
    
    // Если пароль не пройдет проверку, будет сообщение об ошибке
    $errors['upass'] = $upass == true ? '' : $upass;
    
    // Если пароль введен верно, но пароли не идентичны, будет сообщение об ошибке
    $upass != $upass_again ? '' : 'Введенные пароли не совпадают';
    
    // Если ошибок нет, нам нужно добавить информацию о пользователе в БД
    if($errors['uname'] == '' && $errors['email'] == '' && $errors['upass'] == '' && $errors['upass_again'] == '') {
        
        // Проверка на совпадение логина регистрации в базе данных
        $sql_username_check = mysql_query($conn,"SELECT user_login FROM users WHERE user_login='$uname' ");        
        
        if (!$sql_username_check) { 
            // Вызываем функцию регистрации, её результат записываем в переменную
            $sql2 = mysql_query($conn,"INSERT INTO users(user_login,user_email,user_password) VALUES('$uname','$email','$upass')");
            
            if(!$sql2) { $errors['full_error'] = $reg; }
            else { 
                    // Если регистрация прошла успешно, сообщаем об этом пользователю
                    // И создаем заголовок страницы, который выполнит переадресацию к форме авторизации
                    if($reg === true) {
                    print ('<p>Вы успешно зарегистрировались в системе. Сейчас вы будете переадресованы к странице авторизации. Если это не произошло, перейдите на неё по <a href="login.php">прямой ссылке</a>.</p>');
                    header('Refresh: 5; URL = login.php'); }
                 }
        } else { 
            echo ("Этот логин занят, попробуйте другой!<br />"); }    
    }

 
?>

<html>
    <head>
        <title>Регистрация пользователей</title>
        <link href="style.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
        <form action="" method="post">
            <div class="row">
                <label for="login">Укажите ваш логин:</label>
                <input type="text" class="text" name="uname" id="uname" value="<?=$fields['uname'];?>" placeholder="Укажите ваш логин" required />
                <div class="error" id="login-error"><?=$errors['uname'];?></div>                
            </div>            
            <div class="row">
                <label for="Email">Укажите ваш Email:</label>
                <input type="email" class="text" name="email" id="email" value="<?=$fields['email'];?>" placeholder="Укажите ваш Email" required / />
                <div class="error" id="login-error"><?=$errors['email'];?></div>
            </div>            
            <div class="row">
                <label for="password">Напишите ваш пароль:</label>
                <input type="password" class="text" name="upass" id="upass" value="<?=$fields['upass'];?>" placeholder="Напишите ваш пароль" required />
                <div class="error" id="password-error"><?=$errors['upass'];?></div>
            </div>

            <div class="row">
                <label for="password_again">Повторите введенный пароль:</label>
                <input type="password" class="text" name="upass_again" id="upass_again" value="<?=$fields['upass_again'];?>" placeholder="Повторите введенный пароль" required />
                <div class="error" id="password_again-error"><?=$errors['upass_again'];?></div>
            </div>
            
            <!-- Кнопка отправки данных формы -->
            <input type="submit" name="btn-register" id="btn-register" value="Зарегистрироваться" />
            <!-- Кнопка сброса полей формы к исходному состоянию -->
            <input type="reset" name="btn-reset" id="btn-reset" value="Очистить" />
        </form>
    </body>
</html>
 

config.php
Код

<?php
header('Content-Type: text/html; charset=utf-8');
/*
* конфигурационный файл
*/

# Соединямся с БД
$servername = "localhost";
$username = "root";//your database username
$password = "root";//your database password
$dbname = "_mydb";//your database name
 
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

?>


Можно объяснить по подробнее в чем проблема.

Это сообщение отредактировал(а) Darcman - 21.3.2016, 17:24
Ответ:
Shark
Что то не получается.

вот код admin/index.php
Код

<?php

/*
* Панель администрирования
*/

// Устанавливаем кодировку UTF-8
header('Content-Type: text/html; charset=utf-8');

/*session_start();
if (!isset($_SESSION['uname'])) {
    header('Refresh:0; URL = ../login.php'); 
} else {
    include 'admin.php';
} */

if($_SESSION['admin'] == 1) {
    header("Location: admin/index.php"); 
} else {header("Location: index.php"); }

?>
<h1 align="center">панель администратора</h1>


код login.php
Код

<?php
/**
  * login.php
  * Страница авторизаций пользователей.
  */

require_once('config.php');
session_start();

if(isset($_SESSION['uname'])) {
         header('Refresh:0; URL = index.php');     
}

if(isset($_POST['btn-login'])) {
    
    $uname = $_POST['uname'];
    
    # Вытаскиваем из БД запись, у которой логин равняеться введенному
    $data = mysqli_fetch_array(mysqli_query($conn,"SELECT user_login, user_password, admin FROM users WHERE user_login='$uname' "));
    
    # Сравниваем введенный логин и пароль
    if($data['user_password'] === md5($_POST['upass']) and $data['user_login'] == $_POST['uname'] ) {
        header('Refresh:0; URL = index.php'); 
    }    
    else {
        print ("<p>Вы ввели неправильный логин или пароль</p>");
    }    
    
    if($data['user_password'] === md5($_POST['upass']) and $data['user_login'] == $_POST['uname'] and $data['admin'] == 1) {
        header('Refresh:0; URL = admin/index.php'); 
    }    
    else {
        print ("<p>Вы ввели неправильный логин или пароль</p>");
    }            
    
}

?>

<html>
<head>
    <title>Авторизация пользователей</title>
    <meta charset="utf-8">
    <link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form action="" method="post">
    <div class="row">
        <label for="login">Ваш логин:</label>
        <input type="text" class="text" name="uname" id="uname" />
    </div>
    <div class="row">
        <label for="password">Ваш пароль:</label>
        <input type="password" class="text" name="upass" id="upass" />
    </div>
    <div class="row">
        <input type="submit" name="btn-login" id="btn-login" value="Авторизоваться" />
    </div>
</form>
<p class="to_reg">Если вы не зарегистрированы в системе, <a href="registration.php">зарегистрируйтесь</a>.</p>
</body>
</html>


в таблице users добавил строку admin с типом boolean. В строку где логин администратора поставил 1, а в остальных выставил ноль.

Это сообщение отредактировал(а) Darcman - 7.4.2016, 20:15