Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kolejny skrypt logowania...
Forum PHP.pl > Forum > PHP
cythrus
generalnie raczkuje i chociaz mysle ze rozumiem ten skrypt, to chyba nie potrafie z niego prawidlowo skorzystac :/

  1. <?
  2. if (!isset($PHP_AUTH_USER)) {
  3.  
  4. // If empty, send header causing dialog box to appear
  5.  
  6. header('WWW-Authenticate: Basic realm="The Crazy Train"');
  7. header('HTTP/1.0 401 Unauthorized');
  8.  
  9. } 
  10. else if (isset($PHP_AUTH_USER)) {
  11.  
  12. $filename = "webpass.list"; //the name of the file and the path are entirely up to you but dont leave the file
     inside the public_html directory for anyone to see. Put it outside so the path is something like /home/username/webpass.list.
  13. $fd = fopen ($filename, "r");
  14. for ($i = 0;!feof($fd);$i++) {
  15. $buffer[$i] = fgets($fd, 4096);
  16. }
  17. fclose ($fd);
  18. }
  19.  
  20. $PHP_AUTH_USER = Strtoupper($PHP_AUTH_USER);  //converts to uppercase
  21. $PHP_AUTH_PW = Strtoupper($PHP_AUTH_PW); // same thing
  22. $j=sizeof($buffer);  // finds out how many elements of $buffer there are
  23.  
  24. for ($i=0;$i<=$j;$i++) {
  25. $buffer[$i] = Strtoupper($buffer[$i]);
  26. if ($buffer[$i] == "$PHP_AUTH_USER:$PHP_AUTH_PW
  27. ") { //this line evaluates for every element of $buffer and checks for a line that matc
    hes the inputed username and password. The new line at the end is necisary because the file has a line end as well.
  28. $auth=1;
  29. break;
  30. }
  31. }
  32.  
  33. if ($auth == 1) {
  34.  
  35. ?>
  36. <html>
  37. <body>
  38. bardzo wazne dane firmowe
  39. </body>
  40. </html>
  41. <?
  42. } 
  43. else {
  44.  
  45. header('WWW-Authenticate: Basic realm="The Crazy Train"');
  46. header('HTTP/1.0 401 Unauthorized');
  47. echo 'Authorization Required.';
  48. }
  49. return;
  50.  
  51. ?>


stworzylem plik webpass.list, w nim (bez cudzyslowow):

"user:pass
user2:pass2

"
(z ostatnim enterem celowo - wszystko w ANSI)

chodzi o to, ze przy pierwszym odpaleniu takiej stronki pojawia sie okno logowania - loguje sie, nie wazne czy podam dobre, czy zle dane, to Apache zaczyna swirowac - jego proces zzera 95-99% zasobow procka, a sesje rosna w tepie okolo 50MB/s (!) w skutek czego po kilku minutach widze komunikat o malej ilosci miejsca na dysku (WinXP) - a strona i tak sie nie wyswietla...

no i nie wiem po co zamienia $PHP_AUTH_USER i _PW na duze litery (?)

potrzebuje skryptu logowania na strone ktora postuje sama do siebie i dodatkowo jest na niej masa urli do samej siebie przekazujacych zmienne (&$x="$x", itd), czyli sie przy tym odswieza, a nie wiem czemu skryp napisany przeze mnie:
http://forum.php.pl/index.php?showtopic=44963&hl=
przy kazdym odswiezaniu pyta o login i haslo... a przeciez je przekazuje w sesji... heup! w desperacji jestem, na dzisiaj miala byc stronka gotowa na zaliczenie sad.gif
hwao
  1. <?php
  2. $PHP_AUTH_USER = Strtoupper($PHP_AUTH_USER);  //converts to uppercase
  3. $PHP_AUTH_PW = Strtoupper($PHP_AUTH_PW); // same thing
  4. ?>

to zamienia na duze

Jezeli chcesz dodac zeby nie bylo trzeba w kolo (chociaz wydaje mi sie ze to zapamietywane jest) uzyj sessji/cookie
Hacker
  1. <?php
  2. for ($i=0;$i<=$j;$i++) {
  3. ?>


A nie czasem
  1. <?php
  2. for ($i=0;$i<$j;$i++) {
  3. ?>


Bo jeżeli $buffer = array('lol', 'lol2')
sizeof($buffer) == 2

pętla
0<=2 Ok
1<=2 Ok
2<=2 Ok
a co jest pod indeksem 2 (3 element??)

A tak właściwie po co Ci ten enter??
hwao
  1. <?php
  2. $aData = file( './plik.z.danymi' );
  3. $sTry = $_SERVER['PHP_AUTH_USER'].':'. $_SERVER['PHP_AUTH_PW'];
  4. foreach( $aData As $sAccess ) {
  5. if( trim( $sAccess ) == $sTry ) {
  6.  echo 'ok';
  7.  break;
  8. }
  9. ?>

Proponuje tak tongue.gif
Hacker
Oj hwao, hwao...
  1. <?php
  2. $aData = file( './plik.z.danymi' );
  3. $sTry = $_SERVER['PHP_AUTH_USER'].':'. $_SERVER['PHP_AUTH_PW'];
  4. foreach( $aData As $sAccess ) {
  5. if( trim( $sAccess ) == $sTry ) {
  6.  echo 'ok';
  7.  break;
  8. }
  9. }
  10.  
  11. ?>

Klamerki zamykającej przy if-ie brakowało
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.