Skocz do zawartości

Menu dla Zalogowanych i gosci


Teilor

Rekomendowane odpowiedzi

Witam. Gryzie mnie jeszcze jeden problem.

Na stronie posiadam górne menu, które zawarte jest w pliku UP2.PHP oraz menu dla zalogowanych graczy UP.PHP.

Na osobnej zakładce posiadam skrypt Logowania, który wyglada jak poniżej. Wrzuciłem tez funkcję która w bazie w tabeli users zmienia pole zalogowany na 1/0 (w zaleznoścy czy ktoś się zalogował/wylogował).

Pytanie moje wygląda nastepująco.

Jaki fragment kodu napisać aby menu zmieniało się dla zalogowanych/gości.

Prosiłbym o napisanie odpowiedniej pętli bo męcze się z tym i nie ma powodzenia ; x

<?php   include 'config.php';  ?>
<div id="glowny">
<?php
include 'up.php';			<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< TU  PRZEWIDZIANA ZMIANA MENU
?>
<link rel="stylesheet" href="style.css" type="text/css">
<meta http-equiv="content-language" content="pl_PL">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<div id="tekst">
<p id="zwykly">
<?php
session_start();
switch($_GET['action']) {
case 'login' : include 'login.php'; break;
case 'logout' : include 'logout.php'; break;
case 'gra' : include 'gra.php'; break;
case 'galeria' : include 'galeria.php'; break;
case 'kontakt' : include 'kontakt.php'; break;
default	  : include 'default.php'; break;

}
mysql_close ();
?>
</p>
</div></div>
<?php  include 'down.php';  ?>

LOGIN.PHP

<?php
if ($_POST['login']!='' && ($_POST['haslo'])!='') {

$login=$_POST['login'];
$haslo=$_POST['haslo'];
}

$wynik=mysql_query("SELECT * FROM users WHERE login='$login' LIMIT 1 ");
if (mysql_num_rows($wynik)===1) {
$dane=mysql_fetch_assoc($wynik);
if (md5($haslo)===$dane['password']) {
echo " <img id='odlewej2' src='img/DOBRE.png' width='500'> ";   


mysql_query("UPDATE users SET zalogowany=1 WHERE login='$login' LIMIT 1 ");

$_SESSION['id']=$dane['id'];
$_SESSION['login']=$dane['login'];
}
else {
echo " <img id='odlewej2' src='img/ZLE.png' width='550'> ";
mysql_query("UPDATE users SET zalogowany=0 WHERE login='$login' LIMIT 1 ");
}   }
else {
echo "   
<img src='img/WPIS1Z.png' >   ";
mysql_query("UPDATE users SET zalogowany=0 WHERE login='$login' LIMIT 1 ");
}	?>
<div id="odlewej">
<form name="login" action="index.php?action=login" method="post">
Login : <input type="text" name="login" /> <br>
Haslo : <input type="password" name="haslo" /> <br>
<input type="submit" value="Submit" />
<br><br>
</form>
</div>

<?php

if ($_SESSION['login']!='') {

include 'up.php';

}

else {

include 'up2.php';

}

?>

Próbowałem tez jak wyżej, ale to nie pali, bo logowanie nastepuje na innej zakładce i jest wczytywane niżej.

Odnośnik do komentarza
Udostępnij na innych stronach

Zrobiłem tak:

Działa na 1 zakładke ale jak się ja zmieni znowu nie dziala : /

<?php

if ($_POST['login']!='' && ($_POST['haslo'])!='') {

$login=$_POST['login'];

$haslo=$_POST['haslo'];

}

$wynik=mysql_query("SELECT * FROM users WHERE login='$login' LIMIT 1 ");

$_SESSION['zalogowany']=$dane['zalogowany'];

?>

<?php

if (mysql_num_rows($wynik)===1) {

$dane=mysql_fetch_assoc($wynik);

if (md5($haslo)===$dane['password']) {

include 'up.php';

}

else {

include 'up2.php';

}

}

