php include

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jop B

Jop B

15/08/2018 22:26:27
Quote Anchor link
Beste phphulp-leden,


Om meer te leren over PHP ben ik begonnen met een beveiligd portal te maken.
Nu zou ik de beste manier willen weten voor het volgende te maken.

Ik heb een index file, waar de basis layout in is ontworpen. Als de persoon niet is ingelogd dan moet uiteraard het login scherm worden weergegeven.
Is de persoon ingelogd dan word je geleid naar de account omgeving.

Deze stappen werken, ik heb gebruik gemaak van een sessie welke op elke pagina word gecontroleerd.

Mijn adres in de adressenbalk is dan bijvoorbeeld https:www.jop.nl/account
Nu wil ik dat het adres zonder subs word aangemaakt, daarmee bedoel ik dat alles zowel het login scherm als account scherm onder https:www.jop.nl/ vallen.

Zelf dacht ik dat dit kon met d.m.v. includes te werken maar zit ik dan op de juiste weg? Of zijn er betere en/of mooiere manieren om dit te creëren in php?

Hoor graag jullie input,.

Gr. Jop
 
PHP hulp

PHP hulp

18/04/2024 20:08:41
 
- Ariën  -
Beheerder

- Ariën -

15/08/2018 23:26:03
Quote Anchor link
Wat is je intentie erachter om dit zo te willen? Dit heeft verder niks met includes in PHP te maken. Die voegen alleen andere script op de webserver toe aan je pagina, en sturen niks door.

Makkelijk is het niet, omdat er in de URL geen referentie is naar je account-pagina. Hoe moet de browser weten dat die geopend moet worden?

Het zou kunnen met een divje als overlay, die wordt geactiveerd als je op een 'log in' knop drukt. Maar ik vraag mij af of het wenselijk is. Als ik als gebruiker graag direct naar de inlogpagina zou willen, dan mag die keuze best geboden worden.

Je kan ook een 'cloacked frame' gebruiken, maar dat is zwaar verouderde techniek uit de oorsprong van het internet, en wordt keihard afgeraden omdat het meer nadelen en zelfs ergernissen dan voordelen kent.
Gewijzigd op 15/08/2018 23:26:29 door - Ariën -
 
Jop B

Jop B

16/08/2018 00:00:26
Quote Anchor link
Ik zag dit bij Instagram en Facebook. De loginpagina is gelijk aan die van de tijdlijn.
Omdat ik meer wil weten van php wil ik dit soort dingen nabootsen :).

Nu heb ik Het werkend maar niet op de mooiste manier denk ik.
Wat heb ik gedaan:

Ik heb 1 layout gemaakt welke de index pagina is.
Hier word gekeken of de sessie bestaat en of deze true is.
Is dit niet het geval dan include login.php

Als de gebruiker correct is ingelogd dan refresh de pagina en include account.php

De sessie bestaat dan en is true, en zal daarom altijd de accountpagina tonen met de zelfde link.
 
- Ariën  -
Beheerder

- Ariën -

16/08/2018 00:12:50
Quote Anchor link
Voor zover ik weet verandert de URL op Instagram en Facebook wel per actie die je doet.
Mogelijk dat ze een overlay tonen aan de hand van een sessie die niet zou bestaan, maar dat is een kwestie van wat extra HTML toevoegen onder een bepaalde geprogrammeerde voorwaarde.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

16/08/2018 01:02:37
Quote Anchor link
Dit riekt allemaal weer naar problemen. Als ik ingelogd ben dan kom ik op de peren pagina en ga ik vervolgens 20 minuten lunchen en ben ik ondertussen uitgelogd dan kom ik met de zelfde url op de appeltjes pagina terecht. Of stel dat ik een link wil doorsturen naar mijn collega die helemaal geen account heeft op de betreffende website.. krijgt hij appeltjes te zien terwijl ik peertjes wilde doorsturen naar hem. Gaat niet werken he. Hou je altijd aan "één URL is één pagina"
 
Thomas van den Heuvel

Thomas van den Heuvel

16/08/2018 14:31:28
Quote Anchor link
Maar pagina's achter een login ("beheerpagina's") worden toch niet gecrawled, dus dat is niet zo relevant.

Toegegeven, het werkt natuurlijk verwarrend dat je op "dezelfde" pagina "verschillende" dingen ziet, maar als dat duidelijk is, dan lijkt mij dat niet zo'n probleem.

En dan is er nog het organisatorische aspect waarbij je dus functionaliteit van wat in wezen verschillende pagina's zijn op één hoop gooit.

Deze constructie lijkt mij wel -tot op zekere hoogte- toelaatbaar, dat een dashboard pagina op eenzelfde URL zit als iets anders (misschien zelfs wel meer omdat het een portal betreft?), maar ik denk niet dat iemand er wakker van zal liggen als dit twee verschillende adressen zouden zijn.

De technische oplossing is, zoals je zelf al min of meer aangaf, redelijk eenvoudig. Ben je ingelogd, serveer je het dashboard, ben je niet ingelogd of ben je nog aan het inloggen, serveer je je loginfunctionaliteit. Heel kort door de bocht wordt het dus zoiets als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
session_start();
// standaard includes, waaronder misschien een "doorlog" zodat je automatisch onder water opnieuw wordt ingelogd ingeval je sessie is verlopen
// ...


if (isset($_SESSION['ingelogd'])) {
    // $_SESSION['ingelogd'] is natuurlijk hypothetisch, er zijn andere en wellicht betere manieren
    // om je sessie in te delen / te compartimenteren, wat waarschijnlijk ook verstandig is

    require_once './dashboard.php';
}
else {
    require_once './login.php';
}

?>

Wat je natuurlijk ook zou kunnen doen is een soort van rechtenmanagement ophangen aan de pagina's zelf. Als je onvoldoende rechten hebt, word je geredirect naar de login-/voorpagina. En als je op de loginpagina zit terwijl je al ingelogd was zou je direct doorgestuurd kunnen worden naar /home of /dashboard ofzo.

Een groot deel van hoe je dit organiseert hangt ook af van hoe de navigatie door je applicatie is. Als je bijvoorbeeld gebruik maakt van een single point of entry (index.php) en klasses en een autoloader enzo dan wordt het natuurlijk hele andere koek.

Omdat je een mogelijk complex ding aan het bouwen bent (een portal), loont het misschien zeker de moeite om de mogelijkheden van het verder automatiseren van je pagina-opbouw te verkennen. Je wilt straks bijvoorbeeld niet allerlei standalone scriptjes hebben die je allemaal inhoudelijk moet gaan aanpassen omdat er een wijziging is in de organisatie van je loginstructuur.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.