[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регистрациция и авторизация через mb5
Денис777
У меня такая прблемка , регистрация проходит успешно , данные заносятся тоже успешно , пароль шифруется успешно , а вот при авторизации пишет что логин и пароль неверный , если кто селен в программировании языка php подскажите где ошибка .

вот код:

<?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 должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
// минипроверка на подбор паролей


$ip=getenv("HTTP_X_FORWARDED_FOR");
if (empty($ip) || $ip=='unknown') { $ip=getenv("REMOTE_ADDR"); }//извлекаем ip
mysql_query ("DELETE FROM oshibka WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(date) > 900");//удаляем ip-адреса ошибавшихся при входе пользователей через 15 минут.
$result = mysql_query("SELECT col FROM oshibka WHERE ip='$ip'",$db);// извлекаем из базы количество неудачных попыток входа за последние 15 у пользователя с данным ip
$myrow = mysql_fetch_array($result);

if ($myrow['col'] > 2) {
//если ошибок больше двух, т.е три, то выдаем сообщение.
exit("Вы набрали логин или пароль неверно 3 раз. Подождите 15 минут до следующей попытки.");
}
$password = md5($password);//шифруем пароль
$password = strrev($password);// для надежности добавим реверс
$password = $password."b3p6f";

//можно добавить несколько своих символов по вкусу, например, вписав "b3p6f". Если этот пароль будут взламывать методом подбора у себя на сервере этой же md5,то явно ничего хорошего не выйдет. Но советую ставить другие символы, можно в начале строки или в середине.
//При этом необходимо увеличить длину поля password в базе. Зашифрованный пароль может получится гораздо большего размера.



$result = mysql_query("SELECT * FROM users WHERE login='$login' AND password='$password'",$db); //извлекаем из базы все данные о пользователе с введенным логином и паролем
$myrow = mysql_fetch_array($result);
if (empty($myrow['id']))
{
//если пользователя с введенным логином и паролем не существует
//Делаем запись о том, что данный ip не смог войти.

$select = mysql_query ("SELECT ip FROM oshibka WHERE ip='$ip'");
$tmp = mysql_fetch_row ($select);
if ($ip == $tmp[0]) {//проверяем, есть ли пользователь в таблице "oshibka"
$result52 = mysql_query("SELECT col FROM oshibka WHERE ip='$ip'",$db);
$myrow52 = mysql_fetch_array($result52);
$col = $myrow52[0] + 1;//прибавляем еще одну попытку неудачного входа
mysql_query ("UPDATE oshibka SET col=$col,date=NOW() WHERE ip='$ip'");
}
else {
mysql_query ("INSERT INTO oshibka (ip,date,col) VALUES ('$ip',NOW(),'1')");
//если за последние 15 минут ошибок не было, то вставляем новую запись в таблицу "oshibka"
}

exit ("Извините, введённый вами логин или пароль неверный.");
}
else {
nbsp; //если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел!
$_SESSION['password']=$myrow['password'];
$_SESSION['login']=$myrow['login'];

$_SESSION['id']=$myrow['id'];//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь

//Далее мы запоминаем данные в куки, для последующего входа.
//ВНИМАНИЕ!!! ДЕЛАЙТЕ ЭТО НА ВАШЕ УСМОТРЕНИЕ, ТАК КАК ДАННЫЕ ХРАНЯТСЯ В КУКАХ БЕЗ ШИФРОВКИ


if ($_POST['save'] == 1) {
//Если пользователь хочет, чтобы его данные сохранились для последующего входа, то сохраняем в куках его браузера
setcookie("login", $_POST["login"], time()+9999999);
setcookie("password", $_POST["password"], time()+9999999);
}}
echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>";//перенаправляем пользователя на главную страничку, там ему и сообщим об удачном входе
?>








И еще один может тут ошибка а не там




<?php 
// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
session_start();
include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
//если существует логин и пароль в сессиях, то проверяем их и извлекаем аватар

$login = $_SESSION['login'];
$password = $_SESSION['password'];
$result = mysql_query("SELECT id,avatar FROM users WHERE login='$login' AND password='$password'",$db);
$myrow = mysql_fetch_array($result);

//извлекаем нужные данные о пользователе
}

