Kezdőoldal » Számítástechnika » Weblapkészítés » Hogyan adjam át a bejelentkezé...

Hogyan adjam át a bejelentkezéshez/regisztrációhoz szükséges paramétereket MVC tervezési mintában a modelnek?

Figyelt kérdés

Tegyük fel most ez az URL:

www.example.com/index.php?page=login&action=login


A core.php-ban kezelem az URL-t, ahol megnézem, hogy létezik-e a $_GET["page"] vagy $_GET["action"]. Ha az $_GET["page"] létezik, meghívom a pageController-t, ha az $_GET["action"] létezik, meghívom az actionControllert.


Nos jelenesetben létezik a $_GET["page"] és a $_GET["action"] is szóval a pageController a loginPageTemplate-t tölti be az actionController meg a loginController-t hívja meg.


Core.php (részlet):


$page = isset($_GET["page"]) ? $_GET["page"]: "index";

$getPage = new pageController($page);

echo $getPage->getPage(); //Azért echo, mert a getPage returnol ob_get_content-tel és így írja ki az oldalt.


if(isset($_GET["action"]){

$action = $_GET["action"];

$getAction = new $action."Controller";

if($getAction == "login"){

$getAction->setDatas($_POST["username"],$_POST["password"]);

}

}


Nincs ennél jobb megoldás? Mert ha pl rengeteg formom lenne akkor megtelne a core.php ezekkel. És így azt sem tudom leellenőrizni, hogy elküldte-e a formot, mert ha simán csak beírja azt hogy index.php?action=login akkor már nem is létezik a $_POST["username"] és az $_POST["password"]. Még arra gondoltam, hogy csak az $_POST tömböt adom át ha formmal tér vissza:


if(isset($_GET["action"]){

$action = $_GET["action"];

$getAction = new $action."Controller";

if($getAction == "formPOST"){

$getAction->setDatas($_POST);

} else if($getAction == "formGET"){

$getAction->setDatas($_GET);

}

}



2015. nov. 7. 22:21
 1/3 A kérdező kommentje:
$getAction = new $action."Controller"(); kihagytam a zárójeleket :D
2015. nov. 7. 22:51
 2/3 Drone007 ***** válasza:

Itt kicsit sok fogalom és képzavar van.

Ha a page meghatározza a kontrollert, akkor az action-nel ne egy másik kontrollert határozz meg, hanem a már meghívott kontroller egy metódusát.


pl a login kontroller osztálynak ( class loginController ) több metódusa is lehet, amelyek a műveleteket irányítják.

Az index metódus ( public function index() ) tartalmazza a bejelentkező formot hívó részt, ami meghívja a view/login/loginform.php fájlt

A további metódusok pedig a műveleti dolgokat pl a formsubmit metódus ( public functin formsubmit() ) az elküldött form adatainak feldolgozását végzi, a login modelljének ( class loginModell ) átadja $_POST-ot, ami elvégzi a bejelentkeztetést, vagy hibaüzenetet ad vissza, amit a loginController formsubmit metódusa aztán értelmez, és úgy továbbít, hogy vagy egy megfelelő üdvözlő oldalra irányít, vagy újraadja a formot, kiírva a hibaüzenetet a sikertelen bejelentkezésről.


A loginController osztálynak további metódusai is lehetnek a jelszó-visszaállításhoz, regisztrációhoz, stb...


Az egyes kontrollereket és modelleket (ahogy view-okat is) külön mappákba/fájlokba érdemes rendezni, és mindig csak azt betölteni, amire szükség van, különben ahogy írtad a "Core"-od meg fog telni szeméttel.


Egyébként a modellek már csak POST adatokat kapjanak, az oldalvezérlést és az alapbeállításokat az inicializációs részben (még a kontroller hívás előtt) érdemes $_SESSION-ökbe tölteni.


Javaslom ezt a tutorialt nézd át, hogyan csinálja a srác:

[link]

Elég alap, de a lényeg benne van.

2015. nov. 8. 08:16
Hasznos számodra ez a válasz?
 3/3 anonim ***** válasza:
Ezt a videót nagyon köszi, pont erre volt szükségem!
2015. nov. 8. 14:44
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!