PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (24): В начало « ... 14 15 16 17 [18] 19 20 21 22 ... » В конец

> Найдено сообщений: 359
Hapson Отправлено: 29 Июля, 2013 - 22:17:15 • Тема: ООП пытаюсь писать • Форум: Объектно-ориентированное программирование

Ответов: 68
Просмотров: 9277
caballero пишет:
в PHP смысла немного а в компилируемых языках там можно реально закрыть доступ к приватным членам.

Теперь ясно.
caballero пишет:
с какой стати? тем более у него при этом будут проблеммы и с другими сайтами.

Ну так-то да - кто отключил, это ихние проблемы. Меня с этого форума выкидывает без куков. Просто я думал, что это я что-то не так написал в скрипте. Вроде написано, что phpsessid автоматически подставляется, но что-то не подставляется он.
Сделал такую ссылку:
PHP:
скопировать код в буфер обмена
  1. <a href="http://blog/index.php?<?PHP echo SID ?>">Link</a>

При клике по ней id сессии не меняется и не выкидывает. А если кликнуть на
PHP:
скопировать код в буфер обмена
  1. <a href="http://blog/index.php">Link</a>

то id меняется и сразу выкидывает. id не подставляется автоматом, как пишут.
(Добавление)
PS
Я так понял, чтоб работало у всех, то нужно писать так
PHP:
скопировать код в буфер обмена
  1. session_id(md5($_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']));//и еще что-нибудь...


И в к каждой ссылке приписывать <?php echo SID ?>
И еще формы....
(Добавление)
PPS
В формы вставляется скрытое поле. А вот к ссылкам не добавляется phpsessid
Ну и ладно...
Hapson Отправлено: 29 Июля, 2013 - 21:44:50 • Тема: ООП пытаюсь писать • Форум: Объектно-ориентированное программирование

Ответов: 68
Просмотров: 9277
caballero пишет:
лучше уж слделайте поля класса публичными и обращайтесь напрямую

Ну вот и я о том же - в чем смысл приватности?
caballero пишет:
ну и зачем их отключать и делать катастрофу на ровном месте?

Ну так, если пользователь отключит? phpsessid генерируется при каждом обновлении, но в адресную строку не передается.
Или авторизация без куков невозможна?
Hapson Отправлено: 29 Июля, 2013 - 21:23:52 • Тема: ООП пытаюсь писать • Форум: Объектно-ориентированное программирование

Ответов: 68
Просмотров: 9277
caballero пишет:
я ж писал
$_SESSION["user"] = $user;
...
$_SESSION["user"]->getName();

Ага понятно. То есть в $_SESSION['user'] кладем авторизованного юзера со всеми нужными свойствами и имеем метод для обращения к этим самым свойствам.
А почему такой метод не подойдет

PHP:
скопировать код в буфер обмена
  1. class Users{
  2.    private $name;
  3.    private $password;
  4.  
  5.    function getUserData($val){
  6.       return $this->$val;
  7.    }
  8. }
  9.  
  10. //и обращаться
  11.  
  12. echo $_SESSION['user']->getUserData("name");


PS

У меня новая катастрофа... отключил куки в браузере и сломалась авторизация. Авторизация проходит, но сбрасывается после первого обновления страницы.
В .htaccess

php_value session.use_trans_sid 1
php_value session.use_cookies 1
php_value session.use_only_cookies 0

PHPSESSID не передается...
Hapson Отправлено: 29 Июля, 2013 - 18:24:35 • Тема: ООП пытаюсь писать • Форум: Объектно-ориентированное программирование

Ответов: 68
Просмотров: 9277
caballero пишет:
и шо сие за конструкция?

Ну эта конструкция выводит имя
caballero пишет:
по идее должно быть

Цитата:
echo $_SESSION->getUser()->getName();

Еще один метод?
caballero пишет:
во т это в конструкторе тоже не годится
Цитата:
$_SESSION = $this;

$_SESSION['user'] = $this ?
caballero пишет:
и чего вы данные с формы в юзера пихаете

Не ну это для примера, конечно данные фильтруются, запрос в БД...
И все это конечно не в конструкторе. Просто коротко написал.
Мне не понятно как положить объект в сессию и потом обращаться к его свойствам.
Плюс еще прочитал, что стартовать сессию при таком раскладе нужно после чтения классов. Но у меня почему-то и так заработало.
Я сначала отправлял данные, потом комментировал строки приема данных и объявления нового объекта, и в сессии все равно оставался объект класса Users.
caballero пишет:
если разлогинися

$_SESSION["user"] = null;


еслественно нужны проверки на null;
потму я и написал в соседней ветке что лучше фейковый юзер

В какой ветке? Какой фейковый?

И вообще я что-то не пойму смысла. Свойства приватные и чтобы к ним обратиться, нужно писать метод. В чем смысл?
Hapson Отправлено: 29 Июля, 2013 - 17:44:06 • Тема: ООП пытаюсь писать • Форум: Объектно-ориентированное программирование

Ответов: 68
Просмотров: 9277
caballero пишет:
запихиваете екземпляр в сессию и все дела

Эмммм... то есть так:

PHP:
скопировать код в буфер обмена
  1. <html>
  2. <head>
  3. <title>Test User Class</title>
  4. <meta http-equiv="Content-Language" content="ru" />
  5. <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  6. </head>
  7. <style type="text/css">
  8.         html{background: #fff;}
  9.         body{width: 800px; margin: 20px auto; background: #ddd; padding: 20px; border: 1px solid}
  10. </style>
  11. <?PHP
  12. class Users{
  13.         private $name;
  14.         private $password;
  15.         function __construct($data){
  16.                 $this->name = $data['name'];
  17.                 $this->password = $data['password'];
  18.                 $_SESSION = $this;
  19.         }
  20.         function getUser($val){
  21.                 return $this->$val;
  22.         }
  23. }
  24. ?>
  25. <body>
  26.         <?PHP
  27.         $data = array("name" => $_POST['name'], "password" => $_POST['password']);
  28.         $user = new Users($data);
  29.         echo $_SESSION->getUser("name") ."<br>";
  30.         echo $_SESSION->getUser("password");
  31.         ?>
  32.         <form action="<?PHP $_SERVER['PHP_SELF'] ?>" method="post">
  33.                 Neme:<br>
  34.                 <input type="text" name="name" value="Вася"><br>
  35.                 Password:<br>
  36.                 <input type="text" name="password" value="1234"><br>
  37.                 <input type="submit" value="GO"><br>
  38.         </form>
  39. </body>
  40. </html>


А может лучше сляпать массив со свойствами и уже его записать в сессию?
Hapson Отправлено: 29 Июля, 2013 - 15:31:48 • Тема: ООП пытаюсь писать • Форум: Объектно-ориентированное программирование

Ответов: 68
Просмотров: 9277
caballero пишет:
Цитата:
Хорошо, тогда метод обновления/удаления пользователя приватный и не статический?

удаления - тоже статический - екемпляр не может себя удалитть.
нестатические методы - те которые предназначены для работы с атрибутами (полями)екземпляра.

те которые манипулируют екземплярами - должны быть статическими.
Теоретически - статические методы юзера должны относится к какому то классу типа фабрики или менеджера юзеров. но использование статических методов в самом классе упрощает структуру. Кроме того статические методы имеют доступ к приватным полям екземпляра что то же удобно при инициализации например

Цитата:
Тогда и свойство $online не нужно? Метод авторизации просто вернет true или false:

да
или он может вернуть уже готовый екземпляр юзера если удачно или null если не удачно.


Угу, теперь понятно.
Я вот еще что не пойму.
После удачной авторизации пользователя я записываю в $_SESSION почти все свойства пользователя, кроме email и password, чтобы потом не дергать БД. А вот если я в классе сделаю свойства идентичные полям в таблице пользователей и при удачной авторизации буду записывать в эти свойства значения. По окончании кода мне будут доступны эти свойства? Ведь объект уничтожается по окончании кода.
К примеру пользователь авторизовался, я перезапросил страницу, дабы избавиться от $_POST, и хочу вывести приветствие.

Hapson Отправлено: 29 Июля, 2013 - 14:52:39 • Тема: Подключение модулей • Форум: Вопросы новичков

Ответов: 13
Просмотров: 602
DelphinPRO пишет:
или вариант для вывода нескольких модулей
PHP:
скопировать код в буфер обмена
  1. ModController::modules("left"); // joomla forever :)

В админке конфигурируешь какие модули выводить в позиции left
в методе ::modules циклом их выводишь

Да, спасибо за мысль.
Я уже тоже подумал о необходимости вывода нескольких экземпляров модуля.
Hapson Отправлено: 29 Июля, 2013 - 14:45:06 • Тема: ООП пытаюсь писать • Форум: Объектно-ориентированное программирование

Ответов: 68
Просмотров: 9277
caballero пишет:
мы проверяем юзера на существование такого экземпляра а не проверяем признак (офлайн или нет) конкретного экземпляра

Хорошо, тогда метод обновления/удаления пользователя приватный и не статический?
А метод регистрации? Тоже наверное не статический и приватный?

Тогда и свойство $online не нужно? Метод авторизации просто вернет true или false:

PHP:
скопировать код в буфер обмена
  1. $data = array("name" => $_POST['name'], "password" => $_POST['password']);
  2. if(Users::authUser($data)){
  3.     $auth = true;
  4. }else{
  5.     $auth = false;
  6. }
  7. //или просто
  8.  
  9. $auth = Users::authUser($data);
  10.  
Hapson Отправлено: 29 Июля, 2013 - 14:22:28 • Тема: Подключение модулей • Форум: Вопросы новичков

Ответов: 13
Просмотров: 602
DelphinPRO
Вы гений!
У меня с практической реализацией вроде более-менее, а вот с логическим воплощением все плохо.
Действительно, нужно просто расставить функцию. Даже наверное написать класс с пока что одним статическим методом загрузки мобулей (раз уж в index.php подключен файл с __autoload).
Ну как-то так
PHP:
скопировать код в буфер обмена
  1.  <?PHP
  2. class ModController{
  3.         static function load($name_mod){
  4.                 $file = ROOT ."/mod/". $name_mod ."/load.php"
  5.                 if(file_exists($file)){
  6.                         return include_once $file;
  7.                 }else{
  8.                         return false;
  9.                 }
  10.         }
  11. }
  12. //а это расставить в шаблоне
  13. ModController::load("auth");
  14. ModController::load("menu");
  15. //и т.д...
  16. ?>


А уж потом можно сделать интерфейс в админке.

caballero
Да, я и сам могу в шаблоне все прописать.
А может я cms сделаю )))
Это не необходимость, а скорее самоудовлетворение, самоутверждение...
Hapson Отправлено: 29 Июля, 2013 - 13:09:10 • Тема: ООП пытаюсь писать • Форум: Объектно-ориентированное программирование

Ответов: 68
Просмотров: 9277
caballero пишет:
авторазиция обычно делается статическим методом потому как по логике на связана и с каким экмепляром.

для работы с Бд лучше взять готовые решения. PDO например если уж хочется ООП


Я наверное что-то не понимаю. Ну из примеров: кролик - экземпляр класса зверей, кролик живой или дохлый - свойство экземпляра класса зверей, кролик кролик залезает в нору, если вход не привалило булыжником - метод экземпляра.

Юзер - экземпляр класса пользователей. Юзер online или offline - свойство юзера. Юзер входит на сайт, если пустят - метод.

Есть какое-то принципиальное отличие между:
$user = new Users("auth", $data);
$user = Users::authUser($data);
Hapson Отправлено: 29 Июля, 2013 - 11:29:37 • Тема: ООП пытаюсь писать • Форум: Объектно-ориентированное программирование

Ответов: 68
Просмотров: 9277
caballero пишет:
вообще рекомендую вам посмотреть в сторону паттерна Active record

Вроде начал понимать...
Начал писать класс Users.
Пока написал метод авторизации. Вообще идея такая, к примеру авторизация:

PHP:
скопировать код в буфер обмена
  1. //сам класс (не дописан)
  2. <?PHP
  3. class Users{
  4.         public $online = false;
  5.        
  6.         function __construct($option, $user_data){
  7.                 switch($option){
  8.                         case 'auth': $this->authUser($user_data); break;
  9.                         case 'new': $this->newUser($user_data); break;
  10.                         case 'update': $this->updateUserData($user_data); break;
  11.                 }
  12.         }
  13.        
  14.         private function authUser($user_data){
  15.                 if(is_array($user_data) && count($user_data) == 2){
  16.                         if($user_data['email'] != '' && $user_data['password'] != ''){
  17.                                 $sql = "SELECT `id_user`, `email`, `password`, `diff`, `role`, `status`, `name`, `avatar`, `date_reg`, `last_entry`, `sex`, `city`, `age`
  18.                                         FROM `". DB_PREFIX ."users`
  19.                                         WHERE email = {?}";
  20.                                 $db = DB::getDB();
  21.                                 $user = $db->selectArray($sql, array($user_data['email']));
  22.                                 if($user){
  23.                                         if($this->compare($user_data['password'], $user['password'], $user['diff'])){
  24.                                                 switch((int)$user['status']){
  25.                                                         case 1:
  26.                                                                 $date = date("Y-m-d H:i:s");
  27.                                                                 $sql = "UPDATE `". DB_PREFIX ."users` SET last_entry = {?} WHERE id_user = {?}";
  28.                                                                 $db = DB::getDB();
  29.                                                                 $update = $db->mixedQuery($sql, array($date, $user['id_user']));
  30.                                                                 $this->online = true;
  31.                                                                 $key = array('hash', 'id_user', 'role', 'name', 'avatar', 'date_reg', 'last_entry', 'sex', 'city', 'age');
  32.                                                                 $val = array(md5($_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']), $user['id_user'], $user['role'], $user['name'], $user['avatar'], $user['date_reg'], $date, $user['sex'], $user['city'], $user['age']);
  33.                                                                 $_SESSION = array_combine($key, $val);
  34.                                                                 if(isset($_POST['remember']) && $_POST['remember'] == 'on'){
  35.                                                                         setcookie('mycookie', $user['password'], time() + 14*24*60*60);
  36.                                                                 }
  37.                                                                 //$this->redirect();
  38.                                                 }
  39.                                         }else{
  40.                                                 //неверные данные
  41.                                                 $this->redirect('incorrect');
  42.                                         }
  43.                                 }else{
  44.                                         //неверные данные
  45.                                         $this->redirect('incorrect');
  46.                                 }
  47.                         }else{
  48.                                 //заполнены не все поля
  49.                                 $this->redirect('empty_field');
  50.                         }
  51.                 }
  52.                 if(is_array($user_data) && count($user_data) == 1){
  53.                         if(strlen((string)$user_data['mycookie']) == 32){
  54.                                 $sql = "SELECT `id_user`, `email`, `password`, `diff`, `role`, `status`, `name`, `avatar`, `date_reg`, `last_entry`, `sex`, `city`, `age`
  55.                                         FROM `". DB_PREFIX ."users`
  56.                                         WHERE `password` = {?}";
  57.                                 $db = DB::getDB();
  58.                                 $user = $db->selectArray($sql, array($user_data['mycookie']));
  59.                                 if($user){
  60.                                         switch((int)$user['status']){
  61.                                                 case 1:
  62.                                                         $this->online = true;
  63.                                                         $key = array('hash', 'id_user', 'role', 'name', 'avatar', 'date_reg', 'last_entry', 'sex', 'city', 'age');
  64.                                                         $val = array(md5($_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']), $user['id_user'], $user['role'], $user['name'], $user['avatar'], $user['date_reg'], $user['last_entry'], $user['sex'], $user['city'], $user['age']);
  65.                                                         $_SESSION = array_combine($key, $val);
  66.                                         }
  67.                                 }else{
  68.                                         setcookie('mycookie', "", time() - 14*24*60*60);
  69.                                         $this->redirect();
  70.                                 }
  71.                         }else{
  72.                                 setcookie('mycookie', "", time() - 14*24*60*60);
  73.                                 $this->redirect();
  74.                         }
  75.                 }
  76.         }
  77.        
  78.         private function compare($pass_form, $pass, $diff){
  79.                 $compare = md5(md5($pass_form) . $diff);
  80.                 if($compare == $pass){
  81.                         return true;
  82.                 }else{
  83.                         return false;
  84.                 }
  85.         }
  86.        
  87.         private function newUser(){
  88.                
  89.         }
  90.        
  91.         private function updateUserData(){
  92.                
  93.         }
  94.        
  95.         private function redirect($error = false){
  96.                 if($error){
  97.                         header('Location: '. SITE_URL .'/index.php?error='. $error);
  98.                         exit;
  99.                 }else{
  100.                         header('Location: '. SITE_URL);
  101.                         exit;
  102.                 }
  103.                
  104.         }
  105. }
  106.  
  107. //это кусочек кода из модуля авторизации
  108. $data = array("email" => $_POST['email'], "password" => $_POST['password']);
  109. $user = new Users("auth", $data);
  110. if($user->online){
  111.     //авторизован
  112. }else{
  113.     //не авторизован
  114. }
  115. ?>
  116.  


А это класс для запросов

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class DB{
  3.         private static $db = null;
  4.         private $id;
  5.         private $sym = "{?}";
  6.        
  7.         static function getDB(){
  8.                 if(self::$db == null){
  9.                         self::$db = new DB();
  10.                 }
  11.                 return self::$db;
  12.         }
  13.        
  14.         private function __construct(){
  15.                 $this->id = new mysqli(DB_SERVER, DB_LOGIN, DB_PASSWORD, DB_NAME) or die ();
  16.                 if(mysqli_connect_error()){
  17.                         $error = date("Y.m.d H:i") ."\n\tFile: ". __FILE__ ."\n\tClass/Method: ". __METHOD__ ."\n\tError Connect DB: ". mysqli_connect_error() ."\n";
  18.                         Logger::printLog($error);
  19.                         //вывод страницы с ошибкой. БД нет - делов не будет
  20.                         exit;
  21.                 }else{
  22.                         $this->id->query("SET lc_time_names = 'ru_RU'");
  23.                         $this->id->set_charset("utf8");
  24.                 }
  25.         }
  26.        
  27.         private function replace($sql, $param){
  28.                 if($param){
  29.                         for($i = 0; $i < count($param); $i++){
  30.                                 $pos = strpos($sql, $this->sym);
  31.                                 $val = "'". $this->id->real_escape_string($param[$i]) ."'";
  32.                                 $sql = substr_replace($sql, $val, $pos, strlen($this->sym));
  33.                         }
  34.                 }
  35.                 return $sql;
  36.         }
  37.        
  38.         private function arrayAssoc($object){
  39.                 $result = array();
  40.                 while(($array = $object->fetch_assoc()) != false){
  41.                         $result[] = $array;
  42.                 }
  43.                 return $result;
  44.         }
  45.         /*
  46.         **      Public functions
  47.         */
  48.         function selectTwoArray($sql, $param = false){
  49.                 $result = $this->id->query($this->replace($sql, $param));
  50.                 if($result){
  51.                         return $this->arrayAssoc($result);
  52.                 }else{
  53.                         $error = date("Y.m.d H:i") ."\n\tFile: ". __FILE__ ."\n\tClass/Method: ". __METHOD__ ."\n\tError Query: ". $this->id->error ."\n";
  54.                         Logger::printLog($error);
  55.                         return false;
  56.                 }
  57.         }
  58.        
  59.         function selectArray($sql, $param = false){
  60.                 $result = $this->id->query($this->replace($sql, $param));
  61.                 if($result){
  62.                         if($result->num_rows == 1){
  63.                                 return $result->fetch_assoc();
  64.                         }else{
  65.                                 return false;
  66.                         }
  67.                 }else{
  68.                         $error = date("Y.m.d H:i") ."\n\tFile: ". __FILE__ ."\n\tClass/Method: ". __METHOD__ ."\n\tError Query: ". $this->id->error ."\n";
  69.                         Logger::printLog($error);
  70.                         return false;
  71.                 }
  72.         }
  73.        
  74.         function selectOneValue($sql, $param = false){
  75.                 $result = $this->id->query($this->replace($sql, $param));
  76.                 if($result){
  77.                         $array = $result->fetch_assoc();
  78.                         if($result->num_rows == 1 && count($array) == 1){
  79.                                 return $value = array_shift($array);
  80.                         }else{
  81.                                 return false;
  82.                         }
  83.                 }else{
  84.                         $error = date("Y.m.d H:i") ."\n\tFile: ". __FILE__ ."\n\tClass/Method: ". __METHOD__ ."\n\tError Query: ". $this->id->error ."\n";
  85.                         Logger::printLog($error);
  86.                         return false;
  87.                 }
  88.         }
  89.        
  90.         function mixedQuery($sql, $param = false){
  91.                 $result = $this->id->query($this->replace($sql, $param));
  92.                 if($this->id->affected_rows >= 0){
  93.                         return $this->id->affected_rows;
  94.                 }else{
  95.                         $error = date("Y.m.d H:i") ."\n\tFile: ". __FILE__ ."\n\tClass/Method: ". __METHOD__ ."\n\tError Query: ". $this->id->error ."\n";
  96.                         Logger::printLog($error);
  97.                         return false;
  98.                 }
  99.         }
  100.        
  101.         function __destruct(){
  102.                 if($this->id){
  103.                         $this->id->close();
  104.                 }
  105.         }
  106. }
  107. ?>


То есть авторизация в одном методе. Проверка и по форме и по куке.
Как-то так вообщем...
Hapson Отправлено: 29 Июля, 2013 - 10:51:12 • Тема: Подключение модулей • Форум: Вопросы новичков

Ответов: 13
Просмотров: 602
Я вот тут почитал, подумал... я так понял, то что я захотел - это шаблонизатор. То есть, некая функция принимает html шаблон с некими метками и выдает этот шаблон с вставленным кодом php. Но что-то я так думаю, это идиотизм. Заменить код php в шаблоне на непонятные метки, чтобы потом php заменил эти метки опять на код php.

Но вот как бы сделать, чтобы вставки php в шаблоне вызывали то что нужно. К примеру до вывода отрабатывает код модуля авторизации и определяет - авторизован пользователь или нет. В зависимости от итога работы, модуль должен каким-то образом вставить на страницу форму авторизации или приветствие пользователя со ссылкой на профиль. Модуль должен работать до вывода, так как ставится кука.

Я сделал пока так:
в index.php подключается конфиг (константы с параметрами подключения к БД, константа корня сайта и т.п...), далее подключается файл с функцией __autoload, далее модуль авторизации и последним файл шаблона.
Модуль авторизации в конце работы присваивает переменной значение:
PHP:
скопировать код в буфер обмена
  1.  
  2. $panel = 'auth_form.php';
  3. //или
  4. $panel = 'auth_complet.php';
  5.  
  6. //А уже в шаблоне, в том месте, где выводится форма, я написал
  7. include_once(ROOT .'/mod/auth/'. $panel);


Если теперь нужно будет отключить авторизацию, то нужно будет убрать инклюд в index.php и в шаблоне. Можно конечно в шаблоне подключать форму в ифе, но и это как мне видится - не комильфо.

Все равно, нужен какой-то контроллер, который будет включать/выключать модули и определять, где они должны отображаться. Желательно, конечно же, чтобы управление было в админке, в удобном виде. Ну типа там поставил флажок, выбрал позицию из списка - заработала авторизация.
(Добавление)
ЗЫ
И это только первый модуль - авторизация. А дальше что? Каждый модуль инклюдить руками? В админке навигацию я делаю на $_GET, switch и if. Но вот с модулями на фронте так не выйдет.
(Добавление)
PPS
Не знаю, может кто-то скажет, что это лишний геморой, но у меня как бы мания к автоматизации всего, что можно автоматизировать. Захотел я, чтобы комп включался/выключался сам - настроил, работает. Надоело мне прогревать прогревать машину - поставил автозапуск - она сама прогревается зимой и охлаждается летом. Так и здесь, надо как-то автоматизировать подключение нужных модулей, только как...
Hapson Отправлено: 28 Июля, 2013 - 21:39:58 • Тема: Занести в cookie значение • Форум: Вопросы новичков

Ответов: 6
Просмотров: 286
Ну перезапросить страницу сразу.
Я вчера и сегодня писал авторизацию. Если юзер авторизовался, то заполняется $_SESSION, ставится кука и страница перезапрашивается.
Hapson Отправлено: 28 Июля, 2013 - 20:45:50 • Тема: Подключение модулей • Форум: Вопросы новичков

Ответов: 13
Просмотров: 602
DeepVarvar пишет:
Нужно смотреть в сторону str_replace() этих самых меток.
Ну а как в админке эти метки будут выглядет - не важно.
Как вариант в админку - показывать "карту" лайоута в которой на возможных местах появления модулей будут висеть выпадающие списки всех доступных модулей, с возможностью множественного выбора.

Что-то я не соображу...
Вот например
CODE (html):
скопировать код в буфер обмена
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <title></title>
  5. <meta http-equiv="Content-Language" content="ru" />
  6. <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  7. <body>
  8.     <div id="header">
  9.         <div id="top_line">
  10.              <include name="top_line">
  11.         </div>
  12.     </div>
  13. </body>
  14. </html>


Вот на место <include name="top_line"> вставлять один или несколько модулей. Я понимаю что делает str_replace(), но что-то не соображу.
(Добавление)
caballero пишет:
делать это в админке означает повторять функционал джумлы что глцпо.
а зачем это вообще в админке? ты что каждый день на сайте будешь модули менять?

Каждый день не буду. Я собственно не облезу, если руками в шаблоне пропишу. Просто хочется как-то облагородить это дело.
(Добавление)
ЗЫ
К тому же сегодня столкнулся с проблемой. Сначала подключил модуль авторизации прямо в шаблон. А при авторизации ставятся куки. Ну так получилось, что ставились они до вывода. А вот если подключить какой-то вывод перед модулем авторизации (к примеру форму поиска), то уже косяк.
Пришлось подключить модуль авторизации до подключения шаблона, а в шаблоне инклюдить нужные куски html с подстановкой значения в путь через переменную, которая определяется в файле авторизации.
Hapson Отправлено: 28 Июля, 2013 - 20:20:34 • Тема: Занести в cookie значение • Форум: Вопросы новичков

Ответов: 6
Просмотров: 286
stifard пишет:
проверял ?

А что тут проверять?

Страниц (24): В начало « ... 14 15 16 17 [18] 19 20 21 22 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB