Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Logowanie
markez07
post 5.05.2013, 18:22:29
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 19.01.2010

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


Mam sobie TOP i chciałbym żeby w tym topie wyświetlało się $PROFIL, albo $LOGOWANIE. W profilu jest menu profilu, a w logowaniu formularz do zalogowania. Nie wiem jak to zaplanować, jak ustawić. Mam to zrobić, że jeżeli sesja zalogowany = true to wyświetla się profil, a else logowanie? Po kliknięciu action w formularzu dane mają być sprawdzane pod kątem poprawności (czyli czy pola nie są puste, czy poprawne znaki zostały wprowadzone), a następnie porównywane w bazie czy takie istnieją. Jak nie istnieją to sesja zalogowany = false, a jak istnieją to true... Jak zrobić żeby w topie widniał formularz logowania, a po zalogowaniu znikał i pojawiał się profil użytkownika? Może ktoś mi mniej więcej rozpisać co po kolei powinienem zrobić? Nie potrafię sobie tego zaplanować. Mam nadzieję, że z czasem nauczę się "myśleć" jak programista php.
Go to the top of the page
+Quote Post
Aqu
post 5.05.2013, 18:39:04
Post #2





Grupa: Zarejestrowani
Postów: 279
Pomógł: 58
Dołączył: 14.07.2012

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


Właśnie tak jak piszesz. wink.gif

  1.  
  2. if($_POST['loguj'])
  3. {
  4. // sprawdzanie danych itd.
  5. if($dane === true) // dane się zgadzają
  6. {
  7. $_SESSION['zalogowany'] = true;
  8. $_SESSION['id'] = $user['id'];
  9. }
  10. }
  11.  
  12. $profil = 'menu profil';
  13. $logowanie = 'formularz do logowania';
  14.  
  15. if($_SESSION['zalogowany'] === true) $top = $profil;
  16. else $top = $logowanie;
  17.  
  18. echo $top;
  19.  


Ten post edytował Aqu 5.05.2013, 18:41:14
Go to the top of the page
+Quote Post
markez07
post 5.05.2013, 21:20:20
Post #3





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 19.01.2010

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


1. Jak wykonać sprawdzenie tych danych czy są poprawne? Jakoś za pomocą pętli? Przydałoby się jeszcze komunikat wyświetlić co jest nie tak.
2. Jakie najlepiej zastosować wyrażenia regularne do loginu i hasła? Chyba najlepiej żeby nie było można wpisać !@#$%^&*() itp?

3.



E:

  1. <?php
  2.  
  3. if(isset($_POST['loguj']))
  4. {
  5. echo $LOGOWANIE;
  6. // powyzej badz ponizej przed tym kodem moze byc umieszczony formularz ;)
  7. // najpierw sprawdzamy, czy wysyłane zmienne w formularzu nie są puste.
  8. if (!empty($_POST['login']) && !empty($_POST['haslo'])) {
  9.  
  10. $login = $_POST['login'];
  11. $haslo = $_POST['haslo'];
  12.  
  13.  
  14. $sprawdzanie = mysql_query("SELECT * FROM uzytkownicy WHERE nick = '$login' AND haslo = '$haslo'");
  15. $licz = mysql_num_rows($sprawdzanie);
  16. if ($licz > 0) {
  17. $_SESSION['zalogowany'] = true;
  18. $_SESSION['id'] = $user['id'];
  19. } else {
  20. $_SESSION['zalogowany'] = false;
  21. }
  22. }
  23. }
  24.  
  25.  
  26.  
  27. if($_SESSION['zalogowany'] === true) $top = $PROFIL;
  28. else $top = $LOGOWANIE;
  29.  
  30. echo $top;
  31.  
  32. ?>


Coś mam źle, bo cały czas wyświetla mi $PROFIL

Ten post edytował markez07 5.05.2013, 21:41:17
Go to the top of the page
+Quote Post
Aqu
post 5.05.2013, 21:27:05
Post #4





Grupa: Zarejestrowani
Postów: 279
Pomógł: 58
Dołączył: 14.07.2012

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


A co Ci takie znaki przeszkadzają w haśle? ;p
W loginie jak sobie chcesz, z tym, że sprawdzanie przy logowanie jest bez sensu, sprawdzasz tylko przy rejestracji.
  1. SELECT * FROM uzytkownicy WHERE nick = '$login'"
a hasło?
Go to the top of the page
+Quote Post
markez07
post 5.05.2013, 21:43:29
Post #5





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 19.01.2010

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


