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.)

<?php
if (__FILE__ == $_SERVER["DOCUMENT_ROOT"] . $_SERVER["PHP_SELF"])
{
header("Location: index.php");
die();
}

session_start();
session_set_cookie_params(1800);

function authenticate()
{
 header('WWW-Authenticate: Basic realm="bla"');
 header('HTTP/1.0 401 Unauthorized');
 echo "Hát így nem lépsz be.";
 exit;
}

if (!isset($_SESSION['admin']) || $_SESSION['admin']<$auth_ad)
{
 if (!isset($_SERVER['PHP_AUTH_USER']))
 {
  authenticate();
 }
 else
 if ($_SERVER['PHP_AUTH_USER']===$auth_us &&  $_SERVER['PHP_AUTH_PW']===$auth_pw)
 {
  $_SESSION['admin']=$auth_ad;
 }
 else
 {
//ez a rész jön le, ha stimmel a jelszó.
echo $_SERVER['PHP_AUTH_USER'];
echo $_SERVER['PHP_AUTH_PW'];
echo $auth_us;
echo $auth_pw;
  //authenticate();
 }
}

?>
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...
<?php
session_start();
session_set_cookie_params(1800);


if ( !isset($_SESSION['admin']) || $_SESSION['admin'] < $auth_ad) {
	if ( !isset($_SERVER['PHP_AUTH_USER']) ) {
		authenticate();
 	} else
 		if ( $_SERVER['PHP_AUTH_USER'] == $auth_us && $_SERVER['PHP_AUTH_PW'] == $auth_pw ) {
 			$_SESSION['admin'] = 1;
 						//ez a rész jön le, ha stimmel a jelszó.
			echo $_SERVER['PHP_AUTH_USER'];
			echo $_SERVER['PHP_AUTH_PW'];
			echo $auth_us;
			echo $auth_pw;
			echo "Beléptél";
		} else { 
                      echo "Nem sikerült.";
               }
}

function authenticate() {
	header('WWW-Authenticate: Basic realm="bla"');
	header('HTTP/1.0 401 Unauthorized');
	echo "Hát így nem lépsz be.";
	exit;
}
?>
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:

<?php
if (__FILE__==$_SERVER["DOCUMENT_ROOT"].$_SERVER["PHP_SELF"])
{
	header("location: index.php");
	exit;
}

session_start();
session_set_cookie_params(1800);

function authenticate()
{
	header('WWW-Authenticate: Basic realm="Beléptető Rendszer"');
	header('HTTP/1.0 401 Unauthorized');
	echo "Hát így nem lépsz be.";
	exit;
}

if (!isset($_SESSION['admin']) || $_SESSION['admin']<$auth_ad)
{
	if (!isset($_SERVER['PHP_AUTH_USER']))
	{
		authenticate();
	}
	else
	if ($_SERVER['PHP_AUTH_USER']===$auth_us && $_SERVER['PHP_AUTH_PW']===$auth_pw)
	{
		$_SESSION['admin']=$auth_ad;
	}
	else
	{
		authenticate();
	}
}

?>
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:

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? :-(