login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[PHP]Registreren

Offline finduilas - 01/07/2006 10:49 (laatste wijziging 01/07/2006 10:50)
Avatar van finduilasPHP gevorderde Hallo,

Ik ben bezig met een registratiecontrole:
  1. <?php
  2. include("config.php"); //mysql connectie includen
  3.  
  4. $namen = array(admin,webmaster,gast,webmasters);
  5.  
  6. if (IsSet($HTTP_POST_VARS['submit']))
  7. {
  8. if($HTTP_POST_VARS['username'] = "")
  9. {
  10. exit("Je hebt geen username ingevuld");
  11. }
  12. elseif($HTTP_POST_VARS['password'] = "")
  13. {
  14. exit("Je hebt geen password ingevuld");
  15. }
  16. elseif($HTTP_POST_VARS['password'] != $HTTP_POST_VARS['password2'])
  17. {
  18. exit("De wachtwoorden zijn niet gelijk");
  19. }
  20. elseif($HTTP_POST_VARS['username'] = $namen)
  21. {
  22. exit("Je username is niet toegelaten");
  23. }
  24. else
  25. {
  26. if (!@mysql_query("INSERT INTO
  27. leden
  28. (username,password,email,ip,aanmelddatum,level)
  29. VALUES
  30. ('".addslashes($HTTP_POST_VARS['username'])."',
  31. '".md5($HTTP_POST_VARS['password'])."',
  32. '".addslashes($HTTP_POST_VARS['email'])."',
  33. '".$HTTP_SERVER_VARS['REMOTE_ADDR']."',
  34. '".time()."',
  35. '1')
  36. "))
  37. {
  38. exit("Kan niets in tabel zetten");
  39. }
  40. else
  41. {
  42. echo "Je registratie is voltooid.Je kan nu inloggen";
  43. }
  44. }
  45. }
  46. else {
  47. //formulier
  48. echo "<form action=\"\" method=\"post\">";
  49. echo "Kies een gebruikersnaam:";
  50. echo " <input name=\"username\"><br>";
  51. echo "Kies een wachtwoord: ";
  52. echo " <input name=\"password\" type=\"password\"><br>";
  53. echo "Wachtwoord opnieuw: ";
  54. echo " <input name=\"password2\" type=\"password\"><br>";
  55. echo "Type een geldig e-mail adres in: ";
  56. echo "<input name=\"email\"><br>";
  57. echo "<input type=\"submit\" name=\"submit\" value=\"Registreer je!\">";
  58. echo "</form>";
  59.  
  60. }
  61. ?>

Alleen wil ik dus controleren of usernaam geen verkeerde inhoud bevat.Ik denk dus dat ik dat moet doen met een array. ($namen)
Maar ik krijg dus:
Notice: Use of undefined constant admin - assumed 'admin' in D:\wamp\www\finduilas\2\registreren.php on line 5

Notice: Use of undefined constant webmaster - assumed 'webmaster' in D:\wamp\www\finduilas\2\registreren.php on line 5

Notice: Use of undefined constant gast - assumed 'gast' in D:\wamp\www\finduilas\2\registreren.php on line 5

Notice: Use of undefined constant webmasters - assumed 'webmasters' in D:\wamp\www\finduilas\2\registreren.php on line 5

Bovendien werken m'n controle niet. Waarschijnlijk is het eenvoudig maar ik vind het niet (ben dan ook maar een noob in PHP)

EDIT: Ik weet dat ik ze weg krijg door die reporting_all weg te doen.Maar dat heb ik daar gezet omdat het scriptje niet werkte.Daarom 

14 antwoorden

Gesponsorde links
Offline lemoinet - 01/07/2006 11:12 (laatste wijziging 01/07/2006 11:13)
Avatar van lemoinet PHP gevorderde probeer zo eens

$namen = array('admin','webmaster','gast','webmasters');
Offline rambo - 01/07/2006 11:13 (laatste wijziging 01/07/2006 11:14)
Avatar van rambo HTML beginner Probeer in eerste plaats eens $_POST ipv $HTTP_POST_VARS te gebruiken. Wellicht zijn jou instellingen op je localhost zou ingesteld dat ze de oude HTTP-vars niet meer ondersteunen...

Edit: Dit gaat natuurlijk ook niet werken:

  1. elseif($HTTP_POST_VARS['username'] = $namen)

Maak daar eens van:
  1. elseif(in_array($_POST['username'], $namen))
Offline marten - 01/07/2006 11:18
Avatar van marten Beheerder
  1. <?php
  2. include("config.php"); //mysql connectie includen
  3.  
  4. $namen = array(admin,webmaster,gast,webmasters);
  5.  
  6. if (IsSet($_POST['submit']))
  7. {
  8. if($_POST['username'] == "")
  9. {
  10. exit("Je hebt geen username ingevuld");
  11. }
  12. elseif($_POST['password'] == "")
  13. {
  14. exit("Je hebt geen password ingevuld");
  15. }
  16. elseif($_POST['password'] != $_POST['password2'])
  17. {
  18. exit("De wachtwoorden zijn niet gelijk");
  19. }
  20. elseif($_POST['username'] == $namen)
  21. {
  22. exit("Je username is niet toegelaten");
  23. }
  24. else
  25. {
  26. if (!@mysql_query("INSERT INTO
  27. leden
  28. (username,password,email,ip,aanmelddatum,level)
  29. VALUES
  30. ('".addslashes($_POST['username'])."',
  31. '".md5($_POST['password'])."',
  32. '".addslashes($_POST['email'])."',
  33. '".$_SESSION['REMOTE_ADDR']."',
  34. '".time()."',
  35. '1')
  36. "))
  37. {
  38. exit("Kan niets in tabel zetten");
  39. }
  40. else
  41. {
  42. echo "Je registratie is voltooid.Je kan nu inloggen";
  43. }
  44. }
  45. }
  46. else {
  47. //formulier
  48. echo "<form action=\"\" method=\"post\">";
  49. echo "Kies een gebruikersnaam:";
  50. echo " <input name=\"username\"><br>";
  51. echo "Kies een wachtwoord: ";
  52. echo " <input name=\"password\" type=\"password\"><br>";
  53. echo "Wachtwoord opnieuw: ";
  54. echo " <input name=\"password2\" type=\"password\"><br>";
  55. echo "Type een geldig e-mail adres in: ";
  56. echo "<input name=\"email\"><br>";
  57. echo "<input type=\"submit\" name=\"submit\" value=\"Registreer je!\">";
  58. echo "</form>";
  59.  
  60. }
  61. ?>


Veranderd

if structuur is het == om te vergelijken en niet = want dan wijst hij het toe 
verder oude functienamen veranderd
Offline rambo - 01/07/2006 11:23
Avatar van rambo HTML beginner Ik denk niet dat dit script gaat werken marten, lees de reactie van lemoinet en mij eens en pas dat ook eens toe. Ik denk dat het dan al meer in de richting gaat komen.
Offline Rens - 01/07/2006 11:44 (laatste wijziging 01/07/2006 11:48)
Avatar van Rens Gouden medaille

Crew algemeen
  1. <?php
  2. include("config.php"); //mysql connectie includen
  3.  
  4. $namen = array("admin", "webmaster", "gast", "webmasters");
  5.  
  6. if (IsSet($_POST['submit']))
  7. {
  8. if(empty($_POST['username'])
  9. {
  10. exit("Je hebt geen username ingevuld");
  11. }
  12. elseif(empty*$_POST['password']))
  13. {
  14. exit("Je hebt geen password ingevuld");
  15. }
  16. elseif($_POST['password'] != $_POST['password2'])
  17. {
  18. exit("De wachtwoorden zijn niet gelijk");
  19. }
  20. elseif(In_Array($_POST['username'], $namen))
  21. {
  22. exit("Je username is niet toegelaten");
  23. }
  24. else
  25. {
  26. if (!@mysql_query("INSERT INTO
  27. leden
  28. (username,password,email,ip,aanmelddatum,level)
  29. VALUES
  30. ('".addslashes($_POST['username'])."',
  31. '".md5($_POST['password'])."',
  32. '".addslashes($_POST['email'])."',
  33. '".$_SERVER['REMOTE_ADDR']."',
  34. '".time()."',
  35. '1')
  36. "))
  37. {
  38. exit("Kan niets in tabel zetten.<br />".MySQL_Error());
  39. }
  40. else
  41. {
  42. echo "Je registratie is voltooid.Je kan nu inloggen";
  43. }
  44. }
  45. }
  46. else {
  47. ?>
  48. <form action="<?=$_SERVER['REQUEST_URI'];?>" method="post">
  49. Kies een gebruikersnaam:
  50. <input name="username"><br>
  51. Kies een wachtwoord:
  52. <input name="password" type="password"><br>
  53. Wachtwoord opnieuw:
  54. <input name="password2" type="password"><br>
  55. Type een geldig e-mail adres in:
  56. <input name="email"><br>
  57. <input type="submit" name="submit" value="Registreer je!">
  58. </form>
  59. <?PHP
  60. }
  61. ?>


Wat er veranderd is:
regel 5:
quotes om de waardes in de array
regel 7:
$HTTP_POST_VARS ==> $_POST
regel 9:
$HTTP_POST_VARS ==> $_POST
$_POST[''] == "" ==> empty($_POST[''])
regel 13:
$HTTP_POST_VARS ==> $_POST
$_POST[''] == "" ==> empty($_POST[''])
regel 17:
$HTTP_POST_VARS ==> $_POST
regel 21:
$_POST['username'] == $namen ==> In_Array($_POST['username'], $namen)
regel 34:
$_SESSION['REMOTE_ADDR'] ==> $_SERVER['REMOTE_ADDR']
regel 39:
Error handling bij MySQL, anders is dat je volgende vraag misschien omdat je query niet werkt.
regel 48 t/m regel 60:
HTML buiten PHP

Kijk er naar, vergelijk het met je oude script en kopieer/plak het niet zomaar.
Offline finduilas - 01/07/2006 11:58 (laatste wijziging 01/07/2006 12:01)
Avatar van finduilas PHP gevorderde Ben ik aan het doen rensjuh.

Alleen snap ik niet echt die $_session => $server.Maar zal eens opzoeken.Trouwens ik gebruikte die $_session niet.Ik had .$HTTP_SERVER_VARS['REMOTE_ADDR'].
Offline Rens - 01/07/2006 12:00 (laatste wijziging 01/07/2006 12:01)
Avatar van Rens Gouden medaille

Crew algemeen
Je wilt het IP adres van de bezoeker opvragen, dit gebeurd met $_SERVER['REMOTE_ADDR'] en niet met $_SESSION['REMOTE_ADDR'].
Want als je het met $_SESSION doet, moet je eerst het IP adres in de sessie zetten, en dat zie ik nergens gebeuren.

http://www.php....les.server
En dan een stuk naar onder scrollen, kom je REMOTE_ADDR vanzelf een keer tegen.
Offline finduilas - 01/07/2006 12:02
Avatar van finduilas PHP gevorderde Nochtans kreeg ik met .$HTTP_SERVER_VARS['REMOTE_ADDR']. mijn ip in de database hoor.Maar ik zal het veranderen.
Offline Rens - 01/07/2006 12:03 (laatste wijziging 01/07/2006 12:25)
Avatar van Rens Gouden medaille

Crew algemeen
Ja, $HTTP_SERVER_VARS, maar geen SESSION...
Goed lezen hé...

edit; @Hieronder:
foei marten!
Zo goed? 
Offline finduilas - 01/07/2006 12:07 (laatste wijziging 01/07/2006 15:19)
Avatar van finduilas PHP gevorderde Het is marten die het veranderde 
Lijn 34 van mijn script.

EDIT:
  1. $varusername = '$_POST[username]';
  2. $username = mysql_query("SELECT username FROM leden WHERE username='$varusername'") or die (mysql_error());
  3. $countusername=mysql_num_rows($username);
  4. $varemail = '$_POST[email]';
  5. $email = mysql_query("SELECT email FROM leden WHERE email='$varemail'") or die (mysql_error());
  6. $countemail = mysql_num_rows($email);


  1. elseif($countusername > 0)
  2. {
  3. exit("Deze username is al in gebruikt");
  4. }
  5. elseif($countemail > 0)
  6. {
  7. exit("Met dit emailadres is er al een account geregistreerd!");
  8. }


Dit werkt niet echt.Waarschijnlijk is username='$varusername' verkeerd.Maar als ik daar $_POST['username'] plaats krijg ik notices.

edit: Het is opgelost.Maar nu zit ik met een ander probleem.

  1. include("config.php"); //mysql connectie includen
  2. if (!is_logged_in())
  3. {
  4. echo "Je bent niet ingelogd.";
  5. }
  6. $query = mysql_query("SELECT level FROM leden WHERE username='$HTTP_SESSION_VARS[username]'");
  7. while ($obj = mysql_fetch_object($query)) {
  8. elseif ($obj->level != 5)
  9. {
  10. echo "Je hebt de adminrechten niet.";
  11. }
  12. else {
  13. echo "Je bent admin! Welkom ".$HTTP_SESSION_VARS['username']."";
  14. }
  15. ?>


Ik wil dus kijken of hij level 5 heeft of niet.Maar volgens mij moet het anders.(Dit werkt ook niet.)
[B]Edit2:[/B]
Hoe bedoel je rensjuh?
Offline Voldemort - 01/07/2006 15:43
Avatar van Voldemort PHP ver gevorderde Verander als dit $HTTP_SESSION_VARS naar $_SESSION, hetzelfde voor POST, GET, COOKIE, SERVER en als er nog zijn, die ook.

Verder haal je je variablen best ook buiten de quotes.

En een elseif volgt meteen na een if, dus ertussen kan je niet zomaar code zetten. Je zal het dus anders moeten oplossen:

  1. if (!is_logged_in())
  2. {
  3. echo "Je bent niet ingelogd.";
  4. }
  5. else
  6. {
  7. $query = mysql_query("SELECT level FROM leden WHERE username='".$_SESSION['username']."'");
  8. while ($obj = mysql_fetch_object($query)) {
  9. if ($obj->level != 5)
  10. {
  11. echo "Je hebt de adminrechten niet.";
  12. }
  13. else {
  14. echo "Je bent admin! Welkom ".$_SESSION['username']."";
  15. }
  16. }


En dit: $_SESSION[username] ==> $_SESSION['username']

(Sla alle tips qua code verbetering op zodat je ze later niet meer tegen komt)
Offline finduilas - 01/07/2006 15:50 (laatste wijziging 01/07/2006 15:58)
Avatar van finduilas PHP gevorderde Heb ik al gedaan.En errors die ik tegenkom ook .
  1. <?php
  2. include("config.php"); //mysql connectie includen
  3. if (!is_logged_in())
  4. {
  5. echo "Je bent niet ingelogd.";
  6. }
  7. else
  8. {
  9. $query = mysql_query("SELECT level FROM leden WHERE username='".$_SESSION['username']."'");
  10. while ($obj = mysql_fetch_object($query))
  11. {
  12. if ($obj->level != 5)
  13. {
  14. echo "Je hebt de adminrechten niet.";
  15. }
  16. else
  17. {
  18. echo "Je bent admin! Welkom ".$_SESSION['username']."";
  19. }
  20. }
  21. }
  22. ?>


Dit werkt .
Offline Voldemort - 01/07/2006 15:57 (laatste wijziging 01/07/2006 16:00)
Avatar van Voldemort PHP ver gevorderde Errors? Je bedoelt dat level 5 dat niet goed checkt?

  1. if (!is_logged_in())
  2. {
  3. echo "Je bent niet ingelogd.";
  4. }
  5. else
  6. {
  7. $query = mysql_query("SELECT level FROM leden WHERE username='".$_SESSION['username']."'");
  8. while ($obj = mysql_fetch_object($query)) {
  9. if ($obj->level != 5)
  10. {
  11. echo "Je hebt de adminrechten niet.";
  12. }
  13. else {
  14. echo "Je bent admin! Welkom ".$_SESSION['username'];
  15. }
  16. }
  17. }


(had een foutje met quotes (.""; moest ; worden) en een } vergeten)

Misschien is er een fout bij:

- Sessions aanmaak (session_start() vergeten, variablen die daar niet goed zijn gedaan, de sessie bevat geen waarde, ...)
- Zet het database veldtype eens naar TINYINT (en als je hoger dan 127 wil gaan moet je maar INT gebruiken). Dit klinkt misschien dom, maar toen ik rekenkundige bewerkingen wou doen met VARCHAR ipv INT kreeg ik serieuze rekenfouten, ik vond geen fouten in m'n script, en dan bleek het dat veld te zijn, dus dit is toch vrij belangrijk in sommige gevallen.
- Je hebt gewoon geen level 5 en het script is juist.

Edit: Fijn dat het werkt, maar lees toch nog eens even mijn bemerkingen .
Offline finduilas - 01/07/2006 16:03
Avatar van finduilas PHP gevorderde Die fouten had ik er al uitgehaald .Ik bedoel fouten die ik niet kan oplossen.Die sla ik ook op voor later.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.321s