Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Skrypt logowania - proszę o pomoc w naprawie
Forum PHP.pl > Forum > Przedszkole
neneth
Witam, mam problem ze skryptem logowania. Gdy wpisuję login i hasło, zamiast przekierowania na stronę główną, pojawia się nowe okno z białym tłem i przekierowaniem do pliku login.php . Siedzię nad ty już jakiś czas, proszę więc o pomoc. Oto te pliki:

login.php

  1. $_SESSION['login']=$konto;
  2. if ($_SESSION['login'] > 0){
  3. echo "Nie jesteĹ_ zalogowany...";
  4. header("Location: strona_glowna.php");
  5. }
  6.  
  7.  
  8. if (isset($_POST['konto']) and isset($_POST['password']) )
  9.  
  10. {
  11.  
  12. require('conn.php');
  13.  
  14. $konto=mysql_real_escape_string(trim($_POST['konto']));
  15.  
  16. $password=mysql_real_escape_string(trim($_POST['password']));
  17.  
  18. if ($konto!="" and $password!="")
  19.  
  20. {
  21.  
  22. $password = sha1(md5($password));
  23.  
  24. $zapytanie="SELECT id FROM user WHERE login='$konto' and password ='$password'";
  25.  
  26. $temp=mysql_query($zapytanie) or die("WystÄ_piĹ_ bĹ_Ä_d");
  27.  
  28. $ile=mysql_num_rows($temp);
  29.  
  30. $temp=mysql_fetch_array($temp);
  31.  
  32. $id=$temp['id'];
  33.  
  34.  
  35.  
  36. if ($ile==1)
  37.  
  38. {
  39.  
  40. $_SESSION['user_id']=$id;
  41.  
  42. $_SESSION['login']=$konto;
  43.  
  44. echo('ZostaĹ_eĹ_ zalogowany. ');
  45.  
  46. }
  47.  
  48. else echo ('PodaĹ_eĹ_ zĹ_e dane. Kliknij wstecz, aby sprĂłbowaÄ_ ponownie.');
  49.  
  50. }
  51.  
  52. }
  53.  
  54.  
  55.  
  56.  


conn.php
  1.  
  2. $_SESSION['login']=$konto;
  3. if ($_SESSION['login'] > 0)
  4. {
  5. echo "Nie jesteś zalogowany...";
  6. header("Location: strona_glowna.php");
  7. }
  8. $host='localhost'; //Tu moĹźliwe Ĺźe bÄ_dziesz musiaĹ_ wpisaÄ_ innego hosta ale czÄ_sto jest to wĹ_aĹ_nie localhost
  9. $login='...............................';
  10. $haslo='...................................';
  11. $nazwaBazy='..................................';
  12. $lacz=mysql_connect($host, $login, $haslo);
  13. if ($lacz==false) {
  14.  
  15. die('Brak polaczenia z serwerem');
  16.  
  17. }
  18.  
  19. mysql_select_db($..........................................) or die(mysql_error());
  20.  


Czy mógłby mi ktoś skorygować błędy? Bardzo proszę, to dla mnie ważne.
bmL
Otwierasz sesję 3 razy session_start(); wystarczy jeden raz na samym początku... Uruchamiasz bufor wyjścia 2 razy (w pliku conn i w pliku login) to też powinno być wykonane raz.
Cytat
if ($_SESSION['login'] > 0){
echo "Nie jesteĹ_ zalogowany...";
header("Location: strona_glowna.php");
exit;
}


yyy, jeżeli login jest większy od zera (użytkownik jest zalogowany?) to otrzymuje komunikat który mówi iż nie jest zalogowany? Domyślam się że miało być że jest już zalogowany.

$_SESSION['login']=$konto; co ma robić ta linijka na początku? Skąd zawartość zmiennej $konto się bierze?

To tyle na dobry początek.
neneth
Witam, linijki poprawiłem i dalej nie działa, więc już nie mam pojęcia, dlaczego. Zamieszczam poprawiony kod jeszcze raz

