login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Loginprobleem (m.b.t. sessies)

Offline Raze - 31/10/2008 15:53
Avatar van RazePHP beginner Ik heb ene loginsysteem gemaakt m.b.v. sessies.
Elke gebruiker kan een bericht posten op een nieuwspagina en kan dit bericht ook later eventueel wijzigen.
Het probleem zit hem er nu in dat iedereen de berichten van iedereen kan wijzigen. Ik zou graag willen dat ieder zijn eigen bericht zou kunnen wijzigen.

Bij ieder bericht dat er wordt gepost, wordt de gebruikersnaam ingevuld in de database bij het bericht zelf via een hidden form.
  1. <?php
  2. echo $_SESSION['GEBRUIKERSNAAM'];
  3. ?>


Weet er iemand een goede tip of een goed script om te controleren op de pagina of de gebruikersnaam (die de persoon om dat ogenblik "heeft", dus die "in de sessie" staat) gelijk is aan de username die in de database staat?

8 antwoorden

Gesponsorde links
Offline Ontani - 31/10/2008 15:57
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Je zegt toch zelf al wat je moet doen?

Je haalt het bericht op wat aangepast gaat worden, in dat bericht zit ook de gebruikersnaam van de persoon die hem gepost heeft, controleer dat tegen de gebruikersnaam die zich in de sessie bevindt en ga verder met de pagina als deze dezelfde zijn of sluit de pagina af (of redirect) als deze verschillend zijn...
Offline Raze - 31/10/2008 16:05
Avatar van Raze PHP beginner Dit is de code die bovenaan de pagina staat. Het probleem is dat ik nu telkens de melding "FOUT" krijg (met elke gebruiker, ook met de "maker" van het bericht) en toch ook met elke gebruiker nog steeds de tekst kan wijzigen.
  1. <?php
  2. $user = $_GET['username'];
  3. if(isset($_SESSION['GEBRUIKERSNAAM'])) {
  4. if($_SESSION['GEBRUIKERSNAAM'] == print $user) {
  5. echo "GOED";
  6. } else {
  7. echo "FOUT";
  8. }
  9. }
  10. ?>

Waar zit mijn fout in deze code of is er dan misschien een andere code.
Offline henver - 31/10/2008 16:10 (laatste wijziging 31/10/2008 16:14)
Avatar van henver HTML gevorderde
  1. $user = $row['gebruikersnaam']; // Aan te passen aan de gebruikersnaam uit de database.
  2. if(isset($_SESSION['GEBRUIKERSNAAM'])){
  3. if($_SESSION['GEBRUIKERSNAAM'] == $user){
  4. // OK
  5. }else{
  6. // Niet OK
  7. }
  8. }
Offline Raze - 31/10/2008 16:26
Avatar van Raze PHP beginner @ henver: Ik heb de code aangepast:
  1. $user = $row_forum_wijzigonderwerp['usr_USERNAME']; // Aan te passen aan de gebruikersnaam uit de database.
  2. if(isset($_SESSION['MM_Username'])){
  3. if($_SESSION['MM_Username'] == $user){
  4. echo "goed";
  5. }else{
  6. echo "niet goed";
  7. }
  8. }

zoals je kan zien wil ik de tekst zien wanneer de usernames niet overeen komen... maar... deze tekst wordt altijd getoond.
Het grappige (rare?!?) is nu dat wanneer ik de code als volgt aanpas, de tekst "goed" de hele tijd getoon wordt:
  1. $user = $row_forum_wijzigonderwerp['usr_USERNAME']; // Aan te passen aan de gebruikersnaam uit de database.
  2. if(isset($_SESSION['MM_Username'])){
  3. if(print $_SESSION['MM_Username'] == print $user){
  4. echo "goed";
  5. }else{
  6. echo "niet goed";
  7. }
  8. }

Ik heb dus gewoon 2 keer "print" toegevoegd.
Offline Kr4nKz1n - 31/10/2008 16:28
Avatar van Kr4nKz1n Onbekend Waarom een print op die plaats? Die is daar helemaal niet nodig.
Offline Raze - 31/10/2008 16:30
Avatar van Raze PHP beginner @ Kr4nKz1n: dat weet ik, maar ik doe het even om aan te tonen dat wanneer er die "print" niet staat, de kest "niet goed" altijd getoond wordt, en wanneer ze er wel staat, de tekst "goed" de hele tijd getoond wordt.

Is er dan misschien een andere manier om dit te controleren ipv sessies?
Offline Kr4nKz1n - 31/10/2008 16:55
Avatar van Kr4nKz1n Onbekend Je moet zoiets ook doen op ID en niet op gebruikersnaam.
Offline henver - 31/10/2008 18:15
Avatar van henver HTML gevorderde Waarschijnlijk zit er gewoon een fout in je sessievariabele.
Echo $_SESSION['MM_Username'] een keer, en kijk of die variabele klopt. Als dit zo is, zit er ergens een fout in bovenstaande code of in jouw query. Als de variabele niet goed zit, ligt fout ergens bij jouw inlogscript.

En zoals Kr4nKz1n al zei, werken met ID's is makkelijker en minder belastend voor de database en server.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2026 Sitemasters.be - Regels - Laadtijd: 0.206s