Здравствуйте.Не могли бы вы мне помочь , изучаю 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 Пожаловаться на это сообщение
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Здравствуйте, всеУ меня два вопроса по поводу панели навигации на верху сайта
У меня есть контейнер к примеру размером 480
У меня есть один общий родительский блок:
Есть таблица характеристик, которая автоматически выводится на сайте после заполнения характеристик товара