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
<?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
if (!$login or
empty($login)) { die ('<p class="error">Wypełnij pole z loginem!</p>'); }
if (!$pass or
empty($pass)) { die ('<p class="error">Wypełnij pole z hasłem!</p>'); }
$pass = user::passSalter($pass); // Posól i zahashuj hasło
// Sprawdź, czy użytkownik o podanym loginie i haśle isnieje w bazie danych
if ($userExists[0] == 0) {
// Użytkownik nie istnieje w bazie
echo '<p class="error">Użytkownik o podanym loginie i haśle nie istnieje.</p>'; }
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>Jesteś zalogowany, witaj '.$user['login'].'!</p>'; 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) {
die ('<p>Przykro nam, ale użytkownik o podanym identyfikatorze nie istnieje.</p>'); }
/**
* Użytkownik istnieje, tak więc pokaż jego profil
*/
// Zapisz dane użytkownika o podanym ID, do zmiennej $profile
$profile = user::getDataById ($id);
echo '<h1>Profil użytkownika '.$profile['login'].'</h1>';
echo '<b>Nick:</b> '.$profile['login'].'<br />'; echo '<b>Email:</b> '.$profile['email'].'<br />';
}
?>
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'];
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 () {
if (empty($_SESSION['login']) || empty($_SESSION['pass'])) { 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!