Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
xameleon48
0 / 0 / 0
Регистрация: 08.10.2013
Сообщений: 20
1

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

26.12.2017, 23:13. Просмотров 335. Ответов 7

Не могли бы вы мне помочь , изучаю PHP пытаюсь сделать регистрацию и вход в чат
http://heximal.ru/blog/coding/zashhishhennyj-ajax-chat-na-php/
Ссылки на исходники внутри.
Регистрацию и вход пробую организовать по ссылке https://ruseller.com/lessons.php?id=347&rub=37 , но никак не получается, не могли бы вы помочь сделать в этом чате вход по логину и паролю из БД
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2017, 23:13
Ответы с готовыми решениями:

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

Регистрация и вход без mysql
Нашёл в интернете код для регистрации и входа без mysql и начал делать проект с его использованием....

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

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

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

7
edward_freedom
1557 / 1436 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
27.12.2017, 12:35 2
xameleon48, Задавай конкретные вопросы, помочь понятие расплавчатое и у многих означает, напишите за меня
0
atanov
456 / 387 / 142
Регистрация: 26.05.2016
Сообщений: 2,228
27.12.2017, 12:36 3
так а что конкретно не получается? Есть срипты, которые не работают или работают с ошибками?
0
xameleon48
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
27.12.2017, 20:39
atanov
456 / 387 / 142
Регистрация: 26.05.2016
Сообщений: 2,228
27.12.2017, 22:06 5
Что-то у Вас такая мешанина. Я бы сделал так - на страничке пользователь вводит логин/пароль. Это отправляется на сервер, там проверка, требуемая. Если пользователь есть и пароль верный, ну и если надо ещё сито условий, тогда записать необходимые переменные в сессию. Инклюдить скрипт с открытой сессией и Вашей кнопкой, извлекаете из сессии переменные и цепляете к кнопке. Раздолье для творчества
0
xameleon48
0 / 0 / 0
Регистрация: 08.10.2013
Сообщений: 20
27.12.2017, 22:22  [ТС] 6
Не могли бы вы помочь с этим, что то смутно понимаю что нужно делать, если вам удобно можно обговорить это по почте del
0
edward_freedom
1557 / 1436 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
28.12.2017, 00:56 7
Цитата Сообщение от xameleon48 Посмотреть сообщение
если вам удобно
а чем на форуме не удобно? И не надо никаких емейлов
0
atanov
456 / 387 / 142
Регистрация: 26.05.2016
Сообщений: 2,228
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
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2017, 08:07

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

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

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.