include_once("diz.php");


if (!isset($myrow['avatar']) or $myrow['avatar']=='') {

//проверяем, не извлечены ли данные пользователя из базы. Если нет, то он не вошел, либо пароль в сессии неверный. Выводим окно для входа. Но мы не будем его выводить для вошедших, им оно уже не нужно.
print <<<HERE
<div id="h4">
<form class="new7" action="testreg.php" method="POST">
<p>
<label>Логин: </label>
<input type="text" name="login" size="15" maxlength="15">
</p>

HERE;

if (isset($_COOKIE['login'])) //есть ли переменная с логином в COOKIE. Должна быть, если пользователь при предыдущем входе нажал на чекбокс "Запомнить меня"
{
//если да, то вставляем в форму ее значение. При этом пользователю отображается, что его логин уже вписан в нужную графу
echo ' value="'.$_COOKIE['login'].'">';
}


print <<<HERE
<p>
<label>Пароль:</label>
<input type="password" name="password" size="14" maxlength="25">
</p>

HERE;

if (isset($_COOKIE['password']))//есть ли переменная с паролем в в COOKIE. Должна быть, если пользователь при предыдущем входе нажал на чекбокс "Запомнить меня"
{
//если да, то вставляем в форму ее значение. При этом пользователю отображается, что его пароль уже вписан в нужную графу
echo ' value="'.$_COOKIE['password'].'">';
}


print <<<HERE
<p>
<input name="save" type="checkbox" value='1'> Запомнить меня.
</p>
<p>
<input type="submit" name="submit" value="Войти">
<!-- Кнопочка (type="submit") отправляет данные на страничку testreg.php -->
<br>

<!-- ссылка на регистрацию, ведь как-то же должны гости туда попадать -->
<a href="reg.php">Зарегистрироваться</a>
</p></form>
<br>
Вы вошли на сайт, как гость<br><a href='#'></a>

HERE;
}
else
{
//при удачном входе пользователю выдается все, что расположено ниже между звездочками.
//************************************************************************************


print <<<HERE

<!-- Между оператором "print <<<HERE" выводится html код с нужными переменными из php -->
Вы вошли на сайт, как
$_SESSION[login] (<a href='exit.php'>выход</a>)<br>
<!-- выше ссылка на выход из аккаунта -->
<a href='http://tvpavlovsk.sk6.ru/'> </a><br>

Ваш аватар:<br>
<img alt='
$_SESSION[login]' src='$myrow[avatar]'>
<!-- Выше отображается аватар. Его адрес содержит переменная
$myrow[avatar] -->
<!-- Именно здесь можно добавлять формы для отправки комментариев и прочего... -->
</div>

HERE;

//************************************************************************************[color=blue][/ color]
//при удачном входе пользователю выдается все, что расположено ВЫШЕ между звездочками.

}
include_once("bloc.php");
?>




Спасибо понимающим если кто поможет , первый раз тут возможно и я кому то помогу


 ! 

М
Оформляйте код тегами!
killer8080




Спустя 57 минут (21.06.2012 - 12:23) vagrand написал(а):
Глаза болят только при мимолетном взгляде. Оформите код в теги php и расставьте отступы

Спустя 1 минута, 12 секунд (21.06.2012 - 12:24) Денис777 написал(а):
не понял о чем вы unsure.gif

Спустя 1 минута, 15 секунд (21.06.2012 - 12:25) Денис777 написал(а):
там все сделаное именно на php

Спустя 38 минут, 30 секунд (21.06.2012 - 13:04) Zzepish написал(а):
<<<HERE в топку!

Спустя 2 минуты, 51 секунда (21.06.2012 - 13:07) redreem написал(а):
Денис777

в этой каше никто копаться не будет. локализуй проблему путем промежуточного вывода через print_r() например.

Спустя 4 минуты, 52 секунды (21.06.2012 - 13:11) Денис777 написал(а):
ребят я не особо силен в php , все это было взято с сайта русселер , если убрать HERE чем заменить ? но суть проблемы то не в ней а в том что мне при авторизации выдает неверный логин или пароль

