Ik heb verscheidene topics gelezen over dit onderwerp, maar helaas wilden de daar aangedragen oplossingen mijn probleem niet verhelpen. Even een schets van de situatie:
Ik heb een site met daarbij voor de administrator een admin-functie voor gebruikers. Hierin kunnen dingen als gebruikersnaam, wachtwoord, stad, leeftijd en rechten ingesteld worden.
Uiteraard wil ik, als er dingen veranderd zijn en men op wil slaan, een aantal checks uitvoeren of de wijzigingen kloppen en er bijvoorbeeld geen dubbele gebruikersnamen in de database gaan komen.
Hiervoor gebruik ik momenteel 2 bestanden:
update.php
- Deze controleert per variabele of deze verschilt van de waarde die op dit moment in de database zit. Is dit zo, dan wordt een controle-functie aangeroepen.
functions.php
- Hierin zitten dus die controlefuncties.
Voor iedere variabele heb ik (indien nodig) een aparte functie ter controle. Deze zetten als er een fout voorkomt, een string in een array ($error[] = "Fout bij ...";). Het uitlezen van deze array met een for-statement is geen probleem, alleen moet ik dan dus wel binnen dat bestand blijven. Ook zou ik dan alle checks als 1 lange actie na elkaar uit moeten voeren. Daarom ben ik met sessies gaan spelen...
Het probleem is nu dat ik die array $error[] in de sessie op wil bergen. Zo kan ik bij iederen controle-functie strings toevoegen aan de array en deze aan het einde allemaal tegelijk uitlezen. Het opslaan van de array in de sessie wil alleen echt niet.
Omgevingsspecs:
Windows XP
Apache 2.0.43
PHP 4.3.0
Wat doe ik en heb ik geprobeerd:
In update.php:
session_start();
if(username is anders){ check_username($_POST['username']); }
Hierop wordt het volgende gedaan in check_username in functions.php:
$_SESSION['errors'] = $error['The username you entered already exists'];
$_SESSION['errors'] = $error['OVERSCHRIJFT IE DE VORIGE?'];
Terug in update.php roep ik errors(); aan in functions.php:
if(er staat iets in de array){
for($i=0;$i<sizeof($_SESSION['errors']);$i++){ echo "Fout:".$_SESSION['errors']."<br>"; }
En uiteraard daarna netjes session_destroy in update.php
Hehe het einde
Sorry voor het lange verhaal, maar ik ben er nu al een paar uur mee bezig en kom er echt niet meer uit. Allerlei notaties voor het registreren in de sessie zijn voorbijgekomen en alle mogelijkheden die ik kon vinden op sites zijn geprobeerd. Ik ben een sessie-newbie, dus misschien is het wel te simpel... ik ben in ieder geval compleet met m'n informatieverstrekking
Ik heb een site met daarbij voor de administrator een admin-functie voor gebruikers. Hierin kunnen dingen als gebruikersnaam, wachtwoord, stad, leeftijd en rechten ingesteld worden.
Uiteraard wil ik, als er dingen veranderd zijn en men op wil slaan, een aantal checks uitvoeren of de wijzigingen kloppen en er bijvoorbeeld geen dubbele gebruikersnamen in de database gaan komen.
Hiervoor gebruik ik momenteel 2 bestanden:
update.php
- Deze controleert per variabele of deze verschilt van de waarde die op dit moment in de database zit. Is dit zo, dan wordt een controle-functie aangeroepen.
functions.php
- Hierin zitten dus die controlefuncties.
Voor iedere variabele heb ik (indien nodig) een aparte functie ter controle. Deze zetten als er een fout voorkomt, een string in een array ($error[] = "Fout bij ...";). Het uitlezen van deze array met een for-statement is geen probleem, alleen moet ik dan dus wel binnen dat bestand blijven. Ook zou ik dan alle checks als 1 lange actie na elkaar uit moeten voeren. Daarom ben ik met sessies gaan spelen...
Het probleem is nu dat ik die array $error[] in de sessie op wil bergen. Zo kan ik bij iederen controle-functie strings toevoegen aan de array en deze aan het einde allemaal tegelijk uitlezen. Het opslaan van de array in de sessie wil alleen echt niet.
Omgevingsspecs:
Windows XP
Apache 2.0.43
PHP 4.3.0
Wat doe ik en heb ik geprobeerd:
In update.php:
session_start();
if(username is anders){ check_username($_POST['username']); }
Hierop wordt het volgende gedaan in check_username in functions.php:
$_SESSION['errors'] = $error['The username you entered already exists'];
$_SESSION['errors'] = $error['OVERSCHRIJFT IE DE VORIGE?'];
Terug in update.php roep ik errors(); aan in functions.php:
if(er staat iets in de array){
for($i=0;$i<sizeof($_SESSION['errors']);$i++){ echo "Fout:".$_SESSION['errors']."<br>"; }
En uiteraard daarna netjes session_destroy in update.php
Hehe het einde
Sorry voor het lange verhaal, maar ik ben er nu al een paar uur mee bezig en kom er echt niet meer uit. Allerlei notaties voor het registreren in de sessie zijn voorbijgekomen en alle mogelijkheden die ik kon vinden op sites zijn geprobeerd. Ik ben een sessie-newbie, dus misschien is het wel te simpel... ik ben in ieder geval compleet met m'n informatieverstrekking
Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.