Trochę zmieniłem, ale coś mam źle, bo cały czas wyświetla mi $PROFIL
Go to the top of the page
+Quote Post
Aqu
post 5.05.2013, 21:52:19
Post #6





Grupa: Zarejestrowani
Postów: 279
Pomógł: 58
Dołączył: 14.07.2012

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


Na samej górze masz: echo $LOGOWANIE; więc nic dziwnego
Go to the top of the page
+Quote Post
markez07
post 6.05.2013, 17:28:20
Post #7





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 19.01.2010

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


Posiedziałem, popróbowałem i coś mi wyszło, działa. Proszę sprawdzić czy jest to poprawnie napisane.

  1. <?php
  2. $blad_logowania = '<div class="blad_logowania">Wprowadziłeś błędne dane!</div>';
  3. $puste_pola = '<div class="blad_logowania">Wypełnij wszystkie pola!</div>';
  4.  
  5. if(!isset($_POST['action'])){
  6. echo $LOGOWANIE;
  7. }
  8. if(isset($_POST['action'])){
  9. if(!empty($_POST['login']) && !empty($_POST['haslo'])){
  10.  
  11. $login = $_POST['login'];
  12. $haslo = $_POST['haslo'];
  13.  
  14. $sprawdzanie = mysql_query("SELECT * FROM uzytkownicy WHERE nick = '$login' AND haslo = '$haslo'");
  15. $licz = mysql_num_rows($sprawdzanie);
  16. if($licz > 0){
  17. $_SESSION['zalogowany'] = true;
  18. }else{
  19. $_SESSION['zalogowany'] = false;
  20. }
  21.  
  22. if($_SESSION['zalogowany'] === true) $top = $PROFIL;
  23. else $top = $LOGOWANIE.$blad_logowania;
  24. echo $top;
  25. }else{
  26. echo $LOGOWANIE.$puste_pola;
  27. }
  28. }
  29. ?>


1. Czy to co napisałem powyżej jest poprawne?
2. Zapis ma być taki?

  1. require_once("config.php");


Czy mogę np. session_start(); umieścić w config.php i wczytywać tylko config?

3. Jak najlepiej wczytywać szablon i w jaki sposób zrobić menu? Mam podzielić stronę na top, body, footer? Top wczytać do index.php i on będzie stały, w nim niezmienny. Do Top będę jednocześnie wczytywał skrypt logowanie/profil. Jak zrobić zakładki? Będę miał też wczytane body i footer, body zrobić wymienne, połączyć z menu? Jeżeli jest jakieś lepsze rozwiązanie tego to proszę mi podpowiedzieć.

Ten post edytował markez07 6.05.2013, 00:34:42
Go to the top of the page
+Quote Post
Aqu
post 6.05.2013, 17:46:19
Post #8





Grupa: Zarejestrowani
Postów: 279
Pomógł: 58
Dołączył: 14.07.2012

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


1. Przyjęło się, że stałe zapisuje się wielkimi literami a zmienne małymi, czyli powinieneś zmienić to: $LOGOWANIE itp. Ale to tylko taka uwaga, dla php nie ma to żadnego znaczenia.
  1. $login = $_POST['login'];
  2. $haslo = $_POST['haslo'];
  3.  
  4. $sprawdzanie = mysql_query("SELECT * FROM uzytkownicy WHERE nick = '$login' AND haslo = '$haslo'");

Tworzysz niepotrzebne zmienne $login i $haslo, poza tym powinieneś przefiltrować to na wypadek sql injection.

2. Możesz, nawet powinieneś. wink.gif
3. Najprościej będzie to chyba zrobić w taki sposób, że na końcu dodasz plik z całym szablonem strony i zrobisz coś takiego:
  1. <html>
  2. <head>
  3. stałe
  4. <title>Strona.pl | <?PHP echo $podstrona_title; ?></title>
  5. </head>
  6.  
  7. <body>
  8. <div id="top">stale</div>
  9. <div id="menu"> <?PHP echo $menu; ?></div>
  10.  
  11. itd.
  12.  
  13. <div id="foot">stale</div>
  14. <body>
  15. </html>

i w zależności od podstrony, albo tego czy czy ktoś jest zalogowany określasz zmienne w tym szablonie.
Możesz też zainteresować się jakimiś system szablonów, najpopularniejszy to Smarty.

Ten post edytował Aqu 6.05.2013, 17:48:03
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 7.07.2025 - 20:56