Skocz do zawartości

Zmiana rekordu w bazie


Teilor

Rekomendowane odpowiedzi

Pisze z takim pytaniem.

Napisałem prosty skrypt logowania, który jak każdy skrypt sprawdza poprawnośc danych i loguje, ale dodatkowo po zalogowaniu zmienia rekord w bazie z tabeli users : zalogowany na 1 . Wszystko ładnie działa, jednak w skrypcie Wylogowywania powinień zmieniac rekord zalogowany na 0.

Niestety nie działa. Jestem początkujący i byłbym wdzięczny za pomoc ; ).

Odrazu tłumacze po co ta funkcja "zalogowany". Otóż chciałbym żeby górne menu zmieniało się osobno dla zalogoanych, a dla niezalogowanych było inne (inny plik php) dlatego chce je zmieniać poprzez sprawdzanie w bazie czy zalogowany=1 czy 0.

Ciękzo mi się inaczej do tego odnośc gdyż moja strona jest podzielona na:

- UP / UP2 (Góra Strony tj. logo+menu gorne - ktore wlasnie sie ma zmieniac )

- TEKST (Czyli zawartosc kazdej podstrony osobno zarowno dla zalogownaych i niezalogownych)

- DOWN (stopka...)

Może przedstawie kody które pozwolą Wam znaleśc u mnie błąd :)

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 id='odlewej2' src='img/WPIS1Z.png' width='500'> ";

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" />
</form>
</div>

LOGOUT.PHP

<?php   include 'config.php';  ?>
<div id="glowny">
<?php   include 'udDEF.php';   ?>

<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

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


unset($_SESSION['login']);
unset($_SESSION['id']);
unset($_SESSION);

?>

<table>
<tr>
<td>
<img src="img/kl.png" alt="" id="srodekobrazek" width="640px">
</td>

<td> <a href="index.php">  <img src="img/sad.png" alt="" id="srodekobrazek">   </a>  </td>

</tr>
</table>


</p>



</div></div>
<?php  include 'down.php';  ?>

INDEX.PHP

<?php   include 'config.php';  ?>
<div id="glowny">

<?php
$menu='up2.php';
include $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;
default	  : include 'default.php'; break;

}


mysql_close ();
?>

</p>



</div></div>
<?php  include 'down.php';  ?>

Odnośnik do komentarza
Udostępnij na innych stronach

Co za syf ten kod ...

mysql_query("UPDATE users SET zalogowany=0 WHERE login='".$_SESSION['login']."' LIMIT 1 ");

unset($_SESSION['login']);

unset($_SESSION); < to jest zmienna systemowa wiec nie możesz jej tak usunąć

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

session_cache_expire() więcej info w manualu.

--------------Dno jest wtedy,kiedy nie ma juz nawet mułu.--------------------

Turystyka na sprzedaż , Podróże małe i duże, Egipt, Turcja, Tunezja, Chorwacja...

Poszukuję zatrudnienia.

Będzie bez linka a co :D

poezjapozycjonowania(kropka)blogspot(kropka)com

NEW!!! - Blask Serpów (Prolog) W przygotowaniu: Chapter 1 - Blask Serpów

Odnośnik do komentarza
Udostępnij na innych stronach

@Jeszcze pytanie, czy jest opcja że po zamknięciu karty/przeglądarki sam zmienial na 0?

Z poziomu PHP nie ma takiej możliwości.

@Albo np po nieaktywności przez 15min?

Ustawiając parametry sesji

https://www.php.net/manual/en/session.confi...cookie-lifetime

https://www.forum.optymalizacja.com/lofiver...php/t71443.html

i jeśli przeładuje stronę musisz obsłużyć wylogowanie z tym, ze nie wisz już kogo, bo dane sesji użytkownika wygasły, więc się do nich nie odwołasz.

Jaki w ogóle według Ciebie jest sens takich operacji ?

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

Mion bardziej mu pewnie chodzi o coś podobnego jak masz na koncie bankowym. Jeżeli nic się nie dzieje przez 10 minut to logout z automatu. Sens jest, bezpieczeństwo ;)

--------------Dno jest wtedy,kiedy nie ma juz nawet mułu.--------------------

Turystyka na sprzedaż , Podróże małe i duże, Egipt, Turcja, Tunezja, Chorwacja...

Poszukuję zatrudnienia.

Będzie bez linka a co :D

poezjapozycjonowania(kropka)blogspot(kropka)com

NEW!!! - Blask Serpów (Prolog) W przygotowaniu: Chapter 1 - Blask Serpów

Odnośnik do komentarza
Udostępnij na innych stronach

No ok, ustawiasz zmienne sesyjne ale gdzie masz session_start() ?

//edit nie przyuważyłem, jest session start, session start przesuń najlepiej na początek pliku bo sesja startuje dopiero po zaincludowaniu menu. Daj najlepiej na górę przed dołączeniem pliku config.php

Kilka wskazówek odnośnie bezpieczeństwa:

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

Powyższe przefiltrować, bo aż kusi żeby wstrzyknąć kodu.

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

To wywalić, nie trzymać loginów i haseł w sesji ani cookies. Lepiej tak jak już Mion pisał ustawić zmienną sesyjną o statusie zalogowania 1 dla zalogowania 0 nie.

--------------Dno jest wtedy,kiedy nie ma juz nawet mułu.--------------------

Turystyka na sprzedaż , Podróże małe i duże, Egipt, Turcja, Tunezja, Chorwacja...

Poszukuję zatrudnienia.

Będzie bez linka a co :D

poezjapozycjonowania(kropka)blogspot(kropka)com

NEW!!! - Blask Serpów (Prolog) W przygotowaniu: Chapter 1 - Blask Serpów

Odnośnik do komentarza
Udostępnij na innych stronach

Każda strona korzystająca z sesji musi wywoływać funkcje session_start() chyba, że w PHP ini masz ustawione autostart:

www.php.net/manual/en/session.configuration.php#ini.session.auto-start

inaczej nie masz dostępu do zmiennych sesji.

Jakie masz zmienne sesji możesz wydrukować funkcją:

<?php

session_start();

print_r($_SESSION);

?>

Jeśli login i haslo są właściwe rejestrujesz np $_SESSION['zalogowany']='tak';

potem sprawdzasz na stronach dostępnych po zalogowaniu po session_start();

if(isset($_SESSION['zalogowany'])== false)

{

// header('location) < na strone logowaniu lub

die('nie jestes zalogowany')

itd..

}

podobnie z menu:

<?php if(isset($_SESSION['zalogowany'])):?>

<h2>Menu zalogowanego</h2>

<?php else:?>

<h2>Menu NIEzalogowanego</h2>

<?php endif;?>

wylogowanie:

unset($_SESSION['zalogowany']);

lub od razu wszystkie

$_SESSION = array();

session_destroy();

ITD..

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