Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z zalogowanie
Forum PHP.pl > Forum > PHP
wujeksz
witam,
utworzylem na stronie internetowej system logowania i rejstracji. rejestracja przebiega prawidlowo, mozna sie zarejstrowac dane sa wysylane do tabeli. haslo kodowane md5. lecz nie moge sie zalogowac potem. nie wiem moze cos zamotalem? wkleje wam kod

  1. <?
  2. require_once('conf.inc.php');
  3. require_once('functions.php');
  4. // ---
  5. // register new user
  6. // ---
  7. function register($username,$pass,$email,$question,$answer)
  8. {
  9. GLOBAL $db, $table;
  10. $username = trim($username);
  11. $pass = trim($pass);
  12. $email = trim($email);
  13. $question = addslashes(trim($question));
  14. $answer = addslashes(trim($answer));
  15. $validEmail = valid_email($email);
  16. $validName = valid_userName($username);
  17. $validPass = valid_password($pass);
  18. if(!$validName) return "error=invalid name";
  19. if(!$validPass) return "error=invalid password";
  20. if(!$validEmail) return "error=invalid email";
  21. $pass = md5(trim($pass));
  22. // all checks ok
  23. $query = @mysql_query("INSERT INTO $table (userName,userPassword,userMail,userQuestion,userAnswer) VALUES "
  24. ."('$username','$pass','$email','$question','$answer')");
  25. if(!$query)
  26. {
  27. return "error=" . mysql_error();
  28. } else {
  29. return "user=ok";
  30. }
  31. }
  32.  
  33. // ---
  34. // login, check user
  35. // ---
  36. function login($username,$pass)
  37. {
  38. GLOBAL $db, $table;
  39. $username = trim($username);
  40. $pass = md5(trim($pass));
  41. $query = mysql_query("SELECT * FROM $table WHERE userName = '$username' AND userPassword = '$pass'");
  42. return mysql_num_rows($query);
  43. }
  44.  
  45. // ---
  46. // forget password
  47. // ---
  48. function forget($email)
  49. {
  50. GLOBAL $db, $table;
  51. $email = trim($email);
  52. $query = mysql_query("SELECT userName, userQuestion from $table WHERE userMail = '$email'");
  53. if(mysql_num_rows($query)<1)
  54. {
  55. return "error=email not present into database";
  56. }
  57. $row = mysql_fetch_array($query);
  58. return "userName=$row[userName]&userQuestion=" . stripslashes($row['userQuestion']);
  59. }
  60.  
  61. // ---
  62. // generate new password
  63. // ---
  64. function new_password($username,$email,$answer)
  65. {
  66. GLOBAL $db,$table;
  67. $username = trim($username);
  68. $email = trim($email);
  69. $answer = addslashes(trim($answer));
  70. $query = mysql_query("SELECT * FROM $table WHERE userName = '$username' AND userMail = '$email' AND userAnswer = '$answer'");
  71. if(mysql_num_rows($query) < 1)
  72. {
  73. return "error=wrong answer";
  74. }
  75. $rand_string = '';
  76. // ---
  77. // generating a random 8 chars lenght password
  78. // ---
  79. for($a=0;$a<7;$a++)
  80. {
  81. do
  82. {
  83. $newrand = chr(rand(0,256));
  84. } while(!eregi("^[a-z0-9]$",$newrand));
  85. $rand_string .= $newrand;
  86. }
  87. $pwd_to_insert = md5($rand_string);
  88. $new_query = mysql_query("UPDATE $table SET userPassword = '$pwd_to_insert' WHERE userName = '$username' AND userMail = '$email'");
  89. if(!$new_query)
  90. {
  91. return "error=unable to update value";
  92. }
  93. return "userName=$userName&new_pass=$rand_string";
  94. }
  95.  
  96. // ---
  97. // decisional switch
  98. // ---
  99. if(isset($HTTP_POST_VARS["action"]))
  100. {
  101. switch($HTTP_POST_VARS["action"])
  102. {
  103. case "register":
  104. $result = register($HTTP_POST_VARS['username'],$HTTP_POST_VARS['pass'],$HTTP_POST_VARS['email'],$HTTP_POST_VARS['question'],$HTTP_POST_VARS['answer']);
  105. print $result;
  106. break;
  107. case "login":
  108. $result = login($HTTP_POST_VARS['username'],$HTTP_POST_VARS['pass']);
  109. print "user=" . $result;
  110. break;
  111. case "forget":
  112. $result = forget($HTTP_POST_VARS['email']);
  113. print $result;
  114. break;
  115. case "new_password":
  116. $result = new_password($HTTP_POST_VARS['username'],$HTTP_POST_VARS['email'],$HTTP_POST_VARS['answer']);
  117. print $result;
  118. break;
  119. }
  120. }
  121. ?>


