С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 08.10.2013
Сообщений: 20
1

Регистрация и вход в чат

26.12.2017, 23:13. Показов 794. Ответов 7

Author24 — интернет-сервис помощи студентам
Не могли бы вы мне помочь , изучаю PHP пытаюсь сделать регистрацию и вход в чат
http://heximal.ru/blog/coding/... at-na-php/
Ссылки на исходники внутри.
Регистрацию и вход пробую организовать по ссылке https://ruseller.com/lessons.php?id=347&rub=37 , но никак не получается, не могли бы вы помочь сделать в этом чате вход по логину и паролю из БД
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.12.2017, 23:13
Ответы с готовыми решениями:

Регистрация/Вход
Все доброго времени суток))) Помогите пожалуйста новичку делаю сайт на joomla и хотелось бы узнать...

Регистрация и вход
Здравствуйте, я учусь на 3 курсе, не могу сделать программу. Вот условие: Разработать программу,...

Регистрация и Вход
Подскажите пожалуйста как можно реализовать регистрацию пользователя и вход в консольном...

Регистрация и вход в программу С++
Нужно реализовать авторизацию для входа в систему (без регистрации на входе, т.к создание новых уч...

7
1569 / 1448 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
27.12.2017, 12:35 2
xameleon48, Задавай конкретные вопросы, помочь понятие расплавчатое и у многих означает, напишите за меня
0
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,665
27.12.2017, 12:36 3
так а что конкретно не получается? Есть срипты, которые не работают или работают с ошибками?
0
0 / 0 / 0
Регистрация: 08.10.2013
Сообщений: 20
27.12.2017, 20:39  [ТС] 4
Есть код формы входа(логин и пароль указаны в тексте), пытаюсь заменить эти функции на свой вход по логину и паролю из БД.

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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
<?php 
 
   session_start();
   
   function checkLogin($hash) {
     $password = 'mypass';
     $users = array('user1','user2','user3');
     error_log('checkLogin:' . $hash . ' salt:' . $_SESSION['salt']) ;
     foreach ($users as $user) {
         
        $m = md5($user . '|' . $password . '|' . $_SESSION['salt']);
        if ($m == $hash) return $user; 
     }
     return false;
   }
 
   function getSalt() {
     $al = '0123456789abcdef';
     $res = '';
     for ($i = 0; $i<16; $i++) 
       $res .= $al[rand(0,15)];
     $_SESSION['salt'] = $res;
     return $res;
   }
 
   function getChatScreen() {
     ?>
<style type="text/css">
<!--
-->
</style>
<script type='text/javascript'>
   var cKey = '';
 
   function is_nan(n) {
     return isNaN(n) || (n.indexOf('.') > -1)
   } 
 
   function checkNan(el) {
     document.getElementById("applyKey").disabled = is_nan(el.value);   
   }
// private method for UTF-8 encoding
   function applyCKey() {
     cKey = document.getElementById("cKey").value;
     document.getElementById("applyKey").disabled=true;
   }
  function encode(s) {
 
    var enc = '';
    for (i=0; i< s.length;i++) {
      if (i != 0)
        enc += ',' + s.charCodeAt(i);
      else
        enc += s.charCodeAt(i);
    }
    return enc;
  }
 
  function decode(s) {
 
    var ar = s.split(',');
    s = '';
    for (i=0; i< ar.length;i++) 
      if (!is_nan(ar[i]) || ar[0] != 0) 
        s += String.fromCharCode(ar[i]);
    
    return s;
  }
 
//Here is the JavaScript code that you are looking for:
function encrypt_str(str) {
        if (cKey == '') return encode(str);
    var xor_key= cKey;
        var to_enc =str;
    var the_res="";//the result will be here
    for(i=0;i<to_enc.length;++i)
        the_res+=String.fromCharCode(xor_key ^ to_enc.charCodeAt(i));
      return encode(the_res);
}
 
function decrypt_str(str, e) {
        if (e == 0) {return decode(str)};
        if (cKey == '') return decode(str);
    var to_dec=decode(str);
 
    var xor_key=cKey;
    var the_res="";//the result will be here
    for(i=0;i<to_dec.length;i++)    
      the_res+=String.fromCharCode(xor_key ^ to_dec.charCodeAt(i));
       return the_res;
}
</script>
 
<div id="loginpane">
 <form action='./' method='post'>
 Cipher key<input id='cKey' onkeyup='checkNan(this);' style='border:1px solid #888' value=''/>
 <input disabled id='applyKey' onclick='applyCKey();' type='button' value='Apply'/>
 <input id='resetChat' onclick='chat_reset();' type='button' value='Reset Chat'/>
 <input id='signOut' type='submit' value='Sign Out'/>
 <input type='hidden' name='signout' value='true'/>
 Signed as <span style='color:#00b;'><?php echo($_SESSION['USER_NAME']); ?></span>
 </form>
</div>
<div id="chat">Connecting...</div>
<div id="msginput">
 <table cellspacing="0" cellpadding="0" border="0" width="100%">
 <tr>
  <td><input id="message" style='width:98%;' type="text" onkeyup="keyup(event);" /></td>
  <td style='width:80px;margin-left:5px;'><input style="width:100%;" type="button" value="Say" onclick="chat_write();" /></td>
 </tr>
</div>
 
<script language="JavaScript" type="text/javascript" src="c23.php"></script>
 
<?php
   }
 
 
   function getLoginScreen($err = null) {
?>
<TABLE cellSpacing=0 cellPadding=0 border=0>
  <TBODY>
  <TR>
    <TD class=td1></TD>
    <TD class=td1 align=left>You're going to restricted area. Please, provide 
      your login info </TD>
    <TD class=td1></TD></TR>
  <TR>
    <TD class=td1></TD>
    <TD class=td1 style="TEXT-ALIGN: left">
<div id='err' style='color:red;<?php if (null === $err) echo('display:none;'); ?>font-size:10px;'><?php if (null !== $err) echo($err); ?></div>
Login<BR>
<form id='loginForm' action='./' method='post' onsubmit='return submitAuth();'>
<input id='login' value=''><BR>Password<BR>
<input id='pass' type='password'><BR><BR>
     <input onclick='submitAuth();' type='button' value="Sign in >>"><BR></TD>
      <div style='display:none;' id='salt'><?php echo(getSalt()); ?></div>
      <input id='engaged' type='hidden' name='engaged' value='1'/>
      <input id='login_hash' type='hidden' name='login_hash' value='1'/>
</form>
    <TD class=td1></TD></TR>
</TBODY></TABLE><?php
   }
 
 
?>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0023)http://newbtech.ru/c23/ -->
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>New Business Technologies</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<META content=global name=distribution>
<META content="follow, all" name="robots/>
  <meta content='ru' name=" language>
