Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> dziwny problem z logowaniem...
dargoth
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.11.2005

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


witam...

sprawa wyglada w ten sposob ze mam forme w niej wpisuje login i pass... pod ta forma jest jeden link jezeli nie jestesmy zalogowani jako admin... jak jestesmy adminem to mamy jeszcze drugi link... oczywiscie forma takze powinna znikac jesli sie zalogoalismy... niestety tak sie nie dzieje...

pierwsze moje pytanie brzmi... jezeli mam w bd w polu rola wpisane "admin" wpisuje to do sesji
  1. <?php
  2. $query = "SELECT role FROM xuser WHERE login='" . $_POST['login'] . "' AND password='" . md5($_POST['pass']) . "'";
  3.  
  4. $p = mysql_query($query) or die (mysql_error(error));
  5.  
  6. $count = mysql_num_rows($p);
  7.  
  8.  
  9.  
  10. if ($count == 1){
  11. $_SESSION['role']= $p;
  12. echo "zalogowales sie. kliknij <a href='index.php'>tutaj</a> by powrocic";
  13. }
  14. ?>


dopiero wczoraj wykombinowalem ze skoro to nie chce zadzialac (znaczy ta znikajaca forma) to powinienem wyswietlic sobie co mam w zmiennej $_SESSION['role'] no i wynik mnie szczerze mowiac zaskoczyl.. ale najpierw kod jaki mam...:

  1. <?php
  2. echo $_SESSION['role'] . "<br>";
  3. echo isset($_SESSION['role']);
  4. ?>


pozniej jest if w zaleznosci czy w tej zmiennej jest guest (jak sie nie powiedzie logowanie to podpisuje pod ta zmienna wlasnie guesta) a pozniej mam kolejnego ifa dla admina:

  1. <?php
  2. if ($_SESSION['role'] == 'admin'){
  3. echo "<a href='addnewsform.php'>dodaj newsa</a><br>";
  4. }
  5. ?>


w "wyniku" wypisuje mi ze $_SESSION['role'] to 0 (jak sie zaloguje jako admin.. w pozostalych przypadkach mam guest) ale mimo ze ta zmienna == 0 to wchodzi do tego ifa z adminem...:/ natomiast jezeli sie zaloguje jako gosc (podam zly login/haslo) to mam tam wpisane guest ale do ifa z guestem nie wchodzi :/

zatem moje pytanie.. co robie zle? o co w tym chodzi? jak to poprawic?:/

z gory dzieki za odpowiedz...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
shpyo
post
Post #2





Grupa: Zarejestrowani
Postów: 574
Pomógł: 2
Dołączył: 13.04.2004
Skąd: Lublin

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


na początkui brakuje
  1. <?php
  2. ?>

bez tego sesje nie będą działać!
Go to the top of the page
+Quote Post
dargoth
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.11.2005

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


to jest.. jakby tego nie bylo to przeciez nie weszlo by do ifa z adminem i nie wypisaloby tego co jest w zmiennej sesyjnej...

