Goeiedag iedereen,

Ik ben de ontwerper van een online game die gebruikt maakt van sqlite.
Nu ben ik gestart met PHP om een UCP te maken.
Dit gaat tot nu toe goed en dus heb ik een simpel login formuliertje gemaakt.
In het script worden na het inloggen de goede data getoond.
Het probleem is eigenlijk dat als je weer naar de home pagina gaat waar ook de staat worden laten gezien, dat er niks word laat gezien. En ik denk dat dit komt omdat het script niet weet waar het de data vandaan moet halen.
Nu vraag ik me af, kan ik niet de gebruikersnaam in een soort tijdelijke array opslaan en vandaar ophalen?(zo werkt dat in de code waar ik de game mee ontwerp ook.) En als dit mogelijk is? Hoe doe ik dit dan?

Mocht het nodig zijn is hier de pagina login.php:

<?php
error_reporting(E_ALL);
class MyDB extends SQLite3
{
function __construct()
{
$this->open('LARPSERVER/scriptfiles/Data/database/testdatabase.db');
}
}
$db = new MyDB() or die ("Unable to open");


$sql = 'SELECT * FROM USERS WHERE MAIL="'.$_POST["MAIL"].'" AND PASSWORD="'.$_POST["PASSWORD"].'"';

$stmt = $db->query($sql);
while($row = $stmt->fetchArray(SQLITE3_ASSOC) )
{
$email_address = $row["MAIL"];
$password = $row["PASSWORD"];
if($password==$_POST["PASSWORD"])
{

echo "<h1>Logged In</h1>";
echo "ID = ". $row['ID'] . "<br>";
echo "NAME = ". $row['NAME'] . "<br>";
echo "USERNAME = ". $row['USERNAME'] . "<br>";
echo "MAIL = ". $row['MAIL'] . "<br>";
}
}
while(!$row = $stmt->fetchArray(SQLITE3_ASSOC) )
{
header("Location: login_fail.html");
exit("Try again.");
}

$db->close();

?>
Staat die wel in dezelfde map vanwaar je probeert te includeren?
Bouw anders eens een file_exists() controle in bij je include, dan kan je meteen opvangen of een bestand bestaat. Het zou nog mooier zijn om de beschikbare pagina's in een array te definiëren.
Hoe kan ik beschikbare pagina's in een array definieren? hoe bedoel je dat?

Ik heb er dit van gemaakt:

if($page == "viewreport"){
if(file_exists(viewreport.php)){
include"viewreport.php";
} else{
 echo"Could not find page.";
}  
} 


En hij zegt inderdaad Could not find page.

Dit is zo vreemd want paginas zoals index.php?p=account werkt prima.

zelfs index.php?p=viewreport zegt wrong page.

terwijl viewreport.php het gewoon doet en ze echt in de zelfde map staan.
Zet de bestandsnaam in je file_exists eens in een string. ;-)

Je hebt nu een procedure geschreven voor een enkele pagina. Ga je dit stukje code steeds herhalen voor een nieuwe pagina? Denk aan DRY oftewel Don't Repeat Yourself.

Maak dan een array aan waarin je alle bestanden plaatst die geincludeerd mogen worden. Vervolgens kijk je met in_array of een bestand voorkomt, en als dat zo controleer je of deze daadwerkelijk bestaat. En als deze bestaat, dan includeer je hem.

Dan krijg je dus zoiets:

<?php
$allowed_pages = array('viewreport','editreport','deletereport');
if(isset($_GET['p']))
if(in_array($_GET['p']', $allowed_pages)) {
if(file_exists($_GET['p']".php")){
include $_GET['p']."php";
} else {
echo "Could not find page.";
}
} else {
echo "This page is not allowed.";
}
} else {
echo "Er is geen keuze gemaakt in de URL.";
}
?>

Reageren