ugrás a tartalomhoz

Http auth és a charset

inf · 2007. Jún. 25. (H), 15.17
Üdv.

Rövid a kérdésem, http azonosítást csinálok egy oldalhoz, és nem tudom, hogy hogy lehet beállítani benne a charsetet, amit beírok, abban az ő betű helyett például Q betű lesz. A kérdés ebből szerintem nyilvánvaló, hogy
lehet megoldani, hogy magyar ékezetes betűket is tudjak használni?

Íme a forrás (a jelszó, felhasználói neves rész át lesz alakítva adatbázisosra, de egyelőre még nem foglalkoztam vele.)
  1. <?php  
  2. if (__FILE__ == $_SERVER["DOCUMENT_ROOT"] . $_SERVER["PHP_SELF"])  
  3. {  
  4. header("Location: index.php");  
  5. die();  
  6. }  
  7.   
  8. session_start();  
  9. session_set_cookie_params(1800);  
  10.   
  11. function authenticate()  
  12. {  
  13.  header('WWW-Authenticate: Basic realm="bla"');  
  14.  header('HTTP/1.0 401 Unauthorized');  
  15.  echo "Hát így nem lépsz be.";  
  16.  exit;  
  17. }  
  18.   
  19. if (!isset($_SESSION['admin']) || $_SESSION['admin']<$auth_ad)  
  20. {  
  21.  if (!isset($_SERVER['PHP_AUTH_USER']))  
  22.  {  
  23.   authenticate();  
  24.  }  
  25.  else  
  26.  if ($_SERVER['PHP_AUTH_USER']===$auth_us &&  $_SERVER['PHP_AUTH_PW']===$auth_pw)  
  27.  {  
  28.   $_SESSION['admin']=$auth_ad;  
  29.  }  
  30.  else  
  31.  {  
  32. //ez a rész jön le, ha stimmel a jelszó.  
  33. echo $_SERVER['PHP_AUTH_USER'];  
  34. echo $_SERVER['PHP_AUTH_PW'];  
  35. echo $auth_us;  
  36. echo $auth_pw;  
  37.   //authenticate();  
  38.  }  
  39. }  
  40.   
  41. ?>  
Ez egy include fájl, amit az index.php elejére szúrok be, előtte még van még 1 include a jelszóval, felhasználói névvel stb, de ez a rendszer át lesz majd alakítva.

Ha szabad, akkor van még egy kérdésem, utánanéztem leírásban a session cookie lifetimenak, hogy hogyan állíthatom be, és a session_set_cookie_params függvényt találtam, aminek az első paramétere a lifetime másodpercben. Az a kérdés, hogy ez így korrekt? (mert ez sem működik valamiért)
 
1

if-else ág keveredés

zila · 2007. Jún. 25. (H), 17.21
Én a session.cookie_lifetime config változót szokatam használni, ezt ini_set-tel tudod piszkálni...
  1. <?php  
  2. session_start();  
  3. session_set_cookie_params(1800);  
  4.   
  5.   
  6. if ( !isset($_SESSION['admin']) || $_SESSION['admin'] < $auth_ad) {  
  7.     if ( !isset($_SERVER['PHP_AUTH_USER']) ) {  
  8.         authenticate();  
  9.     } else  
  10.         if ( $_SERVER['PHP_AUTH_USER'] == $auth_us && $_SERVER['PHP_AUTH_PW'] == $auth_pw ) {  
  11.             $_SESSION['admin'] = 1;  
  12.                         //ez a rész jön le, ha stimmel a jelszó.  
  13.             echo $_SERVER['PHP_AUTH_USER'];  
  14.             echo $_SERVER['PHP_AUTH_PW'];  
  15.             echo $auth_us;  
  16.             echo $auth_pw;  
  17.             echo "Beléptél";  
  18.         } else {   
  19.                       echo "Nem sikerült.";  
  20.                }  
  21. }  
  22.   
  23. function authenticate() {  
  24.     header('WWW-Authenticate: Basic realm="bla"');  
  25.     header('HTTP/1.0 401 Unauthorized');  
  26.     echo "Hát így nem lépsz be.";  
  27.     exit;  
  28. }  
  29. ?>  
Ahogy látszik, az if-ek között kicsit elkeveredtél..., ugyanis ahol a $_SESSION['admin']=$auth_ad; értékadás van ott van az az ág, ami helyes loginkor fut le, és annak az else ága az, ami a rossz belépéshez tartozik...
4

Nem egészen

inf · 2007. Jún. 26. (K), 09.22
Az ini_set -et kipróbálom majd, most nézem, hogy tényleg elírtam, kimaradt a "nem" szó.

szerk:
sajnos ini_set-tel sem működik, valami más gubanc van, lehet alapból nem módosíthatom, majd utánakérdezek az üzemeltetőnél
2

kód tördelése

Hodicska Gergely · 2007. Jún. 25. (H), 22.12
Érdemes lenne a kód tördelésére nagyobb hangsúlyt fektetned. Érdmes mondjuk a PEAR kódolási szabványához szoktatni magad, tedd ki mindig a {} jeleket, még akkor is, ha csak egy utasítás kerül közéjük. Ezenkívül szerintem a 2-es behúzás is elég kevés, neheyzen olvasható a kód. Én mondjuk mindig TAB-ot használok, így mindneki kedve szerint tudja állítani a behúzás mértékét.


Üdv,
Felhő
3

Aha

inf · 2007. Jún. 26. (K), 09.17
Hát majd igyekszem, így szoktam meg sajnos :-)

szerk:
  1. <?php  
  2. if (__FILE__==$_SERVER["DOCUMENT_ROOT"].$_SERVER["PHP_SELF"])  
  3. {  
  4.     header("location: index.php");  
  5.     exit;  
  6. }  
  7.   
  8. session_start();  
  9. session_set_cookie_params(1800);  
  10.   
  11. function authenticate()  
  12. {  
  13.     header('WWW-Authenticate: Basic realm="Beléptető Rendszer"');  
  14.     header('HTTP/1.0 401 Unauthorized');  
  15.     echo "Hát így nem lépsz be.";  
  16.     exit;  
  17. }  
  18.   
  19. if (!isset($_SESSION['admin']) || $_SESSION['admin']<$auth_ad)  
  20. {  
  21.     if (!isset($_SERVER['PHP_AUTH_USER']))  
  22.     {  
  23.         authenticate();  
  24.     }  
  25.     else  
  26.     if ($_SERVER['PHP_AUTH_USER']===$auth_us && $_SERVER['PHP_AUTH_PW']===$auth_pw)  
  27.     {  
  28.         $_SESSION['admin']=$auth_ad;  
  29.     }  
  30.     else  
  31.     {  
  32.         authenticate();  
  33.     }  
  34. }  
  35.   
  36. ?>  
szóval konkrétan ez a kód, és az a bajom vele, hogy nem veszi be az ékezetes karaktereket, mmint ő,ű betűket, ja és még valami a fájlban, ami ezt meghívja van content type header iso-8859-2ről, még mielőtt ezt beszúrom:
  1. header("content-type: text/html; charset=iso-8859-2");  
úgy látszik, hogy a charset nem hat ki a http authra.
5

:-(

inf · 2007. Jún. 27. (Sze), 06.01
Senki se tudja? :-(