Het lukt mij niet om een PHP-sessie op te zetten en met behulp daarvan een niet ingevuld formulier af te keuren en terug te tonen.
Ik begin met een file fontVortRegistrado.php met een formulier enkonduko, die ik post naar metodelektilo.php.
Onder het formulier, binnen de body uiteraard, heb ik geschreven:
<?php
// open de zitting
session_start();
// sla de drie variabelen op in de zitting
$_SESSION["fontVorto"]=document.enkonduko.fontVorto.value;
$_SESSION["fontLingvo"]=document.enkonduko.fontLingvo.value;
$_SESSION["portugalaItala"]=document.enkonduko.portugalaItala.value;
?>
Is dit misschien al fout, omdat de sessie alleen de waarden van geposte variabelen opneemt?
Goe dan ook, de volgende pagina metodelektilo begint met
<?php
ini_set('display_errors',1);
error_reporting(E_ALL&~E_NOTICE);
define('TITLE','Register');
?>
(Eerst had daarachter ook weer staan 'session_start()', maar twee keer openen kan niet, bedacht ik.)
Vervolgens begint de body met
<script type="text/javascript">
if ($_SESSION["fontVorto"]=="via fontvorto" || $_SESSION["fontLingvo"]==-1)
{alert("Vi ne enskribis vian fontvorton kaj/au la fontlingvon.");
header('Location: fontVortRegistrado.php');
}
</script>
(Die waarden "via fontvorto" en -1 zijn default waarden van de inputvariabelen "fontVorto" en "fontLingvo" in het vorige formulier. Dus als er daar niets ingevuld is, moet ik terug naar dat formulier in 'fontVortRegistrado'.)
Hier komt mijn eerste probleem: Is dit de goede manier om de functie 'header' te gebruiken of moet dat window.open of zoiets zijn?
Omdat ik dacht, dat zo'n script misschien door een gebeurtenis aangeropen moet worden, heb ik het ook geprobeerd met <body onload="kontrolu()"> en in de header gezet:
<script type="text/javascript">
function kontrolu()
{if ($_SESSION["fontVorto"]=="via fontvorto" || $_SESSION["fontLingvo"]==-1)
{alert("Vi ne enskribis vian fontvorton kaj/au la fontlingvon.");
header('Location: fontVortRegistrado.php');
}
}
</script>
Dat is mijn tweede vraag: wordt zo'n script, dat in de body staat gewoon chronologisch bij het opladen van het document uitgevoerd?
En tenslotte natuurlijk: Hoe moet ik die sessie openen (bij iedere volgende pagina weer?), van gegevens voorzien en die gegevens weer gebruiken, voor weer te geven tekst (met echo, heb ik gezien), maar ook als $_SESSION-variabelen binnen javascript?
En wanneer moet ik hem afsluiten? Ik ben die() en exit() tegengekomen, maar die vereisen tekst. Mag dat dan ook lege tekst zijn?
En kan require() en include() nuttig zijn?
De bedoeling van de pagina's is om een berekening uit te voeren, waarbij de gebruiker door de pagina's geleid wordt en bij elke volgende pagina bepaalde keuzes doet om de gewenste berekening mee mogelijk te maken.
1.217 views