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.
Waarom in het spaans.
SanThe, PHP gaat daar zelf heel makkelijk mee om. Het is niet nodig om een string die uit geatllen bestaat te typecasten.
Het is geen Spaans, maar Esperanto, mijn dagelijkse gezinstaal.
Overigens had de oplossing nog met iets anders te maken: met het verschil tussen checked="checked" in een checkbox en selected="selected"in een listbox of hoe dat mag heten.
Se vi volas esti vere internacia, lernu Esperanton.
Juist ja, dat wilde ik nou net ook zeggen, lol
Met checked of selected geef je alleen maar de default waardes aan, als je dat bij een select niet doet dan is dat eerste optie.

PS. Knap dat je op je 71ste nog bezig bent met programeren, ik hoop dat ik dat ook ga redden.

Reageren