Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

www-authorization

[es] :: PHP :: PHP za početnike :: www-authorization

[ Pregleda: 1816 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

GMarco24
Senior web developer
Beograd

Član broj: 234565
Poruke: 88
46.16.105.*



+2 Profil

icon www-authorization01.09.2011. u 02:57 - pre 153 meseci
Ok, hoce neko meni da objasni kako funkcionise ova stvar. Mnogo razlicitih varijanti sam nasao po literaturi, ali se moj problem zakomplikovao, pa sam skracivao, skracivao, dok nisam dosao na sledece:
Code:

<?php
    if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']))
    {      
        header('HTTP/1.1 401 Unauthorized');
        header('WWW-Authenticate:Basic realm="Moj sajt"');
        exit('<h3>Something</h3>Nemate pristup ovoj strani.'); 
    }
?>        
    <div>
        Gomila HTML koda...
    </div>

Znaci ovde nikakve provere username-a i pass-a nema. To je stajalo kasnije u kodu. Pa me je vracalo pri izvrsenju da ukucavam ponovo username i password, a onda sam ja krenuo da izbacujem kod deo po deo da shvatim gde skripi. U kodu je, nakon provere unesenih parametara, stajalo jos jednom:
Code:

...
else
       {
        header('HTTP/1.1 401 Unauthorized');
        header('WWW-Authenticate:Basic realm="Moj sajt"');
        exit('<h3>Something</h3>Nemate pristup ovoj strani.'); 
       }

ako parametri nisu dobri. E sad, sve je to pobrisano, stoji samo gornji kod. Zar ne bi trebalo da on jedino proverava isset() funkcije i da ako jesu setovane da me pusti dalje? Tj. zar ne bi trebalo da bilo koji unos na authorization prodje i izbaci HTML kod? Mene vraca i ne odobrava pristup.
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.adsl.eunet.rs.



+19 Profil

icon Re: www-authorization01.09.2011. u 10:53 - pre 153 meseci
Ovo radi kod mene:
Code:

  $IsCGI= (isset($_SERVER['GATEWAY_INTERFACE']) && substr($_SERVER['GATEWAY_INTERFACE'],0,3=='CGI'));
  if ($IsCGI && isset($_SERVER['HTTP_AUTHORIZATION'])) {
    $auth_params = explode(":" , base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
    $_SERVER['PHP_AUTH_USER'] = $auth_params[0];
    unset($auth_params[0]);
    $_SERVER['PHP_AUTH_PW'] = implode('',$auth_params);
  }
  if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])
      || ($_SERVER['PHP_AUTH_USER']<>'moj username') || ($_SERVER['PHP_AUTH_PW']<>'moj pass')) {
    header('WWW-Authenticate: Basic Realm="Uloguj se"');
    header('HTTP/1.0 401 Unauthorized');
    die('You must provide the proper credentials!');
  }

"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

GMarco24
Senior web developer
Beograd

Član broj: 234565
Poruke: 88
46.16.105.*



+2 Profil

icon Re: www-authorization04.09.2011. u 21:53 - pre 153 meseci
Dobro, verujem ja da ovaj tvoj kod radi. Nego meni nije jasno kako ovo funkcionise kad ja jedino sto proveravam je isset() za username i password. Ne interesuje me koji su. I on to nece da prodje, nego me vraca do beskonacnosti cak i kad ih ukucam
 
Odgovor na temu

GMarco24
Senior web developer
Beograd

Član broj: 234565
Poruke: 88
46.16.105.*



+2 Profil

icon Re: www-authorization04.09.2011. u 22:21 - pre 153 meseci
Evo, iskopirao sam kod iz knjige, najprostiji sto moze da postoji i on nece da radi kako treba:
Code:
<?php
  // User name and password for authentication
  $username = 'rock';
  $password = 'roll';

  if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||
    ($_SERVER['PHP_AUTH_USER'] != $username) || ($_SERVER['PHP_AUTH_PW'] != $password)) {
    // The user name/password are incorrect so send the authentication headers
    header('HTTP/1.1 401 Unauthorized');
    header('WWW-Authenticate: Basic realm="Guitar Wars"');
    exit('<h2>Guitar Wars</h2>Sorry, you must enter a valid user name and password to access this page.');
  }