strona jest we flashu zrobiona. przycisk wyslij ma akcje

Kod
on (release)
{
    if(userName.length > 0 && userPassword.length > 0)
    {
        myVars = new LoadVars();
        myVars.username = userName.text
        myVars.pass = userPassword.text
        myVars.action = 'login';
        myVars.sendAndLoad(php_file, myVars, 'POST');
        myVars.onLoad = function()
        {
            if(!this.error && this.user > 0)
            {
                gotoAndStop('registered');
            } else {
                gotoAndStop('no_registered');
            }
            userName.selectable = true;
            userPassword.selectable = true;
            loginButton.enabled = true;
        }
        userName.selectable = false;
        userPassword.selectable = false;
        loginButton.enabled = false;
    }
}


i jeszcze akcja w pierwszej klatce
Kod
// ---
// PHP file
// ---
_global.php_file = "user.php";

Stage.scaleMode = 'noscale';

userName.restrict = "a-zA-Z0-9"
userPassword.restrict = "a-zA-z0-9";

var initialText:String = "Nazwa użytkownika";
userName.text = initialText;

userName.onSetFocus = function():Void {
    if( userName.text == initialText ) {
        userName.text = "";
    }
};
var initialText2:String = "Hasło";
userPassword.text = initialText2;
userPassword.onSetFocus = function():Void {
    if( userPassword.text == initialText2 ) {
        userPassword.text = "";
        userPassword.password = true;
    }
};

stop ();


co tam moze byc nie tak? ktos zna odpowiedz? bo sie z tym motam i nie moge ogarnac, nie wiem gdzie blad siedzi, a pewnie to jakas drobnostka

nikt nie ma pomyslu co tu moze byc nie tak? bardzo prosze o pomoc

nie ma nikogo kto moglby mi pomoc?!? ej no ludzie wezcie pomozcie
mortus
W funkcji login dodaj to:
  1. if(!query) {
  2. return mysql_error();
  3. } else {
  4. return mysql_num_rows();
  5. }
zamiast return mysql_num_rows(); i spróbuj wyświetlić gdzieś na stronie to, co Ci funkcja zwróci. Może jakiś błąd jest w tym zapytaniu?
webasek
Zrób takie coś w funkcji logowania i zobacz co zwróci:

Kod
return "SELECT * FROM $table WHERE userName = '$username' AND userPassword = '$pass'"


wujeksz
oba sposoby nie dzialaja. nie wiem co mi to zwraca, poniewaz mam index napisany w htmlu i nie wiem jak zrobic aby wyswietlalo bledy.
cala strrona jest wykonana we flashu a obsadzona w htmlu.

i co wiecie moze jak to naprawic?

jeszcze jest kilka bledow ktore zauwazylem, mianowicie jak nic nie wpisze w okienka login i klikne zaloguj to mi przeskokuje do tej podstrony jakbym wpisal zle dane uzytkownika, a chcialbym aby krzyczalo ze trzeba uzupelnic dane, tak samo dzieje sie w rejestracji.

macie jakies jeszcze pomysly jak to naprawic aby logowanie dzialalo?
mortus
No ale przecież wyniki działania tej funkcji jest gdzieś do flash'a zwracany. Zrób sobie pole tekstowe w którejś klatce i tam zwróć wynik funkcji.
EDIT:
Ale mam takie jedno podstawowe pytanie. Ty robiłeś tę stronę?
wujeksz
tak ja to wszystko zrobilem ale korzystalem w niektorych przypadkach z tutoraili- tak jak z tym systemem logowania ale nawet w tym tutorialu to poprawnie nie dziala, bo chcialem te pliki z tutoriala podpiac pod moja baze danych. dalo rade sie rejestrowac tak jak i u mnie ale logowac nie. wiec cos jest tam nie tak. a ja sam niestety nie znam sie na php
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.