plik conn.php

  1.  
  2.  
  3. if ($_SESSION['login'] > 0)
  4. {
  5. echo "Jesteś zalogowany...";
  6. header("Location: strona_glowna.php");
  7. }
  8. $host='localhost'; //Tu moĹźliwe Ĺźe bÄ_dziesz musiaĹ_ wpisaÄ_ innego hosta ale czÄ_sto jest to wĹ_aĹ_nie localhost
  9. $login='...........................';
  10. $haslo='.............................';
  11. $nazwaBazy='...................................';
  12. $lacz=mysql_connect($host, $login, $haslo);
  13. if ($lacz==false) {
  14.  
  15. die('Brak polaczenia z serwerem');
  16.  
  17. }
  18.  
  19. mysql_select_db($............................) or die(mysql_error());
  20.  
  21.  


plik login.php

  1.  
  2. if (isset($_POST['konto']) and isset($_POST['password']) )
  3.  
  4. {
  5.  
  6. require('conn.php');
  7.  
  8. $konto=mysql_real_escape_string(trim($_POST['konto']));
  9.  
  10. $password=mysql_real_escape_string(trim($_POST['password']));
  11.  
  12. if ($konto!="" and $password!="")
  13.  
  14. {
  15.  
  16. $password = sha1(md5($password));
  17.  
  18. $zapytanie="SELECT id FROM user WHERE login='$konto' and password ='$password'";
  19.  
  20. $temp=mysql_query($zapytanie) or die("WystÄ_piĹ_ bĹ_Ä_d");
  21.  
  22. $ile=mysql_num_rows($temp);
  23.  
  24. $temp=mysql_fetch_array($temp);
  25.  
  26. $id=$temp['id'];
  27.  
  28.  
  29.  
  30. if ($ile==1)
  31.  
  32. {
  33.  
  34. $_SESSION['user_id']=$id;
  35.  
  36. $_SESSION['login']=$konto;
  37.  
  38. echo('ZostaĹ_eĹ_ zalogowany. ');
  39.  
  40. }
  41.  
  42. else echo ('PodaĹ_eĹ_ zĹ_e dane. Kliknij wstecz, aby sprĂłbowaÄ_ ponownie.');
  43.  
  44. }
  45.  
  46. }
  47.  
  48.  
  49.  
  50.  
  51.  



Co teraz jest źle? Ciągle wyskakuje biała karta po zalogowaniu i nie ma żadnego komunikatu.
bmL
Podaj więcej informacji, po wysłaniu formularza pojawia się biała strona na górze strony wpasku adresu widnieje... login.php?
Po tej białej stronie użytkownik zostaje zalogowany czy nie?
neneth
Po zalogowaniu nie chce mnie przenieść na stronę index.php , więc nie mam pojęcia o c teraz chodzi, a siedzę nad tym już 3 dni.

Podam teraz pliki po modyfikakcji:

plik login.php

  1.  
  2. if (isset($_POST['konto']) and isset($_POST['password']) )
  3.  
  4. {
  5.  
  6. require('conn.php');
  7.  
  8. $konto=mysql_real_escape_string(trim($_POST['konto']));
  9.  
  10. $password=mysql_real_escape_string(trim($_POST['password']));
  11.  
  12. if ($konto!="" and $password!="")
  13.  
  14. {
  15.  
  16. $password = sha1(md5($password));
  17.  
  18. $zapytanie="SELECT id FROM user WHERE login='$konto' and password ='$password'";
  19.  
  20. $temp=mysql_query($zapytanie) or die("Wystąpił błąd");
  21.  
  22. $ile=mysql_num_rows($temp);
  23.  
  24. $temp=mysql_fetch_array($temp);
  25.  
  26. $id=$temp['id'];
  27.  
  28.  
  29.  
  30. if ($ile==1)
  31.  
  32. {
  33.  
  34. $_SESSION['user_id']=$id;
  35.  
  36. $_SESSION['login']=$konto;
  37.  
  38. echo('Zostałeś zalogowany. ');
  39.  
  40. }
  41.  
  42. else echo ('Podałeś złe dane. Kliknij wstecz, aby spróbować ponownie.');
  43.  
  44. }
  45.  
  46. }
  47.  
  48.  
  49.  
  50.  
  51. ?>
  52.  
  53.  



