Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Logowanie
Forum PHP.pl > Forum > Przedszkole
boro11
.. nigdzie nie ma konkretnego rozwiązania.

Wyszukałem masę skryptów logowania ale niestety żaden nie działa. blinksmiley.gif

Ostatnio więcej uwagi poświęciłem temu:

  1. <?php
  2.  
  3.  
  4. if (isset($_POST['konto']) and isset($_POST['password']) )
  5.  
  6. {
  7.  
  8. require('conf.inc.php');
  9.  
  10. $konto=mysql_real_escape_string(trim($_POST['konto']));
  11.  
  12. $password=mysql_real_escape_string(trim($_POST['password']));
  13.  
  14. if ($konto!="" and $password!="")
  15.  
  16. {
  17.  
  18. $password = sha1(md5($password));
  19.  
  20. $zapytanie="SELECT id FROM user WHERE login='$konto' and password ='$password'";
  21.  
  22. $temp=mysql_query($zapytanie) or die("Wystąpił błąd");
  23.  
  24. $ile=mysql_num_rows($temp);
  25.  
  26. $temp=mysql_fetch_array($temp);
  27.  
  28. $id=$temp['id'];
  29.  
  30.  
  31.  
  32. if ($ile==1)
  33.  
  34. {
  35.  
  36. $_SESSION['user_id']=$id;
  37.  
  38. $_SESSION['login']=$konto;
  39.  
  40. echo('Zostales zalogowany. ');
  41.  
  42. }
  43.  
  44. else echo ('Podales zle dane. Kliknij wstecz aby sprobowac ponownie.');
  45.  
  46. }
  47.  
  48. }
  49.  
  50. else{
  51.  
  52. ?>
  53.  
  54.  
  55. <head>
  56. <style>
  57. * {
  58. margin:0;
  59. padding:0;
  60. font-family: Arial ;
  61. font-style: oblique ;
  62. font-size: small ;
  63.  
  64.  
  65. }
  66.  
  67. .left {
  68. float:left;
  69.  
  70. }
  71.  
  72.  
  73. .left a {
  74. color:#7BB51D;
  75. font-size:16px;
  76. text-decoration:none;
  77. padding-top:10px;
  78. display:inline-block;
  79. padding-left:5px;
  80. }
  81.  
  82. .login {
  83. margin:5% 5%;
  84. width:479px;
  85. height:232px;
  86.  
  87. }
  88.  
  89. .login p {
  90. letter-spacing:-0.02em;
  91. line-height:.5em;
  92. margin-bottom:15px;
  93. text-indent:5px;
  94.  
  95. }
  96.  
  97. .login input {
  98. margin:5px;
  99. border:1px solid #ccc;
  100. padding:4px;
  101. width:80%;
  102. -moz-border-radius: 6px; -webkit-border-radius: 6px;
  103.  
  104. }
  105.  
  106. .login input.submit {
  107. float:right;
  108. width:22%;
  109. background:#fff;
  110. margin-right:17%;
  111. cursor:pointer;
  112.  
  113. }
  114.  
  115. .loginWrap {
  116. height:200px;
  117. width:450px;
  118. float:left;
  119. margin:60px 0 0 35px;
  120. display:inline;
  121.  
  122. }
  123.  
  124.  
  125.  
  126. </style>
  127. </head>
  128.  
  129.  
  130. <body>
  131.  
  132.  
  133. <div class="login">
  134. <form action="" method="POST">
  135. <b>Username:</b><br/>
  136. <input name="konto" type="text" value="" /><br/>
  137. <b>Password:</b><br/>
  138. <input name="password" type="password" value="" /><br/>
  139. <input type="submit" value="Login" class="submit" onClick="TheLogin(this.form)">
  140. <a href="http://refbackbank.com/register.php">You don't have account?</a><br />
  141. <a href="http://refbackbank.com/recover/">Lost password?</a></font><br /><br />
  142. <a href="#" class="lbAction" rel="deactivate">[X]</a>
  143.  
  144.  
  145. </form>
  146. </body>
  147. </html>
  148. <?php
  149.  
  150. }?>



Niestety nie działa. Nie wiem co jest nie tak.

