Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam
Ostatnio zaczalem bawic sie php i bawic jest tutaj bardzo adekwatnym slowem gdyz niewiele potrafie zrobic z ta technologia jak na razie.
Jak we wszystkim kiedy przychodzi do konkretow to wiedza z ksiazek moze posluzyc do wyswietlenia w petli liczby o 1 do 10 i nic wiecej lol.
Z ciekawosci wiec zaczalem klepac prosty system logowania do portalu.
index.php
<html> <head> </head> <body> <a href="#">Home</a> <?php session_start(); if (isset($_SESSION['login'])) { if(!empty($_SESSION['login'])) { echo 'Zalogowany jako <strong>' . $_SESSION['login'] . '</strong> <a href="wyloguj.php">Wyloguj.</a>'; } } else { include('zaloguj.php'); } ?> </body> </html>
zaloguj.php:
<html> <body> <form action="logmein.php" method="post"> Uzytkownik: <input type="text" name="login"> Haslo: <input type="password" name="user_pass"> <input type="submit" value="Zaloguj"> </form> </body> </html>
logmein.php;
<?php session_start(); if(isset($_POST['login'], $_POST['user_pass'])) { if(!empty($_POST['login']) && !empty($_POST['user_pass'])) { $user_name = $_POST['login']; $user_pass = $_POST['user_pass']; // tutaj sprawdz dane na przyklad z bazy mysql: czy istnieje taki uzytkownik i czy jego haslo sie zgadza //if() $_SESSION['login'] = $user_name; echo 'Zostales zalogowany jako <string>' . $_SESSION['login'] . '</strong><br />'; echo 'Powrot do strony <a href="index.php">glownej</a>'; //else blad logowania } } ?>
wyloguj.php:
<?php session_start(); if(isset($_SESSION['login'])) { if(!empty($_SESSION['login'])) { session_destroy(); echo 'Zostales wylogowany<br />Powrot ...'; } } else { echo 'Nie jestes zalogowany!'; } ?>
Tak to sie robi czy tez podazam kompletnie zla droga?
Przykladowo nim dotarlem do tej jak sie wydaje dzialajacej formy probowalem w pliku index.php zamiescic cos w stylu:
if (isset($_SESSION['login'])) { include('zalogowany.php'); } } else { include('zaloguj.php'); }
ale wowczas session_start(); musialo sie pojawic zarowno w index.php jak i zalogowany.php aby mozna bylo uzywac $_SESSION[] i interpreter narzekal, ze sesja juz zostala rozpoczeta a ja w sposob logiczny nie potrafilem tego obejsc.
W php jezeli chodzi o pojedyncze strony wszystko wydaje sie proste a kiedy dochodzi do bardziej dynamicznej zawartosci przygniata mnie ogromna ilosc szczegolow, ktorymi sie trzeba zajmowac.
I oczywiscie za dobre samouczki ale takie praktyczne bede zobowiazany. ;-)
Offline
Jest tak bo nie doczytałeś nic o session_start(). Wywołujesz go na każdej stronie, która ma używać sesji. Ale, i tutaj brak doczytania, ma być wywołany zanim cokolwiek poleci do przeglądarki. Jest tez możliwość restartu sesji o ile nie wygasła po stronie serwera. Po drugie metoda, której używasz do kodowania jest dobra przy prostych stronach. Zacznij raczej pisać całość w PHP i przepychać tagi html'a do przeglądarki (np. echo). Rozbudowane szablony tagów przechowujesz w zewnętrznym pliku, który podłączysz funkcją include(). Potem tylko odpowiednio manipulujesz zmiennymi pod które masz wpisane poszczególne tagi lub ich całe grupy.
Offline
A ja polecam jeszcze doczytać o Smarty, wtedy oddzieli się kod HTML od kodu PHP.
Offline
Smarty wcale takie "Uber" nie jest :P Po drugie warto stopniowo chyba jednak wdrażać się niż wszystkiego po trochu i potem jeden wielki bajzel.
Offline
Od siebie dodam:
1) na początku pliku dawaj ob_start (http://www.php.net/manual/pl/function.ob-start.php) na końcu ob_end_flush (http://www.php.net/manual/pl/function.ob-end-flush.php). Pomiędzy tym rozpoczynaj sesje. Zagwarantuje ci to że nić wcześniej nie zostanie wysłane do klienta. Bardzo przydatne przy sesjach.
2) podstawa to walidacja danych otrzymywanych od klienta. Zanim wrzucisz dane z GET, POST, COOKIE itp. do bazy przefiltrować je!
3) Apetyt rośnie w miarę jedzenia ;) z czasem przyjdzie decyzja o szablonach, ja mogę polecić rodzimy "produkt" OPT (http://www.invenzzia.org/en/projects/open-power-lib … ower-template)
Offline