login  Naam:   Wachtwoord: 
Registreer je!
 Forum

login script reageert niet (Opgelost)

Offline tom169 - 30/06/2007 20:51 (laatste wijziging 30/06/2007 20:53)
Avatar van tom169Nieuw lid Beste,
Ik ben met php5 begonnen en nu begrijp ik alles van databases en zo, maar als ik de tut volg die hier op de site staat doet het script niet wat ik wil:
Als je naar http://www.onlinetutorials.be gaat en probeert in te loggen
(user: test / pass: test) zal je zien dat als je op login klikt de form opnieuw geladen wordt en er helemaal niets gebeurt.
Ook als je probeert te refreshen krijg je in FF een alert dat je de post-gegevens opnieuw verzend...
De code:
  1. <?
  2. class login {
  3.  
  4. var $ingelogd;
  5. /*login functie*/
  6. function login() {
  7. $this->ingelogd = false; //default uitgelogd
  8. session_start(); //start een sessie
  9. if(isset($_POST['loguit'])) $this->loguit();
  10. elseif(isset($_SESSION['count'])&&isset($_SESSION['user_ID'])&&isset($_SESSION['username'])) {
  11. $_SESSION['count']++; //als sessie al bestaat, tel aantal pagina's +1
  12. $this->ingelogd = true; //ingelogd
  13. }
  14.  
  15. elseif(isset($_COOKIE['user_ID'])&&isset($_COOKIE['pass_hash'])) {
  16. $sql = "id = ".(int)$_COOKIE['user_ID']." AND password = '".addslashes($_COOKIE['pass_hash'])."'";
  17. $controle = $this->controleer_paswoord($sql);
  18. $this->ingelogd = $controle;
  19. }
  20.  
  21. if(isset($_POST['username'])&&isset($_POST['password'])&&!$this->ingelogd) { //geen elseif, wordt dan sobieso uitgevoerd, ook als je last hebt met verkeerde info in cookies en via form wilt inloggen
  22. $sql = "username = '".addslashes($_POST['username'])."' AND password = '".md5(addslashes($_POST['password']))."'";
  23. $controle = $this->controleer_paswoord($sql);
  24. $this->ingelogd = $controle;
  25. }
  26.  
  27. if($this->ingelogd) {
  28. setcookie ("user_ID",$_SESSION['user_ID'],time() + 3600*24*30,'/','http://www.onlinetutorials.be');
  29. setcookie ("pass_hash",md5($_POST['password']),time() + 3600*24*30,'/','http://www.onlinetutorials.be');
  30. }
  31.  
  32. }
  33. /*controleert het wachtwoord*/
  34. function controleer_paswoord($sql2) {
  35. require('db_connect.php'); //script voor databaseconnect ( mysql_connect en mysql_select_db)
  36. $sql = "SELECT username,user_ID FROM user WHERE ".$sql2; //nu volledige query
  37. $result = mysql_query($sql) or die (mysql_error());
  38. if($row = mysql_fetch_object($result)) {
  39. $_SESSION['count']=1;
  40. $_SESSION['user_ID']=$row->user_ID;
  41. $_SESSION['username']=$row->username;
  42. return true; //ingelogd
  43. }
  44. else return false; //niet ingelogd
  45. }//end function
  46.  
  47. function is_ingelogd() {
  48. return $this->ingelogd;
  49. }//end function
  50.  
  51. function get_output() {
  52. if($this->is_ingelogd) return 'U bent ingelogd!';
  53. else include ('includes/login/login_form.php');
  54. }//end function
  55.  
  56. function loguit() {
  57. setcookie ("user_ID", "", time() - 3600,"/", "jouw_domein.be");
  58. setcookie ("pass_hash", "", time() - 3600,"/", "jouw_domein.be");
  59. $this->ingelogd = false;
  60. } //end function
  61.  
  62. }//end class
  63.  
  64. $bezoeker = new login();
  65. ?>


Ik include deze code waar de login moet komen...

17 antwoorden

Gesponsorde links
Offline GTW - 01/07/2007 14:39
Avatar van GTW Gouden medaille