Dodam że tabela w bazie danych z użytkownikami nazywa się test_users.
A login jest zapisany jako nick
Hasło natomiast jako pass


Próbowałem już kilkanaście różnych kombinacji. Zmieniałem nazwy konto na nick itd. ale nie przynosi to pożądanego rezultatu. Proszę o wskazówki.
gigzorr
... zapytanie jest złe.polaczenie z baza danych masz?trzymasz w tym pliku #
require('conf.inc.php'); czy wogole nie masz?
boro11
Mam ten plik i są tam wpisane dobre dane do połączenia z bazą.
Plik jest w takim formacie:

Kod
$db->dbb="nazwa bazy";
$db->dbl="nazwa usera";
$db->dbh="hasło";
$db->host="localhost";
$db->pref="test_";
$pref="test_";
$db->conect();?>
gigzorr
caly plik podaj , zle zapytanie masz , jakie bledy ci wywala?
co ci wywala?
  1. $zapytanie="SELECT id FROM test_users WHERE login='$konto' and password ='$password'" or die mysql_erorr());
boro11
Błąd jaki wywala jak zmieniłem na twoją linijkę:
Kod
Parse error: syntax error, unexpected T_STRING in /home/refbackb/domains/refbackbank.com/public_html/v4/login.php on line 21


Plik konfiguracyjny:

Kod
<?php

/**
* @author matx132
* @copyright 2009
*/
if (!defined("refbackbank") || !INDEX) {
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://refbackbank.com/");
exit;
}
$db->dbb="nazwa bazy";
$db->dbl="nazwa usera";
$db->dbh="hasło do bazy";
$db->host="localhost";
$db->pref="test_";
$pref="test_";
$db->conect();?>

lessi
Zupełnie jakiś ten kod jest dziwny. Na początku sprawdza czy istnieją zmienne konto i password, a potem czy są one puste, zamiast zrobić to za jednym razem. Ten warunek z różne od niczego jest zbędny. Po drugie, czy w bazie masz zakodowane hasło podwójnie? tzn. czy trzymasz w bazie hasło które jest zakodowane najpierw md5 a potem sha1?
boro11
Hasło jest zakodowane tylko przez sha1
H4eX
znajdź:
  1. $password = sha1(md5($password));


zamień na:
  1. $password = md5($password);
boro11
H4eX, dzięki za pomoc ale się poomylilem i jest sha1 a nie md5.
Zmieniłem oczywiście na poprawne w kodzie ale nadal wywala error:

  1. Parse error: syntax error, unexpected T_STRING in /home/refbackb/domains/refbackbank.com/public_html/v4/login.php on line 21


Czyli zapytanie jest źle napisane.
H4eX
Cytat(gigzorr @ 12.07.2010, 17:17:18 ) *
caly plik podaj , zle zapytanie masz , jakie bledy ci wywala?
co ci wywala?
  1. $zapytanie="SELECT id FROM test_users WHERE login='$konto' and password ='$password'" or die mysql_erorr());


Cofnij jak było, to co on napisał jest błędne.

Zrób tak:
  1. $zapytanie="SELECT id FROM user WHERE login='.$konto.' and password ='.$password.'";
boro11
Co wlasciwie okresla to 'konto' w tym zapytaniu?
Czy jest to nazwa rekordu gdzie trzymane sa nazwy uzytkownikow?
lessi
Cytat(boro11 @ 12.07.2010, 23:42:13 ) *
Co wlasciwie okresla to 'konto' w tym zapytaniu?
Czy jest to nazwa rekordu gdzie trzymane sa nazwy uzytkownikow?

Nie 'konto', tylko '$konto' to jest różnica. Ty to powinieneś wiedzieć. Może przetłumaczę całe zapytanie na polski, jeżeli dopiero zaczynasz:
  1. $zapytanie="SELECT id FROM user WHERE login='$konto' and password ='$password'";

Wybierz kolumnę id z tabeli user, gdzie rekord w kolumnie login jest równa zmiennej konto i rekord w kolumnie password jest równy zmiennej password. W tym znajdziesz odpowiedź na swoje pytanie.
Mi wygląda na poprawnie zapisane spróbuj może zamiast linijki 21 i 23 dać
  1. $temp=mysql_query("SELECT id FROM user WHERE (login='$konto') and (password ='$password')");
