Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2017, 23:14   #1
xameleon48
Пользователь
 
Регистрация: 03.06.2014
Сообщений: 15
По умолчанию Регистрация и вход в чат

Не могли бы вы мне помочь , изучаю PHP пытаюсь сделать регистрацию и вход в чат
http://heximal.ru/blog/coding/zashhi...x-chat-na-php/
Ссылки на исходники внутри.
Регистрацию и вход пробую организовать по ссылке https://ruseller.com/lessons.php?id=347&rub=37 , но никак не получается, не могли бы вы помочь сделать в этом чате вход по логину и паролю из БД
xameleon48 вне форума Ответить с цитированием
Старый 26.12.2017, 23:27   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Что конкретно не получается, какой фрагмент кода не работает?
Andkorol вне форума Ответить с цитированием
Старый 27.12.2017, 20:48   #3
xameleon48
Пользователь
 
Регистрация: 03.06.2014
Сообщений: 15
По умолчанию

Есть код формы входа(логин и пароль указаны в тексте), пытаюсь заменить эти функции на свой вход по логину и паролю из БД.
Код:
<?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;
  }

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
   }
?>
<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
session_start();
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } 

if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($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");
$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 и пытался вставить свой код ,но не вышло.
xameleon48 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вход и регистрация Danvirs C# (си шарп) 0 12.11.2017 00:58
Чат бот, знакомства и чат с людьми Corp Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 17.06.2016 15:13
Регистрация и (или) вход в программу. IndomiX Общие вопросы Delphi 7 27.12.2011 14:52
Создание аккаунта и вход в аккаунт (ЧАТ) Federal Работа с сетью в Delphi 4 28.07.2010 07:52
Вход limon PHP 4 14.01.2009 17:46