Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> объектное vs процедурное, программирование в PHP 
:(
    Опции темы
Vaulter
Дата 29.12.2006, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: нет
Всего: 22



Gold Dragon, а что это? smile


--------------------
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 30.12.2006, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



я там малость ошибся... первая функция називается fConnect smile

Mal Hack, т.е. я тупо все свои функции загоняю в класс и получаю к ним доступ через $obj -> что-то??

Тогда нет никакой разницы между

Код

$q = $obj -> fContentText($z);
и
Код

$q = fContentText($z);


Наверное это самое примитивное использование классов и там есть что-то такое, чего я ещё не понимаю.. smile Но согласен, что класс - это всё же один объект, а не набор разных функций, что уже удобнее чисто для восприятия


Цитата(Vaulter @  29.12.2006,  22:52 Найти цитируемый пост)
Gold Dragon, а что это? 

одна функция получает список названий статей и материалов, другая получает сам материал конкретной статьи. А что есть замечания или предложения?  smile с удовольствием выслушаю



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 30.12.2006, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Цитата(Gold Dragon @  30.12.2006,  09:41 Найти цитируемый пост)
Mal Hack, т.е. я тупо все свои функции загоняю в класс и получаю к ним доступ через $obj -> что-то??


Цитата(Gold Dragon @  30.12.2006,  09:41 Найти цитируемый пост)
Наверное это самое примитивное использование классов и там есть что-то такое, чего я ещё не понимаю.. 



Угу
PM ICQ   Вверх
BuShaRt
Дата 2.1.2007, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: -1
Всего: 6



 smile 
Потести смарти и сразу поймешь, что такое целостый класс...
 
Недавно с другом готовились сдавать Удаленные базы данных, ну он вообшем ламер полный, спросил че такое класс, я подумал подумал и ответил, что это коллекция методов (функций)... Хотя ответ не раскрывает все сути, но в целом становиться яснее...
Кроме того все методы связанны между собой=) 

Вот примерчик юзанья класса.. может не самый удачный... но я именно с этого момента понял, что классы лучше функций (когда писал код)
Код

class WorkMySQL {
    var $query;
    var $link;
    var $dbhost;
    var $dbuser; 
    var $dbpass; 
    var $dbname; 
    var $dbprif;  
    
    
    function WorkMySQL ($select=true) {
        //Подключение файла конфигурации
        include 'config.php';
        //Определение внутриклассовых переменных
        $this->dbhost = $dbhost;
        $this->dbuser =    $dbuser;
        $this->dbpass =    $dbpass;
        $this->dbname =    $dbname;
        $this->dbprif =    $dbprif;
        //Подключение к СУБД
        ($this->link = mysql_pconnect($this->dbhost, $this->dbuser, $this->dbpass)) || die("Couldn't connect to MySQL");
        //Если в качестве аргумента не передеанно FALSE, то выделяем определененную БД.
        if ($select) mysql_select_db($this->dbname, $this->link) || die("Couldn't open db: ".$this->dbname.". Error if any was:".mysql_error() );
        
    }
    
    //Метод экранирования запроса
    function quote_smart($value,$x=true) {
         // если magic_quotes_gpc включена, то снимаем экранированние
     if (get_magic_quotes_gpc()) $value = stripslashes($value);
        //Если переменная не число и $x не вводилось, то окружаем кавычками и экранируем
     if ($x) {
            if (!is_numeric($value)) $value = "'" . mysql_real_escape_string($value) . "'";
            return $value;
        //Если переменная $x была введена со значением FALSE, значит $value уже окруженна кавчками
        } else {
            if (!is_numeric($value)) $value = mysql_real_escape_string($value);
            return $value;
        }        
    }
    
