Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Php, Xml i zabezpieczenie strony
Forum PHP.pl > Forum > PHP
zdandro
Witam wszystkich.

Od jakiegos czasu walcze z tym probleme i nic niestety ;/ Sytuacja jest banalnie prosta:

- zamista bazy danych jest plik XML ( a w zasadzie SimpleXML tworzacy baze danych w pliku php) zawierajacy hasla i katalog poszczegolnego uzytkownika:

  1. <?php
  2. $login = array
  3. (
  4. array("ldo1" ,"clients/safety/"),
  5. array("orw2","clients/granta/"),
  6. array("te78","clients/stevenage/"),
  7. );
  8. ?>


Na 1 pozycji jest haslo a na drugiej katalog poszczegolnego uzytkownika.

Oto kod html formularza:

  1. <form action="Logmein.php" method="POST" enctype="content/type">
  2. <div id="logoCntcForm"><img src="/Img/Logo.png"/></div>
  3. <div id="writingLogo"></div>
  4. <div style="padding-top: 25px; padding-left:25px;"><img src="../Img/enterPass.png" /></div>
  5. <input id="inputLogin" type="password" name="Passwd" size="7" /><br />
  6. <input id="Submit_login" type="image" src="/Img/submitCntc.png" onclick="return check_login(this.form);" />
  7. </form>


A to kod sprawdzajacy czy uzytkownik podal haslo bedace juz w pliku XML ( tablicy $login):

  1. <?php
  2. $serverName = "http://127.0.0.1/";
  3. $password = $_POST["Passwd"];
  4.  
  5. if (!isset($_POST["Passwd"]))
  6. {
  7. include 'MainFiles/wrongPass.inc.php';
  8. }
  9. elseif ( empty ($_POST["Passwd"]))
  10. {
  11. include 'MainFiles/wrongPass.inc.php';
  12. }
  13. else
  14. {
  15. require("MainFiles/essential.inc.php");
  16.  
  17. for ($namesNumber = 0; $namesNumber<=count($login)-1; $namesNumber++)
  18. {
  19. if (in_array($password, $login[$namesNumber]))
  20. {
  21. setcookie("visit",md5($password),time()+1200);
  22. $redirectURL = "http://127.0.0.1/".$login[$namesNumber][1];
  23. header("Location:".$redirectURL);
  24. }
  25. }
  26. {
  27. include 'MainFiles/wrongPass.inc.php';
  28. }
  29. }
  30. ?>


Pozyzszy kod dziala ALE tylko dla 1 uzytkownika. Dla pozostalych widoczna jest pusta strona (nie ma kominikatu o bledzie wiec ciezko wychwycic co jest nie tak).
Pytanie brzmi tak: jak spowodowac zeby kazdy uzytkownik bedacy w bazie danych mogl zalogowac do do systemu i zostal skierowany do swego katalogu.

Z gory dziekuje za wysilek i pomoc
marcio
zmien ta tablice na taka:
  1. $pwd = array('nazwaUzytkownika' => array('haslo', 'katalog'));
  2. //itp...itd...

I potem zastosuj petle foreach zmaiast for, 5min i jest gotowe!
Poprostu masz bezsensownie to zrobienie, sprawdzasz bez podstawnie haslo przypisane danemu uzytkownikowi
zdandro
Sek w tym ze nie ma nazwy uzytkownika - jest jedynie haslo ( nie pytajcie dlaczego bo masz klient nasz pan:). Jaka konstrukcje powinna miec tablica jedynie dla hasla?
marcio
to poprostu zrob:
  1. $login = array('haslo' => 'katalog');


ps: niestety masz racje klient nasz pan ;p
zdandro
A jaka konstrukcje powinna miec instrukcja foreach? Ponizsza wyswietla jedynie 2 node pliku XML:
  1. foreach ( $login as $data)
  2. {
  3. echo " $data";
  4. }

Chodzi o to zeby "skojarzyc" haslo z katalogiem.

marcio
podstawy sie klaniaja ;p chyba ze ja nie zrozumialem problemu:
  1. foreach($login as $pwd => $dir) {
  2.  
  3. //jesli $pwd == $_POST['passwd']
  4. //robisz redirect na dany katalog ;]
  5.  
  6. }
zdandro
Ano masz racje - podstawy sie klaniaja:) A wszystko wina siedzenia i gapienia sie w monitor od 8 rano. A pozatym piatek jest wiec czlowiek zmeczony jest tygodniem (ale sie tlumacze co? :-)

Dzieki bardzo za odp i narka

OK wszystko dziala jak powinno - (mialem taka sytucaje juz wczesniej) jak skierowac skrypt na przekierowanie na poszczegolny folder?
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.