nadal czekam na pomoc...(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




ty do $_SESSION['role'] przypisujesz $p, a $p = mysql_query($query), czyli wynik funckji mysql_query czyli resource a nie wartosc z pola role (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
poczytaj se manuala
Go to the top of the page
+Quote Post
dargoth
post
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.11.2005

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


teraz rozumiem... ale nie zmienia to faktu ze to co napisales dziala... bo...:

sprawdzam czy istnieje login i czy haslo do niego pasuje... jesli tak to podpisuje role do sesji... z tego co mowisz wynika ze cos takiego:
  1. <?php
  2. if ($_SESSION['role'] == 'admin'){
  3. echo "<a href='addnewsform.php'>dodaj newsa</a><br>";
  4. }
  5. ?>

nie powinno dzialac... a dziala... bo wchodzi tutaj:

  1. <?php
  2. else{
  3. $_SESSION['role']="guest";
  4. echo "zly login lub haslo. kliknij <a href='index.php'>tutaj</a> by powrocic";
  5. }
  6. ?>

czyli podalem zly login/haslo wiec podstawia do sesji w role guesta... i pozniej mam (w index.php):
  1. <?php 
  2. echo $_SESSION['role'] . "<br>";
  3. echo isset($_SESSION['role']);
  4. if ($_SESSION['role'] == 'guest'){
  5.  ?>
  6.  
  7. KOD HTML
  8.  
  9. <?php
  10. }
  11. ?>


KOD HTML to formularz do logwania... czyli jak jestesmy gosciem to powinnien sie pojawiac a jak adminem to nie... niestety jak loguje sie jako admin to formularz nadal jest widoczny (wiem ze jestem zalogowany bo pojawia sie link "dodaj newsa")

czekam na dalsze pomysly (IMG:http://forum.php.pl/style_emoticons/default/cool.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




troche to chaotyczne co piszesz. Mowisz ze wchodzi ci do elsa goscia. NO i dobrze ze wchodzi bo resource to nie jest admin, wiec wchodzi do else.

Pokaz jeszcze raz caly kod juz poprawiony (to co ci wskazalem) i pokaz mi to co ci wyswietla pod $_SESSION['role'] za kazdym razem.
Go to the top of the page
+Quote Post
dargoth
post
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.11.2005

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


index.php:

  1. <?php
  2. ?>
  3.  
  4. <html>
  5. <head>
  6. <title>Strona główna</title>
  7. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  8. </head>
  9.  
  10. <body bgcolor="#FFFFFF" text="#000000">
  11.  
  12. <?php 
  13. if (isset($_SESSION['role'])){
  14. }else{
  15. $_SESSION['role']="guest";
  16. }
  17.  
  18. echo $_SESSION['role'] . "<br>";
  19. echo isset($_SESSION['role']);
  20. if ($_SESSION['role'] == 'guest'){
  21.  ?>
  22.  
  23. Zaloguj sie<br>
  24. <form action="login.php" method="post">
  25.  
  26. <table width="20%" border="0" cellpadding="0" cellspacing="0">
  27. <tr>
  28. <td width="10%">Login:</td><td align="left"><input type="text" name="login"></td>
  29. </tr>
  30. <tr>
  31. <td>Hasło:</td><td align="left"><input type="password" name="pass"></td>
  32. </tr>
  33. <tr>
  34. <td colspan="2" align="center"><input type="submit" name="submit" value="Zaloguj"></td>
  35. </tr>
  36. </table>
  37. <br>
  38.  
  39. </form>
  40. <?php } 
  41. ?>
  42.  
  43. <?php
  44.  
  45. if ($_SESSION['role'] == 'admin'){
  46. echo "<a href='addnewsform.php'>dodaj newsa</a><br>";
  47. }
  48.  
  49. echo "<a href='shownews.php'>pokaz newsy</a><br>";
  50.  
  51.  
  52.  
  53. ?>
  54.  
  55. </body>
  56. </html>




login.php:

  1. <?php
  2.  
  3. $connect = mysql_connect("localhost", "us", "uspass") or die ("Blad przy polaczeniu z baza danych");
  4.  
  5. mysql_select_db("szwol");
  6.  
  7. $query = "SELECT role FROM xuser WHERE login='" . $_POST['login'] . "' AND password='" . md5($_POST['pass']) . "'";
  8.  
  9. $p = mysql_query($query) or die (mysql_error(error));
  10.  
  11. $count = mysql_num_rows($p);
  12.  
  13.  
  14.  
  15. if ($count == 1){
  16. $_SESSION['role']= $p;
  17. echo "zalogowales sie. kliknij <a href='index.php'>tutaj</a> by powrocic";
  18. }
  19. else{
  20. $_SESSION['role']="guest";
  21. echo "zly login lub haslo. kliknij <a href='index.php'>tutaj</a> by powrocic";
  22. }
  23. ?>




zmian zadnych nie wprowadzilem bo to o czym mowiles dziala... czyli jak jestem zalogowany jako admin to wchodzi mi do ifa z adminem...

teraz to co mi wypisuje w linii:
echo $_SESSION['role']

jak jestem gosciem: guest
jak jestem zalogowany: 0 (ale jak mowie do ifa =='admin' wchodzi)

teraz moze napisze co sie pokazuje... na poczatek moze co powinno sie pokazywac:

jak jestem guestem:
form do zalogowania
link pokaz newsy

jak jestem adminem:
link dodaj newsa
link pokaz newsy

a teraz co sie pokazuje:

jak jestem guestem:
form do zalogowania
link pokaz newsy

czyli wszystko ok... ale jak jestem adminem:
form do zalogowania
link dodaj newsa
link pokaz newsy

czyli tylko form sie pokazuje dodatkowo mimo ze nie powinien... a tam jest if z guestem...

druga rzecz.. jako ze juz pokazalem moj kod caly (znacyz 2 pliki) to moglibyscie mi powiedziec czy dobrze w miare pisze (chodzi mi o styl) jesli nie to jak powinienem pisac itp... z gory dzieki za pomoc...
Go to the top of the page
+Quote Post
nospor
post
Post #8





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




to mi klina zadales (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
NO ale skoro dziala po poprawkach to po co se glowe zawracac?
A na powaznie. skoro porownujesz przez == rozne typy, to moze mu sie jakims cudem zgadza skoro wchodzi ci w ify. Gdyz == porownuje tylko wartosc a nie patrzy na typ. zamien porownania == na === i powinno chyba juz dzialac (wtym zlym skrypcie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) )

co do pisania
ja bym to
  1. <?php
  2.  
  3. if (isset($_SESSION['role'])){
  4. }else{
  5. $_SESSION['role']="guest";
  6. }
  7. ?>

zamienil na:
  1. <?php
  2.  
  3. if (!isset($_SESSION['role']))
  4. $_SESSION['role']="guest";
  5.  
  6. ?>
prawda ze krocej ?

pozatym nie sprawdzasz danych z posta, czyli wkladasz $_POST['login'] i haslo bez zapezpieczen. poczytaj se to:
http://forum.php.pl/index.php?showtopic=23258
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: 22.08.2025 - 21:41