<META content="New Business Technologies" name=description>
<META content=Consulting name=keywords>
<META content="MSHTML 6.00.2900.5880" name=GENERATOR><LINK media=all href="img/main.css" type=text/css rel=stylesheet>
<script type='text/javascript' src='img/auth.js'></script>
<script type='text/javascript'>
  function submitAuth() {
    var l = document.getElementById('login').value;
    var p = document.getElementById('pass').value;
    var s = document.getElementById('salt').innerHTML;
    if (l == '' || p == '') {
       document.getElementById('err').innerText = 'Must supply both login and pass';
       document.getElementById('err').style.display = '';
       return false;
    }
    document.getElementById('err').style.display = 'none';
    var v = hex_md5(l.toLowerCase() + '|' + p.toLowerCase() + '|' + s);
    document.getElementById('login_hash').value = v;
    document.getElementById('loginForm').submit();
  }
</script>
</HEAD>
<BODY>
<?php 
  if (!isset($_SESSION['login_hash'])) {
    if (isset($_POST['engaged']) && $_POST['engaged'] == '1') {
      $un = checkLogin($_POST['login_hash']);
      if ($un) {
         $_SESSION['login_hash'] = rand(1, 24);
         error_log('accepted un:' . $un);
         $_SESSION['USER_ID'] = rand(1, 24);
         $_SESSION['USER_NAME'] = $un;
         getChatScreen();
      } else 
        getLoginScreen('Invalid login data');
    } else {
      getLoginScreen();
    } 
    } else {
      if (isset($_GET['signout']) || isset($_POST['signout'])) {
        $_SESSION['login_hash'] = null;
        $_SESSION['USER_NAME'] = null;
        $_SESSION['USER_ID'] = null;
        getLoginScreen();
      } else
         getChatScreen();
  }
 
?>
 
</BODY>
</HTML>

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

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
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) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
{
exit ("Вы ввели не всю информацию, венитесь назад и заполните все поля!");
}
//если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
$login = stripslashes($login);
$login = htmlspecialchars($login);
 