Спустя 14 минут, 51 секунда (21.06.2012 - 13:26) ochkarik123123 написал(а):
Чел дай скрипт регистрации (обработчик формы регистрации) !!

Спустя 3 минуты, 37 секунд (21.06.2012 - 13:30) Денис777 написал(а):
<?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");

$ip=getenv("HTTP_X_FORWARDED_FOR");
if (empty($ip) || $ip=='unknown') { $ip=getenv("REMOTE_ADDR"); }

mysql_query ("DELETE FROM oshibka WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(date) > 900");/

$result = mysql_query("SELECT col FROM oshibka WHERE ip='$ip'",$db);

$myrow = mysql_fetch_array($result);

if ($myrow['col'] > 2) {

exit("Вы набрали логин или пароль неверно 3 раз. Подождите 15 минут до следующей попытки.");

}

$password = md5($password)
$password = strrev($password);
$password = $password."b3p6f";

$result = mysql_query("SELECT * FROM users WHERE login='$login' AND password='$password'",$db);

$myrow = mysql_fetch_array($result);
if (empty($myrow['id']))
{

$select = mysql_query ("SELECT ip FROM oshibka WHERE ip='$ip'");
$tmp = mysql_fetch_row ($select);
if ($ip == $tmp[0])

{
$result52 = mysql_query("SELECT col FROM oshibka WHERE ip='$ip'",$db);
$myrow52 = mysql_fetch_array($result52);
$col = $myrow52[0] + 1;
mysql_query ("UPDATE oshibka SET col=$col,date=NOW() WHERE ip='$ip'");

}

else {
mysql_query ("INSERT INTO oshibka (ip,date,col) VALUES ('$ip',NOW(),'1')");


}

exit ("Извините, введённый вами логин или пароль неверный.");

}

else {

nbsp;

$_SESSION['password']=$myrow['password'];
$_SESSION['login']=$myrow['login'];


$_SESSION['id']=$myrow['id'];



if ($_POST['save'] == 1) {


setcookie("login", $_POST["login"], time()+9999999);
setcookie("password", $_POST["password"], time()+9999999);

}}

echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>";
?>




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

Спустя 1 минута (21.06.2012 - 13:31) Денис777 написал(а):
пиши вк http://vk.com/id70342344 wink.gif wink.gif

Спустя 2 минуты, 7 секунд (21.06.2012 - 13:33) redreem написал(а):

Спустя 2 минуты, 40 секунд (21.06.2012 - 13:36) ochkarik123123 написал(а):
Нелюблю я этот VK !!! =))
Дай скрипт регистрации кажется я знаю в чем проблема....

Спустя 18 минут, 8 секунд (21.06.2012 - 13:54) Денис777 написал(а):
регистрация проходит нормально , если тебе самому нужен файл регистрации могу дать , не жалко )))))



<?php
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);


if (strlen($login) < 3 or strlen($login) > 15)

{
exit ("Логин должен состоять не менее чем из 3 символов и не более чем из 15.");


}

if (strlen($password) < 3 or strlen($password) > 15)

{
exit ("Пароль должен состоять не менее чем из 3 символов и не более чем из 15.");

}


if (!empty($_POST['fupload']))


{


$fupload=$_POST['fupload']; $fupload = trim($fupload);
if ($fupload =='' or empty($fupload)) {
unset($fupload);


}
}
if (!isset($fupload) or empty($fupload) or $fupload =='')
{



$avatar = "avatars/net-avatara.jpg";


}

else

{


$path_to_90_directory = 'avatars/';


if(preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))


{

$filename = $_FILES['fupload']['name'];
$source = $_FILES['fupload']['tmp_name'];
$target = $path_to_90_directory . $filename;
move_uploaded_file($source, $target);


if(preg_match('/[.](GIF)|(gif)$/', $filename))

{
$im = imagecreatefromgif($path_to_90_directory.$filename) ;


}


if(preg_match('/[.](PNG)|(png)$/', $filename)) {
$im = imagecreatefrompng($path_to_90_directory.$filename) ;


}

if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
$im = imagecreatefromjpeg($path_to_90_directory.$filename);

}


