Jump to content

Recommended Posts

Posted

Viva!

Estou a tentar aperfeiçoar o sistema autenticação já desenvolvido, e nesta fase pretendo que quando um utilizador se autentique sejam guardados os valores referentes aos níveis de permissão. Para começar utilizei a seguinte query:

$query = "SELECT nome,password,id_nivelacesso
FROM detalhe,nivelacesso_detalhe 
WHERE nome='" . $username . "' AND password='" . $password . "' 
AND nivelacesso_detalhe.id_detalhe=detalhe.id_detalhe";
$sql = mysql_query($query) or die('Query failed: ' . mysql_error());

E de seguida optei por saber quantas linhas foram retornadas, e num if optar por um procedimento se tiver mais que 1 tipo de permissões, caso contrário efectua o procedimento norma:

$numfields = mysql_num_rows($sql);
while ($result = mysql_fetch_object($sql)) {
if ($result->nome == true){
	session_start();
	if ($numfields > 1)	{
		$teste = array($numfields);
		for($i=0;i<$numfields;$i++){
			$teste[$i] = $result -> id_nivelacesso;
		}
	/*
		$niveis_acesso = array($numfields);
		while ($result = mysql_fetch_array($sql)){
		        for($i=0;$i<$numfields;$i++){
		            $teste[$i] = $result->id_nivelacesso;
		        }
		}
	*/		
	$_SESSION['username'] = $result -> nome;
	$_SESSION['dominio'] = false;
	$_SESSION['session_time'] = time();
	$_SESSION['teste'] = $teste;
	session_write_close();
	echo $_SESSION['username'];
} else {
	$_SESSION['username'] = $result -> nome;
	$_SESSION['dominio'] = false;
	$_SESSION['session_time'] = time();
	$_SESSION['nivel_acesso'] = $result -> id_nivelacesso;
	session_write_close();
	echo $_SESSION['username'];
}
} else {
echo "0";
}
}

} else {
	echo "0";
}

A minha dificuldade está em perceber como vou percorrer o os valores da query e armazenar numa variável os valores das permissões, para que futuramente possa utilizar de forma a permitir o acesso a determinas áreas do site.

Agradeço uma ajudinha para clarificar o meu raciocínio.

Posted

Julgo já ter conseguido, coloquei assim:

while ($result = mysql_fetch_object($sql)) {
            if ($result->nome == true){
                session_start();                
                if ($numfields > 1)    {
                    $teste = array();
                    for($i=-1; $i <= $numfields; $i++){
                        $teste[$i] = mysql_result($sql,$i,"id_nivelacesso");
                    }

                    $_SESSION['username'] = $result -> nome;
                    $_SESSION['dominio'] = false;
                    $_SESSION['session_time'] = time();
                    $_SESSION['teste'] = $teste;
                    session_write_close();
                    echo $_SESSION['username'];

} else {
...
...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.