Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] logowanie do wielu stron przez wielu uzytkownikow
Forum PHP.pl > Forum > Przedszkole
coolthx
Witam
prosze o pomoc a mianowicie skrypt wczytuje nazwe i haslo użytkownika ale nie chce wczytac strony przypisanej do wybranej osoby gdzies popelnilem blad ale nie wiem gdzie prosze o przeanalizowanie dziekuje

  1. <?php
  2. function checkPass($user, $pass)
  3. {
  4. if(!$fd = @fopen("./passwords/passwords.txt", "r")) return "error.php";
  5. $result = "badData.php";
  6. while (!feof ($fd)){
  7. $line = trim(fgets($fd));
  8. if(($pos1 = strpos($line, ":"))===false) continue;
  9.  
  10. $tempUser = substr($line, 0, $pos1);
  11. if($tempUser !=$user) continue;
  12.  
  13. if(($pos2 = strpos($line, ":", $pos1 + 1))===false) continue;
  14. $tempPass = substr($line, $pos1 + 1, $pos2 - $pos1 -1);
  15.  
  16. if($tempPass != $pass){
  17. $result = "badData.php";
  18. break;
  19. }
  20. $temIndex = substr($line, $pos2 + 1, strlen($line) - $pos2);
  21. if($tempIndex == ""){
  22. $result = "Defaultindex.php";
  23. break;
  24. }
  25. else{
  26. $result = $temIndex;
  27. break;
  28. }
  29.  }
  30.  fclose($fd);
  31.  return $result;
  32. }
  33.  
  34. if(!isSet($_POST["haslo"]) || !isSet($_POST["nazwa"])){
  35. include('form.php');
  36. }
  37. else{
  38. $strona = checkPass($_POST["nazwa"], $_POST["haslo"]);
  39. include($strona);
  40. }
  41. ?>


a tu jest budowa pliku password.txt

  1. <?php
  2. user1:pass1:user1.php
  3. user2:pass2:user2.php
  4. ?>
b_chmura
  1. <?php
  2. function checkPass($user, $pass, $plik)
  3. {
  4. $dane = file($plik);
  5. foreach($dane as $dana)
  6. {
  7. $dana = explode(':', $dana);
  8.  
  9. if($user == $dana[0] AND $pass == $dana[1])
  10. {
  11.  header('Location:./'.$dana[2]); //include('./'.$dana[2]);
  12. }
  13. }
  14. }
  15. //checkPass('login', 'haslo', 'password.txt');
  16. ?>


Pisane z palca.


EDIT
działa
coolthx
Witam dzieki za pomoc ale jezeli chodzi to logowanie to ok ale nadal nie pobiera strony przypisanej do danego uzytkownika
b_chmura
jak nie pobiera?
zmienna $dana[2] to nazwa pliku który jest podany w password.txt

jeśli chcesz includować w miejsce wywołania funkcji plik z password.txt
wystarczy ze tą linijke
  1. <?php
  2. header('Location:./'.$dana[2]); //include('./'.$dana[2]);
  3. ?>


zamienisz na:
  1. <?php
  2. include('./sciezka/do/pliku/'.$dana[2]);
  3. ?>
coolthx
Przykro mi nie wiem co jest nie tak ale popoprawkach i stworzeniu nowego pliku "index.php" o tresci podanej w drugim poscie pojwia mi sie pusta strona nawet bez mozliwosci zalogowania moze jakies inne roziazenie sie znajdzie smile.gif w moim poscie jest ok logowanie ale juz nie pobiera tresci przypisanej strony do danego uzytkownika bardzo prosze o przeanalizowanie mojego postu bo przypuszczam ze popelnilem jakis banalny blad a moze plik passwords.txt jest zle napisany ? z gory dziekuje a w szczegolnosci podziekowania dla "b_chmura" za checi i pomoc pozdrawiam
b_chmura
na moje oko to po prostu źle podajesz ścieżkę do któregoś z plików (password.txt albo do pliku który ma być wczytany)

  1. <?php
  2. function checkPass($user, $pass, $plik, $sciezka = './')
  3. {
  4. $dane = file($plik);
  5. foreach($dane as $dana)
  6. {
  7. $dana = explode(':', $dana);
  8.  
  9. if($user == $dana[0] AND $pass == $dana[1])
  10. {
  11.  include($sciezka.$dana[2]);
  12. }
  13. }
  14. }
  15. checkPass('login', 'haslo', './passwords/passwords.txt', 'sciezka/do/KATALOGU/gdzie/sa/pliki/ktore/sa/podane/w/pliku/password.txt/'); //to wywołaj w miejscu którym chcesz by załadowano Twój plik
  16. ?>
