Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP MYSQL] Skrypt na logowanie
Forum PHP.pl > Forum > Przedszkole
Dahred
Chciałbym się dowiedzieć dość dużo o systemie logowania, podobno na takim czymś można poduczyć się php z mysql. znam nikłe zasady obu ale uczę się nadal. Chciałbym mieć skrypt który pozwoli odszukać w bazie danych z pośród 700 np. użytkowników tego jednego z podaniem loginu i hasła, a jeżeli nie zadziała to przypomnienie hasła przez e-mail. Z i jeżeli się ten ktoś zaloguje zrobić z loginu sesje i odprowadzić go do późniejszej strony głównej z opcjami dla użytkowników. Kążdy wie że jestem laikiem w php, więc nie wymagam wiele. Jak większość użytkowników - Dziękuję nawet za nieodpisanie
Wujashek
Polecam adminpro_class, ja się na tym uczyłem i przerobiłem do własnych potrzeb. Do znalezienia na google
Dahred
ok, a możecie mi powiedzieć coś banalnego( bo ja to chyba źle piszę! ) mały skrypcik dzięki któremu wprowadzisz pole loginu i haseł, a jak wprowadzisz dane to potwierdzi czy jest taki użytkownik czy nie. Bez dodatkowych właściwości, tak jak przedtem...
strife
Nie chcę mi się po raz kolejny pisać o logowaniu, przeczytaj ostatniego mojego posta w tym temacie i powiedz czy Ci pomogło.

http://forum.php.pl/index.php?showtopic=50...533;entry276317

Pozdrawiam.
Dahred
nie wiem co robię źle(mysql dobre -haslo, login prawidlowy):
  1. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  2.  
  3. </head>
  4.  
  5. <center>Możesz się teraz zalogowć
  6.  
  7.  
  8. <tr>
  9. <td valign="top">Nick<br>haslo</td>
  10. <td valign="top">
  11.  
  12. <form action="logowanie.php" method="post">
  13. <input name="login"type="text">
  14. <br>
  15. <input type="password" name="password">
  16. <br>
  17. <input type="submit" value="Zaloguj">
  18. </form>
  19.  
  20. </td>
  21. </tr>
  22.  
  23. </table>


Potem mamy:
  1. <?php
  2.  
  3.  
  4.  
  5. if(!empty($_POST[ 'login' ]) && !empty($_POST['password']))
  6. {
  7. if($_POST['login'] == 'admin' &&  $_POST['password'] == 'admin')
  8. {
  9. $_SESSION['auth']='1';
  10. }
  11. else
  12. {
  13. echo'podales zly login lub haslo';
  14. }
  15.  
  16. }
  17. else
  18. {
  19. echo'wprowadz dane do formularza';
  20. }
  21. unset($_SESSION['auth']);
  22.  
  23.  
  24.  
  25. $connection = mysql_connect("localhost","root","");
  26. $db = mysql_select_db("ow", $connection);
  27.  
  28. $query=mysql_query("SELECT * FROM postacie WHERE login = '" . $_POST['login'] ."'");
  29. $fetch = mysql_fetch_array($query);
  30. if($fetch)
  31. {
  32.  
  33. if( md5 ($_POST['password']) == $fetch['haslo'])
  34. {
  35. echo'Logowanie zakończone Sukces odniesiony.';
  36. }
  37. else
  38. {
  39. echo'Logowanie zakończone Porażka odniesiona';
  40. }
  41. }
  42. else
  43. {
  44. echo'Logowanie zakończone Nie istnieje taki użytkownik w naszej bazie danych';
  45. }
  46. mysql_close($connection);
  47. ?>

ten kod nie chodzi, baza danych udtworzona wszystko z mysql gra, ale i tak nie pojawia mi sie:"Logowanie zakończone Sukces odniesiony" Czemu napiszcie dobre ten kod!
Cienki1980
Ja na pierwszy rzut oka widze pewne różnice między Twoim kodem a kodem który napisał strife.

Zwróć uwagę na wielkość liter ... bo to ma znaczenie.
pataka
To ja może zapytam o to co w tym skrypcie jest nie tak?
Mimo wpisania poprawnego loginu i hasla wywala mi blad...
  1. <?
  2. $auth = array (
  3. "admin" => array ("pass"=>"123")
  4. );
  5.  
  6. if (!isset($PHP_AUTH_USER)) {
  7. header("WWW-Authenticate: Basic realm="HASŁO: "");
  8. header("HTTP/1.0 401 Unauthorized");
  9. echo "Access denied!!! 0n";
  10. }
  11. elseif (!(array_key_exists($PHP_AUTH_USER, $auth) and $auth[$PHP_AUTH_USER]['pass'] ==$PHP_AUTH_PW))
  12. {
  13. echo "Access denied!!! 1n";
  14. }
  15. ?>
