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();

?>
Kijk eens naar [php]strpos[/php].
Overigens, als je van exceptions gebruik maakt, dan moet de applicatie wel zo ingericht zijn dat deze hier gebruik van kan maken. Dit komt meestal neer op het plaatsen van een of meerdere (geneste) try-catch blokken. Een exception die niet gevangen wordt in een catch-blok resulteert altijd in een fatal error, ik neem dat dat laatste niet de bedoeling is maar dat e.e.a. netjes opgevangen en afgehandeld zou moeten worden.

Je kunt dus niet zomaar exceptions introduceren / er tussengooien, dit heeft implicaties voor de opzet van de applicatiecode.
@Thomas: Een Exceptionhandler kan eventueel ook erg handig zijn. Dan hoef je zo weinig mogelijk aan te passen om het te integreren.
Bedankt, Het is intussen gelukt.
Nu probeer ik deze pagina te krijgen:
index.php?p=viewreport&id=1
Dit werkt helaas niet.

viewreport.php?id=1 werkt wel prima.

Hoe krijg ik dit voor elkaar en wat doe ik verkeerd?

index.php:

$page = $_GET['p']; 
if($page == "viewreport"){ 
include"viewreport.php";  
} 

viewreport.php

$reportidget = $_GET['id'];
$reportid = $db->escapeString($reportidget);  
$sql = "SELECT * FROM REPORTS WHERE ID ='$reportid'"; 
$stmt = $db->query($sql);
   while($row = $stmt->fetchArray(SQLITE3_ASSOC) )
   {
      $status = $row['Status'];
      echo "<div id='modal'>";
    	echo "<h1>Report against ". $row['PlayerName'] . " - ID: <td>". $row['ID'] . "</h1>";
    	echo "". $row['PlayerName'] . " has been reported by ". $row['Reporter'] . ".<br>";
      echo "Date: ". $row['Date'] . "<br>";
      echo "Report:<br>". $row['Report'] . "<br><br>";
      echo "This report is currently";
      if($status==1)
      {
          echo "Open";
      } else {
          echo "Pending";
      }
    	echo " <a class='yes' href='javascript:void(0);'>Yes</a>";
    	echo "<a class='no' href='javascript:void(0);'>No</a>";
      echo "</div>";
       
   } 
Wat gebeurt er precies?
- Ariën - op 22/02/2018 23:13:52

Wat gebeurt er precies?


Uhm niks, krijg een blanke pagina.
ofja niet helemaal blank. Maar waar de page word included.
- Ariën - op 22/02/2018 22:59:10
@Thomas: Een Exceptionhandler kan eventueel ook erg handig zijn. Dan hoef je zo weinig mogelijk aan te passen om het te integreren.

Mja, maar dit produceert nog steeds een fatal error:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'stdout');

function my_handler($exception) {
    echo 'hello there!';
    throw new Exception('oops'); // als er binnen de handler alsnog iets fout gaat...
}

set_exception_handler('my_handler');
throw new Exception('hello');
?>

Dus binnen je exception handler zul je nog steeds try-catch constructies moeten gebruiken, en in dat geval kun je dan net zo goed direct een (of meer) try-catch blok(ken) gebruiken niet?

@Jasper: levert je query wel resultaten op?
@thomas
Jep want viewreport.php?p=1 werkt wel gewoon
Ik vind een custom exception-handeler zelf makkelijker werken, en ik heb nog geen grote nadelen gezien. En zolang je geen exceptions in je handler gebruikt werkt het prima.
Maar een try-catch blok in de handler zou op sich al geen slecht idee zijn.

Je kan je code volgooien met een hoop try-catch blokken, maar ik vraag mij dan af: "Blijft de code nog wel leesbaar met een hoop statements?

@jasper: Heb je dit wel bovenaan staan?
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'stdout');
?>

En anders is het debuggen, en elke statement even een echo geven, om zo te kijken wat je script precies doet.
Of ik begrijp jullie verkeerd, of jullie mij.
Maar deze twee paginas roepen hetzelfde script aan:
Errors worden niet weergegeven en error reporting staat aan.
viewreport.php?p=1

index.php?p=viewreport&id=1 zou bovenstaande pagina moeten aanroepen maar doet dit niet.

Ik heb een screenshot gemaakt om de situati duidelijker te beschrijven.

viewreport.php?p=1


index.php?p=viewreport&id=1


De pagina viewreport.php?p=1 zou weergegeven moeten worden onder het kopje Easy UCP


Let niet op de style haha is natuurlijk nog niet af .

Reageren