coolthx
przykro mi "b_chmura" ale nic z tego nadal pojawia mi sie pusta strona sad.gif tak na wszelki wypadek podaje ponizej liste pozostalych plikow wraz z kodami moze ktos to u siebie z palca wklepie i zauwazy blad ktory mnie tak irytuje (samo logowanie odbywa sie poprawnie ale juz nie czyta 3 czesci lini pliku passwords.txt[user1:pass1:user1.php] gdzie przypisana jest strona ktora ma sie otworzyc w zaleznaosci od tego jaki uzytkownik sie zaloguje a natomiast po zalogowaniu wyskakuje mi opis z pliku DefaultIndex.php) :
form.php, DefaultIndex.php, error.php, badData.php, user1.php, user2.php

a o to kody

kod form.php

  1. <?php
  2. <form name="formularz1'
  3. action="index.php"
  4. method="POST">
  5. <div style="text-align:center">
  6. <table align="center" borger="0">
  7. <tr>
  8. <td colspan="2">Wprowadz nawe i haslo uzytkownika:</td>
  9. </tr><tr>
  10. <td>Uzytkownik:</td>
  11. <td><input type="text" name="nazwa"></td>
  12. </tr><tr>
  13. <td>Haslo:</td>
  14. <td><input type="password" name="haslo"></td>
  15. </tr><tr>
  16. <td colspan="2"><input type="submit" value="Wejdz"></td>
  17. </tr>
  18. </table>
  19. </div>
  20. </form>
  21. ?>


kod DefaultIndex.php
  1. <?php
  2. print("uzytkownik nie ma przypisanej strony startowej");
  3. ?>


kod error.php
  1. <?php
  2. print("przepraszamy ale natapily problemy z logowaniem");
  3. ?>


kod badData.php
  1. <?php
  2. print("zostaly podane bledne dane: nazwa lub haslo uzytkownika");
  3. ?>


kod user1.php
  1. <?php
  2. print("witaj user1");
  3. ?>

i w analogiczny sposob plik user2.php dla drugiego uzytkownika ma strukture "witaj user2"
pozdrawiam
b_chmura
kurczaki coś Ty sie tak uczepił tego Twojego kodu?
podaje Ci jak na tacy Ty tylko musisz z edytować go do swoich potrzeb...

zrób sobie plik index.php z zawartością:
  1. <?php
  2. $nazwa = $_GET['nazwa'];
  3. $haslo = $_GET['haslo'];
  4.  
  5. if(empty($nazwa) OR empty($haslo))
  6. {
  7. echo '<form name="formularz1" action="index.php" method="POST">
  8. <div style="text-align:center">
  9. <table align="center" borger="0">
  10. <tr>
  11. <td colspan="2">Wprowadz nazwe i haslo uzytkownika:</td>
  12. </tr>
  13. <tr>
  14. <td>Uzytkownik:</td>
  15. <td><input type="text" name="nazwa"></td>
  16. </tr>
  17. <tr>
  18. <td>Haslo:</td>
  19. <td><input type="password" name="haslo"></td>
  20. </tr>
  21. <tr>
  22. <td colspan="2"><input type="submit" value="Wejdz"></td>
  23. </tr>
  24. </table>
  25. </div>
  26. </form>';
  27. }
  28. else
  29. {
  30. function checkPass($user, $pass, $plik, $sciezka = './')
  31. {
  32. $dane = file($plik);
  33. foreach($dane as $dana)
  34. {
  35. $dana = explode(':', $dana);
  36.  
  37. if($user == $dana[0] AND $pass == $dana[1])
  38. {
  39.  echo 'To jest tresc pliku <b>'.$dana[2].'</b> użytkownika <b>'.$dana[0].'</b>:<br /><br />';
  40.  include($sciezka.$dana[2]);
  41. }
  42. }
  43. }
  44.  
  45. checkPass($nazwa, $login, './passwords.txt', './strony/'); 
  46. }
  47. ?>


