Witam. Robię stronę i mam taki malutki problem..
W sumie problem chodzi za mną od kilku dobrych lat, zawsze zmieniałem serwer i działało to wszystko normalnie.

Mam skrypt logowanie + rejestracji.. rejestracja działa dobrze, logowanie w sumie tez ale jest mały problem.

Po zalogowaniu się, pokazują się dane użytkownika, a po odświeżeniu strony, bądź przejścia na inną podstronę zostajemy automatycznie wylogowani..

Kiedyś po prostu zmieniałem serwer i wszystko działało ok.. np na dość popularnym hostingu (bez reklamy) logowanie nie działa, zaś na trochę mniejszym działa + webserv na localhoście tez działa.

Może to coś z session, czytałem o BOM w notepadzie ale też nie trybi..

Oto kod login.php

  1. <?php
  2.  
  3. require 'baza.php'; // Dołącz plik konfiguracyjny i połączenie z bazą
  4.  
  5. /**
  6.  * SKRYPT LOGOWANIA
  7.  */
  8. require_once 'user.class.php'; // Dołączamy rdzeń systemu użytkowników
  9.  
  10. // Zabezpiecz zmienne odebrane z formularza, przed atakami SQL Injection
  11. $login = htmlspecialchars(mysql_real_escape_string($_POST['login']));
  12. $pass = mysql_real_escape_string($_POST['pass']);
  13.  
  14. if ($_POST['send'] == 1) {
  15. // Sprawdź, czy wszystkie pola zostały uzupełnione
  16. if (!$login or empty($login)) {
  17. die ('<p class="error">Wypełnij pole z loginem!</p>');
  18. }
  19.  
  20. if (!$pass or empty($pass)) {
  21. die ('<p class="error">Wypełnij pole z hasłem!</p>');
  22. }
  23.  
  24. $pass = user::passSalter($pass); // Posól i zahashuj hasło
  25.  
  26. // Sprawdź, czy użytkownik o podanym loginie i haśle isnieje w bazie danych
  27. $userExists = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM users WHERE login = '$login' AND pass = '$pass'"));
  28.  
  29. if ($userExists[0] == 0) {
  30. // Użytkownik nie istnieje w bazie
  31. echo '<p class="error">Użytkownik o podanym loginie i haśle nie istnieje.</p>';
  32. }
  33.  
  34. else {
  35. // Użytkownik istnieje
  36. $user = user::getData($login, $pass); // Pobierz dane użytknika do tablicy i zapisz ją do zmiennej $user
  37.  
  38. // Przypisz pobrane dane do sesji
  39. $_SESSION['login'] = $login;
  40. $_SESSION['pass'] = $pass;
  41.  
  42. echo '<p class="success">Zostałeś zalogowany. Możesz przejść na <a href="index.php">stronę główną</a></p>';
  43. }
  44. }
  45.  
  46. else {
  47. /**
  48.   * FORMULARZ LOGOWANIA
  49.   */
  50. ?>
  51.  
  52. <form method="post" action="">
  53. <label for="login">Login:</label>
  54. <input type="text" name="login" maxlength="32" id="login" />
  55.  
  56. <label for="pass">Hasło:</label>
  57. <input type="password" name="pass" maxlength="32" id="pass" /><br />
  58.  
  59. <input type="hidden" name="send" value="1" />
  60. <input type="submit" value="Zaloguj" />
  61. </form>
  62.  
  63. <?php
  64. }
  65.  
  66. if (user::isLogged()) {
  67. // Widok dla użytkownika zalogowanego
  68.  
  69. // Pobierz dane o użytkowniku i zapisz je do zmiennej $user
  70. $user = user::getData('', '');
  71.  
  72. echo '<p>Jesteś zalogowany, witaj '.$user['login'].'!</p>';
  73. echo '<p>Możesz zobaczyć swój <a href="login.php?id='.$user['id'].'">profil</a> albo się <a href="logout.php">wylogować</a></p>';
  74. }
  75.  
  76. else {
  77. // Widok dla użytkownika niezalogowanego
  78. echo '<p>Nie jesteś zalogowany.<br /><a href="login.php">Zaloguj</a> się lub <a href="register.php">zarejestruj</a> jeśli jeszcze nie masz konta.</p>';
  79. }
  80.  
  81.  
  82. ?>
  83. <?
  84.  
  85. /**
  86.  * Tylko dla zalogowanych użytkowników
  87.  */
  88. if (!user::isLogged()) {
  89. echo '<p class="error">Przykro nam, ale ta strona jest dostępna tylko dla zalogowanych użytkowników.</p>';
  90. }
  91.  
  92. else {
  93. $id = $_GET['id'];
  94.  
  95. /**
  96.   * Sprawdź czy użytkownik o podanym ID istnieje
  97.   */
  98. $userExist = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM users WHERE id = '$id'"));
  99.  
  100. // Użytkownik nie istnieje
  101. if ($userExist[0] == 0) {
  102. die ('<p>Przykro nam, ale użytkownik o podanym identyfikatorze nie istnieje.</p>');
  103. }
  104.  
  105. /**
  106.   * Użytkownik istnieje, tak więc pokaż jego profil
  107.   */
  108.  
  109. // Zapisz dane użytkownika o podanym ID, do zmiennej $profile
  110. $profile = user::getDataById ($id);
  111.  
  112. echo '<h1>Profil użytkownika '.$profile['login'].'</h1>';
  113.  
  114. echo '<b>Nick:</b> '.$profile['login'].'<br />';
  115. echo '<b>Email:</b> '.$profile['email'].'<br />';
  116.  
  117. }
  118.  
  119. ?>



