Po Wylogowaniu wracamy na strone główna

0

witam chciałbym zrobić tak że po wylogowaniu wracamy na strone główna zrobiłem to tak

<?php
require_once('../config/config.php');
mysql_query("update player set online = 0 where id = ".$_SESSION['player']." ");

$_SESSION['player'] = 0;
echo "Wylogowales sie. Odswiez aby wyjsc do menu Glownego";
if($player['online'] == 0){ $player = ""; $_SESSION['player'] = 0; }
if(empty($player)) header('Location: logowanie.php');
exit;
?>

ale po wylogowaniu sie zostaje na tej samej stronie tylko mam białe tło

0

Zajebisty nick xd

header("Location: /");
0
Biały Młot napisał(a):

Zajebisty nick xd

header("Location: /");

nie dziala w htmlu mam tak

i w cs
#logoutbut {
position:absolute;
background-position: 0px 0px;
z-index:305;
left:708px;
top:512px;
width:68px;
height:20px;
cursor:pointer;
background-image:url(interface/b_logout.png);
}
#logoutbut:hover {
position:absolute;
background-position: 0px 20px;
z-index:305;
left:708px;
top:512px;
width:68px;
height:20px;
cursor:pointer;
background-image:url(interface/b_logout.png);

0

Pokaż plik logowanie.php

0

Twój problem polega na tym, że zabierasz się za pisanie stron internetowych bez wiedzy o tym, jak to się w ogóle dzieje, że strona magicznie się pojawia w przeglądarce.


Otóż szkielet komunikacji między serwerem a przeglądarką wygląda tak: `nagłówki` + `treść strony` *(w takiej dokładnie kolejności)*.

Nagłówki to na przykład:

  1. Content-Length określający rozmiar wysyłanej/odbieranej (zależy kto pyta) strony,
  2. Content-Type mówiący o rodzaju odbieranych danych, przykładowo może mieć wartość text/html;charset=UTF-8,
  3. czy też właśnie Location wskazujący o przeniesieniu zasobu w inne miejsce.
    W momencie, gdy wywołujesz echo/print czy też po prostu pojawia się jakiś HTMLowy kod, wysyłanie nagłówków przestaje być możliwe*, ponieważ - jak pewnie się już domyśliłeś - nagłówki muszą się pojawić przed treścią strony.

W Twoim przypadku sugerowałbym wrzucić do sesji treść komunikatu do wyświetlenia, przekierować za pomocą `Location` od razu na stronę główną i tam wyświetlić dopiero komunikat.

Przykładowo:

logout.php

<?php

if (isset($_SESSION['zalogowany']) && $_SESSION['zalogowany']) {
	unset($_SESSION['zalogowany']);
	$_SESSION['wiadomosc'] = 'Zostałeś pomyślnie wylogowany.';
}

header('Location: /index.php');

index.php

<?php if (isset($_SESSION['wiadomosc'])): ?>
	<h3><?= $_SESSION['wiadomosc'] ?></h3>
	<?php unset($_SESSION['wiadomosc']); ?>
<?php endif; ?>

W taki sposób od razu następuje przekierowanie na stronę główną, zostaje mniej-więcej zachowana zasada pojedynczej odpowiedzialności (wylogowywanie w osobnym, przeznaczonym do tego pliku) oraz przy okazji masz gotowy mechanizm do wyświetlania innych powiadomień na stronie głównej.

BTW rozszerzenie mysql (wszystkie funkcje mysql_*) są zdeprecjonowane i zostały usunięte wraz z PHP 7; wykorzystuj PDO.

* chyba że wykorzystasz buforowanie: http://php.net/manual/en/function.ob-start.php - wtedy można wywoływać sobie header z niemalże dowolnego miejsca kodu, lecz w tym konkretnym przypadku przyniosłoby to inne rezultaty niż Ci się może wydawać.

0

ja pobieram to z bazy danych online = 0 (niezalogowany)
online = 1 (zalogowany)

w twoim przykładzie brak pobierania z bazy danych

1

Tak - na pewno będę patrzył i domyślał się jak Ty to zrobiłeś, dam Ci gotowca i jeszcze pewnie mam wysprzątać Twój pokój oraz podetrzeć Ci tyłek :|
Podałem Ci przykład jak to ma generalnie wyglądać - sam sobie to dostosuj do swojego rozwiązania.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.