Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JPortal] Logowanie na rangi
Forum PHP.pl > Forum > PHP
kamilos809
Witam,
Takiego problemu jak ja, jeszcze chyba nikt nie miał na tym forum.
Chcę zrobić taki moduł... żeby było logowanie, ale z podziałem na rangi, w sensie wiecie... który dzięki id zawartym wsesji z 1 fazy logowania, wyszukiwał z bazy danych wg. tego id jaką ma rangę, puszczał do różnych części w nim zawartym, czyli np.
uzytkownik:
moduł puszcza do adresu:
www.test.pl/modul.php?cmd=uzytkownik
administrator:
www.test.pl/modul.php?cmd=admin

mam już nawet napisane, ale nie wiem jak zrobić zeby przelogowąło na różne adresy.
plik ok.php:
  1. <?
  2.  
  3. /*****************************************************/
  4. /* jPORTAL - internetowy system portalowy */
  5. /*****************************************************/
  6. /* autor: Pawel 'jaco' Jaczewski */
  7. /* email: info@websys.pl */
  8. /*****************************************************/
  9.  
  10. include('config.php');
  11. include('module/ok.inc.php');
  12. #=====================================================#
  13. function site_main() {
  14. global $cmd, $skrytka;
  15. if(zalogowano()<>'tak'){
  16. if($cmd=='') {
  17. main_title_open();
  18. echo 'Logowanie';
  19. main_title_close();
  20. main_text_open();
  21. logowanie();
  22. karty();
  23. main_text_close();
  24. stopka();
  25. }
  26. elseif($cmd=='loguj') {
  27. main_title_open();
  28. echo 'Logowanie';
  29. main_title_close();
  30. main_text_open();
  31. zaloguj();
  32. main_text_close();
  33. stopka();
  34. }
  35. elseif($cmd=='wyszukiwanie') {
  36. main_title_open();
  37. echo 'Wyszukiwanie';
  38. main_title_close();
  39. main_text_open();
  40. wyszukiwanie();
  41. main_text_close();
  42. stopka();
  43. }
  44. }
  45. elseif(zalogowano()=='tak'){
  46. if($cmd=='') {
  47. main_title_open();
  48. echo 'Gryffindor!';
  49. main_title_close();
  50. main_text_open();
  51. edycja();
  52. main_text_close();
  53. stopka();
  54. }
  55. if($cmd=='wyloguj'){
  56. main_title_open();
  57. echo 'Zostałeś/aś wylogowany/a';
  58. main_title_close();
  59. main_text_open();
  60. wyloguj();
  61. main_text_close();
  62. stopka();
  63. }
  64. if($cmd=='edycja_z'){
  65. main_title_open();
  66. echo 'Zmieniono kartę postaci';
  67. main_title_close();
  68. main_text_open();
  69. edycja_z();
  70. main_text_close();
  71. stopka();
  72. }
  73. }
  74. }
  75. $site_title = 'Karty Postaci';
  76. $meta_info = '';
  77. include("theme/$theme/normal.php");
  78. ?>