    //Проверка пароля
    function CheckPass($login, $password) 
    {    
        $this->query = sprintf ("SELECT login, password, grup FROM %s WHERE login=%s and password=%s",
                $this->quote_smart($this->dbprif."_users",false),
                $this->quote_smart($login),
                $this->quote_smart($password));
        $result=mysql_query($this->query, $this->link) or die("Error returned if any: ".mysql_error());
        if(mysql_num_rows($result)==1) {
            $row=mysql_fetch_array($result);
            return $row;
        }
        return false;
    }

//Теперь чтоб проверить совпадает ли логин и пароль надо только
include 'WorkMySQL';
$mysql_obj = new WorkMySQL;
if (!($row = $mysql_obj->CheckPass ($_POST['login'], $_POST['password']))) {
    $filter_obj->messages[] = 'Логин - пароль не совпадают.';    




PM MAIL   Вверх
Opik
Дата 2.1.2007, 06:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



Цитата

Итак, в чем же основные преимущества ООП, почему оно стало таким популярным ? 

Как ни странно, но трудно ответить на этот вопрос не объяснив базовых понятий. Уверен, что усвоив базовые понятия ООП, вы сами без труда ответите на этот вопрос. 

Несмотря на то, что в различных источниках делается акцент на те или иные особенности внедрения и применения ООП, 3 основных (базовых) понятия ООП остаются неизменными. К ним относятся: 

Наследование (Inheritance) 
Инкапсуляция (Encapsulation) 
Полиморфизм (Polymorphism) 
Эти понятия, как три кита, лежат в основе мира ООП и, конечно же, будут рассмотрены мною подробнейшим образом. Наряду с ними будет рассмотрен и ряд других понятий и определений. 
А для начала рассмотрим пару мнений, которые в какой-то степени помогут Вам прояснить сложившуюся вокруг поставленного вопроса ситуацию. 

Итак, первое из них имеет некоторый академический оттенок: 

ООП позволяет разложить проблему на связанные между собой задачи. Каждая проблема становится самостоятельным объектом, содержащим свои собственные коды и данные, которые относятся к этому объекту. В этом случае исходная задача в целом упрощается, и программист получает возможность оперировать с большими по объему программами. 

В этом определении ООП отражается известный подход к решению сложных задач, когда мы разбиваем задачу на подзадачи и решаем эти подзадачи по отдельности. С точки зрения программирования подобный подход значительно упрощает разработку и отладку программ. 

Не очень понятно ? Тогда попробуем зайти с другой стороны и упростим описание. Начнем с общеизвестного примера. 

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

Что Вы сделали для того, чтобы получить соль ? Просто сказали: "Передай мне, пожалуйста, соль". 

Однако вместо этой простой фразы можно было бы сказать: "Пожалуйста, убери твою правую руку со стакана воды. Затем протяни ее влево на такое-то расстояние(или пока она не коснется солонки). Возьми баночку на которой написано "Соль". Подними ее. Сделай плавное движение правой рукой по дуге в направлении меня. Остановись когда твоя рука коснется моей. Затем подожди пока пока мои пальцы возьмут ее и только затем отпусти солонку и верни руку в исходной положение" 

Неправда ли, звучит странно и как-то даже глупо. Да, для нормального человека это звучит глупо. Но эти два описания одного и того же действия хорошо иллюстрируют разницу объектно-ориентированного (первый вариант действий) и обычного структурного (второй, многошаговый вариант) подхода к программированию. 

Так в чем же принципиальная разница ? 

Разница заключается в том, что объектно-ориентированный подход с просьбой передать солонку оставляет за объектом (Вашим другом) право решать как отреагировать и что сделать в ответ на поступившую просьбу. А Вы можете даже не знать (к примеру, не видеть) как Ваш друг (объект) выполнил Вашу просьбу. А зачем Вам это знать ? Вы в стандартной форме поставили перед ним задачу (сделали вызов) и получили ответ. 

При процедурном же развитии события, второй вариант описания этого же действия, необходимо описать каждый шаг, каждое движение для достижения конечного результата. 

Этот простой пример иллюстрирует только один из принципов ООП, суть которого: "Объект отвечает за все действия, которые он производит в ответ на запрос клиента". 

К сожалению, этот пример не может показать всей полноты преимуществ использования ООП, но и с помощью него можно почувствовать глубину отличий применения ООП и структурного программирования для решения даже таких простых задач.

http://www.firststeps.ru/theory/oop/r.php?2
PM MAIL Skype   Вверх
Eugene_Bond
Дата 2.1.2007, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 3.9.2006

Репутация: нет
Всего: 4



Mal Hack, очень вредный пример. только отпугивать от применения ООП годится smile

В продолжение начатого Opikом: OOP Concept explained: Polymorphism (Technology) -- простое и ясное объяснение полиморфизма
PM MAIL   Вверх
Mal Hack
Дата 2.1.2007, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Opik, без обид, но статья ни о чем smile
Точнее она о основах ООП, как о его возможностях при реализации тех или иных вещей, но нет ни слова, относительно того, что такое ООП для проектирования... К сожалению, инет кишит такими статьями, а сути, которая не в реализации и возможностях, а в теории проектирования нигде нет... ИМХО, конечно.

Цитата(Eugene_Bond @  2.1.2007,  11:13 Найти цитируемый пост)
Mal Hack, очень вредный пример. только отпугивать от применения ООП годится smile

Интересно чем? Что я показал базовый синтаксис описания класса и создания объекта?
Да и вашего "не вредного" примера я тут что-то не видел.

PM ICQ   Вверх
Blaga
Дата 2.1.2007, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ЛамМер++
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 15.11.2005
Где: г. Иркутск

Репутация: нет
Всего: 4



А может кто нибудь даст почитать по теме? А то никак не могу найти. Нужно что бы было применимо именно к PHP. И что бы на русском. smile


--------------------

http://displayart.ru - Обои.
http://a2themes.ru - Сайт о движках DLE, phpBB3, WordPress.
PM MAIL ICQ   Вверх
Mal Hack
Дата 2.1.2007, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Из того, что видел я (и писал сам), могу предложить:
http://phpclub.ru/detail/article/oop-vs-proc
http://phpclub.ru/detail/article/intro_php5
http://vingrad.ru/PHP-ART-002848
PM ICQ   Вверх
BuShaRt
Дата 2.1.2007, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: -1
Всего: 6



Код

<?php 

print "Hello, world."; 

?>  

Вот пример объектно-ориентированного кода, который делает то же самое: 

<?php 

class helloWorld { 
  function myPrint() { 
    print "Hello, world."; 
  } 

$myHelloWorld = new helloWorld(); 
$myHelloWorld->myPrint(); 

?>
 

Я плакал, новички теперь будут счастливы писать на ООП )))
PM MAIL   Вверх
Mal Hack
Дата 2.1.2007, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



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