else {

include 'up2.php';

}

?>

Odnośnik do komentarza
Udostępnij na innych stronach

1. Jak chcesz korzystać z sesji - to w każdym żadaniu musi byc wywołane session_start(). Wtedy można z sejsi korzystać.

2. Odnosnie drugiego posta - po tym jak sprawdzasz czy hasłasię zgadzają i jest ok - to tam zamiast include up.php przypisz dane do sesji że user jest zalogowany.

Nie mieszaj mechanizmów autoryzacji z tworzeniem strony. Zrób sobie plik do obsługi całej sesji i logowania i rób jego include na każdej podstronie albo np. z config.php.

Wrzuć tam obsługe formularza do logowania oraz obsługe sesji i np. funkcje is_logged_in() która zwrata true / false.

W samej aplikacji potem tylko sprwadzasz czy użytkownik jest zalogowany czy nie.

Odnośnik do komentarza
Udostępnij na innych stronach

1. Jak chcesz korzystać z sesji - to w każdym żądaniu musi być wywołane session_start(). Wtedy można z sejsi korzystać.
Nie jest to w pełni poprawne stwierdzenie, bo można inicjowanie sesji ustawić w pliku PHP.INI. https://www.php.net/manual/en/session.confi...sion.auto-start

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Nie jest to w pełni poprawne stwierdzenie, bo można inicjowanie sesji ustawić w pliku PHP.INI.

To co napisałeś jest prawdą - jednakże nie ma żadnego zastosowania do pytania jakie zadał Teilor.

Mozna też w .htaccess ustawić i w ustawieniach vhosta - tylko po co w takie szzegóły wchodzić.

Nikt specjalnie dla jego konta hostingowego nie zrobi osobnego php.ini z włączonym session.auto-start.

Odnośnik do komentarza
Udostępnij na innych stronach

To co napisałeś jest prawdą - jednakże nie ma żadnego zastosowania do pytania jakie zadał Teilor..
Jak najbardziej na zastosowanie, bo nie jest to prawdą to co piszesz "Jak chcesz korzystać z sesji - to w każdym żadaniu musi byc wywołane session_start(). "
Mozna też w .htaccess ustawić i w ustawieniach vhosta - tylko po co w takie szzegóły wchodzić..
Informatyka jest oparta na szczegółach.
Nikt specjalnie dla jego konta hostingowego nie zrobi osobnego php.ini z włączonym session.auto-start.
I znowu mijasz się z prawdą, bo jest cała masa hostingów które udostępniają takowy plik np:

https://www.az.pl/hosting-specyfikacja-tech...stingowych.html

https://home.pl/dokumentacja/funkcjeserwera...ypty/ustawienia

https://linuxpl.com/Pytania-i-odpowiedzi

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Nikt specjalnie dla jego konta hostingowego nie zrobi osobnego php.ini z włączonym session.auto-start.
I znowu mijasz się z prawdą, bo jest cała masa hostingów które udostępniają takowy plik np:

...

Na żadnym z tych hostingów nikt tego "za niego" nie zrobi więc nie masz racji.

Offtop - osobista wycieczka:

Mion po co w ogóle odpowiadasz skoro nawet nie próbujesz z problemem pomóc, a jedynie innym osobom wytykasz błedy i nieścisłości?

Odnośnik do komentarza
Udostępnij na innych stronach

Na żadnym z tych hostingów nikt tego "za niego" nie zrobi więc nie masz racji.
W jakiej części nie mam racji - w tej, że wprowadzasz w błąd ?
Mion po co w ogóle odpowiadasz skoro nawet nie próbujesz z problemem pomóc, a jedynie innym osobom wytykasz błedy i nieścisłości?
WebReklama po co w ogóle odpowiadasz skoro wprowadzasz w błąd.

https://www.forum.optymalizacja.com/index.p...=152094&hl= ;)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności