Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> [MySQL][PHP]Ile razy użytkownik logował się?
aceout
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 9.05.2017

Ostrzeżenie: (0%)
-----


Witam wszystkich.

Na początek kilka słów - jestem absolutnie początkującym w tematach PHP i MySQL. Stworzyłem prostą stronę, na której można się logować, a strona, która uruchamia się po zalogowaniu, wyświetla
spersonalizowane dane. Do tej pory wszystko szło jak po maśle, ale... pojawiła się ściana.

Bardzo mi zależy na tym, abym miał pełną informację jako "administrator strony" o tym ile razy dany użytkownik się logował - niby banalne.
Wymyśliłem to tak:
1) w bazie danych, w kolumnie 'log', przechowuję INT, a więc liczbę naturalną odzwierciedlającą ilość logowań.
2) w pliku php, którego zadaniem jest logować użytkownika (działa bezbłędnie) dodałem fragment kodu, który zgodnie z tym co poniżej, dokonuje aktualizacji tej kolumny u zalogowanego użytkownika.

.....
$ilu_userow = $rezultat->num_rows;
if ($ilu_userow>0)
{
$_SESSION['zalogowany'] = true;
$wiersz = $rezultat->fetch_assoc();
$_SESSION['id'] = $wiersz['id'];
$_SESSION['username'] = $wiersz['username'];
$_SESSION['imie'] = $wiersz['imie'];
$_SESSION['nazwisko'] = $wiersz['nazwisko'];
$_SESSION['e-mail'] = $wiersz['e-mail'];
$_SESSION['password'] = $wiersz['password'];
$_SESSION['log'] = $wiersz['log'];

$numer = $_SESSION['id'];
$logowanie = $_SESSION['log'];
$log2 = $logowanie++;
mysqli_query("UPDATE users SET log = $log2 WHERE id = $numer");

unset($_SESSION['blad']);
$rezultat->free_result();

header('Location: strona.php');
}
else
{
$_SESSION['blad'] = '<span style="color:red"> Nieproawidłowy login lub hasło.</span>';
header('Location: login.php');
}
.....


3) Z niewiadomego mi powodu, ten mechanizm nie działa.

Nie mam pojęcia co robię źle... Czy kod jest w złym miejscu, czy w ogóle jest poprawny... Podkreślam, że raczkuję w temacie i mimo, że tak dużo udało mi się zrobić, to pewnie robię jeszcze śmieszne błędy (chciałbym, żeby
okazało się, że to jakiś średnik albo coś w tym stylu).
Męczę się z tym już kilka dni, przeglądam różne miejsca w sieci, kursy i inne fora, ale niczego nie znalazłem co naprowadziłoby mnie na rozwiązanie... Mówiąc szczerze jestem strasznie zniesmaczony swoją nieporadnością.
Liczę na wsparcie i pomoc w rozwiązaniu problemu.


Pozdrawiam,
Marcin.

Ten post edytował aceout 9.05.2017, 15:07:29
Go to the top of the page
+Quote Post
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Kolumna log niech ma domyślną wartość 0. Przy każdym poprawnym zalogowaniu dawaj zapytanie UPDATE users SET log = log+1 i tyle.
Go to the top of the page
+Quote Post
aceout
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 9.05.2017

Ostrzeżenie: (0%)
-----


Od tego zacząłem... gdyby to było tak proste... (IMG:style_emoticons/default/smile.gif) Mam trochę wiedzy ogólnej z programowania, uczyłem się języka C.
Stąd może takie naleciałości. Wydawać by się mogło, że jest ok, ale pytanie moje brzmi. Czy ten kod, jest we właściwym miejscu i czy jest poprawny składniowo? Jeśli tak, to dlaczego to nie działa? (IMG:style_emoticons/default/smile.gif)

Dodam jeszcze tyle, że polecenie UPDATE mi nie działa. Odczyt przez SELECT jest ok, wszystkie zapytania są w porządku, ale nie mogę zmienić wartości w tabeli.

Nawet na sztywno kiedy piszę log = 1 WHERE id=1. Po prostu nie reaguje...

Ten post edytował aceout 9.05.2017, 15:29:56
Go to the top of the page
+Quote Post
Tomplus
post
Post #4





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Próbowałeś przetestować bezpośrednio w konsoli MySQL?

W ogóle... wykomentuj najpierw: header('Location: strona.php');

A potem spróbuj testować. Pewnie pojawi się informacja z błędem.
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://php.net/manual/es/mysqli.query.php
I sie przyjrzyj jak nalezy wykonywac mysqli_query. czemu ostatnio jest moda na unikanie manuala oraz nie zagladanie do logow bledow?!
Go to the top of the page
+Quote Post
aceout
post
Post #6





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 9.05.2017

Ostrzeżenie: (0%)
-----


TOMPLUS - to był dobry pomysł - okazało się, że pojawił się błąd:

mysqli_query() expects at least 2 parameters, 1 given in /home/xxxxxxxxxx/public_html/zaloguj.php on line 39

Staram się znaleźć co to oznacza, ale jeśli komuś by się chciało pomóc to będę bardzo wdzięczny!
Jeśli chodzi o testowanie - sprawdzałem komendę UPDATE z poziomu PHPmyAdmin - działa bezbłędnie. TO i błąd, który podałem wyżej ewidentnie dowodzi, że to mój problem z php...

NOSPOR, to nie moda, to brak wiedzy i doświadczenia. Gdybym wiedział jak korzystać z manuali, to bym nie szukał pomocy na forum - nie ma tu żadnej złośliwości - dziękuję, że napisałeś, ale wierz mi, że to jeszcze nie mój poziom.
Nie bez powodu stworzyłem ten post w "przedszkolu"...
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Podalem ci linka z opisem funkcji, ktora odpalasz zle. W linku tym masz podane jak nalezy ja odpalac poprawnie. Nie trzeba miec doktoratu z php by przeczytac opis dzialania z dokumentacji. Zamykam, by cie bardziej zmotywowac do mycia mniejszym leniem (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Closed TopicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 22:02