pregnancy

درس فهم و استعمال Zend Framwork_Auth

السلام عليكم ورحمة الله تعالى و بركاته , في هده التدوينة سأضع درسا من سلسلة دروس تعلم البرمجة بالفريموورك زند zend framework , و في هده الحلقة ان شاء الله سنقترب من برمجة تسجيل الدخول باستعمال هدا الفريموورك .
طبعا كما نرى في المدونات و برامج إدارة المحتوى و المنتديات و غير دلك , دائما ما نجد التسجيل و تسجيل الدخول للموقع بحسب الأسم و المعلومات التي تم التسجيل بها و كدلك أدارة الصلاحيات للمستخدمين و غير دلك أنتم غنى عنها :) .

كيف يتم عمل دلك ؟ سأجيبكم في هده الحلقة باستعمال مثال بسيط و ان شاء الله يكون هو انطلاقتكم في برمجة نظام كبير بحول الله :)) .

أول شيء نحتاجه هو قاعدة بيانات و جدول خاص بالمستخدمين .
من Phpmyadmin في السرفر قم بانشاء قاعدة بيانات جديدة , تم قم بإضافة الجدول التالي أو زرعه باستعمال الكود :


CREATE TABLE `users` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `login` varchar(36) NOT NULL,
  `pass` varchar(36) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `login` (`login`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

الأن بعد إنشاء الجدول سنقوم بإنشاء ملف Controller . على فكرة في هدا الملف سنعمل على تقنية الباترن MVC , Modele - View - Controller لبناء التطبيق , و كنبدة قصيرة لهدا الباترن هو فقط لترتيب الكود و فصل المهام و التصميم و أوامر Sql. إدن كما قلت أول ننشأ ملف نسميه مثلا : UserController و نضع فيه الكود التالي :

 'localhost',
                          'username' => 'test',
                          'password' => 'test',
                          'dbname'   => 'test'
                    )
            );
    
            require_once(APPPATH."/models/User.php");
            $user_model = new User($db_adapter);
            
            if (true === $message = $user_model->login($_POST['login'], $_POST['pass'])) {
            
                $this->_redirect('/');
            } else {
                $this->view->assign('errors', $message);
            }

        }
    }
    //__________________________________________________________
    
    public function logoutAction()
    {
        
        $this->_helper->viewRenderer->setNoRender(true);
        Zend_Layout::getMvcInstance()->disableLayout();
        
        require_once 'Zend/Auth.php';
        $auth = Zend_Auth::getInstance();
      
        $auth->clearIdentity();
        Zend_Session::forgetMe();
        $this->_redirect('/');
    }

كما تلاحظون في الكود تم وضع 2 Action لنسجيل الدخول و الخروج . الأن ننتقل إالى ملف الموديل Model و هو الملف الدي سنضع فيه أومر التعامل مع قاعدة البيانات :

getAdapter(), 'users', 'login', 'pass', "MD5(?)");

        $authAdapter->setIdentity($login)
                    ->setCredential($pass);

        $result = $auth->authenticate($authAdapter);
        
        if ($result->isValid()) {

            $auth->getStorage()->write($authAdapter->getResultRowObject(array('id', 'login')));

            require_once('Zend/Session/Namespace.php');
            $session = new Zend_Session_Namespace('Zend_Auth');
            $session->setExpirationSeconds(24*3600);
            if (isset($_POST['rememberme'])) {
                Zend_Session::rememberMe();
            }
            return true;
        }
        
        return $error_msg = $result->getMessages();
    }
}


الأن بعد تجهيز ال Model يبقى لنا طبع و تطبيق العمل في ملف View و الدي هو كالتالي :
Sign in errors)) echo $this->formErrors($this->errors).'
'; // Error output (by the way of bulleted list)?>







قم بحفظ العمل و تجربته :) أسف عن طريقة الشرح السريع و أنا جاهز لمناقشة الموضوع مع الأخوة الدين وجدوا مشاكل في الكود :) تحياتي لكم .
شكرا لتعليقك