login  Naam:   Wachtwoord: 
Registreer je!
 Forum

aanmeld control

Offline kickasgamer - 19/02/2007 22:40
Avatar van kickasgamerPHP ver gevorderde ik heb nu een aanmeld script, maar ik zou graag ook controleren dat de gekozen gebruikersnaam niet al in de DB staat

hier is mijn script: http://www.plaatscode.be/4286/

hoe kan ik dat hier in bouwen (met welke code ?)

alvast bedankt

25 antwoorden

Gesponsorde links
Offline knoopa - 19/02/2007 22:53
Avatar van knoopa Onbekend
  1. $sql = "SELECT * FROM `gebruikers` WHERE `gebruikersnaam` = '".$_POST['gebruikersnaam']."'";
  2. $query = mysql_query($sql) or die (mysql_error());
  3. $aantal = mysql_num_rows($query);

  1. if($aantal != 0) { foutmelding }
Offline Gerard - 19/02/2007 23:10
Avatar van Gerard Ouwe rakker Je kan het iets makkelijker maken door gebruik te maken van COUNT().
Je query komt er dan als volgt uit te zien:
  1. <?php
  2. $qCheckUsername = mysql_query("SELECT COUNT()
  3. FROM gebruikers
  4. WHERE gebruikersnaam = '" . mysql_real_escape_string($_POST['gebruikersnaam']) . "'");
  5.  
  6. $bUsernameTaken = (mysql_result($qCheckUsername, 0) == 1);
Offline kickasgamer - 20/02/2007 10:06
Avatar van kickasgamer PHP ver gevorderde maar misschien kan ik dat beter in een functie zetten, maar hoe ?
Offline Ultimatum - 20/02/2007 10:12
Avatar van Ultimatum PHP expert
  1. <?php
  2. function check_username($username)
  3. {
  4. $qCheckUsername = mysql_query("SELECT COUNT()
  5. FROM gebruikers
  6. WHERE gebruikersnaam = '" . mysql_real_escape_string($username) . "'");
  7.  
  8. $bUsernameTaken = (mysql_result($qCheckUsername, 0) == 1);
  9. }
  10. ?>


moeilijk:s 

@knoopa, jij doet als het resultaat van de query niet gelijk is aan 0 een foutmelding, maar niet gelijk aan 0 betekent dat er dus wel een resultaat is gevonden en jij geeft dus een foutmelding terug als er wel een username is gevonden..
Offline kickasgamer - 20/02/2007 10:22 (laatste wijziging 20/02/2007 10:29)
Avatar van kickasgamer PHP ver gevorderde ah ja ik wist niet goed, als ik zo iets moest zetten tusen de ( ) 

EDIT: geeft deze query false ?
Offline Xan - 20/02/2007 10:28
Avatar van Xan HTML interesse @ultimatum:

dat kun je toch gewoon simpel oplossen door else toe te voegen?

  1. <?
  2. if($aantal != 0) { gebruikersnaam bestaat al! }else{ de query }
  3.  
  4. ?>


of zie ik het nu verkeerd..

Offline kickasgamer - 20/02/2007 10:30
Avatar van kickasgamer PHP ver gevorderde wat kan ik dan nu het beste doen, liefst wel met een functie
Offline Ultimatum - 20/02/2007 10:31
Avatar van Ultimatum PHP expert @hierbovenIk heb je toch een functie gegeven?
@xan, dat is het punt niet, het ging erom dat er knoopa verkeerd vergelijk
Offline Xan - 20/02/2007 10:34
Avatar van Xan HTML interesse oke dan is het goed ;)
Offline kickasgamer - 20/02/2007 10:45 (laatste wijziging 20/02/2007 12:29)
Avatar van kickasgamer PHP ver gevorderde @ultimatum: ik heb die van jou ook gebruikt en hij werkt top

maar ik heb nog een error

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /customers/tswebdev.be/tswebdev.be/httpd.www/kickasgamer/php/leden/include/functie.php on line 29

de code:
  1. function check_username ($naam) {
  2. include('include/connect.php');
  3. $connect = mysql_connect($host, $user, $pass) or die(mysql_error());
  4. $CheckUsername = mysql_query("SELECT COUNT() FROM gebruikers WHERE gebruikersnaam = '" . mysql_real_escape_string($naam) . "'");
  5.  
  6. $UsernameTaken = (mysql_result($CheckUsername, 0) == 1);
  7. }
Offline Ultimatum - 20/02/2007 10:47
Avatar van Ultimatum PHP expert doe eens:
$CheckUsername = mysql_query("SELECT COUNT() FROM gebruikers WHERE gebruikersnaam = '" . mysql_real_escape_string($naam) . "'") or die(mysql_error());

want ik denk dat je de velden en de tabelnaam niet hebt gewijzigd..
Offline kickasgamer - 20/02/2007 10:54
Avatar van kickasgamer PHP ver gevorderde ja nu geeft die een error

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ') FROM gebruikers WHERE gebruikersnaam = 'kickasgamer'' at line

kickasgamer is dat stukje mysql_real_escape_string($naam) ;)
Offline knoopa - 20/02/2007 11:08
Avatar van knoopa Onbekend
Citaat:
@knoopa, jij doet als het resultaat van de query niet gelijk is aan 0 een foutmelding, maar niet gelijk aan 0 betekent dat er dus wel een resultaat is gevonden en jij geeft dus een foutmelding terug als er wel een username is gevonden..
Bij het aanmelden moet hij toch een foutmelding geven als de gebruikersnaam al bestaat. Anders is hij voor de login.
Offline kickasgamer - 20/02/2007 12:30
Avatar van kickasgamer PHP ver gevorderde ik blijf deze error hebben, maar ik snap niet dta daar een error komt

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ') FROM gebruikers WHERE gebruikersnaam = 'kickasgamer'' at line