Cienki1980
@pataka: nie wiem dlaczego to Ci nie działa .. ja skopiowałem ten kod i działa poprawnie. Wywala Ci jakiś błąd PHP czy komunikat "access denied" questionmark.gif
pataka
Właśnie, nie wywala błedu!
Skrypt jest wykonywany, ale nie autoryzuje trzy razy wyrzuca mi okno logowania, po czym pokazuje komunikat: Access denied!!! 0
Probuje użyć tego na XAMPP'ie i pod WinXP - moze problem jest po stronie konfiguracji serwera!?
Dahred
Ej a co z moim problemem?? pataka trochę wzburzył mój temat, ale pasowało by dokończyć powiązanie mojego błędu
nospor
po pierwsze zrob to co ci mowili: nie $_post a $_POST
po drugie: co to ma byc:
  1. SELECT*FROM postacie WHERE'login'

?
zajrzyj do manuala jak wyglada skladnia select. maja byc odstepy miedzy kolejnymi rzeczami, a nazw kolumn nie bierze sie w ' tylko w ` albo wogole w nic
  1. SELECT * FROM postacie WHERE `login`
Dahred
Błędy (myślę że) poprawione. Może ktoś sprawdzić ten skrypt?
nospor
nie session_start; a session_start();
session_start to funkcja a nie stala.

A hasla w bazie ci sie zgadzaja? sa zaszyfrowane tak jak trzeba?
Dahred
tak zgadzają mi się. Ok, poprawiłem u mnie. Teraz jak dobrze wpiszę haslo i login to wyświetla się niepowodzenie
teraz mam tak jak dam hasło i imię admin:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at D:\WebServ\httpd-users\Ow\logowanie.php:22) in D:\WebServ\httpd-users\Ow\logowanie.php on line 31

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:\WebServ\httpd-users\Ow\logowanie.php:22) in D:\WebServ\httpd-users\Ow\logowanie.php on line 31
Logowanie zakończone Porażka odniesiona
nospor
Cytat
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at D:\WebServ\httpd-users\Ow\logowanie.php:22) in D:\WebServ\httpd-users\Ow\logowanie.php on line 31

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:\WebServ\httpd-users\Ow\logowanie.php:22) in D:\WebServ\httpd-users\Ow\logowanie.php on line 31
Logowanie zakończone Porażka odniesiona

Bylo wiele razy na forum. szukaj pod hasle:
"headers already sent" - podpowiedz: trzeba uzyc ob_start().

Cytat
tak zgadzają mi się
Najwyraźniej jednak nie smile.gif
a kolumna nazywa sie haslo? Ciezko cos powiedziec, skrypt wydaje sie dobry
pataka
Cytat(Dahred @ 19.02.2007, 11:25:47 ) *
Ej a co z moim problemem?? pataka trochę wzburzył mój temat, ale pasowało by dokończyć powiązanie mojego błędu


No moze wzburzylem, ale jest to forum dyskusyjne...
Więc po co zakładać odrębny temat, który dotyczy podobnego problemu.
Dahred
A więc mógłby ktoś napisać, poprawić, zaprezentować poprawienie mojego błędnego skryptu loginu. Chodziło by mi o tylko ten błąd z session_start();!!!
nospor
Cytat
Chodziło by mi o tylko ten błąd z session_start();!!!
Przeciez ci wyraźnie napisalem:
Cytat
Bylo wiele razy na forum. szukaj pod hasle:
"headers already sent" - podpowiedz: trzeba uzyc ob_start().
Ciezko poszukac? To naprawde bylo wiele razy na forum
Dahred
Już mam teraz udoskonalony skrypt logowanie.php wygląda tak:!
  1. <?php
  2. echo"<html>
  3. <head>
  4. <meta http-equiv='Content-type' content='text/html; charset=iso-8859-2'>
  5.  
  6. </head>
  7.  
  8. <body>
  9. <center>Możesz się teraz zalogowć
  10.  
  11. <table>
  12.  
  13. <tr>
  14. <td valign='top'>Nick<br>haslo</td>
  15. <td valign='top'>
  16.  
  17. <form action='logowanie.php' method='post'>
  18. <input name='login'type='text'>
  19. <br>
  20. <input type='password' name='password'>
  21. <br>
  22. <input type='submit' value='Zaloguj'>
  23. </form>
  24.  
  25. </td>
  26. </tr>
  27.  
  28. </table>";
  29. if(!empty($_POST[ 'login' ]) && !empty($_POST['password']))
  30. {
  31. if($_POST['login'] == 'admin' &&  $_POST['password'] == 'admin')
  32. {
  33. $_SESSION['auth']='1';
  34. }
  35. else
  36. {
  37. echo'podales zly login lub haslo dla admina. Nie jesteś nim. ';
  38. }
  39.  
  40. }
  41. else
  42. {
  43. echo' wprowadz dane do formularza ';
  44. }
  45. unset($_SESSION['auth']);
  46.  
  47.  
  48.  
  49. $connection = mysql_connect("localhost","root","");
  50. $db = mysql_select_db("ow", $connection);
  51.  
  52. $query=mysql_query("SELECT * FROM postacie WHERE login = '" . $_POST['login'] ."'");
  53. $fetch = mysql_fetch_array($query);
  54. if($fetch)
  55. {
  56.  
  57. if($_POST['password'] == $fetch['haslo'])
  58. {
  59. echo' Logowanie zakończone Sukces odniesiony. ';
  60. }
  61. else
  62. {
  63. echo' Logowanie zakończone Porażka odniesiona ';
  64. }
  65. }
  66. else
  67. {
  68. echo' Logowanie zakończone Nie istnieje taki użytkownik w naszej bazie danych ';
  69. }
  70. mysql_close($connection);
  71. echo"</center>
  72. </body>
  73. </html>"
  74. ?>