PHP gevorderde
dat komt omdat je niets aanroept.... je maakt wel de variabele aan voor de classe, maar ik zie nergens (indoen het php5 is) een __construct. en anders kun je helemaal onderaan, onder
  1. $bezoeker = new login();

dit zetten:
  1. $bezoeker->login();
Offline tom169 - 01/07/2007 15:46
Avatar van tom169 Nieuw lid dus als ik dat nu in mn site wil laten werken moet ik dat script require-en en dan $bezoeker->login(); doen?
Offline GTW - 01/07/2007 15:55
Avatar van GTW Gouden medaille

PHP gevorderde
ja, kan...
of zo:
  1. <?
  2. class login {
  3.  
  4. var $ingelogd;
  5. /*login functie*/
  6. function login() {
  7. $this->ingelogd = false; //default uitgelogd
  8. session_start(); //start een sessie
  9. if(isset($_POST['loguit'])) $this->loguit();
  10. elseif(isset($_SESSION['count'])&&isset($_SESSION['user_ID'])&&isset($_SESSION['username'])) {
  11. $_SESSION['count']++; //als sessie al bestaat, tel aantal pagina's +1
  12. $this->ingelogd = true; //ingelogd
  13. }
  14.  
  15. elseif(isset($_COOKIE['user_ID'])&&isset($_COOKIE['pass_hash'])) {
  16. $sql = "id = ".(int)$_COOKIE['user_ID']." AND password = '".addslashes($_COOKIE['pass_hash'])."'";
  17. $controle = $this->controleer_paswoord($sql);
  18. $this->ingelogd = $controle;
  19. }
  20.  
  21. if(isset($_POST['username'])&&isset($_POST['password'])&&!$this->ingelogd) { //geen elseif, wordt dan sobieso uitgevoerd, ook als je last hebt met verkeerde info in cookies en via form wilt inloggen
  22. $sql = "username = '".addslashes($_POST['username'])."' AND password = '".md5(addslashes($_POST['password']))."'";
  23. $controle = $this->controleer_paswoord($sql);
  24. $this->ingelogd = $controle;
  25. }
  26.  
  27. if($this->ingelogd) {
  28. setcookie ("user_ID",$_SESSION['user_ID'],time() + 3600*24*30,'/','http://www.onlinetutorials.be');
  29. setcookie ("pass_hash",md5($_POST['password']),time() + 3600*24*30,'/','http://www.onlinetutorials.be');
  30. }
  31.  
  32. }
  33. /*controleert het wachtwoord*/
  34. function controleer_paswoord($sql2) {
  35. require('db_connect.php'); //script voor databaseconnect ( mysql_connect en mysql_select_db)
  36. $sql = "SELECT username,user_ID FROM user WHERE ".$sql2; //nu volledige query
  37. $result = mysql_query($sql) or die (mysql_error());
  38. if($row = mysql_fetch_object($result)) {
  39. $_SESSION['count']=1;
  40. $_SESSION['user_ID']=$row->user_ID;
  41. $_SESSION['username']=$row->username;
  42. return true; //ingelogd
  43. }
  44. else return false; //niet ingelogd
  45. }//end function
  46.  
  47. function is_ingelogd() {
  48. return $this->ingelogd;
  49. }//end function
  50.  
  51. function get_output() {
  52. if($this->is_ingelogd) return 'U bent ingelogd!';
  53. else include ('includes/login/login_form.php');
  54. }//end function
  55.  
  56. function loguit() {
  57. setcookie ("user_ID", "", time() - 3600,"/", "jouw_domein.be");
  58. setcookie ("pass_hash", "", time() - 3600,"/", "jouw_domein.be");
  59. $this->ingelogd = false;
  60. } //end function
  61.  
  62. }//end class
  63.  
  64. $bezoeker = new login();
  65. $bezoeker->login();
  66. ?>
Dit moet je dan includen/requiren
Offline Ultimatum - 01/07/2007 15:56
Avatar van Ultimatum PHP expert @gtw, een constructor is niet verplicht

Ja je kan gewoon waar je de functie login wilt hebben $bezoeker->login() doen
Offline GTW - 01/07/2007 16:36
Avatar van GTW Gouden medaille

