Zend Framework – Céges Demo portál – Letöltés csak bejelentkezés esetén XVI. rész

Korábban elkészültünk a regisztrációval, megvalósítottuk a felhasználók bejelentkeztetését(azonosítását). Azonban felhasználóink, látogatóink nem fognak a semmiért beregisztrálni és bejelentkezni, valami pluszt kell nyújtanunk számukra. Legyen ez a letöltés, sok cégnek van ugyan oldala, de demo változatok letöltésnél azért szeretné tudni mégis kicsoda töltött le a programot dokumentációt, űrlapot vagy bármiféle fontos iratot. Annak megakadályozására, hogy bárki bejelentkezés nélkül letudjon tölteni valamit az oldalról, van egy nagyon egyszerű megoldása Zend Framework használata esetén. Korábban létrehoztunk egy új névteret a session azonosító mellett, ezt felhasználhatjuk a probléma megoldására. Hozzunk létre egy LetoltesController.php -t, aminek legyen egy az IndexController indexAction() eseményével megegyező kódú letoltesAction() eseménye. Minden a controllerben elhelyezkedő eseménynek van egy init() metódusa Zendben amit mi felül is definiálhatunk a következőképpen:

//események init() metódusa, minden esemény lefutása ezzel kezdődik
public function init()
{
parent::init();
if (!$this->view->layout()->felhasznalo) {
$this->_helper->flashMessenger->addMessage("Az oldal megtekintéséhez be kell jelentkeznie! Ha még nincs regisztrálva megteheti <a href='/demo/public_html/index/regisztracio'>itt</a>.");
$this->_redirect('/index/bejelentkezes');
return;
}
return;
} // public function init()

Itt egyszerűen leellenőrizzük, hogy a nézetnek átadott $felhasznalo változó azaz bejelentkezett felhasználó adatai benne vannak e a létrehozott zend session névtérben. Ha null értékű azaz nem létezik, akkor a látogatót elküldjük a bejelentkezés oldalra, egy szöveges üzenet keretében, felhasználó barát kialakítás miatt érdemes egy a regisztrációra mutató linket is elhelyezni az üzenetben.

Ez az init() metódus minden a LetoltesControllerben található események meghívása előtt lefut! Készítsük el a letoltesAction() eseményt is ugyanebben a controllerben:

//letoltes esemény
public function letoltesAction()
{
//üzenetek elkapása
$flash = $this->_helper->getHelper('flashMessenger');
if ($flash->hasMessages()) {
$this->view->message = implode("
", $flash->getMessages());
} // if ($flash->hasMessages())
return true;
} // public function letoltesAction()

Most lássuk egyben a LetoltesController.php fájl tartalmát a könnyebb áttekinthetőség érdekében:

<?php
//behozzuk a BaseControllert
require_once 'controllers/BaseController.php';
require_once 'models/Captcha.php';
require_once 'models/Regisztracio.php';
class LetoltesController extends BaseController
{
//események init() metódusa, minden esemény lefutása ezzel kezdődik
public function init()
{
parent::init();
if (!$this->view->layout()->felhasznalo) {
$this->_helper->flashMessenger->addMessage("Az oldal megtekintéséhez be kell jelentkeznie! Ha még nincs regisztrálva megteheti <a href='/demo/public_html/index/regisztracio'>itt</a>.");
$this->_redirect('/index/bejelentkezes');
return;
}
return;
} // public function init()
//letoltes esemény
public function letoltesAction()
{
//üzenetek elkapása
$flash = $this->_helper->getHelper('flashMessenger');
if ($flash->hasMessages()) {
$this->view->message = implode("<br />", $flash->getMessages());
} // if ($flash->hasMessages())
return true;
} // public function letoltesAction()
} // class LetoltesController extends Base_Controller_Action
?>

Ha ezzel megvagyunk, hozzunk létre a application\views\sripts könyvtárban egy letoltes könyvtárat, majd a application\views\sripts\letoltes könyvtárban a application\views\sripts\letoltes\letoltes.phtml fájlt, aminek rövid kis tartalma legyen az alábbi:

<!--Layout for letoltes::letoltes-->
<?php if($this->message){
echo '<h3>Üzenet:</h3>';
print_r('<p">'.$this->message.'</p>');
}?>
<h3>Letöltés:</h3>
<br />
<h3><a href="http://framework.zend.com/">Zend Framework</a></h3>
<br />

A application\views\layouts\header.phtml fájlunkat egészítsük ki az alábbi sorral:

<li><a href="/demo/public_html/letoltes/letoltes">Letöltés</a></li>

Ragyogó, ha mindent jól csináltunk és nem vagyunk bejelentkezve akkor e Letöltés menüpontra kattintva az alábbi oldal jelenik meg számunkra:

Demo Kft azonosítatlan felhasználó esetén a letöltés oldal megtekintése

Jelentkezzünk be, majd kattintsunk a Letöltés menüpontra, ha mindent jól csináltunk és nem gépeltünk el semmit akkor az alábbi kép fogad minket:

Ezzel cikksorozatunk végére is értünk.

Reméljük eme pár cikk hasznára válik minden olyan webfejlesztőnek aki most kezd a Zend Framework-kel dolgozni. Próbáltuk a legalapvetőbb technikát bemutatni, amellyel a Zend Framework egyszerűen munkára bírható.

Advertisements

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s