Всем привет! Столкнулся с такой проблемой:как только не редактировал файл авторизации на сайт под md5-никак не получается залогинится под учетной записью! в БД пароль в формате md5, а считывание его с БД не получается(в соединении с базой проблем нет).Когда возвращаю пароль без md5 в БД-то всё работает! Вот исходной мой пример,где пытался написать с md5,но вылазит ошибка: "Ошибка! Указан неправильный пароль! Пароль должен состоять не менее чем от 3 до 20 символов, и содержать только латинские символы!" С Логин формы: Код (PHP): <style> a.btnreg { font-size:16px; margin-bottom:5px; line-height:3em; background:url(img/btn-reg.png) no-repeat; background-position:left top; display:block; height:48px; width:138px; color:#fff; text-shadow:1px 1px 1px #6c3a05; outline:none; border:none; padding-left: 62px; } a.btnlogin { font-size:16px; margin-bottom:20px; line-height:3em; background:url(img/btn-login.png) no-repeat; background-position:left top; display:block; height:48px; width:226px; color:#fff; text-shadow:1px 1px 1px #00475d; outline:none; border:none; padding-left: 0px; } div.formlogin { font-size:11px; margin-bottom:10px; background:url(img/formlogin.png) no-repeat 0 0; display:block; height:131px; width:226px; color:#fff; border:none; padding:20px 0px; } div.formlogin input { font-size:12px; width:70%; margin-left:2px; margin-right:20px; border:#2d5e79 solid 1px; padding:3px; } div.formlogin input.loginsubmit { font-size:10px; text-align:center; color:#fff; display:block; text-transform:uppercase; background-color:#00749E; border:#7AEAF0 solid 1px; cursor:pointer; margin:3px auto; padding:3px 8px; width: auto; } div.formlogin input.loginsubmit:hover { background-color:#009E08; border:#C2FFC5 solid 1px; } a.loginwm { font-size:10px; text-align:center; color:#fff; display:block; text-transform:uppercase; background-color:#70009E; border:#ECD3F5 solid 1px; cursor:pointer; margin:3px auto; padding:3px 8px; width: auto; } a.loginwm:hover { background-color:#A9005B; border:#F7D5E7 solid 1px; } a.recpass { font-size:11px; text-align:center; color:#007FAD; display:block; text-decoration:none; border:none; margin:5px auto 0; } a.recpass:hover { color:#00AD09; border:none; } </style><script type="text/javascript" language="JavaScript"> function LoginClick() { document.getElementById('logfrm').style.display = ''; document.getElementById('logbtn').style.display = 'none'; document.getElementById('loginsubmit').action = '-msg=201.htm'/*tpa=http://www.nollseotrip.net/login.php*/; document.forms['loginsubmit'].logsuccess.value = 'о'; } function SbmForm() { if (document.forms['loginsubmit'].login.value == '') { alert('Не указан логин'); document.forms[0].login.focus(); return false; } if (document.forms['loginsubmit'].password.value == '') { alert('Не указан пароль для входа'); document.forms[0].password.focus(); return false; } /*var re = /^\w+([\.-]?\w+)*@(((([a-z0-9]{1,})|([a-z0-9][-][a-z0-9]+))[\.][a-z0-9])|([a-z0-9]+[-]?))+[a-z0-9]+\.([a-z]{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/i; if (!re.test(eval("document.forms['loginsubmit'].askemail.value"))) { alert('Адрес e-mail указан некорректно'); document.forms[0].askemail.focus(); return false; }*/ document.forms['loginsubmit'].logpar.value = 'e7536a9b4926e470ff9b1b6881af4c0b'; document.forms['loginsubmit'].logsuccess.value += 'o'; document.forms['loginsubmit'].submit(); return true; } </script> <center> <a name="login"></a> [url="register.php"] Регистрация</font>[/url] [url="#login"] Вход</font>[/url] <div id="logfrm" class="formlogin" style="display: none;"> <form action="/login.php" method=post name="login" id="login"> <div style="display: none;">Логин<input type="text" name="login" size="15" maxlength="20" /></div> <table> <tr> <td>Логин</td> <td><input type="text" name="username" size="15"></td> </tr> <tr> <td>Пароль</td> <td><input type="password" name="password" maxlength="40" size="15"/></td> </tr> </table> <input class="loginsubmit" type="submit" name="" value="Войти" /> <input type="hidden" name="logsuccess" value="" /> <input type="hidden" name="logpar" value="05018-4s" /> </form> [url="recoverpwd.php"]Забыли пароль?[/url] </div> </center> Перенаправляется на эту страницу! Подскажите,где здесь ошибка: Код (PHP): <?php $pagetitle="Вход"; include('header.php'); require_once('.zsecurity.php'); require('config.php'); if(isset($_POST["username"]) && isset($_POST["password"])) { $password=uc($_POST['password']); if( isset($_POST['username']) ) { $pass = md5($password); } #$username = false; #$password = false; $ip = getRealIP(); $enter_pass_oper = (isset($_POST["pass_oper"]) && preg_match("|^[a-zA-Z0-9\-_-]{6,20}$|", trim($_POST["pass_oper"]))) ? uc_p($_POST["pass_oper"]) : false; if(preg_match("|^[а-яА-Яa-zA-Z0-9\-_-]{3,20}$|", trim($_POST["username"]))) { $username = htmlentities(stripslashes(strtolower(trim($_POST["username"])))); $username = str_replace("'","",$username); $username = str_replace(";","",$username); $username = str_replace("$","",$username); $eror_username = true; }else{ $eror_username = false; } if(preg_match("|^[а-яА-Яa-zA-Z0-9\-_-]{3,30}$|", trim(md5($_POST['password'])))) { $pass = htmlentities(stripslashes(strtolower(trim(md5($_POST['password']))))); $pass = str_replace("'","",md5($password)); $pass = str_replace(";","",md5($password)); $pass = str_replace("$","",md5($password)); $eror_pass = true; }else{ $eror_pass = false; } if($username==false|$pass==false) echo '<fieldset class="errorp">Ошибка! Не указаны данные для авторизации!</fieldset>'; elseif($eror_username == false) echo '<fieldset class="errorp">Ошибка! Указан неправильный логин! Логин должен состоять от 3 до 20 символов, и содержать только латинские символы!</fieldset>'; elseif($eror_pass == false) echo '<fieldset class="errorp"></fieldset>'; else{ $mysql_queries = "0"; require('config.php'); $sql = mysql_query("SELECT * FROM `tb_users` WHERE `username`='$username' AND `password`='$pass'") or die(mysql_error()); if(mysql_num_rows($sql)>0) { $row = mysql_fetch_array($sql); $partnerid = $row["id"]; $lastiplog = $row["lastiplog"]; $block_wmid = $row["block_wmid"]; $block_agent = $row["block_agent"]; $pass_oper = $row["pass_oper"]; $agent = $row["agent"]; $agent_now = getenv("HTTP_USER_AGENT"); if(strtolower($username) != strtolower($row["username"])) echo '<fieldset class="errorp">Ошибка! Логин введен не верно!</fieldset>'; elseif(strtolower($pass) != strtolower(md5($row["password"]))) echo '<fieldset class="errorp">Ошибка! Пароль введен не верно!</fieldset>'; elseif($block_wmid==1) echo '<fieldset class="errorp">Ошибка! Вы не можете войти в аккаунт используя логин/пароль! Так как Вы установили ограничение [Входить только через Login.WebMoney]</fieldset>'; elseif($block_agent==1 && ($ip!=$lastiplog | $agent_now!=$agent) && $enter_pass_oper!=$pass_oper) { ?><script type="text/javascript" src="../scripts/jquery.min.js"></script> <script type="text/javascript" src="../scripts/jqpooop.js"></script> <script language="JavaScript"> function sendchkpass(){ if (confirm("Вы собираетесь получить пароль для операций.\nСейчас будет сгенерирован новый пароль для операций, a старый будет удален из системы.\nВы хотите продолжить?")){ pass_oper("<?php echo $partnerid;?>"); } } </script><?php if($enter_pass_oper==false) { echo '<fieldset class="errorp">Внимание!<br>У Вас изменился браузер или IP-адрес, необходимо ввести пароль для операций.</fieldset>'; echo '<br><br>'; echo '<div id="form">'; echo '<form action="" method="post">'; echo '<input type="hidden" name="username" value="'.$username.'">'; echo '<input type="hidden" name="password" value="'.$pass.'">'; echo '<table class="tables">'; echo '<tr align="center" height="30px"><th align="center" colspan="2" class="top">Форма авторизации</th></tr>'; echo '<tr>'; echo '<td width="50%" height="25" align="right"><b>Пароль для операций:</b></td>'; echo '<td width="50%" height="25" align="left"> <input type="password" size="20" maxlength="10" name="pass_oper" value="" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td height="25" align="center" colspan="2">Для входа в аккаунт Вам нужно указать "пароль для операций".</td>'; echo '</tr>'; echo '<tr>'; echo '<td height="25" align="center" colspan="2">[url="javascript: void(0);"]Выслать пароль для операций на мой WM-кипер</b>[/url]</td>'; echo '</tr>'; echo '<tr>'; echo '<td height="25" align="center" colspan="2"><input type="submit" class="submit" value="Войти в аккаунт" /></td>'; echo '</tr>'; echo '</table>'; echo '</form>'; echo '</div>'; }elseif($enter_pass_oper!=$pass_oper) { echo '<fieldset class="errorp">Внимание!<br>Вы указали неправильный пароль для операций!</fieldset>'; echo '<br><br>'; echo '<div id="form">'; echo '<form action="" method="post">'; echo '<input type="hidden" name="username" value="'.$username.'">'; echo '<input type="hidden" name="password" value="'.$pass.'">'; echo '<table class="tables">'; echo '<tr align="center" height="30px"><th align="center" colspan="2" class="top">Форма авторизации</th></tr>'; echo '<tr>'; echo '<td width="50%" height="25" align="right"><b>Пароль для операций:</b></td>'; echo '<td width="50%" height="25" align="left"> <input type="password" size="20" maxlength="10" name="pass_oper" value="" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td height="25" align="center" colspan="2">Для входа в аккаунт Вам нужно указать "пароль для операций".</td>'; echo '</tr>'; echo '<tr>'; echo '<td height="25" align="center" colspan="2">[url="javascript: void(0);"]Выслать пароль для операций на мой WM-кипер</b>[/url]</td>'; echo '</tr>'; echo '<tr>'; echo '<td height="25" align="center" colspan="2"><input type="submit" class="submit" value="Войти в аккаунт" /></td>'; echo '</tr>'; echo '</table>'; echo '</form>'; echo '</div>'; } include('footer.php'); exit(); }else{ //echo "$block_wmid - $ip $lastiplog | $agent_now=$agent"; exit(); $attestat = $row['attestat']; $_SESSION["partnerid"] = $row["id"]; $_SESSION["userLog"] = $row["username"]; $_SESSION["userPas"] = md5($row["password"]); $_SESSION["WMID"] = $row["wmid"]; $_SESSION["IP"] = $ip; $_SESSION["members_url"] = getenv("HTTP_REFERER"); ?> <script type="text/javascript"> function getCookie(name) { var matches = document.cookie.match(new RegExp("(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)")) return matches ? decodeURIComponent(matches[1]) : undefined } function setCookie (name, value, expires, path, domain, secure) { document.cookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : ""); } function deleteCookie(name) { setCookie(name, null, { expires: -1 }) } setCookie('#sid', '<?=base64_encode($row["username"]);?>', "<?=(DATE("l, d-M-Y H:i:s",(time()+7776000)));?>"); </script> <?php $sql_r1 = mysql_query("SELECT `id` FROM `tb_users` WHERE `referer`='$username'"); $referals1 = mysql_num_rows($sql_r1); $sql_r2 = mysql_query("SELECT `id` FROM `tb_users` WHERE `referer2`='$username'"); $referals2 = mysql_num_rows($sql_r2); $sql_r3 = mysql_query("SELECT `id` FROM `tb_users` WHERE `referer3`='$username'"); $referals3 = mysql_num_rows($sql_r3); $rrr2 = mysql_query("SELECT `k_rb_2`, `k_rb_3` FROM `tb_users` WHERE `username`='$username'"); $rrr = mysql_fetch_array($rrr2); $referals22 = $referals2+$rrr['k_rb_2']; $referals33 = $referals3+$rrr['k_rb_3']; //$sql_user2 = mysql_query("SELECT `k_rb_2`, `k_rb_3` FROM `tb_users` WHERE `username`='$referal'"); //$row_user2 = mysql_fetch_array($sql_user2); // $k_rb_2 = $row_user2["k_rb_2"]; // $k_rb_3 = $row_user2["k_rb_3"]; //if($lastiplog!="$ip") { /* include("geoip/geoipcity.inc"); include("geoip/geoipregionvars.php"); $gi = geoip_open("geoip/GeoLiteCity.dat",GEOIP_STANDARD); $record = @geoip_record_by_addr($gi,$ip); @geoip_close($gi); $country_code = $record->country_code; */ //}else{ // $country_code = $row["country"]; //} $sql = mysql_query("SELECT `price` FROM `tb_config` WHERE `item`='reit_noactive' AND `howmany`='1'"); $reit_noactive = mysql_result($sql,0,0); $sql = mysql_query("SELECT `price` FROM `tb_config` WHERE `item`='reit_active' AND `howmany`='1'"); $reit_active = mysql_result($sql,0,0); if( $row["lastlogdate2"] < (time()-7*24*60*60) ) { $reit_add_1 = $reit_noactive; }else{ $reit_add_1 = 0; } if(DATE("d.m.Y", $row["lastlogdate2"])==DATE("d.m.Y") | $reit_add_1!=0) { $reit_add_2 = 0; }else{ $reit_add_2 = $reit_active; } $reit_add = $reit_add_1 + $reit_add_2; if(isset($_COOKIE["#sid"])) { $nicke = $_COOKIE["#sid"]; $chname = base64_decode($nicke); if(strtolower($username) != strtolower($chname)) { $date=DATE("d.m.Y в H:i"); $whyBan="Мультиаккаунт ($chname, $username)"; mysql_query("INSERT into bannedUsers (name, why, ip, date) VALUES ('$chname','$whyBan','$ip','$date')") or die(mysql_error()); mysql_query("INSERT into bannedUsers (name, why, ip, date) VALUES ('$username','$whyBan','$ip','$date')") or die(mysql_error()); } } echo '<fieldset class="okp">Авторизация прошла успешно!</fieldset>'; echo ' <script type="text/javascript"> setTimeout(location.replace("/members.php"), 3000); </script> '; echo ' <noscript><META HTTP-EQUIV="REFRESH" CONTENT="3;URL=/members.php"></noscript>'; } }else{ echo '<fieldset class="errorp">Ошибка! Логин или пароль введен не верно!</fieldset>'; } } }else{ echo '<script type="text/javascript">location.replace("/");</script>'; echo '<noscript><META HTTP-EQUIV="REFRESH" CONTENT="0;URL=/"></noscript>'; } include("footer.php"); ?>
Если ты в базу записываешь хэш, то из базы тоже получишь хэш, поэтому повторно хэшировать строку пароля не надо. Потому что хэш хэша - это уже другой хэш.
Это устранил,но ошибка: "Ошибка! Указан неправильный пароль! Пароль должен состоять не менее чем от 3 до 20 символов, и содержать только латинские символы!" не исчезла,думаю,гдето ещё чтото пропустил
Посмотрите этот пример! Только что подредактировал! Но в нем пароли,которые в базе нехешированы-авторизуются,а хешированы-нет(Ошибка:"Ошибка! Логин или пароль введен не верно!"): Код (PHP): <?php if(isset($_POST["username"]) && isset($_POST["password"])) { $password=uc($_POST['password']); if( isset($_POST['username']) ) { $pass = md5($password); } #$username = false; #$password = false; $ip = getRealIP(); $enter_pass_oper = (isset($_POST["pass_oper"]) && preg_match("|^[a-zA-Z0-9\-_-]{6,20}$|", trim($_POST["pass_oper"]))) ? uc_p($_POST["pass_oper"]) : false; if(preg_match("|^[а-яА-Яa-zA-Z0-9\-_-]{3,20}$|", trim($_POST["username"]))) { $username = htmlentities(stripslashes(strtolower(trim($_POST["username"])))); $username = str_replace("'","",$username); $username = str_replace(";","",$username); $username = str_replace("$","",$username); $eror_username = true; }else{ $eror_username = false; } if(preg_match("|^[а-яА-Яa-zA-Z0-9\-_-]{3,30}$|", trim($_POST['password']))) { $pass = htmlentities(stripslashes(strtolower(trim($_POST['password'])))); $pass = str_replace("'","",$pass); $pass = str_replace(";","",$pass); $pass = str_replace("$","",$pass); $eror_pass = true; }else{ $eror_pass = false; } if($username==false|$pass==false) echo '<fieldset class="errorp">Ошибка! Не указаны данные для авторизации!</fieldset>'; elseif($eror_username == false) echo '<fieldset class="errorp">Ошибка! Указан неправильный логин! Логин должен состоять от 3 до 20 символов, и содержать только латинские символы!</fieldset>'; elseif($eror_pass == false) echo '<fieldset class="errorp">Ошибка! Указан неправильный пароль! Пароль должен состоять не менее чем от 3 до 20 символов, и содержать только латинские символы!</fieldset>'; else{ $mysql_queries = "0"; require('config.php'); $sql = mysql_query("SELECT * FROM `tb_users` WHERE `username`='$username' AND `password`='$pass'") or die(mysql_error()); if(mysql_num_rows($sql)>0) { $row = mysql_fetch_array($sql); $partnerid = $row["id"]; $lastiplog = $row["lastiplog"]; $block_wmid = $row["block_wmid"]; $block_agent = $row["block_agent"]; $pass_oper = $row["pass_oper"]; $agent = $row["agent"]; $agent_now = getenv("HTTP_USER_AGENT"); if(strtolower($username) != strtolower($row["username"])) echo '<fieldset class="errorp">Ошибка! Логин введен не верно!</fieldset>'; elseif(strtolower($pass) != strtolower($row["password"])) echo '<fieldset class="errorp">Ошибка! Пароль введен не верно!</fieldset>'; elseif($block_wmid==1) echo '<fieldset class="errorp">Ошибка! Вы не можете войти в аккаунт используя логин/пароль! Так как Вы установили ограничение [Входить только через Login.WebMoney]</fieldset>'; elseif($block_agent==1 && ($ip!=$lastiplog | $agent_now!=$agent) && $enter_pass_oper!=$pass_oper) { ?><script type="text/javascript" src="../scripts/jquery.min.js"></script> <script type="text/javascript" src="../scripts/jqpooop.js"></script> <script language="JavaScript"> function sendchkpass(){ if (confirm("Вы собираетесь получить пароль для операций.\nСейчас будет сгенерирован новый пароль для операций, a старый будет удален из системы.\nВы хотите продолжить?")){ pass_oper("<?php echo $partnerid;?>"); } } </script><?php if($enter_pass_oper==false) { echo '<fieldset class="errorp">Внимание!<br>У Вас изменился браузер или IP-адрес, необходимо ввести пароль для операций.</fieldset>'; echo '<br><br>'; echo '<div id="form">'; echo '<form action="" method="post">'; echo '<input type="hidden" name="username" value="'.$username.'">'; echo '<input type="hidden" name="password" value="'.$pass.'">'; echo '<table class="tables">'; echo '<tr align="center" height="30px"><th align="center" colspan="2" class="top">Форма авторизации</th></tr>'; echo '<tr>'; echo '<td width="50%" height="25" align="right"><b>Пароль для операций:</b></td>'; echo '<td width="50%" height="25" align="left"> <input type="password" size="20" maxlength="10" name="pass_oper" value="" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td height="25" align="center" colspan="2">Для входа в аккаунт Вам нужно указать "пароль для операций".</td>'; echo '</tr>'; echo '<tr>'; echo '<td height="25" align="center" colspan="2">[url="javascript: void(0);"]Выслать пароль для операций на мой WM-кипер</b>[/url]</td>'; echo '</tr>'; echo '<tr>'; echo '<td height="25" align="center" colspan="2"><input type="submit" class="submit" value="Войти в аккаунт" /></td>'; echo '</tr>'; echo '</table>'; echo '</form>'; echo '</div>'; }elseif($enter_pass_oper!=$pass_oper) { echo '<fieldset class="errorp">Внимание!<br>Вы указали неправильный пароль для операций!</fieldset>'; echo '<br><br>'; echo '<div id="form">'; echo '<form action="" method="post">'; echo '<input type="hidden" name="username" value="'.$username.'">'; echo '<input type="hidden" name="password" value="'.$pass.'">'; echo '<table class="tables">'; echo '<tr align="center" height="30px"><th align="center" colspan="2" class="top">Форма авторизации</th></tr>'; echo '<tr>'; echo '<td width="50%" height="25" align="right"><b>Пароль для операций:</b></td>'; echo '<td width="50%" height="25" align="left"> <input type="password" size="20" maxlength="10" name="pass_oper" value="" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td height="25" align="center" colspan="2">Для входа в аккаунт Вам нужно указать "пароль для операций".</td>'; echo '</tr>'; echo '<tr>'; echo '<td height="25" align="center" colspan="2">[url="javascript: void(0);"]Выслать пароль для операций на мой WM-кипер</b>[/url]</td>'; echo '</tr>'; echo '<tr>'; echo '<td height="25" align="center" colspan="2"><input type="submit" class="submit" value="Войти в аккаунт" /></td>'; echo '</tr>'; echo '</table>'; echo '</form>'; echo '</div>'; } include('footer.php'); exit(); }else{ //echo "$block_wmid - $ip $lastiplog | $agent_now=$agent"; exit(); $attestat = $row['attestat']; $_SESSION["partnerid"] = $row["id"]; $_SESSION["userLog"] = $row["username"]; $_SESSION["userPas"] = md5($row["password"]); $_SESSION["WMID"] = $row["wmid"]; $_SESSION["IP"] = $ip; $_SESSION["members_url"] = getenv("HTTP_REFERER"); ?> <script type="text/javascript"> function getCookie(name) { var matches = document.cookie.match(new RegExp("(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)")) return matches ? decodeURIComponent(matches[1]) : undefined } function setCookie (name, value, expires, path, domain, secure) { document.cookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : ""); } function deleteCookie(name) { setCookie(name, null, { expires: -1 }) } setCookie('#sid', '<?=base64_encode($row["username"]);?>', "<?=(DATE("l, d-M-Y H:i:s",(time()+7776000)));?>"); </script> <?php $sql_r1 = mysql_query("SELECT `id` FROM `tb_users` WHERE `referer`='$username'"); $referals1 = mysql_num_rows($sql_r1); $sql_r2 = mysql_query("SELECT `id` FROM `tb_users` WHERE `referer2`='$username'"); $referals2 = mysql_num_rows($sql_r2); $sql_r3 = mysql_query("SELECT `id` FROM `tb_users` WHERE `referer3`='$username'"); $referals3 = mysql_num_rows($sql_r3); $rrr2 = mysql_query("SELECT `k_rb_2`, `k_rb_3` FROM `tb_users` WHERE `username`='$username'"); $rrr = mysql_fetch_array($rrr2); $referals22 = $referals2+$rrr['k_rb_2']; $referals33 = $referals3+$rrr['k_rb_3']; //$sql_user2 = mysql_query("SELECT `k_rb_2`, `k_rb_3` FROM `tb_users` WHERE `username`='$referal'"); //$row_user2 = mysql_fetch_array($sql_user2); // $k_rb_2 = $row_user2["k_rb_2"]; // $k_rb_3 = $row_user2["k_rb_3"]; //if($lastiplog!="$ip") { /* include("geoip/geoipcity.inc"); include("geoip/geoipregionvars.php"); $gi = geoip_open("geoip/GeoLiteCity.dat",GEOIP_STANDARD); $record = @geoip_record_by_addr($gi,$ip); @geoip_close($gi); $country_code = $record->country_code; */ //}else{ // $country_code = $row["country"]; //} $sql = mysql_query("SELECT `price` FROM `tb_config` WHERE `item`='reit_noactive' AND `howmany`='1'"); $reit_noactive = mysql_result($sql,0,0); $sql = mysql_query("SELECT `price` FROM `tb_config` WHERE `item`='reit_active' AND `howmany`='1'"); $reit_active = mysql_result($sql,0,0); if( $row["lastlogdate2"] < (time()-7*24*60*60) ) { $reit_add_1 = $reit_noactive; }else{ $reit_add_1 = 0; } if(DATE("d.m.Y", $row["lastlogdate2"])==DATE("d.m.Y") | $reit_add_1!=0) { $reit_add_2 = 0; }else{ $reit_add_2 = $reit_active; } $reit_add = $reit_add_1 + $reit_add_2; if(isset($_COOKIE["#sid"])) { $nicke = $_COOKIE["#sid"]; $chname = base64_decode($nicke); if(strtolower($username) != strtolower($chname)) { $date=DATE("d.m.Y в H:i"); $whyBan="Мультиаккаунт ($chname, $username)"; mysql_query("INSERT into bannedUsers (name, why, ip, date) VALUES ('$chname','$whyBan','$ip','$date')") or die(mysql_error()); mysql_query("INSERT into bannedUsers (name, why, ip, date) VALUES ('$username','$whyBan','$ip','$date')") or die(mysql_error()); } } echo '<fieldset class="okp">Авторизация прошла успешно!</fieldset>'; echo ' <script type="text/javascript"> setTimeout(location.replace("/members.php"), 3000); </script> '; echo ' <noscript><META HTTP-EQUIV="REFRESH" CONTENT="3;URL=/members.php"></noscript>'; } }else{ echo '<fieldset class="errorp">Ошибка! Логин или пароль введен не верно!</fieldset>'; } } }else{ echo '<script type="text/javascript">location.replace("/");</script>'; echo '<noscript><META HTTP-EQUIV="REFRESH" CONTENT="0;URL=/"></noscript>'; } include("footer.php");
Как то с формой для регистрации для него с md5 проблем не возникло-тестил и у меня при реге в БД пароли уже хешированы записывались,а с авторизационным окном какая то проблема неизвестная... Добавлено спустя 1 минуту: Да,здесь косячек-не усмотрел,но,боюсь, от этого проблема не изменилась(
Код в целом выглядит ужасно и содержит ошибки, не стоит включать его в таком виде в продукт. Можно попробовать написать его заново.
md5 уже не безопасен, используй https://php.net/manual/ru/book.password.php https://habrahabr.ru/post/194972/
Понятно! А всё таки куда добавить в этот скрипт функцию md5,чтоб было считывание хеша с БД? Вот теперь исходной код: Код (PHP): <?php $pagetitle="Авторизация"; include('header.php'); require_once('.zsecurity.php'); require('config.php'); if(isset($_POST["username"]) && isset($_POST["password"])) { $username = false; $password = false; $ip = getRealIP(); $enter_pass_oper = (isset($_POST["pass_oper"]) && preg_match("|^[a-zA-Z0-9\-_-]{6,20}$|", trim($_POST["pass_oper"]))) ? uc_p($_POST["pass_oper"]) : false; if(preg_match("|^[а-яА-Яa-zA-Z0-9\-_-]{3,20}$|", trim($_POST["username"]))) { $username = htmlentities(stripslashes(strtolower(trim($_POST["username"])))); $username = str_replace("'","",$username); $username = str_replace(";","",$username); $username = str_replace("$","",$username); $eror_username = true; }else{ $eror_username = false; } if(preg_match("|^[а-яА-Яa-zA-Z0-9\-_-]{3,20}$|", trim($_POST["password"]))) { $password = htmlentities(stripslashes(strtolower(trim($_POST["password"])))); $password = str_replace("'","",$password); $password = str_replace(";","",$password); $password = str_replace("$","",$password); $eror_password = true; }else{ $eror_password = false; } if($username==false|$password==false) echo '<fieldset class="errorp">Ошибка! Не указаны данные для авторизации!</fieldset>'; elseif($eror_username == false) echo '<fieldset class="errorp">Ошибка! Указан неправильный логин! Логин должен состоять от 3 до 20 символов, и содержать только латинские символы!</fieldset>'; elseif($eror_password == false) echo '<fieldset class="errorp">Ошибка! Указан неправильный пароль! Пароль должен состоять не менее чем от 3 до 20 символов, и содержать только латинские символы!</fieldset>'; else{ $mysql_queries = "0"; require('config.php'); $sql = mysql_query("SELECT * FROM `tb_users` WHERE `username`='$username' AND `password`='$password'") or die(mysql_error()); if(mysql_num_rows($sql)>0) { $row = mysql_fetch_array($sql); $partnerid = $row["id"]; $lastiplog = $row["lastiplog"]; $block_wmid = $row["block_wmid"]; $block_agent = $row["block_agent"]; $pass_oper = $row["pass_oper"]; $agent = $row["agent"]; $agent_now = getenv("HTTP_USER_AGENT"); if(strtolower($username) != strtolower($row["username"])) echo '<fieldset class="errorp">Ошибка! Логин введен не верно!</fieldset>'; elseif(strtolower($password) != strtolower($row["password"])) echo '<fieldset class="errorp">Ошибка! Пароль введен не верно!</fieldset>'; elseif($block_wmid==1) echo '<fieldset class="errorp">Ошибка! Вы не можете войти в аккаунт используя логин/пароль! Так как Вы установили ограничение [Входить только через Login.WebMoney]</fieldset>'; elseif($block_agent==1 && ($ip!=$lastiplog | $agent_now!=$agent) && $enter_pass_oper!=$pass_oper) { ?><script type="text/javascript" src="../scripts/jquery.min.js"></script> <script type="text/javascript" src="../scripts/jqpooop.js"></script> <script language="JavaScript"> function sendchkpass(){ if (confirm("Вы собираетесь получить пароль для операций.\nСейчас будет сгенерирован новый пароль для операций, a старый будет удален из системы.\nВы хотите продолжить?")){ pass_oper("<?php echo $partnerid;?>"); } } </script><?php if($enter_pass_oper==false) { echo '<fieldset class="errorp">Внимание!<br>У Вас изменился браузер или IP-адрес, необходимо ввести пароль для операций.</fieldset>'; echo '<br><br>'; echo '<div id="form">'; echo '<form action="" method="post">'; echo '<input type="hidden" name="username" value="'.$username.'">'; echo '<input type="hidden" name="password" value="'.$password.'">'; echo '<table class="tables">'; echo '<tr align="center" height="30px"><th align="center" colspan="2" class="top">Форма авторизации</th></tr>'; echo '<tr>'; echo '<td width="50%" height="25" align="right"><b>Пароль для операций:</b></td>'; echo '<td width="50%" height="25" align="left"> <input type="password" size="20" maxlength="10" name="pass_oper" value="" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td height="25" align="center" colspan="2">Для входа в аккаунт Вам нужно указать "пароль для операций".</td>'; echo '</tr>'; echo '<tr>'; echo '<td height="25" align="center" colspan="2">[url="javascript: void(0);"]Выслать пароль для операций на мой WM-кипер</b>[/url]</td>'; echo '</tr>'; echo '<tr>'; echo '<td height="25" align="center" colspan="2"><input type="submit" class="submit" value="Войти в аккаунт" /></td>'; echo '</tr>'; echo '</table>'; echo '</form>'; echo '</div>'; }elseif($enter_pass_oper!=$pass_oper) { echo '<fieldset class="errorp">Внимание!<br>Вы указали неправильный пароль для операций!</fieldset>'; echo '<br><br>'; echo '<div id="form">'; echo '<form action="" method="post">'; echo '<input type="hidden" name="username" value="'.$username.'">'; echo '<input type="hidden" name="password" value="'.$password.'">'; echo '<table class="tables">'; echo '<tr align="center" height="30px"><th align="center" colspan="2" class="top">Форма авторизации</th></tr>'; echo '<tr>'; echo '<td width="50%" height="25" align="right"><b>Пароль для операций:</b></td>'; echo '<td width="50%" height="25" align="left"> <input type="password" size="20" maxlength="10" name="pass_oper" value="" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td height="25" align="center" colspan="2">Для входа в аккаунт Вам нужно указать "пароль для операций".</td>'; echo '</tr>'; echo '<tr>'; echo '<td height="25" align="center" colspan="2">[url="javascript: void(0);"]Выслать пароль для операций на мой WM-кипер</b>[/url]</td>'; echo '</tr>'; echo '<tr>'; echo '<td height="25" align="center" colspan="2"><input type="submit" class="submit" value="Войти в аккаунт" /></td>'; echo '</tr>'; echo '</table>'; echo '</form>'; echo '</div>'; } include('footer.php'); exit(); }else{ //echo "$block_wmid - $ip $lastiplog | $agent_now=$agent"; exit(); $attestat = $row['attestat']; $_SESSION["partnerid"] = $row["id"]; $_SESSION["userLog"] = $row["username"]; $_SESSION["userPas"] = md5($row["password"]); $_SESSION["WMID"] = $row["wmid"]; $_SESSION["IP"] = $ip; $_SESSION["members_url"] = getenv("HTTP_REFERER"); ?> <script type="text/javascript"> function getCookie(name) { var matches = document.cookie.match(new RegExp("(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)")) return matches ? decodeURIComponent(matches[1]) : undefined } function setCookie (name, value, expires, path, domain, secure) { document.cookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : ""); } function deleteCookie(name) { setCookie(name, null, { expires: -1 }) } setCookie('#sid', '<?=base64_encode($row["username"]);?>', "<?=(DATE("l, d-M-Y H:i:s",(time()+7776000)));?>"); </script> <?php $sql_r1 = mysql_query("SELECT `id` FROM `tb_users` WHERE `referer`='$username'"); $referals1 = mysql_num_rows($sql_r1); $sql_r2 = mysql_query("SELECT `id` FROM `tb_users` WHERE `referer2`='$username'"); $referals2 = mysql_num_rows($sql_r2); $sql_r3 = mysql_query("SELECT `id` FROM `tb_users` WHERE `referer3`='$username'"); $referals3 = mysql_num_rows($sql_r3); $rrr2 = mysql_query("SELECT `k_rb_2`, `k_rb_3` FROM `tb_users` WHERE `username`='$username'"); $rrr = mysql_fetch_array($rrr2); $referals22 = $referals2+$rrr['k_rb_2']; $referals33 = $referals3+$rrr['k_rb_3']; //$sql_user2 = mysql_query("SELECT `k_rb_2`, `k_rb_3` FROM `tb_users` WHERE `username`='$referal'"); //$row_user2 = mysql_fetch_array($sql_user2); // $k_rb_2 = $row_user2["k_rb_2"]; // $k_rb_3 = $row_user2["k_rb_3"]; //if($lastiplog!="$ip") { include("geoip/geoipcity.inc"); include("geoip/geoipregionvars.php"); $gi = geoip_open("geoip/GeoLiteCity.dat",GEOIP_STANDARD); $record = @geoip_record_by_addr($gi,$ip); @geoip_close($gi); $country_code = $record->country_code; //}else{ // $country_code = $row["country"]; //} $sql = mysql_query("SELECT `price` FROM `tb_config` WHERE `item`='reit_noactive' AND `howmany`='1'"); $reit_noactive = mysql_result($sql,0,0); $sql = mysql_query("SELECT `price` FROM `tb_config` WHERE `item`='reit_active' AND `howmany`='1'"); $reit_active = mysql_result($sql,0,0); if( $row["lastlogdate2"] < (time()-7*24*60*60) ) { $reit_add_1 = $reit_noactive; }else{ $reit_add_1 = 0; } if(DATE("d.m.Y", $row["lastlogdate2"])==DATE("d.m.Y") | $reit_add_1!=0) { $reit_add_2 = 0; }else{ $reit_add_2 = $reit_active; } $reit_add = $reit_add_1 + $reit_add_2; if(isset($_COOKIE["#sid"])) { $nicke = $_COOKIE["#sid"]; $chname = base64_decode($nicke); if(strtolower($username) != strtolower($chname)) { $date=DATE("d.m.Y в H:i"); $whyBan="Мультиаккаунт ($chname, $username)"; mysql_query("INSERT into bannedUsers (name, why, ip, date) VALUES ('$chname','$whyBan','$ip','$date')") or die(mysql_error()); mysql_query("INSERT into bannedUsers (name, why, ip, date) VALUES ('$username','$whyBan','$ip','$date')") or die(mysql_error()); } } echo '<fieldset class="okp">Авторизация прошла успешно!</fieldset>'; echo ' <script type="text/javascript"> setTimeout(location.replace("/members.php"), 3000); </script> '; echo ' <noscript><META HTTP-EQUIV="REFRESH" CONTENT="3;URL=/members.php"></noscript>'; } }else{ echo '<fieldset class="errorp">Ошибка! Логин или пароль введен не верно!</fieldset>'; } } }else{ echo '<script type="text/javascript">location.replace("/");</script>'; echo '<noscript><META HTTP-EQUIV="REFRESH" CONTENT="0;URL=/"></noscript>'; } include("footer.php"); ?> Мне сейчас главное,чтоб с этого кода происходила конвертация открытого пароля,вводимого на странице с хешированого вида в БД,а сам код и остальное,позже сам усовершенствую!
угу. вот и попробуй те функции, которые тебе сказали заюзать. Они работают проще, ничего не требуется соображать.
во-первых, "не будет" - раздельно. во-вторых, как раз начиная с версии 5.5 указанные функции были добавлены в ядро пхп. то есть немного ошибочное утверждение.
спасибо за подсказку-ребенок клавишу пробела сломал,иногда заедает! У меня на данный момент пхп 5.2. Но вопрос не в этом,неужели никто не сможет помочь,чтоб именно этот код считывал пароль с md5,а не подсказывал о залипании клавиш? Реально,перепробовал все методы подстановок в этом коде и...или пароль не верен,или все равно заходит под открытым паролем!Регистрационную форму получилось написать,чтоб пароль записывало в md5,а вот лог форма очень таки интересной попалась!
там жуткий говнокод. тебе уже предложили переписать всё. желательно с нуля. например конструкция preg_match("|^[а-яА-Яa-zA-Z0-9\-_-]{3,30}$|", trim(md5($_POST['password']))) вообще не имеет смысла. можно было сделать сразу if(0) и всегда получать аналогичное НЕ срабатывание условия. почему? потому что сначала ты применяешь хэш к паролю. мд5 возвращает 32 шестнадцатиричных символа. то есть от нуля до девятки и от эй до эф. потом ты делаешь трим - удаление пробельный символов. которых как ты понимаешь там нет. а потом ты сравниваешь строку длиной 32 символа с разрешенными "от 3 до 30" и получаешь отрицательный ответ по правой границе. ну и вот эта каша из выводов echo и-далее-хтмл-код - можно заменить просто на выход из режима пхп и работой с хтмл исходником.
ты делаешь не то, что ты думаешь. И когда оно заработает, ты почти всегда будешь получать вроде даже результат. Но это неправильно так делать. Проще всем один пароль раздать и забить.
Я вас всех прекрасно понял и написал новую форму по этим же данным!Но проблема со старыми данными осталась( Весь код страницы,наверно не буду выводить,но места,где меня беспокоят в скрипте проверки вводных данных,покажу: Вот вывел переменные с поста: Код (PHP): session_start();// вся процедура работает на сессиях if (isset($_POST['logusername'])) { $username = $_POST['logusername']; if ($username == '') { unset($username);} } if (isset($_POST['logpassword'])) { $password=$_POST['logpassword']; if ($password =='') { unset($password);}} if (empty($username) or empty($password)) { echo '<fieldset class="errorp"> Введите правильные логин и пароль! </fieldset>';} А здесь я начинаю обрабатывать и сверять данные с БД (пароль в БД уже хеширован в md5): Код (PHP): $username = stripslashes(htmlspecialchars(trim($username))); ///здесь вписал md5 $password = md5(stripslashes(htmlspecialchars(trim($password)))); include("config.php"); $sql=mysql_query("SELECT * FROM `tb_users` WHERE `email`='$username' and `password`='$password'"); $row=mysql_fetch_array($sql); if(empty($row["password"])){ echo '<fieldset class="errorp">Извините, введённый вами пароль неверный! </fieldset>'; } Извините, введённый вами пароль неверный!-эта ошибка и появляется,как только не менял значения! Но,ещё самое интересное здесь осталось со старого кода дальше по скрипту в создании самих сессий: Код (PHP): if ($row["password"]==$password) { //если пароли совпадают-запускаем юзеру сессию! $_SESSION["partnerid"] = $row["id"]; $_SESSION["userLog"] = $row["username"]; $_SESSION["userPas"] = md5($row["password"]); $_SESSION["WMID"] = $row["wmid"]; $_SESSION["IP"] = $ip; $_SESSION["members_url"] = getenv("HTTP_REFERER"); Вот в этом моменте $_SESSION["userPas"] = md5($row["password"]); без md5 авторизация не проходит даж с открытыми паролями в БД Как быть? Уже не знаю куда что и вставить...Почему не хочет сверять хеши с БД или же что другое?
надо лучше отлаживать. каждое значение. ошибка на поверхности. совет: не надо уродовать логин-пароль функциями, назначения которых не понимаешь. для эскейпа строки перед подстановкой в текст запроса - есть специально созданная для этих целей функция mysqli_real_escape_string
Проверил! Написал так: Код (PHP): $username = mysql_real_escape_string($username); ///на переменную $pass не обращайте внимания-изменена с принятого поста! $password = mysql_real_escape_string(md5($pass)); $sql=mysql_query("SELECT * FROM `tb_users` WHERE `email`='".mysql_real_escape_string($username)."' and `password`='".mysql_real_escape_string($password)."'"); $row=mysql_fetch_array($sql); if(empty($row["password"])){ //если пользователя с 'этим логином нет include('header.php'); echo '<fieldset class="errorp">Извините, введённый вами пароль неверный! </fieldset>'; } Проверил подстановкой вместо select запросом в бд через update подстановкой тех же значений! в базу записались идентичные данные, как и к этому запросу select . Тоесть здесь всё ОК!) Но что то не так с этим if(empty($row["password"])){. Передает ошибку соответствующую ошибку,а когда меняю на if($row["password"]){,то возникает новая ошибка(к примеру,"ВСЕ ПЛОХО" в нижепоследующем значении : if ($row["password"]==$password) { ..."ВСЕ ОК"...}else{ ..."ВСЕ ПЛОХО"} Добавлено спустя 4 минуты 18 секунд: Извините,ошибок у меня в грамматике много)) на скорую руку печатал)
зачем эскейпить результат выполнения функции md5 если возвращаемые ею символы по определению не могут содержать в себе уязвимостей? это 32 шестнадцатеричных символа. то есть нумералы и от эй до эф. всегда.