Diskuze: odhlášení php
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 13 zpráv z 13.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
používám toto:
<ul class="navbar-nav ml-auto">
<?php if(isset($_SESSION['user_id'])) : ?>
<li class="nav-item">
<a class="nav-link" href="<?php echo URLROOT; ?>/users/logout"><i class="fa fa-sign-out" aria-hidden="true"></i> Logout</a>
</li>
<?php else : ?>
<li class="nav-item">
<a class="nav-link" href="<?php echo URLROOT; ?>/users/register">Register</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<?php echo URLROOT; ?>/users/login">Login</a>
</li>
<?php endif; ?>
</ul>
používám nějaký základní systém co parsuje url a podle toho vola třídu/metodu kontroleru, to asi používáš také
Ahoj, sice neznám pravila MVC, ale používám jednoduché funkční řešení.
mám stránku odhlasit.php, kde zničím SESSION, COOKIE (uložený token) provedu nějaký zápis do DB k tokenu a přesměruju uživatele někam.
Příklad (bez mého SQL):
<?php
session_destroy() ;
setcookie('token', $token, time() - 3600) ;
header('Location: ./index.php?logOff') ;
exit() ;
a na každé stránce má uživatel k dispozici tlačítko pro odhlášení, které ho přesměruje pouze na stránku odhlasit.php
Ahoj děkuji za odpověď ale já nemám problém s php kodem ale spíše jak danou funkci (metodu) zavolat.
resp asi bych mohl udělat něco jako
<form action="odhlaseni.php" method="post">
<button type="submit" name="odhlaseni" class="btn btn-primary">Odhlášení</button>
</form>
Ale když už teda dělám to mvc, tak bych si představoval že bych měl logku spíše v modelu.
Ještě mě teď napadla jedna věc že bych si udělal statickou metodu na odhlaseni a tu bych dal do "action" bylo by to dobře i po stránce mvc architektury ?
Aha... Jak jsem psal. MVC neznám. S tím ti asi neporadím.
Já mám tlačítko velice jednoduše a tupě vytvořené jen takto:
<a href="./odhlasit.php"><button type="button">Odhlásit</button></a>
Hele architektura mvc nemá žádná pravidla pro odhlášení.
Jen řeší oddělení prezentace (View), řídícího kódu (Controller) a
toho, co ta aplikace vlastně dělá (Model)
takže se připojuju, k tomu, co výše sepsal Zdeněk Srb
A ještě malá poznámka:
Pokud kód, který se provádí v nějaké akci nějakého Controlleru, není moc velký, tak nemusí nutně být oddělen zvlášť do samostatné Model třídy
Takže klidně ten kód pro odhlášení můžeš mít klidně v té
odhlašovací akci toho users controlleru nebo authentication controlleru, nebo
co tam máš ... protože zničení session fakt není dlouhý kód
oddělit odhlašování nebo jakýkoli jiný modelový kód zvlášť do modelové třídy má smysl až ve chvíli, kdy
Asi bych se jako podíval na ten kurz objektový redakční systém MVC v PHP, tohle se tam určitě řeší.
Ahoj,
určitě máš nějaký login controler, který můžeš zavolat přes js a on ti něco vrátí, tzn. button bude mít value = "logout", tu pošleš do controleru, ten tě odhlásí, response bude třeba string "lotOutSuccess" a přesměruješ v JS.
Jednoduché, funkční a hlavně asi správné.
Podle nějakých "pravidel" MVC se to dá řešit tím způsobem, že v controlleru, např. UserController budeš mít metodu logout, na kterou když se odkážeš přes url: localhost/user/logout. Dovnitř do té metody jen napíšeš co chceš, aby se stalo potom. Takže podle toho co jsem vyčetl tak zničíš session a přesměruješ to na login.
A ako sa riesi, ked uzivatel zavrie okno bez odhlasenia, a v odhlaseni je status na offline update uzivatela??
Js event window.onbeforeunload spousti js na udalost tesne pred zavrenim
okna. Muzes uzivatele odhlasit. Ale chces to opravdu? Ja treba oteviram i 50
oken, kdyz neco delam, rekneme v 10 je jeden program. Kdyz by mi pri
vykrizkovani jednoho okna odhlasil uzivatele, tak asi nekoho prastim. Musel bys
nejakym zpusobem sledovat otevrena a zavrena okna a to neni moc spolehlive.
Proste, bud tam das velke cervene tlacitko odhlasit a nebo musis pockat, az
vyprsi session (server ma tusim 17 minut)
Zobrazeno 13 zpráv z 13.