plik passwords.txt z zawartością:
Kod
login1:haslo1:plik1.php
login2:haslo2:plik2.php


Utwórz katalog "strony" a w nim daj pliki z nazwami "plik1.php" i "plik2.php"
z zawartością:
plik1.php
Kod
elo elo 5 2 0 to jest plik plik1.php siabadaba da!


i plik plik2.php z zawartością:
Kod
Witam witam to jest drugi plik sratatatatam


odpal i najpierw zaloguj się jako login1 haslo1 a potem na login2 hasło2

pisane z palca
coolthx
Przykro mi zrobilem tak jak jest napisane i ok okno logowania jest po wpisaniu nazwy i hasla i po zatwierdzeniu nic sie nie dzieje dalej pozostaje index.php sad.gif moze napisze tak jako serwer uzywam krasnala 2.7
wszystkie pliki do mojej strony znajduja sie w nastepujacym katakogu :
C:\usr\krasnal\www\przyklad\...
index.php
passwords.txt
strony\plik1.php i plik2.php

a to jest sciezka z przegladarki na moj localhost:

[code]
http://127.0.0.1/~przyklad/index.php
[code]
b_chmura
zero kreatywności...

podmień index.php na:
  1. <?php
  2. $nazwa = $_POST['nazwa'];
  3. $haslo = $_POST['haslo'];
  4.  
  5. if(empty($nazwa) OR empty($haslo))
  6. {
  7. echo '<form name="formularz1" action="index.php" method="POST">
  8. <div style="text-align:center">
  9. <table align="center" borger="0">
  10. <tr>
  11. <td colspan="2">Wprowadz nazwe i haslo uzytkownika:</td>
  12. </tr>
  13. <tr>
  14. <td>Uzytkownik:</td>
  15. <td><input type="text" name="nazwa"></td>
  16. </tr>
  17. <tr>
  18. <td>Haslo:</td>
  19. <td><input type="password" name="haslo"></td>
  20. </tr>
  21. <tr>
  22. <td colspan="2"><input type="submit" value="Wejdz"></td>
  23. </tr>
  24. </table>
  25. </div>
  26. </form>';
  27. }
  28. else
  29. {
  30. function checkPass($user, $pass, $plik, $sciezka = './')
  31. {
  32. $dane = file($plik);
  33. foreach($dane as $dana)
  34. {
  35. $dana = explode(':', $dana);
  36.  
  37. if($user == $dana[0] AND $pass == $dana[1])
  38. {
  39.  echo 'To jest tresc pliku <b>'.$dana[2].'</b> użytkownika <b>'.$dana[0].'</b>:<br /><br />';
  40.  include($sciezka.'/'.trim($dana[2]));
  41. }
  42. }
  43. }
  44. checkPass($nazwa, $haslo, './passwords.txt', 'strony'); 
  45. }
  46. ?>


Przyklad (haslo i login tak jak w/w)
coolthx
dziekuje "b_chmura" widze ze u ciebie wszystko jet super i wlanie o takie cos mi chodzi ale ja musze troche odpoczac bo cos robie nie tak pewnie z przemeczenia sad.gif i mam mala prosbe moze bys mi wyslal te skrypty na meila : coolthx@wp.pl z gory dzieki porownam je na spokojnie bo przepisalem twoj skrypt i umnie nic moze faktycznie zle okreslam sciezki dostepu do poszczegolnych plikow ale juz naprawde nie wiem gdzie jaki katalog zalozyc i jakie pliki maja w nich byc smile.gif Wielki podziekowania za poswiecony czas i cierpliwosc dla ciebie "b_chmura" jeszcze raz dzieki 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.