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
<?php require 'baza.php'; // Dołącz plik konfiguracyjny i połączenie z bazą /** * SKRYPT LOGOWANIA */ require_once 'user.class.php'; // Dołączamy rdzeń systemu użytkowników // Zabezpiecz zmienne odebrane z formularza, przed atakami SQL Injection if ($_POST['send'] == 1) { // Sprawdź, czy wszystkie pola zostały uzupełnione } } $pass = user::passSalter($pass); // Posól i zahashuj hasło // Sprawdź, czy użytkownik o podanym loginie i haśle isnieje w bazie danych $userExists = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM users WHERE login = '$login' AND pass = '$pass'")); if ($userExists[0] == 0) { // Użytkownik nie istnieje w bazie } else { // Użytkownik istnieje $user = user::getData($login, $pass); // Pobierz dane użytknika do tablicy i zapisz ją do zmiennej $user // Przypisz pobrane dane do sesji $_SESSION['login'] = $login; $_SESSION['pass'] = $pass; echo '<p class="success">Zostałeś zalogowany. Możesz przejść na <a href="index.php">stronę główną</a></p>'; } } else { /** * FORMULARZ LOGOWANIA */ ?> <form method="post" action=""> <label for="login">Login:</label> <input type="text" name="login" maxlength="32" id="login" /> <label for="pass">Hasło:</label> <input type="password" name="pass" maxlength="32" id="pass" /><br /> <input type="hidden" name="send" value="1" /> <input type="submit" value="Zaloguj" /> </form> <?php } if (user::isLogged()) { // Widok dla użytkownika zalogowanego // Pobierz dane o użytkowniku i zapisz je do zmiennej $user $user = user::getData('', ''); 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>'; } else { // Widok dla użytkownika niezalogowanego 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>'; } ?> <? /** * Tylko dla zalogowanych użytkowników */ if (!user::isLogged()) { echo '<p class="error">Przykro nam, ale ta strona jest dostępna tylko dla zalogowanych użytkowników.</p>'; } else { $id = $_GET['id']; /** * Sprawdź czy użytkownik o podanym ID istnieje */ // Użytkownik nie istnieje if ($userExist[0] == 0) { } /** * Użytkownik istnieje, tak więc pokaż jego profil */ // Zapisz dane użytkownika o podanym ID, do zmiennej $profile $profile = user::getDataById ($id); } ?>
user.class.php
<?php class user { /** * Zwraca tablicę ze wszystkimi danymi o użytkowniku. * Indeksy tablicy odpowiadają nazwom pól w bazie danych (login, pass etc...) * @param string $login * @param string $pass * @return array */ public function getData ($login, $pass) { if ($login == '') $login = $_SESSION['login']; if ($pass == '') $pass = $_SESSION['pass']; self::$user = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE login='$login' AND pass='$pass' LIMIT 1;")); return self::$user; } /** * Zwraca tablicę ze wszystkimi danymi o użytkowniku, tak jak powyższa metoda klasy, * ale rozpoznaje użytkownika nie po podaniu loginu i hasła tylko po podaniu ID. * Używana np. do wyświetlania strony profilu. * @param int $id * @return array */ public function getDataById ($id) { return $user; } /** * Jeśli użytkownik jest zalogowany - zwraca true, w przeciwnym wypadku - false * @return bool */ public function isLogged () { return false; } else { return true; } } /** * "Soli" hasło przed jego zahashowaniem funkcją md5() * @param string $pass * @return string */ public function passSalter ($pass) { $pass = '$@@#$#@$'.$pass.'q2#$3$%##@'; } }
żeby nie było, logowanie nie jest moje..
Mój skrypt logowania + panelu admina straciłem wraz z zalanym laptopem

Pozdrawiam i proszę o pomoc!