Код

<?php

    class clKernel extends clGlobalSQL 
    {
        protected  $TEXT = "";
        
        public  $Errors = array();
        public  $ErrorCount = 0;
        
        protected   $ModulLink = null;
        protected   $PDO = null;
        protected    $LNG = null;
        
        public  $CurrTime = "";
        public  $glURI = "";
        
        public  $User = null;
        public  $UserAuth = false;
        public  $us_ip = "";
        public  $us_agent = "";
        public  $us_hash = "";
        
        public function __construct( $mod , $pdo , $lng , $glURI )
        {
            $this->ModulLink = & $mod;
            $this->PDO       = & $pdo;
            $this->LNG       = $lng;

            $this->ModulLink->KernelLink = & $this;
            
            $this->glURI     = $glURI;    
            $this->us_ip     = $this->kerSfGetIP();
            $this->us_agent     = $_SERVER['HTTP_USER_AGENT'];            
            $this->CurrTime  = time() + ( date( "z" ) * 3600 - C_TIMEZONE * 60 );
            
            if ( $_SERVER['REQUEST_METHOD'] == 'POST' && isset( $_POST['action'] ) ) 
            {
                switch ( $_POST['action'] )
                {
                    case "auth":        $this->kerAuth();
                    break;
                }
            }
            
            $this->kerMwOutPut();
        }

        protected function kerMwOutPut()
        {
            $this->kerAuthCheck();
            $this->TEXT = $this->skGlobalMain();        
            $this->kerTMPLParser();
            print $this->TEXT;    
        }
        
        protected function __call( $name , $arguments )
        {
            return  ( $this->ModulLink != null && method_exists( $this->ModulLink , $name ) ) 
                    ? call_user_func( array( $this->ModulLink , $name ) )
                    : ( ( $name == "modCreate" ) ? $this->kerMwGET() : "" );
        }
        
        protected function __get( $name )
        {
            return  ( $this->ModulLink != null && isset( $this->ModulLink-> { $name } ) ) 
                    ? $this->ModulLink-> { $name }
                    : "[Unknown property " . $name . "]";
        }

        protected function kerMwGET()
        {
            if ( ! empty( $this->glURI[1] ) ) 
            {
                switch ( $this->glURI[1] )
                {
                    default:        return $this->skGlobalWelcomeText();
                    break;      
                }
            }
        }

        protected function kerMwErrors()
        {
            return  ( sizeof( $this->Errors ) == 0 )
                    ? ""
                    : $this->skGlobalErrors( implode( "<br />" , $this->Errors ) );
        }

        public function kerMwSetError( $error )
        {
            $this->Errors[] = $error;
            $this->ErrorCount++;
        }

        public function kerPDO( $query , $params = array() )
        {    
            $link = null;

            if( ! method_exists( $this , $query ) )
            {    
                if( ! method_exists( $this->ModulLink , $query ) )
                {    throw new PDOException( "Unknown query: " . $query );    }
                else    
                {    $link = $this->ModulLink;    }
            }
            else 
            {    $link = $this;    }
            
            //print_r($params);
            $dbh = $this->PDO->prepare( call_user_func( array( $link , $query ) ) );
            $dbh->execute( $params );

            return $dbh;
        }

        protected function kerTMPLParser()
        {
            $this->TEXT = str_replace( "<% CSS %>" , $this->skGlobalCSS() . "\n" . $this->kerMwGetModMethodResult( "skModulCSS" ) , $this->TEXT );
            $this->TEXT = str_replace( "<% JAVASCRIPT %>" , $this->skGlobalJavaScript() . "\n" . $this->kerMwGetModMethodResult( "skModulJavaScript" ) , $this->TEXT );
            $this->TEXT = str_replace( "<% BASEPATH %>" , $this->skGlobalBasePath() , $this->TEXT );
            $this->TEXT = str_replace( "<% TOP %>" , $this->skGlobalTop() , $this->TEXT );
            $this->TEXT = str_replace( "<% QUIT_BUTTON %>" , ( ( $this->UserAuth ) ? $this->skGlobalQuitButton() : "" ) , $this->TEXT );
            
            $temp = ( $this->UserAuth ) 
                    ? $this->skGlobalContent() 
                    : $this->skGlobalLoginForm();
            
            $this->TEXT = str_replace( "<% CONTENT %>" , $temp , $this->TEXT );    
            $this->TEXT = str_replace( "<% MAIN_MENU %>" , ( ( $this->UserAuth ) ? $this->skGlobalMainMenu() : "" ) , $this->TEXT );    
            $this->TEXT = str_replace( "<% BODY %>" , $this->modCreate() , $this->TEXT );    
            $this->TEXT = str_replace( "<% BOTTOM %>" , $this->skGlobalBottom() , $this->TEXT );
            $this->TEXT = str_replace( "<% ERRORS %>" , $this->kerMwErrors() , $this->TEXT );
        }

        public function kerSfRedirect( $url = "" )
        {
            header( "Location: " . ( ( empty( $url ) ) ? $_SERVER['REQUEST_URI'] : $url ) );
            exit();
        }

        public function kerSfSetCookie( $name , $value , $time )
        {    setcookie( $name , $value , $this->CurrTime + $time , "/" );    }

        public function kerSfDelCookie( $name )
        {    setcookie( $name , "" , 3 , "/" );    }

        public function kerSfGetIP()
        {
            if ( $ip = getenv( "HTTP_CLIENT_IP" ) )
         {  return ( ip2long( $ip ) !== false ) ? $ip : "[unknown]";  }

            if ( $ip = getenv( "HTTP_X_FORWARDED_FOR" ) )
         {
              if ( $ip == '' || $ip == "unknown" )
               {  $ip = getenv( "REMOTE_ADDR" );  }

              return ( ip2long( $ip ) !== false ) ? $ip : "[unknown]";    
         }
        
         if ( $ip = getenv( "REMOTE_ADDR" ) )
         {  return ( ip2long( $ip ) !== false ) ? $ip : "[unknown]";  }
        }

        public function kerSfGetMicroTime()
        {
            $mt = explode( " ", microtime() );
            return ( (float) $mt[0] + (float) $mt[1] );
        }

        public function kerSfBuildListBox( $arr , $checked = "" )
        {
            $ret = "";

            foreach( $arr as $k => $v )
            {    $ret .= "<option value=". $k ." " . ( ( $k == $checked ) ? "selected" : "" ) . ">" . $v . "\n";        }
            
            return $ret;            
        }

        public function kerSfCheckEmail( $email )
        {    return ( preg_match( "#^([a-z0-9]){1}[a-z0-9\-_.+]*([a-z0-9]){1}@[a-z0-9]{1,}(([a-z0-9]{1,}[a-z0-9\-\.]{0,1}[a-z0-9]{1,})|[a-z0-9]{1,})*\.[a-z]{2,4}$#i" , $email ) ) ? true : false;    }

        public function kerSfGetGroups()
        {
            $dbh = null;
            $dbh = $this->kerPDO( "sqlGlobalGetGroups" );
            
            $result = $dbh->fetchAll();
            
            foreach( $result as $k => $v )
            {    $g[ $v['group_id'] ] = $v['group_name'];    }
                
            return $g;
        }
        
        public function kerSfVerifyPasswords( $p1 , $p2 )
        {
            if( ! empty( $p1 ) && ! empty( $p2 ) )
            {
                if( sha1( $p1 ) != sha1( $p2 ) )
                {    $this->kerMwSetError( $this->LNG['error_pass_did_match'] );    }
                elseif( strlen( $p1 ) < 8 )
                {    $this->kerMwSetError( $this->LNG['error_pass_short'] );    }
                else 
                {    return true;    }
            }
            elseif( empty( $p1 ) )
            {    $this->kerMwSetError( $this->LNG['error_pass_enter'] );    }
            else 
            {    $this->kerMwSetError( $this->LNG['error_pass_repeat'] );    }
        
            return false;
        }
        
        public function kerSfRus2Lat( $text )
        {
            $rus = array( "Рђ" , "Р‘" , "Р’" , "Р“" , "Р”" , "Р•" , "РЃ" , "Р–" , "Р—" , "Р˜" , "Р™" , "Рљ" , "Р›" , "Рњ" , "Рќ" , "Рћ" , "Рџ" , "Р " , "РЎ" , "Рў" , "РЈ" , "Р¤" , "РҐ" , "Р¦" , "Р§" , "РЁ" , "Р©" , "РЄ" , "Р«" , "Р¬" , "Р­" , "Р®" , "РЇ" ,
                          "Р°" , "Р±" , "РІ" , "Рі" , "Рґ" , "Рµ" , "С‘" , "Р¶" , "Р·" , "Рё" , "Р№" , "Рє" , "Р»" , "Рј" , "РЅ" , "Рѕ" , "Рї" , "СЂ" , "СЃ" , "С‚" , "РЈ" , "С„" , "С…" , "С†" , "С‡" , "С?" , "С‰" , "СЉ" , "С‹" , "СЊ" , "СЌ" , "СЋ" , "СЏ" 
                        );
            $lat = array( "A" , "B" , "V" , "G" , "D" , "E" , "E" , "ZH" , "Z" , "I" , "IY" , "K" , "L" , "M" , "N" , "O" , "P" , "R" , "S" , "T" , "U" , "F" , "KH" , "C" , "CH" , "SH" , "SHCH" , "" , "Y" , "'" , "E" , "YU" , "YA" ,
                          "a" , "b" , "v" , "g" , "d" , "e" , "e" , "zh" , "z" , "i" , "iy" , "k" , "l" , "m" , "n" , "o" , "p" , "r" , "s" , "t" , "u" , "f" , "kh" , "c" , "ch" , "sh" , "shch" , "" , "y" , "'" , "e" , "yu" , "ya" 
                        );
                        
            return str_replace( $rus , $lat , $text );
        }

        protected function kerAuthSecurityHash()
        {  $this->us_hash = md5( $this->User->user_nick ) . md5( $this->us_agent ) . md5( $this->us_ip ) . md5( $this->CurrTime );  }

        protected function kerAuthFalse()
        {
            $this->kerSfDelCookie( "session_user" );
            $this->kerSfDelCookie( "session_time" );
        }

        protected function kerAuthCheck()
        {
            if( ! isset( $_COOKIE['session_user'] ) || ! isset( $_COOKIE['session_time'] ) )
            {    
                $this->User = null;
                return;
            }
            
         $dbh = null;
            $dbh = $this->kerPDO( "sqlGlobalGetUser" , array( ":user_nick" => $_COOKIE['session_user'] ) );
                
            if( ( $result = $dbh->fetch( PDO::FETCH_OBJ ) ) === false )
            {    $this->kerAuthFalse();    }

         $this->User = $result;
         $this->kerAuthSecurityHash();
         
         $temp =  $this->CurrTime + ( 15 * 60 );

         $dbh = null;
         $dbh = $this->kerPDO( "sqlGlobalGetUserSession" , array( ":id" => $this->User->user_id , ":hash" => $this->us_hash , ":time" => $temp ) );
            
            if( ( $result = $dbh->fetch( PDO::FETCH_OBJ ) ) === false )
            {    $this->kerAuthFalse();    }

            if( isset( $_GET['quit'] ) )
         {
             $dbh = null;
             $dbh = $this->kerPDO( "sqlGlobalDeleteUserSession" , array( ":id" => $this->User->user_id , ":hash" => $this->us_hash ) );

                $this->kerAuthFalse();
                $this->kerSfRedirect( "/admin/" );
         }
            
         $dbh = null;
         $dbh = $this->kerPDO( "sqlGlobalUpdateUserSession" , array( ":id" => $this->User->user_id , ":hash" => $this->us_hash , ":time" => $this->CurrTime ) );

         $this->kerSfSetCookie( "session_user" , $this->User->user_nick , 604800 );
            $this->kerSfSetCookie( "session_time" , $temp , 604800 );
         
         $this->UserAuth = TRUE;        
        }

        protected function kerAuth()
        {
            if( empty( $_POST['login'] ) || empty( $_POST['pass'] ) || empty( $_POST['security_hash'] ) || sha1( $_POST['security_hash'] ) != C_ADMIN_HASH )
            {    $this->kerSfRedirect();    }
            
         $dbh = null;
         $dbh = $this->kerPDO( "sqlGlobalGetUserPass" , array( ":user_nick" => $_POST['login'] , ":user_pass" => sha1( $_POST['pass'] ) ) );

         if( ( $result = $dbh->fetch( PDO::FETCH_OBJ ) ) === false )
            {    $this->kerAuthFalse();    }

         $this->User = $result;
            $this->kerAuthSecurityHash();
         
         $temp = $this->CurrTime + ( 15 * 60 );

         $dbh = null;
         $dbh = $this->kerPDO( "sqlGlobalCreateUserSession" , array( ":id" => $this->User->user_id , ":hash" => $this->us_hash , ":time" => $temp ) );

            $this->kerSfSetCookie( "session_user" , $this->User->user_nick , 604800 );
            $this->kerSfSetCookie( "session_time" , $temp , 604800 );
            
            $this->kerSfRedirect();        
        }
    };