i plik conn.php

  1.  
  2.  
  3. if ($_SESSION['login'] < 0)
  4. {
  5. echo "Jesteś zalogowany...";
  6. header("Location: index.php");
  7. }
  8. $host='localhost'; //Tu moĹźliwe Ĺźe bÄ_dziesz musiaĹ_ wpisaÄ_ innego hosta ale czÄ_sto jest to wĹ_aĹ_nie localhost
  9. $login='................................';
  10. $haslo='...................................';
  11. $nazwaBazy='.................................';
  12. $lacz=mysql_connect($host, $login, $haslo);
  13. if ($lacz==false) {
  14.  
  15. die('Brak polaczenia z serwerem');
  16.  
  17. }
  18.  
  19. mysql_select_db($..........................) or die(mysql_error());
  20.  
  21.  


bmL
ob_start wrzuć na początek login.php bo nie będziesz mógł zrobić przekierowania w tym pliku. Usuń z pliku conn.php ob_start i ob_end_flush bo Ci zatrzyma bufor w połowie drogi...
#
echo('Zostałeś zalogowany. ');
#
Logicznie rzecz biorą to tutaj powinno się znaleźć przekierowanie tak więc Header('Location: index.php');
neneth
Dziękuję za podpowiedź. Naprawiłam pliki, ale teraz pojawił się błąd

Parse error: syntax error, unexpected T_ELSE in /login.php on line 52

Moje pliki wyglądają teraz tak:

plik conn.php

  1.  
  2.  
  3. if ($_SESSION['login'] < 0)
  4. {
  5. echo "Jesteś zalogowany...";
  6.  
  7. }
  8. $host='localhost'; //Tu moĹźliwe Ĺźe bÄ_dziesz musiaĹ_ wpisaÄ_ innego hosta ale czÄ_sto jest to wĹ_aĹ_nie localhost
  9. $login='..............................';
  10. $haslo='..........................';
  11. $nazwaBazy='....................................';
  12. $lacz=mysql_connect($host, $login, $haslo);
  13. if ($lacz==false) {
  14.  
  15. die('Brak polaczenia z serwerem');
  16.  
  17. }
  18.  
  19. mysql_select_db($...................................) or die(mysql_error());
  20.  
  21.  



plik login.php

  1.  
  2. if (isset($_POST['konto']) and isset($_POST['password']) )
  3.  
  4. {
  5.  
  6. require('conn.php');
  7.  
  8. $konto=mysql_real_escape_string(trim($_POST['konto']));
  9.  
  10. $password=mysql_real_escape_string(trim($_POST['password']));
  11.  
  12. if ($konto!="" and $password!="")
  13.  
  14. {
  15.  
  16. $password = sha1(md5($password));
  17.  
  18. $zapytanie="SELECT id FROM user WHERE login='$konto' and password ='$password'";
  19.  
  20. $temp=mysql_query($zapytanie) or die("Wystąpił błąd");
  21.  
  22. $ile=mysql_num_rows($temp);
  23.  
  24. $temp=mysql_fetch_array($temp);
  25.  
  26. $id=$temp['id'];
  27.  
  28.  
  29.  
  30. if ($ile==1)
  31.  
  32. {
  33.  
  34. $_SESSION['user_id']=$id;
  35.  
  36. $_SESSION['login']=$konto;
  37.  
  38. echo('Zostałeś zalogowany. ');
  39.  
  40. }
  41. header('Location: index.php');
  42. else echo ('Podałeś złe dane. Kliknij wstecz, aby spróbować ponownie.');
  43.  
  44. }
  45.  
  46. }
  47.  
  48.  
  49.  
  50.  
  51.  


