Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Napis czy jesteś zalogowany
Th0e
post
Post #1





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 16.09.2012

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


Witam! Chciałbym by na mojej stronie jak ktoś się zaloguje i np. przegląda index.php To żeby pisało mu że jest zalogowany jako ta osoba itp.

Do tej pory stosowałem:

  1. include("config.php");//laczenie z baza
  2.  
  3. $nick = $_SESSION['nick'];
  4. $haslo = $_SESSION['haslo'];
  5. if ((!empty($nick)) AND (!empty($haslo))) {
  6. echo '<div id="jestes"><br>Jesteś zalogowany jako '. $nick .'</div><br>';
  7. echo'<div id="logowanie"><a href="wyloguj.php">wyloguj</a></div>';
  8. }


Ale zauważyłem że jak ktoś przy logowaniu wpisze zmyślone dane, np. nick który nie istnieje, to i tak jak przejdzie to takich podstron jak index to będzie mu pisać że jest zalogowany.

Napisałem Coś takiego:

  1. include("config.php");//laczenie z baza
  2.  
  3. $user = mysql_fetch_array(mysql_query("SELECT * FROM user WHERE `nick`='$nick' AND `haslo`='$haslo' LIMIT 1"));
  4.  
  5. $nick = $_SESSION['nick'];
  6. $haslo = $_SESSION['haslo'];
  7. if (!empty($user['id']) OR isset($user['id'])) {
  8. echo '<div id="jestes"><br>Jesteś zalogowany jako '. $nick .'</div><br>';
  9. echo'<div id="logowanie"><a href="wyloguj.php">wyloguj</a></div>';
  10. }


Ale teraz kompletnie nie działa. Nawet jak się zalogujemy na prawdziwe konto. Proszę o pomoc (IMG:style_emoticons/default/smile.gif) Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
nospor
post
Post #2





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




Temat: Jak poprawnie zada pytanie
Zastosuj się do tego a zobaczysz parę ciekawych rzeczy
Go to the top of the page
+Quote Post
Randallmaster
post
Post #3





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


Osobiście zrobiłbym to trochę inaczej natomiast z tego co widzę masz błąd z zapytaniem do bazy danych.

to:
  1. $user = mysql_fetch_array(mysql_query("SELECT * FROM user WHERE `nick`='$nick' AND `haslo`='$haslo' LIMIT 1"));


zmień na:
  1. $sql = mysql_query("SELECT * FROM user WHERE 'nick'='".$nick."' AND 'haslo'='".$haslo."' LIMIT 1") or die(mysql_error());
  2. $user = mysql_fetch_array($sql);


apostrofy były w złą stronę, sprawdź, może jeszcze coś przeoczyłem.

Ten post edytował Randallmaster 15.01.2013, 10:36:46
Go to the top of the page
+Quote Post
CuteOne
post
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


index.php
  1.  
  2. $logedIn = (!empty($_SESSION['nick'])) ? true : false;


layout.php (szablon strony)
  1. if($logedIn === true) {
  2.  
  3. echo 'Zalogowany jako'.$_SESSION['nick'];
  4. }



ps. po kiego grzyba trzymasz hasło w sesji.. ?

Ten post edytował CuteOne 15.01.2013, 10:51:39
Go to the top of the page
+Quote Post
com
post
Post #5





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


  1. include("config.php");//laczenie z baza
  2.  
  3. $nick = $_SESSION['nick'];
  4.  
  5. if ( isset($nick) ) {
  6. echo '<div id="jestes"><br>Jesteś zalogowany jako '. $nick .'</div><br>';
  7. echo'<div id="logowanie"><a href="wyloguj.php">wyloguj</a></div>';
  8. }

Zawszen w warunku sprawdzaj czy wgl zmienna istnieje, a nie od razu czy jest pusta (IMG:style_emoticons/default/wink.gif)

Ten post edytował com 15.01.2013, 10:55:24
Go to the top of the page
+Quote Post
CuteOne
post
Post #6





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


@up zrób sobie prosty test
  1. $zmienna = '';
  2. if(isset($zmienna)) {
  3. echo "isset-Jestem zalogowany jako: ".$zmienna."<br>";
  4. }
  5. if(!empty($zmienna)) {
  6. echo "!empty-Jestem zalogowany jako: ".$zmienna."<br>";
  7. }
  8.  
  9. $zmienna2 = false;
  10. if(isset($zmienna2)) {
  11. echo "isset-Jestem zalogowany jako: ".$zmienna2."<br>";
  12. }
  13. if(!empty($zmienna2)) {
  14. echo "!empty-Jestem zalogowany jako: ".$zmienna2."<br>";
  15. }
