Обучение/Помощь новичкам | дырки
тут показывает дырку,как исправить?
if (isset($_POST['regok'])){
if ($_POST['pass1']!=NULL && $_POST['nick']!=NULL && $_POST['pass2']!=NULL && $_POST['ank_mail']!=NULL)
{
if (!isset($_POST['ank_mail']) || $_POST['ank_mail']==NULL){err_game('Необходимо ввести Email!');}
elseif (!preg_match('#^[A-z0-9-\._]+@[A-z0-9]{2,}\.[A-z]{2,4}$#ui',$_POST['ank_mail'])){err_game('Неверный формат Email!');}
if (isset($_POST['regok'])){
if ($_POST['pass1']!=NULL && $_POST['nick']!=NULL && $_POST['pass2']!=NULL && $_POST['ank_mail']!=NULL)
{
if (!isset($_POST['ank_mail']) || $_POST['ank_mail']==NULL){err_game('Необходимо ввести Email!');}
elseif (!preg_match('#^[A-z0-9-\._]+@[A-z0-9]{2,}\.[A-z]{2,4}$#ui',$_POST['ank_mail'])){err_game('Неверный формат Email!');}
Тут
$adds="From: \"ADMIN@$_SERVER[HTTP_HOST]\" <ADMIN@$_SERVER[HTTP_HOST]>\n";
$adds .= "Content-Type: text/html; charset=utf-8\n";
mail($user2['ank_mail'],'=?utf-8?B?'.base64_encode($subject).'?=',$regmail,$adds);
mysql_query("UPDATE `user` SET `sess` = '".$new_sess."' WHERE `id` = '$user2[id]' LIMIT 1");
if($_SESSION['style']=='web.css'){
$err_pass="Ссылка отправлена на e-mail \"$user2[ank_mail]\"";
}
else{err_sms("Ссылка отправлена на e-mail \"$user2[ank_mail]\"");
}
}
}
$adds="From: \"ADMIN@$_SERVER[HTTP_HOST]\" <ADMIN@$_SERVER[HTTP_HOST]>\n";
$adds .= "Content-Type: text/html; charset=utf-8\n";
mail($user2['ank_mail'],'=?utf-8?B?'.base64_encode($subject).'?=',$regmail,$adds);
mysql_query("UPDATE `user` SET `sess` = '".$new_sess."' WHERE `id` = '$user2[id]' LIMIT 1");
if($_SESSION['style']=='web.css'){
$err_pass="Ссылка отправлена на e-mail \"$user2[ank_mail]\"";
}
else{err_sms("Ссылка отправлена на e-mail \"$user2[ank_mail]\"");
}
}
}
вот весь код
if ((!isset($_SESSION['refer']) || $_SESSION['refer']==NULL)
&& isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER']!=NULL &&
!ereg('mail\.php',$_SERVER['HTTP_REFERER']))
$_SESSION['refer']=str_replace('&','&',ereg_replace('^http://[^/]*/','/', $_SERVER['HTTP_REFERER']));
if (isset($_POST['regok'])){
if ($_POST['pass1']!=NULL && $_POST['nick']!=NULL && $_POST['pass2']!=NULL && $_POST['ank_mail']!=NULL)
{
if (!isset($_POST['ank_mail']) || $_POST['ank_mail']==NULL){err_game('Необходимо ввести Email!');}
elseif (!preg_match('#^[A-z0-9-\._]+@[A-z0-9]{2,}\.[A-z]{2,4}$#ui',$_POST['ank_mail'])){err_game('Неверный формат Email!');}
elseif(mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `ank_mail` = '".my_esc($_POST['ank_mail'])."'"),0)!=0){err_game('Пользователь с этим E-mail уже зарегистрирован!');}
elseif(mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `nick` = '".my_esc($_POST['nick'])."' LIMIT 1"),0)!=0){err_game('Этот ник уже зарегистрирован!');}
elseif( !preg_match("#^([A-zА-я0-9\-\_\ ])+$#ui", $_POST['nick'])){err_game('В нике присутствуют запрещенные символы!');}
elseif(preg_match("#[a-z]+#ui", $_POST['nick']) && preg_match("#[а-я]+#ui", $_POST['nick'])){err_game('Разрешается использовать символы только русского или только английского алфавита!');}
elseif(preg_match("#(^\ )|(\ $)#ui", $_POST['nick'])){err_game('Запрещено использовать пробел в начале и конце ника!');}
elseif(strlen2($_POST['nick'])<4){err_game('Короткий ник!');}
elseif(strlen2($_POST['nick'])>16){err_game('Длина ника превышает 16 символов!');}
elseif(strlen2($_POST['pass1'])<6){err_game('По соображениям безопасности пароль не может быть короче 6-ти символов!');}
elseif(strlen2($_POST['pass1'])>32){err_game('Длина пароля превышает 32 символа!');}
elseif($_POST['pass1']!=$_POST['pass2']){err_game('Пароли не совпадают!');}
else{
mysql_query("INSERT INTO `user` (`nick`, `pass`, `date_reg`, `date_last`, `pol`, `ank_mail`) values('".$_POST['nick']."', '".shif($_POST['pass1'])."', '$time', '$time', '".intval($_POST['pol'])."','".$_POST['ank_mail']."')",$db);
mysql_query("UPDATE `tanks` SET `ank_mail` = '".$_POST['ank_mail']."' WHERE `id_u` = '$user[id]' LIMIT 1");
$user=mysql_fetch_assoc(mysql_query("SELECT * FROM `user` WHERE `nick` = '".my_esc($_POST['nick'])."' AND `pass` = '".shif($_POST['pass1'])."' LIMIT 1"));
$_SESSION['id_user']=$user['id'];
setcookie('id_user', $user['id'], time()+60*60*24*365);
setcookie('pass', cookie_encrypt($_POST['pass1'],$user['id']), time()+60*60*24*365);
if (isset($_SESSION['ref'])) {
mysql_query("INSERT INTO `referals` SET `id_user` = '".$_SESSION['ref']."', `id_ref` = '".$_SESSION['id_user']."', `time` = '".time()."'");
unset($_SESSION['ref']);
if ((!isset($_SESSION['refer']) || $_SESSION['refer']==NULL)
&& isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER']!=NULL &&
!ereg('mail\.php',$_SERVER['HTTP_REFERER']))
$_SESSION['refer']=str_replace('&','&',ereg_replace('^http://[^/]*/','/', $_SERVER['HTTP_REFERER']));
if (isset($_POST['regok'])){
if ($_POST['pass1']!=NULL && $_POST['nick']!=NULL && $_POST['pass2']!=NULL && $_POST['ank_mail']!=NULL)
{
if (!isset($_POST['ank_mail']) || $_POST['ank_mail']==NULL){err_game('Необходимо ввести Email!');}
elseif (!preg_match('#^[A-z0-9-\._]+@[A-z0-9]{2,}\.[A-z]{2,4}$#ui',$_POST['ank_mail'])){err_game('Неверный формат Email!');}
elseif(mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `ank_mail` = '".my_esc($_POST['ank_mail'])."'"),0)!=0){err_game('Пользователь с этим E-mail уже зарегистрирован!');}
elseif(mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `nick` = '".my_esc($_POST['nick'])."' LIMIT 1"),0)!=0){err_game('Этот ник уже зарегистрирован!');}
elseif( !preg_match("#^([A-zА-я0-9\-\_\ ])+$#ui", $_POST['nick'])){err_game('В нике присутствуют запрещенные символы!');}
elseif(preg_match("#[a-z]+#ui", $_POST['nick']) && preg_match("#[а-я]+#ui", $_POST['nick'])){err_game('Разрешается использовать символы только русского или только английского алфавита!');}
elseif(preg_match("#(^\ )|(\ $)#ui", $_POST['nick'])){err_game('Запрещено использовать пробел в начале и конце ника!');}
elseif(strlen2($_POST['nick'])<4){err_game('Короткий ник!');}
elseif(strlen2($_POST['nick'])>16){err_game('Длина ника превышает 16 символов!');}
elseif(strlen2($_POST['pass1'])<6){err_game('По соображениям безопасности пароль не может быть короче 6-ти символов!');}
elseif(strlen2($_POST['pass1'])>32){err_game('Длина пароля превышает 32 символа!');}
elseif($_POST['pass1']!=$_POST['pass2']){err_game('Пароли не совпадают!');}
else{
mysql_query("INSERT INTO `user` (`nick`, `pass`, `date_reg`, `date_last`, `pol`, `ank_mail`) values('".$_POST['nick']."', '".shif($_POST['pass1'])."', '$time', '$time', '".intval($_POST['pol'])."','".$_POST['ank_mail']."')",$db);
mysql_query("UPDATE `tanks` SET `ank_mail` = '".$_POST['ank_mail']."' WHERE `id_u` = '$user[id]' LIMIT 1");
$user=mysql_fetch_assoc(mysql_query("SELECT * FROM `user` WHERE `nick` = '".my_esc($_POST['nick'])."' AND `pass` = '".shif($_POST['pass1'])."' LIMIT 1"));
$_SESSION['id_user']=$user['id'];
setcookie('id_user', $user['id'], time()+60*60*24*365);
setcookie('pass', cookie_encrypt($_POST['pass1'],$user['id']), time()+60*60*24*365);
if (isset($_SESSION['ref'])) {
mysql_query("INSERT INTO `referals` SET `id_user` = '".$_SESSION['ref']."', `id_ref` = '".$_SESSION['id_user']."', `time` = '".time()."'");
unset($_SESSION['ref']);
как их закрыть?а то я не умею
$q = mysql_query("SELECT * FROM `user` WHERE `nick` = '".my_esc($_POST['nick'])."' LIMIT 1");
$user2 = mysql_fetch_assoc($q);
$new_sess=substr(md5(passgen()), 0, 20);
$subject = "Восстановление пароля TANKON.MOBI";
$regmail = "Здравствуйте $user2[nick]<br />
<h2>Если вы не запрашивали восстановление пароля, просто удалите это сообщение</h2><br />
<a href='http://$_SERVER[HTTP_HOST]/pass?id=$user2[id]&set_new=$new_sess'><h1>Кликните чтобы сменить пароль</h1></a><br />
Данная ссылка действительна до первой авторизации в игре под аккаунтом $user2[nick]<br />
С уважением, администрация сайта tanki.mobi<br />
";
$adds="From: \"ADMIN@$_SERVER[HTTP_HOST]\" <ADMIN@$_SERVER[HTTP_HOST]>\n";
$adds .= "Content-Type: text/html; charset=utf-8\n";
mail($user2['ank_mail'],'=?utf-8?B?'.base64_encode($subject).'?=',$regmail,$adds);
mysql_query("UPDATE `user` SET `sess` = '".$new_sess."' WHERE `id` = '$user2[id]' LIMIT 1");
if($_SESSION['style']=='web.css'){
$err_pass="Ссылка отправлена на e-mail \"$user2[ank_mail]\"";
}
else{err_sms("Ссылка отправлена на e-mail \"$user2[ank_mail]\"");
}
}
}
if (isset($_GET['id']) && isset($_GET['set_new']) && strlen($_GET['set_new'])==20 &&
mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `id` = '".intval($_GET['id'])."' AND `sess` = '".my_esc($_GET['set_new'])."'"), 0)==1)
{
$q = mysql_query("SELECT * FROM `user` WHERE `id` = '".intval($_GET['id'])."' LIMIT 1");
$user2 = mysql_fetch_assoc($q);
if (isset($_POST['pass1']) && isset($_POST['pass2']))
{
if (strlen2($_POST['pass1'])<6){err_sms("Минимум 6 символов");}
elseif(strlen2($_POST['pass1'])>32){err_sms("Максимум 32 символа");}
elseif($_POST['pass1']!=$_POST['pass2']){err_sms("Новый пароль не совпадает с подтверждением");}
else{
setcookie('id_user', $user2['id'], time()+60*60*24*365);
mysql_query("UPDATE `user` SET `pass` = '".shif($_POST['pass1'])."' WHERE `id` = '$user2[id]' LIMIT 1");
setcookie('pass', cookie_encrypt($_POST['pass1'],$user2['id']), time()+60*60*24*365);
err_sms("Пароль успешно изменен");
header("Location:/");
}
}
$user2 = mysql_fetch_assoc($q);
$new_sess=substr(md5(passgen()), 0, 20);
$subject = "Восстановление пароля TANKON.MOBI";
$regmail = "Здравствуйте $user2[nick]<br />
<h2>Если вы не запрашивали восстановление пароля, просто удалите это сообщение</h2><br />
<a href='http://$_SERVER[HTTP_HOST]/pass?id=$user2[id]&set_new=$new_sess'><h1>Кликните чтобы сменить пароль</h1></a><br />
Данная ссылка действительна до первой авторизации в игре под аккаунтом $user2[nick]<br />
С уважением, администрация сайта tanki.mobi<br />
";
$adds="From: \"ADMIN@$_SERVER[HTTP_HOST]\" <ADMIN@$_SERVER[HTTP_HOST]>\n";
$adds .= "Content-Type: text/html; charset=utf-8\n";
mail($user2['ank_mail'],'=?utf-8?B?'.base64_encode($subject).'?=',$regmail,$adds);
mysql_query("UPDATE `user` SET `sess` = '".$new_sess."' WHERE `id` = '$user2[id]' LIMIT 1");
if($_SESSION['style']=='web.css'){
$err_pass="Ссылка отправлена на e-mail \"$user2[ank_mail]\"";
}
else{err_sms("Ссылка отправлена на e-mail \"$user2[ank_mail]\"");
}
}
}
if (isset($_GET['id']) && isset($_GET['set_new']) && strlen($_GET['set_new'])==20 &&
mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `id` = '".intval($_GET['id'])."' AND `sess` = '".my_esc($_GET['set_new'])."'"), 0)==1)
{
$q = mysql_query("SELECT * FROM `user` WHERE `id` = '".intval($_GET['id'])."' LIMIT 1");
$user2 = mysql_fetch_assoc($q);
if (isset($_POST['pass1']) && isset($_POST['pass2']))
{
if (strlen2($_POST['pass1'])<6){err_sms("Минимум 6 символов");}
elseif(strlen2($_POST['pass1'])>32){err_sms("Максимум 32 символа");}
elseif($_POST['pass1']!=$_POST['pass2']){err_sms("Новый пароль не совпадает с подтверждением");}
else{
setcookie('id_user', $user2['id'], time()+60*60*24*365);
mysql_query("UPDATE `user` SET `pass` = '".shif($_POST['pass1'])."' WHERE `id` = '$user2[id]' LIMIT 1");
setcookie('pass', cookie_encrypt($_POST['pass1'],$user2['id']), time()+60*60*24*365);
err_sms("Пароль успешно изменен");
header("Location:/");
}
}
смотрите 2 полных кода
.Intval($_POST['pass1']). Вотак закрывать
T-fest , где это прописывать надо?
.Intval ето миняеш на нужный то как пример я написал цыфры ето один а на вод цфр и буков другой
T-fest , покажи на моем коде,чтоб предстовление иметь
Стр.: 1, 2