user.class.php

  1. <?php
  2.  
  3. class user {
  4.  
  5. public static $user = array();
  6.  
  7. /**
  8.   * Zwraca tablicę ze wszystkimi danymi o użytkowniku.
  9.   * Indeksy tablicy odpowiadają nazwom pól w bazie danych (login, pass etc...)
  10.   * @param string $login
  11.   * @param string $pass
  12.   * @return array
  13.   */
  14. public function getData ($login, $pass) {
  15. if ($login == '') $login = $_SESSION['login'];
  16. if ($pass == '') $pass = $_SESSION['pass'];
  17.  
  18. self::$user = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE login='$login' AND pass='$pass' LIMIT 1;"));
  19. return self::$user;
  20. }
  21.  
  22.  
  23. /**
  24.   * Zwraca tablicę ze wszystkimi danymi o użytkowniku, tak jak powyższa metoda klasy,
  25.   * ale rozpoznaje użytkownika nie po podaniu loginu i hasła tylko po podaniu ID.
  26.   * Używana np. do wyświetlania strony profilu.
  27.   * @param int $id
  28.   * @return array
  29.   */
  30. public function getDataById ($id) {
  31. $user = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE id='$id' LIMIT 1;"));
  32. return $user;
  33. }
  34.  
  35. /**
  36.   * Jeśli użytkownik jest zalogowany - zwraca true, w przeciwnym wypadku - false
  37.   * @return bool
  38.   */
  39. public function isLogged () {
  40. if (empty($_SESSION['login']) || empty($_SESSION['pass'])) {
  41. return false;
  42. }
  43.  
  44. else {
  45. return true;
  46. }
  47. }
  48.  
  49. /**
  50.   * "Soli" hasło przed jego zahashowaniem funkcją md5()
  51.   * @param string $pass
  52.   * @return string
  53.   */
  54. public function passSalter ($pass) {
  55. $pass = '$@@#$#@$'.$pass.'q2#$3$%##@';
  56. return md5($pass);
  57. }
  58.  
  59. }


żeby nie było, logowanie nie jest moje..

Mój skrypt logowania + panelu admina straciłem wraz z zalanym laptopem sad.gif

Pozdrawiam i proszę o pomoc!