kickasgamer is dat stukje mysql_real_escape_string($naam) ;)

de code:
  1. function check_username ($naam) {
  2. include('include/connect.php');
  3. $connect = mysql_connect($host, $user, $pass) or die(mysql_error());
  4. $CheckUsername = mysql_query("SELECT COUNT() FROM gebruikers WHERE gebruikersnaam = '" . mysql_real_escape_string($naam) . "'");
  5.  
  6. $UsernameTaken = (mysql_result($CheckUsername, 0) == 1);
  7. }
Offline xSc - 20/02/2007 13:08 (laatste wijziging 20/02/2007 13:12)
Avatar van xSc Onbekend Makkelijk:

Maak de kolom gebruikersnaam uniek (UNIQUE, deze optie zit bijv. standaard al in PHPMyAdmin, maar je kunt het ook in 'handmatige' queries meegeven (CREATE TABLE / ALTER TABLE)).

Bij het inserten controleer je als het fout gaat of het om mysql errno 1062 gaat. Zo ja, dat komt de gebruikersnaam al voor.

  1. <?php
  2. if (!mysql_query("INSERT INTO ............ "))
  3. {
  4.  
  5. // Er is een fout opgetreden!
  6.  
  7. if (mysql_errno() == 1062)
  8. {
  9.  
  10. // Gebruikersnaam komt al voor
  11.  
  12. }
  13. else
  14. {
  15.  
  16. // Er is een andere fout opgetreden
  17.  
  18. }
  19.  
  20. }
  21. else
  22. {
  23.  
  24. // Ga door!
  25.  
  26. }
  27. ?>