LUDZIE, MOGIBYŚCIE TEN KOD SPRAWDZIĆ? OD RAZU PODAJĘ KOD NA BAZĘ DANYCH(oczywiście w mysql, nie w php. Proszę tego nie wpisywać do kodu strony.):


  1. CREATE DATABASE ow;
  2. USE ow;
  3. CREATE TABLE postacie(
  4. login varchar(15),
  5. haslo varchar(15));
  6. INSERT INTO postacie (login , haslo) VALUES("pierwsza" , "pierwszy");
  7. INSERT INTO postacie (login , haslo) VALUES("admin" , "admin");
nospor
czy ty czytasz co sie do ciebie pisze? Napisalem ci przeciez w czesniej:
Cytat
A hasla w bazie ci sie zgadzaja? sa zaszyfrowane tak jak trzeba?

Ty odpowiedziales, ze tak, oczywiscie, a tu mi takie inserty walisz, gdzie hasla sa w postaci jawnej a nie zaszyforwanej.... Jak czegos nie rozumiesz, to pisz ze nie wiesz co sie do ciebie mowi, a nie glowa kiwasz ze tak, ze wszystko ok.
PRzeciez do bazy wkladasz hasla niezaszyfrowane, a przy loginie porownujesz zaszyfrowane z niezaszyfrowanym (md5 ($_POST['password']) == $fetch['haslo'])
W bazie maja juz byc hasla shaszowane.

ps: mowiac zaszyfrowany mam na mysli shaszowany smile.gif

jesli nie wiesz jak wlozyc hashe do bazy to wywal przy logowaniu md5() i bedzie git. Na poziom wiedzy co narazie masz to baw sie na haslach jawnych winksmiley.jpg
Babcia@Stefa
Troche dziwnie jest to napisane...
Gdzie sprawdzasz nazwę użytkownika?
Wiadomo że kilka osób może mieć to samo hasło więc z bazy zostanie wybrany tylko jeden użytkownik...

@edit
Ok już zauważyłem, mój błąd ;]
@down
Już wcześniej przed twojim postem zauważyłem ;]
@edit
To problem już chyba rozwiązany bo jak widać na stronie hasło jest sprawdzane w md5 a w bazie danych hasła są niezaszyfrowane.

Dziękuję, Babcia@Stefa
nospor
Cytat
Gdzie sprawdzasz nazwę użytkownika?

No przeciez tu jest:
  1. <?php
  2. $query=mysql_query("SELECT * FROM postacie WHERE login = '" . $_POST['login'] ."'");
  3. ?>
smile.gif
Dahred
nospor, dzięki. Ale po co takie nerwy... PRZECIEŻ WIEM ŻE JESTEM LAIKIEM!!

skrypt na logowanie - ostatni- jest w 100%pełny i gotowy do użytku.
nospor
Cytat
nospor, dzięki. Ale po co takie nerwy...
Ja sie nie denerwuje, ale czasami jak po dobroci nie idzie to trzeba krzyknac tongue.gif
A to ze jestes laikiem nie upowaznia cie do niesensownego odpowiadania jak sie pytaja. Juz dawno by bylo po sprawie jakbys przetrawil dokladniej zadawane pytania.
sanchoo
... mam problem banalny pewnie no ale.. nie wiem jak sie do niego zabrac smile.gif Prosze o podpowiedz.. ze skryptem sobie jakos pomalu poradze..
Chodzi o logowanie.. skoro po wpsianu do formularza loginu hasla... daje wyslij i lacze sie z baza danych gdzie dane zostaja zweryfikowane.. no Ok! ale jak to lacze sie?? podaje haslo i login do bazy... musze logowac sie 2 x najpierw do bazy a pozniej do panelu na stronie?? prosze o pomoc smile.gif
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.