?>

PM ICQ   Вверх
BuShaRt
Дата 2.1.2007, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: -1
Всего: 6



Mal Hack
Ну как не как новичок врядли решит программироваться на том примере, где 7 строк, когда есть пример в 1 строку=))
PM MAIL   Вверх
Mal Hack
Дата 2.1.2007, 16:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Цитата(BuShaRt @  2.1.2007,  16:09 Найти цитируемый пост)
Ну как не как новичок врядли решит программироваться на том примере, где 7 строк, когда есть пример в 1 строку=)) 

Еще раз объясняю для тех кто на подлодке.
Ты будешь новичку показывать основы синтаксиса и применения ООП в PHP на модуле из 1000 строк? Нет.
Я говорю о том, как показать основы. Чтобы человек решил использовать ООП, он должен до этого дорасти, тобишь осознать ТЕОРЕТИЧЕСКИЕ аспекты ООП, а не код на 1000 строк.
PM ICQ   Вверх
BuShaRt
Дата 2.1.2007, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: -1
Всего: 6



Mal Hack
Цитата

Чтобы человек решил использовать ООП, он должен до этого дорасти, тобишь осознать ТЕОРЕТИЧЕСКИЕ аспекты ООП, а не код на 1000 строк.


 smile Верно... 

тока получается новичку вообше нет смысла показывать плюсы ООП+))
PM MAIL   Вверх
Eugene_Bond
Дата 2.1.2007, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 3.9.2006

Репутация: нет
Всего: 4



Цитата(Mal Hack @  2.1.2007,  14:55 Найти цитируемый пост)
Интересно чем? Что я показал базовый синтаксис описания класса и создания объекта?

Скорее тем, что после такого примера кроме усложнения синтаксиса преимуществ не ощущается..


Цитата(Mal Hack @  2.1.2007,  14:55 Найти цитируемый пост)
Да и вашего "не вредного" примера я тут что-то не видел.

Мне тоже лень что-то обильное писать, но ща поднатужусь..
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Избранное | Следующая тема »


 




[ Время генерации скрипта: 0.1995 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.