login  Naam:   Wachtwoord: 
Registreer je!
 Forum

dubbele gebruikersnaam

Offline Clemens32 - 21/09/2006 09:28
Avatar van Clemens32PHP interesse http://www.pastebin.be/2771

Zou iemand mij kunnen vertellen wat ik fout doe aan de controle, want hij loopt helemaal niet door de controle heen.
Als ik me aanmeld en ik gebruik voor de tweede keer een gebruikersnaam blokkeerd hij dat niet.

10 antwoorden

Gesponsorde links
Offline Kr4nKz1n - 21/09/2006 09:59 (laatste wijziging 21/09/2006 10:00)
Avatar van Kr4nKz1n Onbekend Misschien moet je de functie boven de controle zetten ?

En waarom gebruik je '%s' ipv $gebruikernaam bij de query ?
Offline Clemens32 - 21/09/2006 10:03
Avatar van Clemens32 PHP interesse Dit is een onderdeel van een script.
De functie wordt helemaal bovenaan in de pagina aangeroepen met require functions.php dat gaat ook helemaal goed.

Ik kreeg van iemand de tip om sprinf() te gebruiken en daarbij '%s'.
Offline Kr4nKz1n - 21/09/2006 10:05 (laatste wijziging 21/09/2006 10:07)
Avatar van Kr4nKz1n Onbekend En gebruik nu eens de normale query en $gebruikersnaam
Werkt hij dan wel?

[Edit]
htmlspecialchars($_POST['gebruikersnaam'])))
Die klopt niet hae.
Die moet htmlspecialchars($gebruikersnaam))) worden

[Edit
query($sQuery))===false)
Dit klopt ook niet, 2 keer een =
query($sQuery))==false)
Offline b4nkr0bz0r - 21/09/2006 10:07 (laatste wijziging 21/09/2006 10:08)
Avatar van b4nkr0bz0r PHP gevorderde Dat is het handige van sprintf(); je hebt geen gebitch met quotes...

even het probleem, mijn ervaring is dat mysql_num_rows(); het soms wel doet met een andere vergelijking, probeer dit is:
  1. <?php
  2. if (MySQL_Num_Rows($je_query) == 0)
  3. {
  4. // niks aan de hand
  5. }
  6. else
  7. {
  8. echo 'Username in gebruik';
  9. }
  10. ?>


Even wat anders, functies dienen universeel te zijn, dat is jouwe niet met $_POST-waarde, je kan hem bevoorbeeld maken dat er een bepaalde check wordt uitgevoerd met een query op een bepaald veld ofzo, maar deze functie kan je maar één keer gebruiken.

EDIT: krankzin de === operator kijkt niet alleen of het aan een bepaalde conditie voldoet, maar ook of de variable van hettzelfde type is als de vergelijking.
Offline Thomas - 21/09/2006 10:17
Avatar van Thomas Moderator Sla je gebruikersnamen ook op met htmlspecialchars?

Ik zou gewoon eens kijken wat mysql_escape_string(strtolower(htmlspecialchars($_POST['gebruikersnaam']))) oplevert...

Je wilt trouwens wss ook niet dat een username toegestaan is als je mysql_query een error oplevert (regel 42)?
Offline Clemens32 - 21/09/2006 10:38
Avatar van Clemens32 PHP interesse Ik moet zeggen dat de functie voor me geschreven is.
Ik probeer hem nu toe te passen.

* Nee, ik sla de gebruikersnamen niet op met htmlspecialchars.
* Ik snap niet wat je bedoeld bij regel 42.

Offtopic:
Op plaatscode.be is een dbase connectie error.
Offline xSc - 21/09/2006 11:22
Avatar van xSc Onbekend Je hoeft niet te controleren of een gebruikersnaam bestaat. Maak bijv. de kolom Gebruikersnaam uniek (UNIQUE).

Als je dan een gebruikersnaam, die al bestaat, toegevoegd wordt, krijg je een fout (1062).

if (mysql_errno() == 1062)
{

// Gebruikersnaam komt al voor!

}

Dat scheelt weer ;)
Offline Clemens32 - 21/09/2006 12:23 (laatste wijziging 21/09/2006 12:34)
Avatar van Clemens32 PHP interesse @xSc
Dat klinkt simpel.
Ik kijk net in PMA, maar zie niet waar ik dat kan doen.

[edit]
Ik heb het al gevonden.
Hij doet het ook, dat wil zeggen dat hij een error geeft als ik voor een tweede keer een gebruikersnaam invoer.
Nu zit ik alleen met hetvolgende.
Het vangen van de error in combinatie met die andere controle, dat gaat dus niet goed.

  1. <?php
  2.  
  3. if (isset($_POST["verzendbutton"])) {
  4. if (!valid_gebruikersnaam($_POST["gebruikersnaam"])) {
  5. echo "<font color=\"red\">Vul een gewenste gebruikersnaam in. U mag alleen cijfers, letters, underscore (_), koppelteken (-) en spatie gebruiken.</font><br />";
  6. }
  7. if (mysql_errno() == 1062) {
  8. echo "<font color=\"red\">De door u gewenste gebruikersnaam is al in gebruik. Kies een andere.</font><br />";
  9. }
  10. }
  11.  
  12. ?>
Offline xSc - 21/09/2006 13:33 (laatste wijziging 21/09/2006 13:33)
Avatar van xSc Onbekend Clemens32, je mist een stukje.

Doe het zo:

  1. <?php
  2.  
  3. if (!$rMijnQuery = @mysql_query("INSERT INTO gebruikers (gebruikersnaam) VALUES('" . mysql_real_escape_string($_POST['sGebruikersnaam']) . "')"))
  4. {
  5.  
  6. // Er is een fout opgetreden
  7.  
  8. if (@mysql_errno() == 1062)
  9. {
  10.  
  11. // Gebruikersnaam komt al voor
  12.  
  13. }
  14. else
  15. {
  16.  
  17. // Een andere foutmelding
  18.  
  19. }
  20.  
  21. }
  22. else
  23. {
  24.  
  25. // Query gelukt, ga verder
  26.  
  27. }
  28.  
  29. ?>


Natuurlijk kun je i.p.v. INSERT INTO ook UPDATE gebruiken indien dat van toepassing is.

Let op: bovenstaand voorbeeld werkt alleen wanneer de betreffende kolom ook UNIQUE hebt gemaakt. Binnen PHPmyAdmin kun je dan door bij de betreffende kolom op het U-icoon te klikken.
Offline Clemens32 - 25/09/2006 19:38
Avatar van Clemens32 PHP interesse Ik kom er toch weer even op terug.
ik ben er nog niet uit.
Kan die errno() niet in de functie valid_gebruikersnaam() gegoten worden?
Zou iemand me daarmee kunnen helpen?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.204s