Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Ukrywanie formularza po zalogowaniu problem
Forum PHP.pl > Forum > Przedszkole
chormi
elo wszystkim jak widzicie jestem tu poraz pierwszy i troszeczkę umiem php ale mam problem:

gdy chciałem po zalogowaniu ukryć formularz oraz wyświetlić dane zalogowanego użytkownika
zrobiłem coś takiego:

  1. <?php
  2.  
  3. if($_SESSION['access'] = 'root'){
  4.  
  5. $zapytanie = "SELECT * FROM user where id=".$_SESSION["user_id"];  
  6. $result = mysql_query("$zapytanie");
  7. $row = mysql_fetch_array($result);
  8.  
  9. echo "Twój avatar:<br><p><img src=".$row['avatar']." border='2px'><p>";  
  10.  
  11. echo ('Zalogowany jako:<br><b>'.$row['username'].'</b><br>e-mail: <b>'.$row['email'].'</b><br>Zarejestrowany:<br><b>'.$row['data_rejstacji'].'</b>');  
  12. }else{
  13. echo '<form name='loginform' method='post' action="index.php">Login:<br><input type='text' name='login' size='20' class='textbox'><br>Hasło:<br><input type='password' name='haslo' size='20' class='textbox'><br><p><input type='submit' name='wyslij' value='Zaloguj' class='button'></form><p><a href="index.php?pokaz=register"><font color="#000000">Zarejestruj</font></a><br>';
  14. }
  15.  
  16.  
  17. ?>
kossa
$_SESSION['access'] - sprawdz co zwraca - czy na pewno po zalogowaniu poprawnym ustawiasz wartość root

  1. <?php
  2. echo $_SESSION["access"];
  3. ?>


co do drugiego pytania:

  1. <?php
  2. $zapytanie = "SELECT * FROM user where id=...";
  3.  
  4. //np:
  5. $zapytanie = "SELECT * FROM user where id=".$_SESSION["user_id"];
  6. ?>


po zalogowaniu zapisuj w sesji np. id zalogowanego usera jeżeli takie masz w bazie i w ten sposób weryfikuj wyciagane dane z bazy, służy do tego polecenie where smile.gif


Łukasz
chormi
kossa wiec tak nie wiem jak mam zapisać w sesji id zalogowanego usera mam w bazie mysql w tabeli user kolumne "user id" dam kod logowania to może mi ktoś pomoże.

  1. <?php
  2.  
  3. require("config.php");
  4.  
  5. require_once('./config.php'); // załaczamy plik config.php
  6.  
  7. function usun($data){
  8.  
  9. GLOBAL $dbc;
  10. if (ini_get('magic_quotes_gpc')){
  11. $data = stripslashes($data);
  12. }
  13.  return mysql_real_escape_string($data, $dbc);
  14. }
  15.  
  16. if (isset($_POST['submit'])){
  17.  
  18. if (empty($_POST['login'])){
  19. $message .= '<font class="blad">Nie podałeś loginu</font><br />';
  20. $l = FALSE;
  21. }else{
  22. $l = usun($_POST['login']);
  23. }
  24.  
  25. if (empty($_POST['haslo'])){
  26. $message .= '<font class="blad">Nie podałeś hasła</font><br />';
  27. $h = FALSE;
  28. }else{
  29. $h = usun($_POST['haslo']);
  30. }  
  31.  
  32. if ( $l && $h ){
  33.  
  34. $query = "SELECT user_id, username, access FROM user WHERE username='$l' AND haslo=password('$h')";
  35. $result = mysql_query($query);
  36. $row = mysql_fetch_array ($result, MYSQL_ASSOC);
  37.  
  38. if($row){
  39.  
  40. $_SESSION['username'] = $row['username'];  
  41. $_SESSION['access'] = $row['access'];
  42. $_SESSION['ses_user_id'] = $row['id'];
  43.  
  44. }else{
  45. $message .= '<font class="blad">Błędne hasło lub login</font><br />';
  46. }
  47. }else{
  48. $message .= '<font class="blad">Spróbuj jeszcze raz</font>';
  49. }
  50. }
  51.  
  52. ?>