$w = 90;


$w_src = imagesx($im);
$h_src = imagesy($im);


$dest = imagecreatetruecolor($w,$w);

if ($w_src>$h_src)
imagecopyresampled($dest, $im, 0, 0,
round((max($w_src,$h_src)-min($w_src,$h_src))/2),
0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));


if ($w_src<$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
min($w_src,$h_src), min($w_src,$h_src));

if ($w_src==$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
$date=time();

imagejpeg($dest, $path_to_90_directory.$date.".jpg");


$avatar = $path_to_90_directory.$date.".jpg";

$delfull = $path_to_90_directory.$filename;
unlink ($delfull);


}

else

{

exit ("Аватар должен быть в формате <strong>JPG,GIF или PNG</strong>");
}


}

$password = md5($password);
$password = strrev($password);
$password = $password."b3p6f";

include ("bd.php");


$result = mysql_query("SELECT id FROM users WHERE login='$login'",$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id']))

{
exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");

}



$result2 = mysql_query ("INSERT INTO users (login,password,avatar) VALUES('$login','$password','$avatar')");


if ($result2=='TRUE')
{

echo "Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. <a href='index.php'>Главная страница</a>";

}
else {
echo "Ошибка! Вы не зарегистрированы.";
}

?>

Спустя 33 минуты, 58 секунд (21.06.2012 - 14:28) ochkarik123123 написал(а):
В предпоследнем твоем присланном коде полный ппц.

Смотри участок кода:

$result = mysql_query("SELECT * FROM users WHERE login='$login' AND password='$password'",$db);

$myrow = mysql_fetch_array($result);
if (empty($myrow['id']))
{

$select = mysql_query ("SELECT ip FROM oshibka WHERE ip='$ip'");
$tmp = mysql_fetch_row ($select);
if ($ip == $tmp[0])

{
$result52 = mysql_query("SELECT col FROM oshibka WHERE ip='$ip'",$db);
$myrow52 = mysql_fetch_array($result52);
$col = $myrow52[0] + 1;
mysql_query ("UPDATE oshibka SET col=$col,date=NOW() WHERE ip='$ip'");

}

else {
mysql_query ("INSERT INTO oshibka (ip,date,col) VALUES ('$ip',NOW(),'1')");


}

exit ("Извините, введённый вами логин или пароль неверный.");

}

я понимаю что ты ничего не понимаешь и попробую объяснить попроще...
У тебя идет запрос к базе, потом проверка наличия переменной """ if ( empty($myrow['id'])) { """
переменная конечно существует (если ввел правильный логин и пароль)
дальше делается то что должно делаться когда все верно:

$select = mysql_query ("SELECT ip FROM oshibka WHERE ip='$ip'");
$tmp = mysql_fetch_row ($select);
if ($ip == $tmp[0])

{
$result52 = mysql_query("SELECT col FROM oshibka WHERE ip='$ip'",$db);
$myrow52 = mysql_fetch_array($result52);
$col = $myrow52[0] + 1;
mysql_query ("UPDATE oshibka SET col=$col,date=NOW() WHERE ip='$ip'");

}
else {
mysql_query ("INSERT INTO oshibka (ip,date,col) VALUES ('$ip',NOW(),'1')");


}
это сброс информации о том сколько раз ты ошибся при вводе логина и пароля...

далее:
exit ("Извините, введённый вами логин или пароль неверный.");
именно эта строчка останавливает скрипт и выводит сообщение!!!!!
и она срабатывает тогда когда ты ввел ВЕРНЫЕ ДАННЫЕ!!!!
Это была основная проблема!

и еще один нюанс:
после всего этого идет закрывающая скобка """ } """ к условию """ if ( empty($myrow['id'])) { """ а сразу за ней строка:
nbsp;
так вот эта строка вызовет ошибку, на данный момент этой ошибки нет так как твой скрипт останавливается до этой строки!!!

Спустя 4 минуты, 50 секунд (21.06.2012 - 14:33) Денис777 написал(а):
спасибо конечно но я не чего не понял sad.gif sad.gif sad.gif sad.gif sad.gif

Спустя 3 минуты, 35 секунд (21.06.2012 - 14:36) Денис777 написал(а):
подскажи лучше что убрать , так я бысрее пойму приину , я понял где ошибка которой нет , так как скрипт останавливаеться , а вот почему он до ошибке остонавливаеться не понял

Спустя 4 минуты, 52 секунды (21.06.2012 - 14:41) Ramzil_Nixon написал(а):
А ты вообще введенные данные для авторизации шифруешь md5()?
ramzil и ec27365fcf9bcc7d7fd1c75074ad0ec1 Разные пароли smile.gif

Спустя 2 минуты, 44 секунды (21.06.2012 - 14:44) ochkarik123123 написал(а):
=))) я знал что ты не чего непоймешь.
я предполагал что ты спросишь: "Ну и что мне делать?" =))