$password = stripslashes($password);
$password = htmlspecialchars($password);
 
//удаляем лишние пробелы
$login = trim($login);
$password = trim($password);
 
 
// подключаемся к базе
include ("bd.php");// файл bd.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'];//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь
          include ("index.php");
          getChatScreen();
          }
 
       else {
       //если пароли не сошлись
       exit ("Извините, введённый вами логин или пароль неверный.");
       }
}
?>
Удалял из файла с чатом функции checkLogin,getSalt,submitAuth и пытался вставить свой код ,но не вышло.
0
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,665
27.12.2017, 22:06 5
Что-то у Вас такая мешанина. Я бы сделал так - на страничке пользователь вводит логин/пароль. Это отправляется на сервер, там проверка, требуемая. Если пользователь есть и пароль верный, ну и если надо ещё сито условий, тогда записать необходимые переменные в сессию. Инклюдить скрипт с открытой сессией и Вашей кнопкой, извлекаете из сессии переменные и цепляете к кнопке. Раздолье для творчества
0
0 / 0 / 0
Регистрация: 08.10.2013
Сообщений: 20
27.12.2017, 22:22  [ТС] 6
Не могли бы вы помочь с этим, что то смутно понимаю что нужно делать, если вам удобно можно обговорить это по почте del
0
1569 / 1448 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
28.12.2017, 00:56 7
Цитата Сообщение от xameleon48 Посмотреть сообщение
если вам удобно
а чем на форуме не удобно? И не надо никаких емейлов
0
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,665
28.12.2017, 08:07 8
xameleon48
Немного сбрехал - авторизация возможна, если данные логин/пароль совпадают с парой логин/пароль к доступу к базе и таблице MySQL. Создайте базу new_bd c таблицей new_table, внесите пользователя "user" и его пароль. Самая простая последовательность:

HTML5
1
2
3
4
5
6
7
8
9
10
<html>
<body>
        <form method = "post" action = "enter.php">
        enter login <input type = "text" name = "login">
        enter password <input type = "password" name = "pass">
        <input type="submit" value="submit">
        <input type="reset" name="reset" value="clear">
        </form>
</body>
</html>
обработчик enter.php

PHP
1
2
3
4
5
<?php
$connection = mysqli_connect('localhost', $_POST['login'], $_POST['pass']) or die("Cannot connect to MySQL.");
mysqli_select_db($connection, 'new_bd') or die("Cannot connect to the base.");
include ('finalenter.php');
?>
Файл finalenter.php, где стартует сессия

PHP
1
2
3
4
5
6
<?php
session_start();
$_SESSION['user'] = $_POST['login'];
$_SESSION['password'] = $_POST['pass'];
echo ('you are in!!!');
?>
А дальше навешивайте, что душа пожелает.
0
28.12.2017, 08:07
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.12.2017, 08:07
Помогаю со студенческими работами здесь

Woocomerce вход и регистрация
Здравствуйте, помогите мне решить проблему, у меня при нажатие на карзину в окне товара, если...

Вход и регистрация на WordPress
Здравствуйте! Хочу создать собственную страницу входа и регистрации на вордпресс. Не знаю как...

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

Регистрация и вход пользователя
Здравствуйте! У меня проблема с регистрацией и авторизацией пользователя. Писала также, как по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Как программировать под HCL Notes и создавать свои продукты на ее основе
InfoMaster 11.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой мощную платформу для разработки корпоративных приложений, которая сочетает в себе функции электронной почты, календаря,. . .
Как работать с SVN (Subversion)
InfoMaster 11.01.2025
Введение Система контроля версий является неотъемлемой частью современного процесса разработки программного обеспечения. Она обеспечивает управление изменениями в коде, позволяет отслеживать. . .
Использование GraphQL в JavaScript
InfoMaster 11.01.2025
Введение в GraphQL и его преимущества В современной разработке веб-приложений эффективный обмен данными между клиентом и сервером играет ключевую роль. GraphQL представляет собой язык запросов и. . .
Администрирован­­­­ие Git, продвинутые техники работы с Git
InfoMaster 11.01.2025
Основы управления репозиторием Эффективное управление Git-репозиторием требует глубокого понимания механизмов контроля доступа и инструментов администрирования. Рассмотрим ключевые аспекты. . .
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru