В общем делаю авторизацию. И в общем не знаю, куда чего пихать. Пользователь вводит логин-пароль, это мы передаем в контроллер, из контроллера передаем запрос в модель. Модель ищет в базе данных совпадения... Куда mysql_num_rows пихать - в модель или контроллер? Добавлено спустя 11 минут 53 секунды: Контроллер: Код (PHP): <?php //антивзлом if (!defined(XCONT)){ die("huck"); } //антивзлом end require_once "models/mauthuser.php"; class CAuthUser extends MAuthUser{ public $auth_access; // не знаю, зачем я ее паблик сделал... function check_auth($post) { $solt="solt"; // соль $post['user_password']=crypt($post['user_password'],$solt); // сверяем пароль пользователя $rows=$this->auth_user($post); // проверка совпадения в базе данных $rows_num=mysql_num_rows($rows); // считаем количество совпадений if($rows_num>0){ $row_array=mysql_fetch_assoc($rows); $this->sess_input($row_array); // отправляем данные в сессию $cook_array['id']=$row_array['id']; // сочиняем кукезы $cook_array['hash']=crypt($row_array['username']); // крипт без соли всегда разные хеши генерирует $this->cook_input($cook_array['hash']); // отправляем хеш в куки $session_rows=$this->db_test($cook_array['id']); // проверяем табличку сессий $session_num_rows=mysql_num_rows($session_rows); // считаем совпадения $this->db_input($cook_array, $session_num_rows); // записываем в табличку сессий хеш из кукезов $auth_access="Вы вошли в систему"; }else{ $auth_access="Не верно введен логин или пароль"; } return $auth_access; } } $vauthuser = new CAuthUser() ; ?> Модель: Код (PHP): <?php //тута будет файл отправляющий запрос регистрации пользователей в БД //антивзлом if (!defined(XCONT)){ die("huck"); } //антивзлом end require_once "config/db.php"; class MAuthUser extends Db{ function auth_user($post){ $sql="SELECT * FROM users WHERE username='{$post['username']}' AND user_password='{$post['user_password']}'"; $test=$this->sql($sql); return $test; } function get_user($post){ $sql="SELECT * FROM users WHERE id='{$post['id']}' "; $test=$this->sql($sql); return $test; } function sess_input($post){ $_SESSION['flag']=true; $_SESSION['name']=$post['username']; $_SESSION['access']=$post['user_access']; $_SESSION['points']=$post['user_points']; } function cook_input($post){ setcookie("hash", $post, time()+60*60*24*30); // эта часть пока бесполезна } function db_test($post){ $sql="SELECT sessid FROM sessions WHERE userid='{$post}'"; // вот здесь мы из таблички сессий извлекаем $test=$this->sql($sql); return $test; } function db_input($post, $num){ // а здесь, стало быть проверяем количество извлеченного if($num>0){ // это можно и в модели и контроллере делать... не знаю, как более кошерно $sql="UPDATE sessions SET hash='{$post['hash']}' WHERE userid='{$post['id']}'"; }else{ $sql="INSERT INTO sessions (userid, hash) VALUES ('{$post['id']}','{$post['hash']}')"; } $this->sql($sql); return true; } } ?> Смотрю я на весь этот код и думаю, может мне вообще не стоит заниматься программированием?
Из кода ничего не понял, но модель нужна чтобы отгородиться от sql, поэтому она либо вернет инфу юзера в массиве, или объект юзера, или не вернет ничего, соответственно num_rows в ней.
В общем где-то так: http://xcont.com/x/ Если кто шарит - проверьте его на всякие там инъекции. Я хз, что у меня там с безопасностью. PS. Чего-то в моем Модель-Вид-Контроллер напрочь отсутствует Вид
Как-как. Если я просто отвечу - будет не интересно и ты свой скил владения гуглом на +1 не прокачаешь. Это вовсе простые вещи, про которые нужно знать еще до mvc.
Код (Text): $sql="SELECT * FROM users WHERE username='{$post['username']}' AND user_password='{$post['user_password']}'"; если у тебя ничего не фильтруется - то это плохо. хотя, и так не особо хорошего есть в твоем коде.
Уже фильтруется немножко Код (PHP): function check_auth($post) { $is_ok_name = preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/", $post['username']); $is_ok_password = preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/", $post['user_password']); if ($is_ok_name){ if ($is_ok_password){ $reg_error="Некорректно введено имя пользователя и пароль"; return $reg_error; }else{ $reg_error="Некорректно введено имя пользователя"; return $reg_error; } } if ($is_ok_password){ $reg_error="Некорректно введен пароль"; return $reg_error; } ...
Если проект находится в состоянии "under construction" уже 4 месяца - то таки главное, чтобы работало, а как работает - это уже дело десятое.