Вобщем самый лучший вариант выкинуть эти скрипты, и написать самому регистрацию и вход в аккаунт. На это уйдет много времени и много надо читать литературы, но это того стоит.
Я сам через это прошел, сам написай регистрацию и вход в аккаунт, да и весь остальной сайт тоже. =) У меня CRAZY система безопасности и если что-то случится со скриптом я знаю где искать и если надо что-то изменить или улучшить то я знаю где что и как мне делать.

Спустя 7 минут, 45 секунд (21.06.2012 - 14:52) ochkarik123123 написал(а):
Если ты уж сильно хочешь "добить" эти скрипты то сделай следующее:
1. Скопируй их (на всякий случай) куданибуть.
2. Замени строку """ if (empty($myrow['id'])) """ на """ if (!empty($myrow['id'])) """
(знак восклицания после открывающейся скобки)
3. Сотри строку """ nbsp; """

P.S. тройные кавычки (""") для визуализации текста ты на них не смотри и в код невставляй.

Для написания и редактирования кода удобна прога Notepad++ в инете ее легко найдеш.

Спустя 33 минуты, 51 секунда (21.06.2012 - 15:25) Денис777 написал(а):
спасибо большое smile.gif я итак пишу через notepad++ я просто смотрю видео уроки , но сколько их не качал про регистрацию и скрипты еще нечего не видел но уже пришлось столкнуться с этим , конечно взять готовый скрипт и вставить на сайт не то , надо самому понять этот язык . но мне просто необходимо в даный момент сделать регу и авторизацию с чатом , а уже после буду досканально изучать язык php

Спустя 6 минут, 25 секунд (21.06.2012 - 15:32) Денис777 написал(а):
Ramzil_Nixon , мне уже говорили по этому поводу что регистрация проходит в зашиврованом виде пароля , а вход при входе уже просто тупу , но люди другие говорили что это чушь и я незнаю кому верить

Спустя 2 минуты, 8 секунд (21.06.2012 - 15:34) Ramzil_Nixon написал(а):
Цитата (Денис777 @ 21.06.2012 - 12:25)
просто смотрю видео уроки



Видеоуроки не попова ли?

Спустя 4 минуты, 18 секунд (21.06.2012 - 15:38) Денис777 написал(а):
именно они smile.gif

Спустя 6 минут, 35 секунд (21.06.2012 - 15:45) Ramzil_Nixon написал(а):
Денис777, выкинь это дряхлое дело!
Попов тебя ни к чему хорошому не научить!
irbis-team.com

Когда то этот сайт мне очень помог!

Спустя 11 минут, 42 секунды (21.06.2012 - 15:56) Денис777 написал(а):
спасибо конечо , но везде наоборот пишут что именно его урокам все учаься и к тому же он объясняет внятно и понятно , но я уже понял что у него много ошибок даже очень много huh.gif но вы мне скинули ссылку на форум , на форумах тоже многому не научишься

Спустя 1 минута, 24 секунды (21.06.2012 - 15:58) Денис777 написал(а):
извени , мемалетам посмотрел подумал что форум а оказываеться нет

Спустя 5 минут, 15 секунд (21.06.2012 - 16:03) Денис777 написал(а):
честно сайт не очень вообще не чего не понятно , какие то сержанты , легывые , военные и все таму подобие чить аж противно sad.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.