plik ok.inc.php:
  1. <?
  2. function logowanie($goto=''){
  3. echo '<form action="ok.php" method="post"><table class="uni_01" widht="50%">
  4. <tr><td>Podaj ID swojej karty:</td><td><input type="text" name="id"></td></tr>
  5. <tr><td>Podaj hasło:</td><td><input type="password" name="haslo"></td></tr>
  6. <tr><td>&nbsp;</td><td>&nbsp;</td></tr>
  7. <tr><td>&nbsp;</td><td><input type="hidden" name="cmd" value="loguj"><input type="hidden" name="goto" value="'.$goto.'"><input type="submit" value="Zaloguj"></td></tr>
  8. </table></form>
  9. ';
  10. }
  11. function zaloguj(){
  12. global $id, $haslo, $goto, $dom;
  13. $wykonaj=mysql_query("SELECT * FROM lol WHERE id='$id' AND haslo='$haslo'");
  14. $ile=mysql_num_rows($wykonaj);
  15. if ($ile==1){
  16. $r=mysql_fetch_array($wykonaj);
  17. $stan=$r['stan'];
  18. if($stan=='ok'){
  19. $_SESSION[id]=$id;
  20. $_SESSION[haslo]=$haslo;
  21. $dobrze='tak';
  22. echo'<center>Zostałeś pomyślnie zalogowany w Karcie Postaci.<br><br><b><a href="ok.php">Kliknij tutaj aby wejść do edycji swojej karty.</a></b>';
  23. }
  24. }else{
  25. echo'<center>Podane ID i hasło nie zostały podane poprawnie. Aby spróbować jeszcza raz, kliknij <a href="java script:history.back();"><b>TUTAJ</b></a></b>';
  26. }
  27.  
  28. if($goto<>'' AND $dobrze='tak'){
  29. header("Location: $goto");
  30. }
  31. }
  32. function edycja() {
  33. global $id;
  34. $q="SELECT * FROM lol WHERE id=$id";
  35. $w=mysql_query($q);
  36. while($rek=mysql_fetch_array($w))
  37. {
  38. $imie = $rek[imie];
  39. $nazwisko = $rek[nazwisko];
  40. $opis = $rek[opis];
  41. $haslo = $rek[haslo];
  42. <form method='post' action='?cmd=edycja_z'>
  43. Imie:<br> <input type='text' name='imie' value='$imie'><br>
  44. Nazwisko:<br> <input type='text' name='nazwisko' value='$rek[nazwisko]'><br>
  45. Hasło:<br> <input type='text' name='haslo' value='$haslo'><br>
  46. Opis postaci: <br><textarea name='opis'>$opis</textarea>
  47. <input type='hidden' name='akcja' value='haslo_u'>
  48. <input type='hidden' name='id' value='$id'><br>
  49. <input type='submit' value='Wyslij'>
  50. </form>
  51. ");
  52. }
  53. }
  54. function edycja_z() {
  55. global $PHP_SELF, $id, $imie, $nazwisko, $haslo, $opis;
  56.  
  57. $za="SELECT * FROM lol WHERE id=$id";
  58. $wy=mysql_query($za);
  59.  
  60. $z="UPDATE lol SET haslo='$haslo', nazwisko='$nazwisko', imie='$imie', opis='$opis' WHERE id=$id";
  61. $w=mysql_query($z);
  62.  
  63. if($w) echo "Edytowano Kartę postaci biggrin.gif<br><a href='ok.php'><b>Powrót do edycji karty</b></a><br> <a href='?cmd=wyloguj'><b>Wyloguj</b></a><br>";
  64. else {
  65. echo "Wystapil blad!:<br>";
  66. }
  67. function wyloguj(){
  68. echo'<a href="ok.php"><b>Kliknij tutaj aby powrócić do przeglądu kart postaci</b></a><br><br><b><a href="index.php">Powrót na stronę główną.</b></a><br>';
  69. }
  70. function zalogowano() {
  71. if($_SESSION['id']<>'')
  72. {
  73. $res = mysql_query("SELECT * FROM lol WHERE id='{$_SESSION['id']}' AND haslo='{$_SESSION['haslo']}'");
  74. $czy = (mysql_num_rows($res)==1 ? 'tak' : 'nie');
  75. }else $czy='nie';
  76.  
  77. return $czy;
  78. }
  79. function stopka() {
  80. echo("Mod by Kamilos809 biggrin.gif");
  81. }
  82. function karty() {
  83. $zapytanie="SELECT * FROM lol ORDER BY imie ASC";
  84. $wynik=mysql_query($zapytanie);
  85. while($r = mysql_fetch_array($wynik))
  86. {
  87. <center><h2> <b>$r[id]. $r[imie] $r[nazwisko] </b></h2> <br> $r[opis]<hr>");
  88. }
  89. }
  90. ?>
CuteOne
A można jaśniej tongue.gif nie rozumiem jak to "puszczał" (chyba, że masz na myśli dopuszczał)questionmark.gif
kamilos809
chodzi o to, zeby dało sie zrobić po prostu takie coś, żeby moduł przekierowywał do hjakiejś strony, ale przy użyciu sesji żeby inna ranga nie mogła wejść na tą stronę. czyli np. user nie mógł wejść na link dla admina, nawet jak by go znał, tak samo niezalogowany jak nawet zna linka to wejść nie może, dlatego te sieczki z sesjami smile.gif
CuteOne
Trzeba było tak od razu tongue.gif

  1. <?php
  2.  
  3. $file = array(
  4. // id => array('nazwa linku','plik do include','kto moze wejsc','status')
  5. 1 => array('Strona główna','main',1,1),
  6. 2 => array('Panel użytkownika','userpanel',2,1),
  7. 3 => array('Panel administratora','adminpanel',3,0)
  8. //itd..
  9. );
  10.  
  11. /*
  12. id jest to zmienna pobierana z GET lub POST, nie musi to być cyfra :)
  13.  
  14. kto może wejść sam ustalasz np.
  15. 1 - wszyscy
  16. 2 - zalogowani
  17. 3 - admini
  18.  
  19. status:
  20. 0 - moduł wyłączony
  21. 1 - moduł włączony
  22. */
  23.  
  24. //przykład:
  25.  
  26. $id = $_GET['id'];
  27.  
  28. if(file_exists('include/'.$file[$id][1].'.php') and $file[$id][3] and $file[$id][2] == $_SESSION['type'])
  29. include 'include/'.$file[$id][1].'.php';
  30. else
  31. include 'include/error404.php';
  32.  


$_SESSION['type'] ustawiasz podczas logowania. Jeżeli nie masz jak zmienić include modułów wchodź do każdego pliku i na początku dodawaj regułkę:

np. dla adminpanel.php
  1. if($_SESSION['type'] != 3 or empty($_SESSION['login'])) {
  2. //tu możesz wstawić kod przekierowujący typu header('Location: '); lub die('Zakaz wstępu');
  3. }


ps. jeżeli masz jakieś problemy to pisz z chęcią pomogę
kamilos809
CuteOne, spróbuje ten twój skrypciak, tylko go muszę przeanalizować jak go obsłużyć hehe...
Mam nadzieje, że w Jportalu to będzie pykać smile.gif
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.