Dag mede-PHPers,
Mijn situatie:
ik ben bezig met een spel in PHP, hierin zijn een x aantal gebruikers. Deze worden opgeslagen in een MySQL database, allemaal met een uniek nummer.
Ik wil dat het mogelijk is voor de gebruikers om zich aan te sluiten bij een 'clan'. Hiervoor is wel toestemming nodig van de leider van de clan. Ik dacht eraan om de gebruikers een link te sturen, bijvoorbeeld inclan.php?uid=1&cid=3 waarbij uid het nummer van de gebruiker is en cid het nummer van de clan (die ook worden opgeslagen in MySQL).
Ik zit echter vast met de realisering hiervan. Het probleem is natuurlijk dat een gebruiker de link kan wijzigen in inclan.php?uid=1&cid=4 bijvoorbeeld, hij zou dan zonder toestemming in een andere clan komen. Ik moet dus op de een of andere manier bijhouden welke leden zijn uitgenodigd voor een bepaalde clan.
Waar ik aan dacht:
- De gebruikersnummers opslaan in een array, deze wegschrijven in een bestand of in MySQL.
In het eerste geval het bestand uitlezen (bijvoorbeeld clan3.txt) en kijken of het gebruikersnummer hierin voorkomt. Zo niet dan mag de persoon niet in de clan, zo ja dan mag het wel.
In het tweede geval dacht ik aan een array (bijvoorbeeld $clan3 = Array (3,7,12,443);) die vervolgens met eval() geëvalueerd wordt om te kijken of het gebruikersnummer in de array voorkomt.
Beide methoden staan mij niet aan: de eerste niet omdat je dan een hoop tekstbestanden krijgt, namelijk voor elke clan een.
Bovendien zouden deze bestanden ingelezen kunnen worden door gebruikers (oke, hier is wel omheen tewerken, maar toch). De tweede staat mij niet aan vanwege het gebruik van eval. Overal hier op GoT lees ik namelijk dat je hier erg voorzichtig mee moet doen en dat het voor allerlei problemen kan zorgen.
- Een aparte tabel maken, met drie kolommen: een als uniek nummer, een voor het clannummer, en een voor het gebruikersnummer. Hierin worden de uitgenodigde leden opgeslagen. Als een gebruiker accepteert of afwijst wordt de gebruiker verwijdert uit deze tabel.
- Elke gebruiker heeft een kolom clan, deze staat standaard op 0. Ik zou een extra kolom kunnen toevoegen, bijvoorbeeld 'aangenomen', welke op TRUE of FALSE (of 0 of 1) staat. Is het lid uitgenodigd, dan komt de clan-kolom op het clannummer te staan, maar blijft 'aangenomen' op 0/FALSE staan. Als de gebruiker op de link klikt wordt gekeken of het nummer in de clan-kolom overeenkomt met cid in de url, als dit zo is wordt de gebruiker aangenomen. Zo niet dan wordt degene afgewezen.
Mijn voorkeur gaat uit naar de derde mogelijkheid, maar graag zou ik jullie mening hierover willen. Wat zouden jullie doen?
Is dit de beste methode of hebben jullie een beter idee? Misschien heeft iemand ervaring hiermee, hoe heb jij het in dat geval opgelost?
Alvast bedankt!
Mijn situatie:
ik ben bezig met een spel in PHP, hierin zijn een x aantal gebruikers. Deze worden opgeslagen in een MySQL database, allemaal met een uniek nummer.
Ik wil dat het mogelijk is voor de gebruikers om zich aan te sluiten bij een 'clan'. Hiervoor is wel toestemming nodig van de leider van de clan. Ik dacht eraan om de gebruikers een link te sturen, bijvoorbeeld inclan.php?uid=1&cid=3 waarbij uid het nummer van de gebruiker is en cid het nummer van de clan (die ook worden opgeslagen in MySQL).
Ik zit echter vast met de realisering hiervan. Het probleem is natuurlijk dat een gebruiker de link kan wijzigen in inclan.php?uid=1&cid=4 bijvoorbeeld, hij zou dan zonder toestemming in een andere clan komen. Ik moet dus op de een of andere manier bijhouden welke leden zijn uitgenodigd voor een bepaalde clan.
Waar ik aan dacht:
- De gebruikersnummers opslaan in een array, deze wegschrijven in een bestand of in MySQL.
In het eerste geval het bestand uitlezen (bijvoorbeeld clan3.txt) en kijken of het gebruikersnummer hierin voorkomt. Zo niet dan mag de persoon niet in de clan, zo ja dan mag het wel.
In het tweede geval dacht ik aan een array (bijvoorbeeld $clan3 = Array (3,7,12,443);) die vervolgens met eval() geëvalueerd wordt om te kijken of het gebruikersnummer in de array voorkomt.
Beide methoden staan mij niet aan: de eerste niet omdat je dan een hoop tekstbestanden krijgt, namelijk voor elke clan een.
Bovendien zouden deze bestanden ingelezen kunnen worden door gebruikers (oke, hier is wel omheen tewerken, maar toch). De tweede staat mij niet aan vanwege het gebruik van eval. Overal hier op GoT lees ik namelijk dat je hier erg voorzichtig mee moet doen en dat het voor allerlei problemen kan zorgen.
- Een aparte tabel maken, met drie kolommen: een als uniek nummer, een voor het clannummer, en een voor het gebruikersnummer. Hierin worden de uitgenodigde leden opgeslagen. Als een gebruiker accepteert of afwijst wordt de gebruiker verwijdert uit deze tabel.
- Elke gebruiker heeft een kolom clan, deze staat standaard op 0. Ik zou een extra kolom kunnen toevoegen, bijvoorbeeld 'aangenomen', welke op TRUE of FALSE (of 0 of 1) staat. Is het lid uitgenodigd, dan komt de clan-kolom op het clannummer te staan, maar blijft 'aangenomen' op 0/FALSE staan. Als de gebruiker op de link klikt wordt gekeken of het nummer in de clan-kolom overeenkomt met cid in de url, als dit zo is wordt de gebruiker aangenomen. Zo niet dan wordt degene afgewezen.
Mijn voorkeur gaat uit naar de derde mogelijkheid, maar graag zou ik jullie mening hierover willen. Wat zouden jullie doen?
Is dit de beste methode of hebben jullie een beter idee? Misschien heeft iemand ervaring hiermee, hoe heb jij het in dat geval opgelost?
Alvast bedankt!
Full-stack webdeveloper in Groningen