Go to the top of the page
+Quote Post
nospor
post
Post #7





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




A ty @up zrób sobie taki test:
  1. $zmienna = null;
  2.  
  3. if(isset($zmienna)) {
  4.  
  5. echo "isset-Jestem zalogowany jako: ".$zmienna."<br>";
  6.  
  7. }
  8.  
  9. if(!empty($zmienna)) {
  10.  
  11. echo "!empty-Jestem zalogowany jako: ".$zmienna."<br>";
  12.  
  13. }

(IMG:style_emoticons/default/wink.gif) Jeśli w sesji nie było zmiennej nick, to zwracało właśnie null.

Co nie zmienia faktu, że zdecydowanie lepszym pomysłem jest tu empty i nie wiem czemu koleś wyskoczył z issetem. Pewnie chciał nabić posta (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
CuteOne
post
Post #8





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  1. $zmienna = '';
  2. if(isset($zmienna)) {
  3. echo "isset-Jestem zalogowany jako: ".$zmienna."<br>";
  4. }
  5. if(!empty($zmienna)) {
  6. echo "!empty-Jestem zalogowany jako: ".$zmienna."<br>";
  7. }
  8.  
  9. $zmienna2 = false;
  10. if(isset($zmienna2)) {
  11. echo "isset-Jestem zalogowany jako: ".$zmienna2."<br>";
  12. }
  13. if(!empty($zmienna2)) {
  14. echo "!empty-Jestem zalogowany jako: ".$zmienna2."<br>";
  15. }
  16.  
  17. $zmienna3 = null;
  18. if(isset($zmienna3)) {
  19. echo "isset-Jestem zalogowany jako: ".$zmienna3."<br>";
  20. }
  21. if(!empty($zmienna3)) {
  22. echo "!empty-Jestem zalogowany jako: ".$zmienna3."<br>";
  23. }

Zrobiłem. I w każdym z powyższych przypadków użycie !empty() jest lepsze od isset() (null to w końcu "niebyły"(fajne tłumaczenie) a więc pusty) (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #9





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




A czy ja napisałem, że jest gorsze? Nie, napisałem, że też uważam że post z issetem był bezsensu. Chciałem ci jednak pokazać, że dla pewnych wartosci isset zachowuje się inaczej niż mogło by wynikać z Twojego pierwszego kodu. Paniał?
Go to the top of the page
+Quote Post
Th0e
post
Post #10





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 16.09.2012

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


Cytat(CuteOne @ 15.01.2013, 10:51:14 ) *
index.php
  1.  
  2. $logedIn = (!empty($_SESSION['nick'])) ? true : false;


layout.php (szablon strony)
  1. if($logedIn === true) {
  2.  
  3. echo 'Zalogowany jako'.$_SESSION['nick'];
  4. }



ps. po kiego grzyba trzymasz hasło w sesji.. ?


przecież tym sposobem nadal będzie można zalogować się na nie istniejące konto bo to też sprawdza czy zmienna jest pusta, a nie sprawdza czy coś jest w bazie.

Go to the top of the page
+Quote Post
CuteOne
post
Post #11





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Chcesz zalogować użytkownika, który już jest zalogowany.. ? może inaczej

login.php
  1. if(!empty($_POST)) {
  2.  
  3. // walidacja POST $login to $_POST['login'], $pass to $_POST['pass']
  4.  
  5. $query = mysql_query("SELECT id_user, nick FROM users WHERE login = '".$login."' AND pass = '".$pass."'");
  6.  
  7. if(mysql_num_rows($query)) {
  8.  
  9. $row = mysql_fetch_asssoc($query);
  10.  
  11. $_SESSION['id_user'] = $row['id_user'];
  12. $_SESSION['nick'] = $row['nick'];
  13.  
  14. header('Location: index.php');
  15. }
  16. else { komunikat o bledzie }
  17. }
  18.  
  19. //wyswietlenie formularza


index.php
  1. $logedIn = (!empty($_SESSION['nick'])) ? true : false;
  2.  
  3.  
  4. // chcemy pobrać jakieś dane o użytkowniku
  5. if($logedIn === true) {
  6. $query = mysql_query("SELECT * FROM users WHERE id_user = '".$_SESSION['id_user']."'"); // $_SESSION['id_user'] po walidacji
  7. $user = mysql_fetch_assoc($query);
  8. }
  9.  


layout.php
  1. if($logedIn === true) {
  2. echo 'Zalogowany jako'.$_SESSION['nick'];
  3. }


Ten post edytował CuteOne 15.01.2013, 12:45:25
Go to the top of the page
+Quote Post
Th0e
post
Post #12





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 16.09.2012

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


dobra do zamknięcia.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 28.09.2025 - 22:52