<?php
// PSR-1, PSR-2, PSR-4 Читаем и пользуем!
// namespace все дела... "Model_admin" - это прошлое.
// phpDocumentor - твой друг, прописывай всюду типы данных
class Model_admin extends Model
{
// Лишний перевод строки
private $name;
private $password;
private $code;
private $mail;
// Не информативное название. get model admin... что бы это значило...
public function get($login, $password) {
// Где проверка аргумантов? Влететь может что угодно
$this->name = $login;
$this->password = $password;
// Модель НЕ должна управлять подключением к БД, это должно выполняться выше в коде
$this->db_connect();
// Код вообще проверялся?)) у вас закрывающей строки нет.
$result = msql_query("SELECT 'login', 'password', 'mail' FROM 'admin_authorization'";
// сие уже deprecated, забудьте про mysql_*** функции, используйте PDO
$arr = mysql_fetch_array($result);
// Зачем нужен цикл, это дро*ба БД!!! Вытягиваете одну запись по логину и проверяете соответствует ли пароль
do {
// Лишний перевод строки
if ($login === $arr['login']) {
// Лишний перевод строки
if (
md5( md5( trim( $password ))) === $arr['password']
) {
$this->mail = $arr['mail'];
$this->random_code();
// Перед return лучше делать перевод строки
return true;
}
// Лишний перевод строки
}
// сие уже deprecated, забудьте про mysql_*** функции, используйте PDO
// Присваивание в условиях управляющих кнострукций лучше не делать, это операции разного характера
} while ($arr = mysql_fetch_array($res));
return false;
// Лишний перевод строки
}
private function random_code($length = 15) {
// Где проверка аргумантов? Влететь может что угодно
$symbols = '0123456789abcdefghijklmnopqrstuvwxyz_-~!+*%$#&';
for ($i = 0; $i < (int)$length; $i++)
{
$num = rand (1, strlen ($symbols));
$this->code .= substr ($symbols, $num, 1);
}
// сие уже deprecated, забудьте про mysql_*** функции, используйте PDO
$bool_update = mysql_query('UPDATE "admin_authorization" SET code="'.$this->code.'" WHERE login="'.$this->name.'"');
// Вот так писать плохо, всегда используйте фигурные скобки.
if ($bool_update) $this->send_code();
// Лишний перевод строки
}
private function send_code() {
// Модель НЕ должна отправлять письма, под отправку обычно пишется отдельная подсистема/сервис
mail ($this->mail, "Admin code", $this->code);
}
public function check_code($user_code) {
// Где проверка аргумантов? Влететь может что угодно
// SQL инъекция!!!!
// сие уже deprecated, забудьте про mysql_*** функции, используйте PDO
$this->code = mysql_query("SELECT 'code' FROM admin_authorization WHERE code='".$user_code."'");
// Вот так писать плохо, всегда используйте фигурные скобки.
if ($this->code != '') return true;
}
// Лишний перевод строки
}