−1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
<?php include "init.php"; ?>
<?php
if(trim($_GET['mode'])=='ajax'){
header('Content-Type: application/json; charset=utf-8');
if(trim($_POST['action'])==htmlspecialchars(trim($_GET['script']))){
$result=array();
$result['errors']=array();
if(trim($_POST['email'])==''){
$result['errors']['email']=l('login_error_email_empty');
} else {
$check=mysql_query("SELECT * FROM `users` WHERE `email`='"._F($_POST['email'])."' OR (`phone`!='' AND `phone`='"._F(preg_replace('/\D/', '', $_POST['email']))."');");
if(mysql_num_rows($check)){
$user=mysql_fetch_assoc($check);
} else {
$result['errors']['email']=l('login_error_email_inexists');
}
}
if(trim($_POST['password'])==''){
$result['errors']['password']=l('login_error_password_empty');
} elseif(mysql_num_rows($check) && $user['password']!=md5(trim($_POST['password']))){
$result['errors']['password']=l('login_error_password_incorrect');
} elseif($user['active']=='0'){
$result['errors']['form']=l('login_error_account_inactive');
} elseif($user['active']=='2'){
$result['errors']['form']=l('login_error_account_removed');
} elseif($user['active']=='3'){
$result['errors']['form']=l('login_error_account_banned');
}
if(count($result['errors'])==0){
$_SESSION['userid']=$user['userid'];
mysql_query("UPDATE `users` SET `login_time`='".$time."' WHERE `userid`='".$_SESSION['userid']."';");
$result['status']='success';
} else {
$result['status']='error';
}
echo json_encode($result);
}
exit;
}
?>
<?php
$pagetitle=l('login_title')." • ".$config['sitename'];
$pagedesc=$config['description'];
?>
<?php
if($m){ include "m-login.php"; exit; }
?>
<?php include "inc/header.php"; ?>
<div class="row">
<div class="col-md-3"></div>
<div class="col-md-6">
<h3 class="special-title"><?php echo l('login_title'); ?></h3>
<div class="auth-box">
<form action="/<?php echo htmlspecialchars(trim($_GET['script'])); ?>/" method="POST" autocomplete="off" class="ajax-form" data-callback="loginCallBack">
<input type="hidden" name="action" value="<?php echo htmlspecialchars(trim($_GET['script'])); ?>">
<div class="form-group">
<label><?php echo l('login_type_email'); ?></label>
<div>
<input type="text" autocomplete="off" class="form-control" name="email" placeholder="<?php echo l('login_email'); ?>" autofocus>
</div>
</div>
<div class="form-group">
<label><?php echo l('login_type_password'); ?></label>
<div>
<input type="password" autocomplete="off" class="form-control" name="password" placeholder="<?php echo l('login_password'); ?>">
</div>
</div>
<button type="submit" class="btn btn-primary"><?php echo l('login_submit'); ?></button>
<div class="cannot-login">
<a href="<?php echo $locPrefix; ?>/restore/" class="pull-left"><?php echo l('login_cant_login'); ?></a>
<a href="<?php echo $locPrefix; ?>/register/" class="pull-right"><?php echo l('login_to_register'); ?></a>
<div class="clear"></div>
</div>
</form>
</div>
</div>
<div class="col-md-3"></div>
</div>
<div class="social-login-title">
<?php echo l('login_via_social_network'); ?>
</div>
<div class="social-login"><a href="/social/vk/<?php if(isset($_GET['ref'])){ ?>?ref=<?php echo urlencode($_GET['ref']); ?><?php } ?>" class="vkontakte"><i class="fa fa-vk"></i></a><a href="/social/ok/<?php if(isset($_GET['ref'])){ ?>?ref=<?php echo urlencode($_GET['ref']); ?><?php } ?>" class="odnoklassniki"><i class="fa fa-odnoklassniki"></i></a><a href="/social/fb/<?php if(isset($_GET['ref'])){ ?>?ref=<?php echo urlencode($_GET['ref']); ?><?php } ?>" class="facebook"><i class="fa fa-facebook"></i></a><a href="/social/gl/<?php if(isset($_GET['ref'])){ ?>?ref=<?php echo urlencode($_GET['ref']); ?><?php } ?>" class="google"><i class="fa fa-google"></i></a></div>
<?php include "inc/footer.php"; ?>
В среде "PHP"-разработчиков часто слышатся возбуждающие аппетит к ветчине повизгивания о том, что, дескать, без фреймворков не жизнь, чистый "PHP" - говно, и что без "Laravel" охуенный проект не создать. Но взгляните на вышеприведённый код страницы авторизации в одном из разработанных мною движков и задайте себе вопрос: зачем делить один ладненький, компактненький скриптик на контроллеры, модели, шаблоны, интерфейсы, и, как следствие, конское количество директорий, когда и "HTML"-представление, и "AJAX"-обработчик можно впихнуть в один файл на, в данном случае, полтора-два экрана? Чем обусловлена массовая течка по "MVC" и смежным архитектурам (к слову, не только лишь в "PHP", но и, слышно, в "Ruby" и "NodeJS")?
Запостил: HornyPorny,
18 Июля 2018
guest8 18.07.2018 09:23 # −999
HornyPorny 18.07.2018 09:25 # 0
HornyPorny 18.07.2018 09:31 # 0
guest8 18.07.2018 09:47 # −999
HornyPorny 18.07.2018 11:32 # 0
roskomgovno 18.07.2018 16:37 # −1
Быстрее?
guestinxo 18.07.2018 16:40 # −1
guest8 18.07.2018 18:28 # −999
guest8 18.07.2018 21:35 # −999
HornyPorny 18.07.2018 22:07 # −1
bormand 19.07.2018 00:36 # 0
А ведь и правда, большинству сайтов больше одной базы не нужно. Посчитали, что PHP будет недостаточно интырпрайзным если останется дефолтное соединение, ссылку на которое не надо передавать?
roskomgovno 19.07.2018 16:39 # −1
ну там есть одна дефолтная
vistefan 18.07.2018 17:54 # −1
Насколько я понимаю, всеобщий он только на говнокоде. Оно и понятно: на говнокоде собралась кучка неосиляторов со своими сраными верилогами, которые даже никогда сами регистрацию на php не писали простынёй без отступов и вперемешку с вёрсткой.
С другой стороны: подход к защите от инъекций через экранирование — плохой подход. Если ты используешь экранирование — то ты можешь ЗАБЫТЬ экранировать. А если используешь prepared statements или хотя бы эти блять именованные параметры, как они там называются, то ты НЕ МОЖЕШЬ забыть сделать экранирование. И не можешь дважды экранировать случайно. При этом код получается абстрактнее, ты думаешь не про сраную строку, которую конкатенируешь, в добавок добавляя какие-то бэкслеши, а про запрос (написанный, на минуточку, на другом языке) и подставляемые в него данные. Именно поэтому mysql_real_escape_string и депрекейтнули, как устаревший подход, которому есть альтернатива, ВО ВСЕХ ПУНКТАХ его превосходящая, хотя существование mysqli_… как бы возвращает проблему на место. В php вообще все проблемы всегда должны быть на своих местах, таков принцип создателей языка. Мне кажется, если они начнут решать проблемы, от них отвернётся всё сообщество пользователей, потому что большинство из них пользуются PHP именно ради проблем. Представьте, что ваш сын был с бородавкой на лице. Вам вернули другого ребёнка, без бородавки. Вы ведь не станете радоваться. Вам нужен именно ВАШ сын.
Впрочем, есть и способы обойти mysql_real_escape_string, но те, что я видел, были связаны со включением каких-то маргинальных кодировок или специальных режимов стрельбы по ногам со стороны разработчика (если уж обсираться, обосраться можно было бы и попроще). Причинами возможности обойти mysql_real_escape_string всегда являлся сам mysql (лол), и баги прикрывали в следующих версиях.
guest8 18.07.2018 18:21 # −999
prysh 31.07.2018 01:12 # 0
Каким надо быть идиотом чтобы "забыть" что-то сделать?
>>> со своими сраными верилогами
Что такое "верилоги"? Это какой-то очередной модный "фреймворк" для логов?
Чем не устаривает "echo"?
guest8 31.07.2018 01:59 # −999
prysh 31.07.2018 02:06 # 0
real 31.07.2018 09:09 # 0
guest8 31.07.2018 11:34 # −999
vistefan 31.07.2018 10:10 # 0
(О времена, о нравы, когда-то 4k означало нечто другое…)
vistefan 18.07.2018 17:54 # −1
Таковы, в общем и целом, претензии человечества к mysql_real_escape_string, если тебе интересно.
guest8 18.07.2018 09:24 # −999
HornyPorny 18.07.2018 09:26 # 0
roskomgovno 18.07.2018 16:50 # −1
guest8 18.07.2018 19:05 # −999
HornyPorny 18.07.2018 20:44 # 0
guest8 18.07.2018 21:07 # −999
HornyPorny 18.07.2018 21:27 # −2
gost 23.07.2018 14:19 # 0
HornyPorny 23.07.2018 16:20 # −1
gost 23.07.2018 17:27 # −1
HornyPorny 23.07.2018 18:06 # −2
guest8 23.07.2018 18:52 # −999
gost 25.07.2018 00:05 # 0
guestinxo 25.07.2018 00:23 # 0
I_hate_GC 25.07.2018 11:05 # 0
vistefan 25.07.2018 11:23 # 0
LinuxGovno 01.08.2018 19:01 # 0
guest8 11.08.2018 16:02 # −999
roskomgovno 12.08.2018 15:42 # 0
guest8 13.08.2018 03:34 # −999
ilya 01.11.2018 02:08 # 0
guest8 01.11.2018 02:53 # −999
roman-kashitsyn 01.11.2018 10:55 # 0
BUTTHURT 01.11.2018 19:32 # −102
guest8 01.11.2018 19:39 # −999