вход в чат на PHP

336
28 декабря 2017, 23:13

Здравствуйте.Не могли бы вы мне помочь , изучаю PHP пытаюсь сделать регистрацию и вход в чат http://heximal.ru/blog/coding/zashhishhennyj-ajax-chat-na-php/ Ссылки на исходники внутри. Регистрацию и вход пробую организовать по ссылке https://ruseller.com/lessons.php?id=347&rub=37 , но никак не получается, не могли бы вы помочь сделать в этом чате вход по логину и паролю из БД

Спасибо за советы, отредактировал,и указал причину

Есть код формы входа(логин и пароль указаны в тексте), пытаюсь заменить эти функции на свой вход по логину и паролю из БД. Код:

<?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 на форуме Добавить отзыв для xameleon48 Пожаловаться на это сообщение

READ ALSO
Адаптивная шапка (header) для сайта

Адаптивная шапка (header) для сайта

Здравствуйте, всеУ меня два вопроса по поводу панели навигации на верху сайта

277
Как разместить по 2 div со свойством float в контейнере

Как разместить по 2 div со свойством float в контейнере

У меня есть контейнер к примеру размером 480

397
Как отцентровать блок по нижнему краю родительского блока

Как отцентровать блок по нижнему краю родительского блока

У меня есть один общий родительский блок:

244
Как в html таблице (table) сделать перенос строки с &ldquo;слева направо&rdquo; на &ldquo;сверху вниз&rdquo;?

Как в html таблице (table) сделать перенос строки с “слева направо” на “сверху вниз”?

Есть таблица характеристик, которая автоматически выводится на сайте после заполнения характеристик товара

274