Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: maly problem z if
Forum PHP.pl > Forum > Przedszkole
vtuner
wykorzystuje i zapytanie i sesje
  1. <?php
  2. if($_SESSION['nazwasesji']=$row['nazwapola']&&$row['nazwapola']!=nazwaadmina)
  3. {
  4. echo 'tekst zalogowanego zwyklego usera';
  5. }
  6. else if($_SESSION['nazwasesji']==nazwaadmina)
  7. {
  8. echo 'tekst dla admina';
  9. }
  10. else if($_SESSION['nazwasesji']!=$row['nazwapola'])
  11. {
  12. echo 'tekst dla niezarejestrowanego usera';
  13. }
  14. ?>


I nie chce mi to poprawnie dzialac.
Jak zrobic aby bylo dobrze. jak wpisze do logowania dane od admina to sie pojawiaja dla zwyklego usera. Jak jest niezalogowany to jest dobrze i jak podaje dane zwyklego usera tez jest dobrze. Tylko z tym adminem nie tak jest.
nospor
nie wnikam w opis który przedstawiles. Na pierwszy rzut oka rzuca sie powazny bląd:
  1. <?php
  2.  
  3. if($_SESSION['nazwasesji']=$row['nazwapola'] ....
  4.  
  5. ?>

To robi przypisanie a nie porownanie. powinno byc:
  1. <?php
  2.  
  3. if($_SESSION['nazwasesji']==$row['nazwapola'] ....
  4.  
  5. ?>


pozatym przenosze na forum niżej smile.gif
vtuner
to nic nie daje tez tak mialem i nic
A i wykrylem nastepny blad.
A mianowicie gdy zaloguje sie jako zwykly user, to jest ok, ale jak chce nacisac cokolwiek to konto zmienia sie na admina.

kod logowania itp
  1. <?php
  2.  
  3. if(isset($_POST['login']) && isset($_POST['haslo']))
  4. {
  5. // jeżeli użytkownik właśnie podjął próbę zalogowania
  6. $login= $_POST['login'];
  7. $haslo = $_POST['haslo'];
  8. //laczenie z baza
  9.  $dbhost = 'localhost';
  10.  $dbuser = 'user';
  11.  $dbpasswd = 'haslo';
  12.  $dbname = 'nazwabazy';
  13.  @mysql_connect($dbhost, $dbuser, $dbpasswd);
  14.  @mysql_select_db($dbname);
  15.  
  16. $sql = "SELECT * FROM `nazwatabeli` WHERE nazwapola = '".$login."' and nazwapola = '".$haslo."'";
  17.  
  18. $result = mysql_query($sql);
  19.  
  20. while ( $row = mysql_fetch_array($result) )
  21. {
  22. // jeżeli dane są w bazie zarejestrowanie identyfikatora użytkownika
  23. $_SESSION['nazwasesji'] = $login;
  24. }
  25. }
  26. ?>
  27. <html>
  28. <link rel="stylesheet" href="text.css" type="text/css">
  29. <head>
  30.  <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=ISO-8859-2">
  31. </head>
  32. <body>
  33. <?
  34. if(isset($_SESSION['nazwasesji']))
  35. {
  36. echo 'text na powitanie';
  37. if ($_SESSION['nazwasesji']==nazwaadmina)
  38. {
  39. echo 'powitanie dla admina';
  40. }
  41. else if ($_SESSION['nazwasesji']!=nazwaadmina)
  42. {
  43. echo 'powitanie dla zwyklego usera';
  44. }
  45. echo 'przycisk od wylogowywania';
  46. }
  47. else
  48. {
  49.  
  50.  
  51. // tworzenie formularza logowania
  52. echo '<form method="post" action="log.php">';
  53. echo '<table>';
  54. echo '<tr>';
  55. echo '<td rowspan=2 width=400>';
  56. if(isset($login))
  57. {
  58. // jeżeli próba logowania była nieudana
  59. echo '<p class=class>Logowanie niepowiodło się';
  60. }
  61. else
  62. {
  63. // nie było próby logowania lub nastąpiło wylogowanie
  64. echo '<table><tr><td class=class>Użytkownik niezalogowany</td></tr><tr><td class=marud2 align=center><b>Jeśli chcesz zobczyć całą zawartość strony musisz się zalogować.</b></td></tr></table>';
  65. }
  66. echo '</td>';
  67. echo '<td class=class1>Login:</td>';
  68. echo '<td><input type="text" name="login" size=15></td>';
  69. echo '<td><input type="submit" value="Zaloguj"></td></tr>';
  70. echo '<tr><td class=class1>Hasło:</td>';
  71. echo '<td><input type="password" name="haslo" size=15></td>';
  72. echo '<td><a href=index.php?page=register class=class><font color=red>Rejestracja</font></a></td></tr>';
  73. echo '</table>';
  74. echo '</form>';
  75. }
  76. ?>
  77. </body>
  78. </html>


czy to w tym jest blad czy gdzie indziej
nospor
kolejny blad. uzywasz takiego czegos nazwaadmina. Chyba powinno byc $nazwaadmina. Domyslam sie ze to miala byc zmienna
vtuner
nie to ma by login admina czyli w tym wypadku bez $
nospor
w kwestii formalnej: jesli uzywasz tekstow to maja byc one ujete w '' czyli 'nazwaadmina'
vtuner
teraz mam
  1. <?php
  2. if($_SESSION['nazwasesji']=='nazwaadmina')
  3. {
  4. echo 'text dla admina';
  5. }
  6. else if($_SESSION['nazwasesji']==$row['nazwapola'])
  7. {
  8. echo 'text dla zalogowanego';
  9. }
  10. else if($_SESSION['nazwasesji']!=$row['nazwapola'])
  11. {
  12. echo 'text dla niezalogowanego';
  13. }
  14. ?>


I teraz wszystko jest fajnie ale jak loguje sie jako zwykly user to uznaje go za niezalogowanego i pokazuje mu text dla niezalogowanego. Co zrobie zeby pokazywal text dla zalogowanego gdzie jest w tym blad
nospor
ty te warunki robisz poza pętlą, a poza petlą zmienna $row ma wartość false. Musisz w petli zapamietac zawartosc zmiennej $row i potem do tej zmiennej sie odwolywac. zmienna $row ma wartosc false gdyz taki jest warunek zakonczenia petli smile.gif
vtuner
  1. <?php
  2. $result = mysql_query($sql);
  3.  $row = mysql_fetch_array($result);
  4. ?>

o to ci chodzi.
nospor
moze byc. tylkos sprawdzaj czy $row ma jakies dane
vtuner
dobra tamto nie wazne. Jak zapisac aby w if podac zeby wyswietlal np $_SESSION['nazwasesji']='wszyskie osoby z pola(nazwapola) oprocz jednej osoby??
nospor
$_SESSION['nazwasesji']!='ta jedna osoba'
pod warunkiem ze wogole znaleziono osobe w tabeli.

ale to sprowadza cie do punktu poczatkowego smile.gif
vtuner
no dobra ale teraz niezalogowani widza to samo co zalogowani
Jak zrobic poprawnie
mam tak
  1. <?php
  2. if($_SESSION['nazwasesji']!='nazwaadmina')
  3. {
  4. echo 'text dla zalogowanego';
  5. }
  6. else if($_SESSION['nazwasesji']!=$row['nazwapola'])
  7. {
  8. echo 'text dla niezalogowanych';
  9. }
  10. ?>
nospor
masz prosty skrypt logowania:
  1. <?php
  2.  
  3.  $sql='...';
  4. $result = mysql_query($sql);
  5. while ( $row = mysql_fetch_array($result) )
  6. {
  7. // jeżeli dane są w bazie zarejestrowanie identyfikatora użytkownika
  8. $_SESSION['nazwasesji'] = $row['nazwapola'];
  9. }
  10.  
  11. if(isset($_SESSION['nazwasesji']))
  12. {
  13. echo 'text na powitanie';
  14. if ($_SESSION['nazwasesji']=='nazwaadmina')
  15. {
  16. echo 'powitanie dla admina';
  17. }
  18. else 
  19. {
  20. echo 'powitanie dla zwyklego usera';
  21. }
  22. echo 'przycisk do wylogowywania';
  23. }
  24. else
  25. {
  26.  echo 'gosciu jestes nie zalogowany. spadaj albo sie zaloguj (tu formularz logowania :) )';
  27. }
  28.  
  29. ?>

pozatym czy gostek jest admin czy nie to powinines trzymac jako dodatkowe pole w tabeli, tak by bylo uniwersalniej i bezpieczniej

Ten skrypt to juz ci powinen dzialac
vtuner
przeciez tak samo podalem
tylko w troche innej wersji ale to samo jest

moze wlasnie chodzi o tą troche inne wersje smile.gif
jesli nie dziala to co podalem to wymiekam , albo masz cos nie tak w skrypcie, albo ja juz zmeczony jestem i nie dowidze
---
nospor


no juz sobie poradzilem. Dla tych co chca wiedziec jak to powiem:

-zamiast starego zapytania czyli
  1. <?php
  2. $sql = "SELECT * FROM `nazwatabeli` WHERE nazwapola = '".$login."' and nazwapola = '".$haslo."'";
  3. ?>

zamienilem na
  1. <?php
  2. $sql = "SELECT * FROM nazwatabeli WHERE nazwapola<>'koles_ktorego_ma_nie_wyswietlac'";
  3. ?>


i reszta tak:
  1. <?php
  2. if($_SESSION['nazwasesji']=='koles_ktorego_ma_nie_wyswietlac')
  3. {
  4. echo 'text dla admina';
  5. }
  6. else if($_SESSION['nazwasesji']==$row['nazwapola'])
  7. {
  8. echo 'text dla zalogowanego';
  9. }
  10. else if($_SESSION['nazwasesji']!=$row['nazwapola'])
  11. {
  12. echo 'text dla niezalogowanego';
  13. }
  14. ?>

kurde ale znowu sa blady angrysmiley.gif
teraz pierwszego zwyklego usera jak zaloguje jest dobrze, ale juz jak drugi chce sie zalogowac to uznaje go jako niezalogowanego i nie pokazuje mu odpowiednich rzeczy
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.