Teraz to ja już nie wiem, co może być jeszcze źle. Proszę o wskazanie błędów.
Ulysess
pewności nie mam ale jeśli używasz else musisz użyć klamr czyli od kąd do kąd obejmuje
bmL
Nie rozumiem neneth, nie znasz podstaw php a za takie rzeczy się chwytasz.
  1. if (isset($_POST['konto']) and isset($_POST['password'])) {
  2.  
  3. require('conn.php');
  4.  
  5. $konto = mysql_real_escape_string(trim($_POST['konto']));
  6.  
  7. $password = mysql_real_escape_string(trim($_POST['password']));
  8.  
  9. if ($konto != "" and $password != "") {
  10.  
  11. $password = sha1(md5($password));
  12.  
  13. $zapytanie = "SELECT id FROM user WHERE login='$konto' and password ='$password'";
  14.  
  15. $temp = mysql_query($zapytanie) or die("Wystąpił błąd");
  16.  
  17. $ile = mysql_num_rows($temp);
  18.  
  19. $temp = mysql_fetch_array($temp);
  20.  
  21. $id = $temp['id'];
  22.  
  23.  
  24.  
  25. if ($ile == 1) {
  26.  
  27. $_SESSION['user_id'] = $id;
  28.  
  29. $_SESSION['login'] = $konto;
  30.  
  31. echo('Zostałeś zalogowany. ');
  32. } else {
  33. echo ('Podałeś złe dane. Kliknij wstecz, aby spróbować ponownie.');
  34. header('Location: index.php');
  35. }
  36. }
  37. }
  38.  
  39.  
  40.  
  41.  
neneth
Witam, poprawiłem pliki zgodnie ze wskazówkami. Oto one:

plik conn.php

  1.  
  2.  
  3. if ($_SESSION['login'] < 0)
  4. {
  5. echo "Jesteś zalogowany...";
  6.  
  7. }
  8. $host='localhost'; //Tu moĹźliwe Ĺźe bÄ_dziesz musiaĹ_ wpisaÄ_ innego hosta ale czÄ_sto jest to wĹ_aĹ_nie localhost
  9. $login='....................................';
  10. $haslo='........................';
  11. $nazwaBazy='..........................';
  12. $lacz=mysql_connect($host, $login, $haslo);
  13. if ($lacz==false) {
  14.  
  15. die('Brak polaczenia z serwerem');
  16.  
  17. }
  18.  
  19. mysql_select_db($...................................) or die(mysql_error());
  20.  
  21.  
  22.  


plik login.php

  1.  
  2. <?php
  3.  
  4.  
  5. if (isset($_POST['konto']) and isset($_POST['password'])) {
  6.  
  7. require('conn.php');
  8.  
  9. $konto = mysql_real_escape_string(trim($_POST['konto']));
  10.  
  11. $password = mysql_real_escape_string(trim($_POST['password']));
  12.  
  13. if ($konto != "" and $password != "") {
  14.  
  15. $password = sha1(md5($password));
  16.  
  17. $zapytanie = "SELECT id FROM user WHERE login='$konto' and password ='$password'";
  18.  
  19. $temp = mysql_query($zapytanie) or die("Wystąpił błąd");
  20.  
  21. $ile = mysql_num_rows($temp);
  22.  
  23. $temp = mysql_fetch_array($temp);
  24.  
  25. $id = $temp['id'];
  26.  
  27.  
  28. if ($ile == 1) {
  29.  
  30.  
  31.  
  32. $_SESSION['user_id'] = $id;
  33.  
  34.  
  35.  
  36. $_SESSION['login'] = $konto;
  37.  
  38.  
  39.  
  40. echo('Zostałeś zalogowany. ');
  41.  
  42. } else {
  43.  
  44. echo ('Podałeś złe dane. Kliknij wstecz, aby spróbować ponownie.');
  45.  
  46. header('Location: index.php');
  47.  
  48. }
  49.  
  50. }
  51.  
  52. }
  53.  
  54.  
  55.  
  56.  



Nie wiem, co tym razem jest źle. Proszę o odpowiedź pełną i konkretnie co gdzie mam wstawić, bo ja dopiero się uczę i chciałbym wiedzieć, jakie błędy popełniam. To co do tej pory poprawiłem zostało mi wyjaśnione na innych forach (m. in.).
nospor
A czymże objawia się tym razem to "źle"?
Lektura obowiązkowa dla Ciebie:
Temat: Jak poprawnie zada pytanie
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.