Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][mysql]Logowanie i sesja
wrka123
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 31.12.2007

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


Witam wszystkich:)
W php pisze od hmm dopiero 2 tygodni, ale idzie mi dosyć dobrze;)

Na swojej stronie utworzyłem sesję wykorzystując taki kod:
  1. <?php
  2.  
  3. mysql_connect("localhost","root","");
  4. mysql_select_db("tomek");
  5.  
  6. if(isset($_SESSION['zalogowany'])) {
  7. echo "Witam, ".$_SESSION['login']; 
  8. }else{
  9.  
  10. if(isset($_POST['wyslij'])) {
  11.  
  12.  
  13.  if(mysql_num_rows(mysql_query("SELECT login, haslo
  14.  FROM users WHERE login = '".$_POST['login']."' 
  15.  && haslo = '".$_POST['haslo']."' ")) > 0) {
  16.  
  17.  
  18.  if(mysql_num_rows(mysql_query("SELECT id FROM users
  19.  WHERE login = '".$_POST['login']."' 
  20.  && haslo = '".$_POST['haslo']."' ")) > 0 ) {
  21.  
  22.  
  23.  $_SESSION['zalogowany'] = true;
  24.  $_SESSION['login'] = $_POST['login'];
  25.  $_SESSION['haslo'] = $_POST['haslo'];
  26.  echo "Jesteś zalogowany<br> Możesz przegladac profile uzytkownikow <a href=userlook.php>tutaj</a><p>";
  27.  
  28.  
  29.  } else { 
  30.  
  31.  echo "Złe hasło, proszę spróbować ponownie";
  32. }
  33. } else { 
  34.  echo "Nie ma takiego użytkownika, lub podales/as zle haslo";
  35. }
  36. } else { 
  37.  
  38. ?>[/code]
  39. A w każdej podstronie, która może być widoczna tylko dla admina tworzyłem coś ta
    kiego(jest to system dodawania newsa do bazy):
  40. [code]<?
  41.  
  42. $admin= mysql_query("select * from users where rank=='admin'");
  43.  
  44. If($admin==$_SESSION['login'])
  45.  
  46. echo '<form method=post action=add.php>
  47. Dodawanie newsa do bazy<br>
  48. <textarea name=addnews rows=5 cols=19></textarea><br>
  49.  
  50. <input type=submit value=ok>';
  51.  
  52.  
  53.  
  54.  
  55. mysql_query("insert into tabelka(news) values('$addnews')");
  56.  
  57.  
  58. $newsy=mysql_num_rows(mysql_query("select * from tabelka where news=''"));
  59.  
  60. If($newsy>0)
  61. mysql_query("delete from tabelka where news=''");
  62. ?>

Wszystko pięknie ładnie, jak zaloguje się na użytkownika, który nie ma rangi amdina to nie może tego zobaczyć- i tak ma być. Niestety wczoraj zauważyłem, że jeśli nie zaloguje się w ogóle to mogę wejść do tego działu! Co muszę dopisać, aby tak nie było? Żeby tylko admin miał dostęp do tego działu i żeby wymagało to logowania?

Jeśli ktoś potrzebuje zobaczyć jak to wygląda to proszę bardzo: http://79.187.194.106/projekt2
Z góry dziękuje za odpowiedź smile.gif
Pozdrawiam
Tomek

Ten post edytował Cysiaczek 31.12.2007, 12:50:37
Powód edycji: poprawiłem bbcode na [ php ] [/ php ]
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
marcio
post
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Ogolnie jak przechowywujesz w sesji haslo to je koduj za pomoca md5() i dopiero porownuj z baza.
Ogolnie w pliku dla admina nie ma zadnej autoryzacji spradzaj czy zostala wyslalana sesja z login'em i haslem zapisuje w sesji i sprawdzaj tak
  1. <?php
  2. //tu polaczenie z baza
  3. $query = mysql_query("select * from users where rank=='admin'");
  4. while($tab = mysql_fetch_assoc($query)) {
  5. if($tab['login'] == $_SESSION['login'] && $tab['haslo'] == md5($_SESSION['haslo'])) {
  6. //tu panel admina
  7. }
  8. ?>

Ogolnie to nie wiem jak ci to wytlumaczyc bo masz to jakies dziwne biggrin.gif ale idea jest mniej wiecej taka


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
wrka123
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 31.12.2007

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


- upps
działą odwrtonie- userzy zarejestrowani widzą wszytsko.
Ten kto sie nie zaloguje nie widzi nic- a ptrzebuje, zeby tylko ten co ma range admina to widzial:
Kod
<?php

mysql_connect("localhost","root","");
mysql_select_db("tomek");


$query = mysql_query("select * from users where rank='admin'");
while($tab = mysql_fetch_assoc($query));
if($tab['login'] = $_SESSION['login'] && $tab['haslo'] = md5($_SESSION['haslo'])){

echo "Dodawanie newsa do bazy:<a href=add.php>klik</a><br>
Edycja newsa w bazie:<a href=change.php>klik</a><br>
Usuwanie newsa z bazy:<a href=del.php>klik</a><br>
Masowe kasowanie newsów:<a href=massdel.php>klik</a><br>
Usuwanie użytkowników:<a href=userdel.php>klik</a><br>
Nadawanie rangi administratora:<a href=admingive.php>klik</a><br>
Czyszczenie shoutboxa:<a href=shoutboxclean.php>klik</a><br>
Czyszczenie wyników friendtestu:<a href=friendtestmassdel.php>klik</a><br>";
}

?>


Ten post edytował wrka123 31.12.2007, 13:18:04
Go to the top of the page
+Quote Post
marcio
post
Post #4





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


No ok teraz moga to widziec tylko zalogowani a ja na twoim miejscu to bym zmienil jedna rzecz tabele dla normalnych user'ow zosta users a dla admina daj admin i wtedy nie bedzie sie mieszac zaden rank.

P.S teraz zobacze dokladniej na kod biggrin.gif

P.S2 maja byc 2 = bo porownujesz dane a nie przypisujesz
  1. <?php
  2. if($tab['login'] == $_SESSION['login'] && $tab['haslo'] == md5($_SESSION['haslo']))
  3. ?>


Ten post edytował marcio 31.12.2007, 13:32:28


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
wrka123
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 31.12.2007

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


Na pewno jest jakiś sposób na to...

Ten post edytował wrka123 31.12.2007, 14:37:05
Go to the top of the page
+Quote Post
--wrka123--
post
Post #6





Goście







Cytat(wrka123 @ 31.12.2007, 14:36:37 ) *
Na pewno jest jakiś sposób na to...


Hmm... zauwazylem, że jak loguje w taki sposob:
1.Loguje sie na konto bez admina- pisze nie masz uprawnien admina(wszytko gra),
2.Wylogowuje sie
3 .Loguje sie na konto admina- panel sie wyswietla.
4. wylogowuje sie
5. z powrotem loguje sie na konto bez admina
6. a wtedy co dziwne wyswietla się panel admina!

Może zapisuje się coś w cookiesach?
Go to the top of the page
+Quote Post
marcio
post
Post #7





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


W cookie sie nic sam z siebie nie zapisuje a ty cookie nie wysylasz wiec jest tylko jedna opcja zle niszczysz sesje po wylogowywaniu pokaz kod odpowiadajacy za wylogowywanie


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
--wrka123--
post
Post #8





Goście







  1. <?php
  2. if(isset($_POST['wyloguj'])) {
  3. echo "<br>Zostałeś wylogowany";
  4. }
  5. ?>
  6. <br>
  7. Jeśli jeszcze sie nie zarejestrowałes to kliknij <a href=register.php>tutaj</a>
  8.  
  9.  
  10.  
  11. </td></tr>
  12. </table>
  13. <input type='submit' value='Wyśloguj' name='wyloguj'>
  14. </form>
  15. <br>
  16. <a href=panel.php>Admin</a>
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 Aktualny czas: 20.08.2025 - 05:10