?>

Sta moze da ne bude u redu? Je l server ima neka svoja podesavanja za header-e pa je tu problem, je 'l treba da zovem hosting kompaniju da mi oni objasne u cemu je problem?? Kao idiot uploadujem skriptu koja treba da bude zasticena, izvrsim je na brzaka, pa je obrisem
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.adsl.eunet.rs.



+19 Profil

icon Re: www-authorization04.09.2011. u 23:34 - pre 153 meseci
cgi ?
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

GMarco24
Senior web developer
Beograd

Član broj: 234565
Poruke: 88
46.16.105.*



+2 Profil

icon Re: www-authorization05.09.2011. u 00:48 - pre 153 meseci
A to je ovo gore sto si ti pisao i onda mora tako je l'?
Ne znam ti ja sta je to, ali ajde, ako tako kazes da mora...
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.adsl.eunet.rs.



+19 Profil

icon Re: www-authorization05.09.2011. u 19:35 - pre 153 meseci
I, jel radi ?

Poenta je da ako je PHP instaliran na serveru kao CGI onda se ne prenose polja $_SERVER['PHP_AUTH_USER'] i $_SERVER['PHP_AUTH_PW'] nego su oba spakovana u $_SERVER['HTTP_AUTHORIZATION'] pa ih moraš odatle pročitati.
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

GMarco24
Senior web developer
Beograd

Član broj: 234565
Poruke: 88
46.16.105.*



+2 Profil

icon Re: www-authorization11.09.2011. u 22:08 - pre 153 meseci
Ne radi. Evo koda koji sad stoji i nece da radi:
Code:

$IsCGI= (isset($_SERVER['GATEWAY_INTERFACE']) && substr($_SERVER['GATEWAY_INTERFACE'],0,3=='CGI'));
  if ($IsCGI && isset($_SERVER['HTTP_AUTHORIZATION'])) 
  {
    $auth_params = explode(":" , base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
    $_SERVER['PHP_AUTH_USER'] = $auth_params[0];
    unset($auth_params[0]);
    $_SERVER['PHP_AUTH_PW'] = implode('',$auth_params);
  }

  // User name and password for authentication
  $username = 'rock';
  $password = 'roll';

  if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||
    ($_SERVER['PHP_AUTH_USER'] != $username) || ($_SERVER['PHP_AUTH_PW'] != $password)) {
    // The user name/password are incorrect so send the authentication headers
    header('HTTP/1.1 401 Unauthorized');
    header('WWW-Authenticate: Basic realm="Guitar Wars"');
    exit('<h2>Guitar Wars</h2>Sorry, you must enter a valid user name and password to access this page.');
  }
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
94.247.203.*



+19 Profil

icon Re: www-authorization12.09.2011. u 07:53 - pre 153 meseci
Probaj "HTTP/1.0" umesto "HTTP/1.1".

Izgleda da ti ne gine debugovanje,
ubaci var_dump($_SERVER['PHP_AUTH_USER']) i var_dump($_SERVER['PHP_AUTH_PW'])
pa posmatraj šta ti stiže.
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

GMarco24
Senior web developer
Beograd

Član broj: 234565
Poruke: 88
46.16.105.*



+2 Profil

icon Re: www-authorization12.09.2011. u 12:08 - pre 153 meseci
Stavio sam HTTP/1.0, nista bitno se nije desilo. Ne znam kako da izvedem ovo sa var_dump. Ako stavim ispred header-a, header nece ni da bude poslat, pa je NULL NULL, ako stavim posle header-a, nikad nece da bude izvrsen, jer mi se vraca header do iznemoglosti
 
Odgovor na temu

[es] :: PHP :: PHP za početnike :: www-authorization

[ Pregleda: 1816 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.