Ik heb voor mijn site een loginpagina voor het admingedeelte, dat werkt volledig goed en de session wordt ook aangemaakt. Op alle pagina's in het admingedeelte include ik dan voor en na de content een bestand om te kijken of een persoon is ingelogd. Daar zit ook het probleem, normaal kan je bv. bij een if-constructie of een lus vanuit PHP weggaan en overschakelen naar HTML
Het is eigenlijk zoals de eerste manier dat ik wil werken omdat de content in HTML staat. http://www.plaatscode.be/4366/
Dit is de code waar alle bestanden samen staan, ook de includes (zoals je kan zien in de commentaar). Als ik deze code gebruik, werkt dat goed, maar als ik via includes werk, wordt een parsefout gegeven voor de laatste regel van die include (voor de accolade van de if dus).
En ik wil echt met die includes werken omdat ik nogal veel pagina's heb.
Kan het zijn dat de parser eerst het include-bestand parst? en dan pas include? Want dat zou de foutmelding kunnen verklaren. Als dit niet zo, zou ik ook niet weten hoe dat komt.
Ja, ik weet dat het een beetje ingewikkeld is,
ik krijg, zoals ik al zei, een gewone parsefout:
Citaat:
Parse error: parse error in ...
Deze krijg ik voor het eerste includebestand, voor de laatste regel ( { ). In de code is dit het eerste deel (maar ik heb het gewoon allemaal even samengevoegd. En dat is net het rare, samengevoegd werkt het wel en apart niet.
Ik denk dat de parser een fout retourneert omdat er geen afsluitende accolade is.
@voldemort,
dat is nu net het vreemde, alle bestanden in één bestand geplaatst, geven geen foutmelding.
Allemaal apart wordt de foutmelding gegeven voor de laatste regel van het eerste includebestand.
De laatste is dus waarvoor de parse error gegeven wordt. Dus de laatste regel van het eerste includebestand, maar wat ik nog steeds vreemd vind is dat er geen error komt als alles in één bestand staat.
<?
if(!isset($_SESSION['ingelogd']) || $_SESSION['ingelogd'] != true )
{
echo '<h3 class="title">Fout</h3><p class="content">Dit is geen openbare pagina, ';
die 'je moet ingelogd zijn om toegang te hebben tot deze pagina!</p>';
@VinTage:
Ah, zo had ik het nog niet bekeken,
ik include nu de bovenste PHP-regels (1-4) en onderaan de pagina de regels 11-16.
Als ik het op jouw manier doe zal het wel werken, maar dat maakt het toch wel zeer ingewikkeld, kan ik dan best de pagina in de URL meegeven?
@Threetimes:
wat is het nut van jouw script? Dat is toch gewoon net zoals mijn code, maar dan veel korter. De code die ik plaatscode.be had gezet werkt ook zoals ik wil, maar het probleem is dat ik meerdere pagina's heb en ik dus de bovenste bestanden normaal include. Wel, als ik ze include werkt dit niet.
Ik snap het geloof ik niet meer, je wilt de code die je op plaatscode hebt staan dat die werkt, maar je krijgt een error ?
Dat komt omdat je bij de allerlaatste echo de ; vergeten bent
Citaat:
echo
'<h3 class="title">Fout</h3>
<p class="content">Dit is geen openbare pagina, je moet ingelogd zijn om toegang te hebben tot deze pagina!</p>';
Als dit de oplossing is, dan heb je ons op een fout spoor gezet met "include"
Ik had in mijn eerst post alle bestanden gewoon even samengevoegd zodat het iets duidelijk zou zijn (wat dus niet het geval was ).
Maar kort samengevat, als ik alle code, zoals in mijn eerst post samen in één bestand zet, werkt alles perfect, dit wil ik echter niet omdat dit niet praktisch is.
Daarom moet werk ik met includes en verschijnt er deze parsefout:
Citaat:
Parse error: parse error in d:mijn documentenmijn websportfolioincludessession_start.php on line 6
PS: op plaatscode.be was een iets oudere code, die ; had ik al gevonden.
<?php
//controleren of sessie klopt
if ( isset($_SESSION['ingelogd']) && $_SESSION['ingelogd'] === true )
{
//sessie klopt dus alle gegevens op de pagina weergeven.
}
?>
//sessie klopt dus alle gegevens op de pagina weergeven.
}
?>
Edit: nvm. Waarom doe je zo moeilijk je kan het toch allemaal in een bestand doen en je hebt er geen last meer van. Ik zelf gebruik include als je een stuk in een pagina moet doen bijvoorbeeld als je de pagina opsplitst in 3 delen tot ik bij elk divje include('deel1.php') ofzoiets neerzet en in dat bestand dan de code gooi (of weer verder in deel tot je ook dingen kan in een ander deel zetten) maar een structuur van if { in een bestand en } else { } in een ander heb ik eigenlijk nog nooit gezien. Dat zou ik dus in principe beter in een bestand kunnen gooien. Daarom komt die error waarschijnlijk ook opdagen.
<?php
//controleren of sessie klopt
if ( isset($_SESSION['ingelogd']) && $_SESSION['ingelogd'] === true )
{
//sessie klopt dus alle gegevens op de pagina weergeven.
echo "hallo, ik ben geheim content";
}
?>
lees bestand session_end.php hij had het al afgesloten daar maar dat werkt dus niet bij 2 verschillende bestanden. Maarja als ik dus alleen session_start.php had bekeken dan klopte het wel .
Dat is het hem net,
ik wil de HTML als content weergeven als de if geslaagd is daarom ook dit
{
?>
HTML
<?php
}
Snapje, mijn if wordt afgesloten in mijn volgende include.
Het beste zal dan misschien toch zijn gewoon alles in één bestand zet, maar het zijn er wel enorm veel.
Mijn andere site heeft er echter nog meer, en daar heb ik echt geen zin om dat te doen. Is er echt geen oplossing om dat via includes te checken dat iemand ingelogd is?
Dus met andere woorden zal het nooit op de manier werken zoals ik het wil.
Dan zal ik maar in elk bestand die codes plakken.
Maar weet iemand een manier om dit toch te doen, zonder overal te includen?
Ik bedoel, niet includen zoals ik nu doe, maar wel zo praktisch mogelijk. Zodat er snel aanpassingen kunnen gebeuren.
<?php
//controleren of sessie klopt
if ( isset($_SESSION['ingelogd']) && $_SESSION['ingelogd'] === true )
{
//sessie klopt dus alle gegevens op de pagina weergeven.
include('watermoetweergegevenworden.php');
//if van het vorige bestand afsluiten
}
//als de sessie niet klopt
else
{
//wordt een alternatieve tekst weergegeven
echo
'<h3 class="title">Fout</h3>
<p class="content">Dit is geen openbare pagina, je moet ingelogd zijn om toegang te hebben tot deze pagina!</p>'
}
?>
<?
if(!isset($_SESSION['ingelogd']) || $_SESSION['ingelogd'] != true )
{
echo '<h3 class="title">Fout</h3><p class="content">Dit is geen openbare pagina, ';
die 'je moet ingelogd zijn om toegang te hebben tot deze pagina!</p>';
}
<?php
//controleren of sessie klopt
if ( isset($_SESSION['ingelogd']) && $_SESSION['ingelogd'] === true )
{
//sessie klopt dus alle gegevens op de pagina weergeven.
$bestand = $_GET['f'];
if (f == 1) {
include('bestand1.php');
} elseif (f == 2) {
include('bestand2.php');
} else {
echo "Wat is dit voor onzin. Ik weet niet wat ik moet weergeven, voor iets in waar ik wel wat op kan laten zien. ;-)";
}
//if van het vorige bestand afsluiten
}
//als de sessie niet klopt
else
{
//wordt een alternatieve tekst weergegeven
echo
'<h3 class="title">Fout</h3>
<p class="content">Dit is geen openbare pagina, je moet ingelogd zijn om toegang te hebben tot deze pagina!</p>'
}
?>
if (file_exists('jebestand.php')) {
include('jebestand.php');
} else {
echo "Wat is dit voor onzin. Ik weet niet wat ik moet weergeven, voer iets in waar ik wel wat op kan laten zien. ;-)";
}