PHP gevorderde
@ultimatum...
ik zeg ook nergens dat dat verplicht is? leer lezen. ik zeg dat als je die niet hebt, de andere functies niet automatisch worden geladen (wat je in de constructor kan doen...
Offline tom169 - 01/07/2007 16:59 (laatste wijziging 01/07/2007 18:41)
Avatar van tom169 Nieuw lid moet je dan in een soort script die functies gebruiken? met if en else?
want als ik nu die
$bezoeker->login() doe komt er helemaal geen output, maar als ik
$bezoeker->get_output() doe krijg ik wel het formpje te zien (spijtig genoeg met nog altijd het resultaat dat de pagina gewoon refreshed na het 'inloggen' en dat die form dan gewoon terugkomt
Offline jlkiller - 02/07/2007 02:15
Avatar van jlkiller Nieuw lid Als je bezoeker->login() inlaadt, laadt je gewoon de __CONSTRUCT opnieuw in, omdat de class en de functie dezelfde naam hebben. Tevens vind ik je class erg onlogisch vorm gegeven.

Als je het ergens gedownload hebt, staat daar geen uitleg bij dan..? Want ik zou het ook niet durven zeggen... Vind het maar een vage class eerlijk gezegd.
Offline tom169 - 02/07/2007 10:12 (laatste wijziging 02/07/2007 11:04)
Avatar van tom169 Nieuw lid het is van de php tutorial hier
[url=http://www.sitemasters.be/tutorials/4/1/99/PHP/Maak_een_login-script.]
login-script[/url]

Het is de enige tut die ik kon vinden ivm een login script (-_-)

maar... hoe los ik dit nu op? die $bezoeker->login() slaat dat op de functie?
[offtopic]Een link naar een goede tut is ook welkom[/offtopic]
Offline riekele - 02/07/2007 11:07
Avatar van riekele PHP beginner dat $bezoeker->login() hoef je niet te doen, want de login functie wordt al aangeroepen omdat het een constructor is. (de functie met dezelfde naam als de class is de constructor)..
Offline tom169 - 02/07/2007 11:47
Avatar van tom169 Nieuw lid hoe doe ik het dan werken?
Offline Simax - 02/07/2007 11:50 (laatste wijziging 02/07/2007 17:48)
Avatar van Simax Onbekend Sorry!
Offline Ultimatum - 02/07/2007 11:58
Avatar van Ultimatum PHP expert @hierboven, wat is het probleem nou, en waarom zet je het hier neer? 2 verschillende problemen in 1 topic? Beetje verwarrend

Jij gebruikt exit(); dan stopt je hele pagina
Offline tom169 - 02/07/2007 12:07 (laatste wijziging 04/07/2007 19:40)
Avatar van tom169 Nieuw lid van verwarrend gesproken: die exit() is dat naar mijn script gericht of naar dat van rvb?

edit:
Hoe krijg ik dit nu werkend?
Offline Dark_Paul - 04/07/2007 19:53
Avatar van Dark_Paul PHP ver gevorderde Ik heb nog weinig kaas gegeten van classes, dus daar kan ik je nog niet in helpen. Maar dit vond ik op regel 8 van je gepostte code.
  1. session_start(); //start een sessie

Zou je die niet bovenaan je pagina zetten? Scheelt je dadelijk nog een brok errors gok ik zo.
Offline tom169 - 04/07/2007 20:06
Avatar van tom169 Nieuw lid nog geen errors tegengekomen
heb op de index.php ook nog eens sesson_start() staan, maar missch. is dat de fout... even controleren
Offline kickasgamer - 04/07/2007 20:08
Avatar van kickasgamer PHP ver gevorderde 2 keer session_start() kan voor problemen zorgen
Offline tom169 - 04/07/2007 20:12 (laatste wijziging 05/07/2007 11:06)
Avatar van tom169 Nieuw lid kheb al iets anders die meer up-to-date is en die nog werkt ook ;)
reinhout.onlinetutorials.be
Het is een voorlopige login
username: test
password: test

edit: Het probleem is dat nu werkend krijgen in mn site...
als je naar http://www.onlinetutorials.be gaat kan je met bovenstaande gegevens inloggen, maar dan wordt je geredict naar een andere pagina, weg van het eigenlijke front-systeem
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.247s