Хорошо, мне интересно, можно ли улучшить этот код, хранящийся в user_login.php, или я делаю это неправильно.Я сбит с толку, потому что все мои скрипты в приложении имеют длину около 30-40 строк, и мне было интересно, если я что-то упустил.
Этот скрипт вызывается с помощью вызова ajax, как и все остальные в моем приложении, кромедля файлов шаблонов.
<?php
# Ignore
if (!defined('APP_ON')) { die('Silence...'); }
# Gets the variables sent
$user_name = post('user_name');
$user_password = extra_crypt(post('user_password'));
# Check if the user exists
if (!user::check($user_name, $user_password)) { template::bad($lang['incorrect_login']); }
# Logging in
$id = user::get_id($user_name, $user_password);
$u = new user($id);
$u->login();
template::good($lang['correct_login']);
?>
Я собираюсь объяснить это:
# Ignore
if (!defined('APP_ON')) { die('Silence...'); }
Это в основном проверка того, что файл не вызывается напрямую.Каждый URL-адрес перенаправляется в файл index.php, который управляет URL-адресом (es: www.mysite.com/user/view/id/1) и содержит нужный файл.В первых строках этого файла index.php есть define('APP_ON', true);
.Индексный файл также инициализирует приложение, вызывающее некоторый набор функций и некоторые классы.
# Gets the variables sent
$user_name = post('user_name');
$user_password = extra_crypt(post('user_password'));
Функция post()
управляет восстановлением $ _POST ['user_name'], выполняя некоторые проверки.Функция extra_crypt()
просто зашифровывает пароль, используя sha1 и собственный алгоритм.Я использую подготовленный оператор для запросов sql, поэтому не беспокойтесь о экранировании переменных post.
# Check if the user exists
if (!user::check($user_name, $user_password)) { template::bad($lang['incorrect_login']);
Класс user
имеет как статические, так и обычные методы.Статические не требуют идентификатора, чтобы начать с, нормальные методы делают.Например, user::check();
проверяет, существуют ли имя пользователя и пароль в базе данных.Класс template
имеет только два статических метода (template::bad()
и template::good()
), которые управляют быстрым диалоговым окном для отправки пользователю без заголовка или нижнего колонтитула.Вместо этого, если вы создаете экземпляр класса $t = new template('user_view')
, вызывается шаблон user_view_body.php
, и вы можете управлять этой страницей с помощью $t->assign()
, которая присваивает шаблону статические переменные, или с помощью $t->loop()
, которая запускает цикл и т. Д. Наконец, $lang
является массивом, имеющим несколько общих строк на языке, заданном пользователем.
# Logging in
$id = user::get_id($user_name, $user_password);
$u = new user($id);
$u->login();
template::good($lang['correct_login']);
В конце мы имеем фактический логин.Класс user
создается, а идентификатор восстанавливается.Пользователь с таким идентификатором вошел в систему, и мы возвращаем окно сообщения template::good()
пользователю.Для любого уточнения напишите комментарий выше.