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
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
 
Start new topic
Odpowiedzi
markotny
post
Post #2





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 2.09.2007
Skąd: Wielkopolska

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


Przekierowanie zwrotne - ja tak to sobie nazywam - polega na tym że formularz logowania jest na stronie np. index.php jest tam formularz gdzie wysyłane dane wysyłasz na strone logowanie.php. Tam zachodzi cały proces zapisywania zmiennych, ustawiania sesji, pobierania danych z mysql'a, sprawdzania poprawności logowania i ustawiania statusu zalogowanego, ale jak na wtępie strony w nagłówku wpszesz
<?
header ("Location:index.php");
?>
to wrócisz na strone główna jako zalogowany (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Nie wiem czy da się to jakoś inaczej wytłumaczyć. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 2.10.2025 - 22:58