oraz kod który wykonywany jest po poprawnym zalogowaniu usera

  1. <?php
  2.  
  3. if($_SESSION['access'] = 'root'){
  4.  
  5. $zapytanie = "SELECT * FROM user where id=".$_SESSION["user_id"];  
  6. $result = mysql_query("$zapytanie");
  7. $row = mysql_fetch_array($result);
  8.  
  9. echo "Twój avatar:<br><p><img src=".$row['avatar']." border='2px'><p>";  
  10.  
  11. echo ('Zalogowany jako:<br><b>'.$row['username'].'</b><br>e-mail: <b>'.$row['email'].'</b><br>Zarejestrowany:<br><b>'.$row['data_rejstacji'].'</b>');  
  12. }else{
  13. //echo '<form name='loginform' method='post' action="index.php">Login:<br><input type='text' name='login' size='20' class='textbox'><br>Hasło:<br><input type='password' name='haslo' size='20' class='textbox'><br><p><input type='submit' name='wyslij' value='Zaloguj' class='button'></form><p><a href="index.php?pokaz=register"><font color="#000000">Zarejestruj</font></a><br>';
  14. }
  15.  
  16.  
  17. ?>
kossa
  1. <?php
  2. if ( $l && $h ){
  3.  
  4. //tu sprawdzasz czy login i hasla są ok
  5. $query = "SELECT username, access FROM user WHERE username='$l' AND haslo=password('$h')";
  6. //więc zmień to na:
  7. $query = "SELECT id, username, access FROM user WHERE username='$l' AND haslo=password('$h')";
  8. //jeżeli oczywiście w bazie masz takie pole jak id :)
  9.  
  10. $result = mysql_query($query);
  11. $row = mysql_fetch_array ($result, MYSQL_ASSOC);
  12.  
  13. if($row){
  14. $_SESSION['username'] = $row['username'];
  15. //tu masz zmiena $access - zawsze przybiera wartość root? abyś wiedział czy jest zalogowany - bo przy formularzu to sprawdzasz - zobacz swój pierwszy post
  16. $_SESSION['access'] = $row['access'];
  17. // a id do sesji dodać - no problem:
  18. $_SESSION['ses_user_id'] = $row['id'];
  19. ?>


Pokombinuj Kolego, wszystko już masz, coś od siebie daj smile.gif

Łukasz
chormi
no i mam error tam gdzie mają sie wyświetlić dane usera po zalogowaniu

Kod
[b]Warning[/b]: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in [b]/index.php[/b] on line [b]137
[/b]


linijka 137 odwołuje się bezpośrednio do linijki 136 oraz 135 kod:

  1. <?php
  2. if($_SESSION['access'] = 'root'){
  3.  
  4. $zapytanie = "SELECT * FROM user where id=".$_SESSION["user_id"]; // linijka 135  
  5. $result = mysql_query("$zapytanie");  //  linijka 136
  6. $row = mysql_fetch_array($result);  // linijka 137
  7. ?>


pomoże ktoś prosze smile.gif
qqrq
Ej, panie bracie:

  1. <?php
  2. if($_SESSION['access'] == 'root'){
  3.  
  4. $zapytanie = "SELECT * FROM user where id=".$_SESSION["user_id"]; // linijka 135
  5. $result = mysql_query("$zapytanie");  //  linijka 136
  6. $row = mysql_fetch_array($result);
  7. ?>


Dwa równasia exclamation.gif smile.gif
mike
~chormi albo piszesz po polsku albo w ogóle.
Nie tolerujemy tutaj dzieci neostrady.

Takie jaja to sobie możesz robić na forum onet.pl albo na blogu jakieś szalonej 13-nastki.
Dostajesz ostrzeżnie a każdy Twój post przez najblizszy tydzień bedzie musiał byc zaakceptowany przez moderatora.

Naucz się wypowiadać publicznie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.