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

?>
Hopelijk begrijp je nu/straks hoe de exceptions werken.
Zeker handig in zulke situaties.
- Ariën - op 22/02/2018 14:56:55

Hopelijk begrijp je nu/straks hoe de exceptions werken.
Zeker handig in zulke situaties.


Bedankt!
De link is zeer informatief. Ben er nog een beetje mee aan het knutselen maar ik begrijp het wel.
Ik ben ook begonnen aan een registratie formuliertje. die identiek is aan de ingame registratie(voorheen registreerde gebruikers in de game zelf).

Nu vraag ik me af hoe ik kan detecten welke radio input de gebruiker geselecteerd heeft.

<label for="RCGENDER"><b><font size="4">(<font color="#FF0000"> * </font>)</font> Characters Gender</b></label><br>    
<input type="radio" name="RCGENDER" value="Male" checked> Male<br>
<input type="radio" name="RCGENDER" value="Female"> Female<br>


Ik vermoed dat het zoiets zal zijn als

$_POST["RCGENDER"]

Maar hoe haal je de value dan op?
De waarde zit in $_POST["RCGENDER"]. Dus als je die zichtbaar wilt hebben, dan kan je die echo'en. Of als je die wilt benutten in de verwerking van je script, dan kan je die variabele in de juiste functie plaatsen.

Let er wel op dat je in geval van SQL-queries deze variabele moet escapen tegen SQL-injection. En dat je bij het tonen van de gegevens netjes htmlspecialchars om deze variabele gebruikt om de HTML onschadelijk te maken om je tegen XSS te beschermen.

Overigens, wat voor boek of editor gebruik je dat je nog met oude <font> tags werkt?
Met CSS ben je veel flexibeler om de layout te beheren. Vergeet liever dus die font-tags!

Font had ik gebruikt om een sterretje * rood te kleuren. Ik ben qua html nog van de oude stempel omdat ik daar 10 jaar geleden heel erg mee bezig was. Ik heb die <font> eigenlijk getypt even snel.

qua css ben ik zowiezo echt een noob en daarom gebruik ik een mooie template die gemaakt is door iemand anders.

Ik ben bekend met de sql injectie inderdaad.

Als ik je goed begrijp zal hij dan als je Male selecteerd, in de echo 'male' printen toch?
Is er dan een manier om er 1 of 2 van te maken?

Want ingame wordt dit voor geslacht gebruikt:
1 = male 2 =female
Voor wat betreft de opmaak: Ik zou dan liever <span> gebruiken.

Verder kan je uiteraard ook een 1 of een 2 in de value zetten.

<input type="radio" name="RCGENDER" value="1" checked>

Dit bijvoorbeeld? dat zou dan 1 posten?

En ik zal er eens naar kijken naar span.

Bedankt voor de tips
Dat is het, maar ik zou niet standaard voor iemand zomaar bepalen dat diegene een man is door checked aan te zetten. Misschien is het ook handig om rekening te houden met genderneutraliteit als je toch al gender aan het nummeren bent.

Over je escaping: Dat klopt, als de functie precies doet wat je wilt, tenminste. Maar ik raad aan geen variabelen te kopiëren. het is onnodig, en uiteindelijk raak je het overzicht kwijt wat je al aan variabelen bewerkt hebt, met mogelijk veiligheidslekken tot gevolg. Je wilt je applicatie die je bouwt uiteraard zo leesbaar mogelijk houden zonder teveel fratsen.
- Ariën - op 22/02/2018 20:25:11

Dat is het, maar ik zou niet standaard voor iemand zomaar bepalen dat diegene een man is door checked aan te zetten. Misschien is het ook handig om rekening te houden met genderneutraliteit als je toch al gender aan het nummeren bent.


Hebben we over nagedacht alleen zijn er alleen echt typisch mannelijk of vrouwelijke characters. gender neutraal word wel geimplenteerd in de toekomst.
Wat betreft die checkbox niet op checked zetten is een goed idee.


[size=xsmall]Toevoeging op 22/02/2018 21:20:46:[/size]



Hoe kan ik checken of een value Firstname_Lastname is?
Zie je PM even die ik net heb verstuurd.

Ik snap het laatste niet zo. Je wilt toch niet letterlijk op "Firstname_Lastname" controleren?
Als dat een placeholder is om in een formulier aan te geven wat voor voorbeelddata er verwacht wordt, dan zou ik liever het placeholder="" attribuut in je formulier-element gebruiken.
Ik bedoelde eigenlijk controleren of de gebruiker deze username invoert:

voor achternaam
john doe

moet dan John_Doe zijn.

Dit is hoe de usernames in het spel ook in de database ingevoerd worden.

Ik bedoel dan eigenlijk hoe ik kan checken of er een _ is gebruikt

Reageren