Het spreekt vanzelf dat je i.p.v. INSERT INTO een UPDATE kan uitvoeren met dezelfde controle.
Offline kickasgamer - 20/02/2007 22:21
Avatar van kickasgamer PHP ver gevorderde ja nu weet ik wel niet goed hoe en waar ik dit juist moet zetten in deze code: http://www.plaatscode.be/4303/
Offline Gerard - 20/02/2007 22:45
Avatar van Gerard Ouwe rakker Mmmm, beetje mijn fout. Had niets tussen de COUNT() gezet terwijl daar volgens mij altijd wel iets tussen moet 

  1. <?php
  2. $qCheckUsername = mysql_query("SELECT COUNT(1)
  3. FROM gebruikers
  4. WHERE gebruikersnaam = '" . mysql_real_escape_string($_POST['gebruikersnaam']) . "'");
  5.  
  6. $bUsernameTaken = (mysql_result($qCheckUsername, 0) == 1);
Offline kickasgamer - 21/02/2007 10:44 (laatste wijziging 21/02/2007 10:54)
Avatar van kickasgamer PHP ver gevorderde ik heb nu de controlle gedaan met de functie die stond ik de eerste reactie die was van knoopa, maar het script laat 2 dezelfde namen gewoon door, en dat snap ik nu niet

dit is hoe ik het in mijn bestand aanmelden zet:
  1. <?
  2. $naam = mysql_real_escape_string($_POST['naam']);
  3. check_username($naam);
  4. if($aantal != 0) {
  5. echo "De gekozen gebruikersnaam is al ingebruik.";
  6. }else{
  7. $wachtwoord = mysql_real_escape_string($_POST['wachtwoord']);
  8. $wachtwoord2 = mysql_real_escape_string($_POST['wachtwoord2']); ?>


en dit is mijn functie:
  1. <?
  2. function check_username ($naam) {
  3. include('include/connect.php');
  4. $connect = mysql_connect($host, $user, $pass) or die(mysql_error());
  5. $sql = "SELECT * FROM `kag_leden` WHERE `naam` = '".$_POST['naam']."'";
  6. $query = mysql_query($sql) or die (mysql_error());
  7. $aantal = mysql_num_rows($query);
  8. }
  9. ?>
Offline xSc - 21/02/2007 11:20
Avatar van xSc Onbekend Ik snap niet wat jullie nu moeilijk zitten te doen. Mijn oplossing is gewoon de meest eenvoudige, maar ook de beste. Het scheelt je weer een query.
Offline kickasgamer - 21/02/2007 11:22
Avatar van kickasgamer PHP ver gevorderde ah ja, dat kan ook wel ja 

wil je dan even naar eze cde kijken als die goed is ?
http://www.plaatscode.be/4304/

btw dit is wel maar een deel van heel de code ;)
Offline xSc - 21/02/2007 11:28 (laatste wijziging 21/02/2007 11:29)
Avatar van xSc Onbekend Er zitten fouten in ;)

Als je query fout gaat, voer je een die() uit, terwijl hij eigenlijk moet controleren wat er fout gaat.

http://www.plaatscode.be/4313/

Ik heb je scriptje aangepast. Je moet trouwens je variablen buiten quotes houden!
Offline kickasgamer - 21/02/2007 11:44 (laatste wijziging 21/02/2007 11:50)
Avatar van kickasgamer PHP ver gevorderde alvast bednakt, ik ga het even toevoegen aan men script en teste

ik laat wel iets weten ;)

EDIT: nu heb ik deze error:
Parse error: syntax error, unexpected T_ELSE in /customers/*****/*****/httpd.www/kickasgamer/php/leden/aanmelden.php on line 50

dit is de code: http://www.plaatscode.be/4315/

Offline Thomas - 21/02/2007 12:12
Avatar van Thomas Moderator Holy shit Batman.

Spring eens fatsoenlijk in, dan zie je meteen waar het mis gaat.
Offline kickasgamer - 21/02/2007 12:37
Avatar van kickasgamer PHP ver gevorderde ja ik mijn bestand heb ik in gesprongen maar op www.plaatscode.be wordt dat niet over gezet, maar ik vind het zo raar dat die een else fout geeft want ik had tans toch genoeg }
Offline xSc - 21/02/2007 13:34 (laatste wijziging 21/02/2007 13:34)
Avatar van xSc Onbekend zetten alle if/else accoladen recht onder elkaar en spring netjes in:

  1. <?php
  2. if ()
  3. {
  4.  
  5. if ()
  6. {
  7.  
  8. }
  9. else
  10. {
  11.  
  12. }
  13.  
  14. }
  15. else
  16. {
  17.  
  18.  
  19. }
  20. ?>


Snap je?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.312s