boro11
czyli zamiast login powinienem miec nick jesli tak mam zapisane w bazie?
Jesli tak to z password postepuje analogicznie i zmieniam na pass ?
lessi
Cytat(boro11 @ 13.07.2010, 23:13:25 ) *
czyli zamiast login powinienem miec nick jesli tak mam zapisane w bazie?
Jesli tak to z password postepuje analogicznie i zmieniam na pass ?

Nie w bazie danych powinieneś mieć kolumny login i password.
I powinien się znaleźć rekord z nick i pass. A zapytanie pozostaje.
Najlepiej będzie jakbyś wrzucił to na jakiś serwer
boro11
Zmiana zapytania na twoje nie pomaga.

Taki coś mam w bazie:


Próbowałem znowu masę kombinacji z twoim zapytaniem ale nie działa.
thomson89
Jak haseł nie masz w bazie ohmy.gif

Napisz to od nowa - lepiej to ci wyjdzie na zdrowie.
boro11
Mam ale z nudów je zamalowałem odpowiednimi kolarkami wstydnis.gif


Edit:
Słuchając twojej rady znalazłem nowy skrypt z tej strony:
http://www.phpeasystep.com/phptu/6.html

Ale niestety znowu nic nie układa się po mojej myśli.

Wywala mi taki błąd:
Kod
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/refbackb/domains/refbackbank.com/public_html/v4/checklogin.php on line 27
Wrong Username or Password


Sprawdzałem temat w PHPpedia.pl na ten temat:
http://phpedia.pl/wiki/Supplied_argument_i...result_resource
Ale te sposby mi nie pomagają a dane mam dobre bo mnie połączyło z bazą.

Z tego co wywnioskowałem to odpowiada to za sprawdzanie czy takie konto już istnieje, jeśli nie to ma je założyć?

  1. <?php
  2. $host="localhost"; // Host name
  3. $username=""; // Mysql username
  4. $password=""; // Mysql password
  5. $db_name="test"; // Database name
  6. $tbl_name="_users"; // Table name
  7.  
  8. // Connect to server and select databse.
  9. mysql_connect("$host", "$username", "$password")or die("cannot connect");
  10. mysql_select_db("$db_name")or die("cannot select DB");
  11.  
  12. // Define $myusername and $mypassword
  13. $myusername=$_POST['myusername'];
  14. $encrypted_mypassword=sha1($mypassword);
  15.  
  16. // To protect MySQL injection
  17. $myusername = stripslashes($myusername);
  18. $mypassword = stripslashes($mypassword);
  19. $myusername = mysql_real_escape_string($myusername);
  20. $mypassword = mysql_real_escape_string($mypassword);
  21.  
  22. $sql="SELECT * FROM $tbl_name WHERE nick='$myusername' and pass='$encrypted_mypassword'";
  23. $result=mysql_query($sql);
  24.  
  25. // Mysql_num_row is counting table row
  26. $count=mysql_num_rows($result);
  27. // If result matched $myusername and $mypassword, table row must be 1 row
  28.  
  29. if($count==1){
  30. // Register $myusername, $mypassword and redirect to file "login_success.php"
  31. session_register("myusername");
  32. session_register("mypassword");
  33. header("location:login_success.php");
  34. }
  35. else {
  36. echo "Wrong Username or Password";
  37. }
  38.  
  39. ?>
lessi
Nie trzymałeś się w pełni instrukcji która była podana. Tamten tworzy tabelę members. A ty się odwołujesz do tabeli _users.
Czy łączyłeś się już na tym serwerze z bazą danych?? Jeżeli nie to upewnij się czy login i hasło do bazy danych są poprawne
boro11
Odwoluje sie do tabeli users bo tak mam podane w bazie. Co do polaczenia dane sa na 100% poprawne bo inne elementy ktore korzystaja z bazy dzialaja.
lessi
Skąd ty masz takie skrypty. Nawet session_start() na początku nie ma (ale to nie jest akurat w tym problem) a przecież używasz sesji weź sobie poczytaj na stronie http://webmade.org/porady/sesje-php-system-logowania.php. Ten na pewno powinien działać.
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.