Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Skrypt logowania nie chce działać, Gdy do pola login i hasło wpisuję odpowiednie dane, wyświetla się błąd
zurek
post 5.09.2007, 10:04:17
Post #1





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 4.09.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Jestem początkującym programistą PHP. Chciałem napisać skrypt logowania na swojej stronie z użyciem sesji na podstawie książki, z której się uczę. Poniżej przedstawiam kod tego skryptu:

To jest add_admin.php, który dodaje administratorów do bazy danych:



  1. <?
  2.  
  3. //połączenie z bazą danych
  4. require_once('../mysql_connect.php');
  5.  
  6. //funkcja wstawiaąca przed znakami specjalnymi znak odwrotnego ukośnika.
  7.  
  8. function escape_data ($data){
  9.  
  10. //Potrzebne połączenie
  11. global $dbc;
  12.  
  13. if(ini_get('magic_quotes_gpc')){
  14. $data = stripslashes($data);
  15. }
  16.  
  17. return mysql_real_escape_string(trim($data), $dbc);
  18. }
  19.  
  20. //tablica typu array na błędy
  21. $errors = array();
  22.  
  23. if($_POST['wyslij']){
  24.  
  25. //sprawdzanie, czy wszystkie pola są wypełnione
  26.  
  27. //nazwa admina
  28. if(empty($_POST['name'])){
  29. $errors[] = "Nie podano nazwy admina.";
  30. }
  31. else{
  32. $name = escape_data($_POST['name']);
  33. }
  34.  
  35. //email
  36. if(empty($_POST['email'])){
  37. $errors[] = "Nie podano adresu e-mail admina.";
  38. }
  39. else{
  40. $email = escape_data($_POST['email']);
  41. }
  42.  
  43. //haslo
  44. if(empty($_POST['password'])){
  45. $errors[] = "Nie podano hasła admina.";
  46. }
  47. else{
  48. $password = escape_data($_POST['password']);
  49. }
  50.  
  51. //jeśli nie ma błędów
  52. if(empty($errors)){
  53.  
  54. //zapytanie
  55. $query = "INSERT INTO admins (name, email, password, date) VALUES ('$name', '$email', SHA('$password'), NOW())";
  56. $result = mysql_query($query);
  57.  
  58. //jeśli zapytanie zostało przyjęte
  59. if($result){
  60. print "Dodano nowy rekord do bazy danych.";
  61. }
  62. else{
  63. print "Nie można dodać nowego rekordu do bazy danych z powodu prawdopodobnych błęd
    ów w serwisie."
    ;
  64. }
  65.  
  66. }
  67. //a jeśli błędy są
  68. else{
  69. print 'Wystąpiły następujące błędy w formularzu: <br/><br/>';
  70.  
  71. foreach($errors AS $raport){
  72. print " - $raport <br/>";
  73. }
  74. }
  75.  
  76. }
  77.  
  78. ?>


A to jest plik logowanie.php:

  1. <?
  2.  
  3. //jeśli formularz został wysłany
  4. if($_POST['wyslij']){
  5.  
  6. //połączenie z bazą danych
  7. require_once('../mysql_connect.php');
  8.  
  9. //////////////////////FUNCTION ESCAPE DATA//////////////////////////////
  10.  
  11. //funkcja wstawiaąca przed znakami specjalnymi znak odwrotnego ukośnika.
  12.  
  13. function escape_data ($data){
  14.  
  15. //Potrzebne połączenie
  16. global $dbc;
  17.  
  18. if(ini_get('magic_quotes_gpc')){
  19. $data = stripslashes($data);
  20. }
  21.  
  22. return mysql_real_escape_string(trim($data), $dbc);
  23. }
  24. ////////////////////KONIEC FUNKCJI ESCAPE DATA//////////////////////////
  25.  
  26. //tablica typu array przechowująca błędy
  27. $errors = array ();
  28.  
  29. //sprawdzanie pól formularza
  30.  
  31. //email
  32. if(empty($_POST['email'])){
  33. $errors [] = "Nie podano adresu mailowego.";
  34. }
  35. else{
  36. $email = escape_data($_POST['email']);
  37. }
  38.  
  39. //haslo
  40. if(empty($_POST['password'])){
  41. $errors [] = "Nie podano hasła.";
  42. }
  43. else{
  44. $password = escape_data($_POST['password;']);
  45. }
  46.  
  47. //jeśli nie ma błędów
  48. if(empty($errors)){
  49.  
  50. //pobranie identyfikatora administratora i nazwy do kombinacji loginu i hasła
  51. //zapytanie
  52. $query = "SELECT admin_id, name FROM admins WHERE email='$email' AND password=SHA('$password')";
  53. $result = @mysql_query($query);
  54. $row = mysql_fetch_array($result, MYSQL_NUM);
  55.  
  56. //jeśli zapytanie zwróciło jakiś rekord
  57. if($row){
  58.  
  59. /////////////////////////////USTAWIENIE SESJI///////////////////////////
  60. //ustawienie danych sesji
  61.  
  62. $_SESSION['admin_id'] = $row[0];
  63. $_SESSION['name'] = $row[1];
  64.  
  65. ///////////////////////KONIEC USTAWIANIA SESJI//////////////////////////
  66.  
  67. //przekierowanie do strony loggedin.php
  68. //definicja adresu URL
  69.  
  70. ///////////////////////////DEFINICJA ADRESU URL ////////////////////////
  71.  
  72. $url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']);
  73.  
  74. //sprawdzenie końcowego ukośnika
  75.  
  76. if((substr($url, -1) == '/') OR (substr($url, -1) == '//')){
  77.  
  78. //definicja adresu URL - ciąg dalszy
  79. //odcinamy ukośnik
  80. $url = substr($url, 0, -1);
  81. }
  82.  
  83. //definicja adresu URL - ciąg dalszy
  84. //dodanie strony
  85. $url .= './loggedin.php';
  86.  
  87. ////////////////////KONIEC DEFINICJI ADRESU URL ////////////////////////
  88.  
  89. //przekierowanie do wcześniej zdefiniowanego adresu url
  90. header("Location: $url");
  91.  
  92. exit(); //koniec działania skryptu
  93.  
  94. } //koniec klauzuli wyyrażenia warunkowego if($row)
  95.  
  96. //a jeśli zapytanie nie zwróciło żadnego rekordu
  97. else{
  98. print "Wprowadzony login i hasło są niepoprawne.";
  99. }
  100.  
  101.  
  102. } //zamknięcie klałzuli wyrażenia warunkowego if(empty($errors))
  103.  
  104. //koniec połączenia z bazą danych
  105.  
  106.  
  107. } //zamknięcie klałzuli wyrażenia warunkowego if($_POST['wyslij'])
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114. ?>




Problem jest następujący. Gdy dodaję admina i wpisuję jego odpowiednie dane, do panelu logowania wyświetla mi się za każdym razem:

Cytat
Wprowadzone dane są niepoprawne!


Tabela bazy danych admins została utworzona w serwisie cba.pl przez PHPMyAdmina.

Ten post edytował Cysiaczek 5.09.2007, 19:02:39
Powód edycji: dodałem tag (cysiaczek)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 04:33