Jump to content
MrDewerbe

[PHP/MYSQL] Link's

Recommended Posts

MrDewerbe

Boas pessoal,

Estou a fazer um website apenas para testar o PHP com MYSQL. Nada de mais, apenas para treinos.

Tive aqui a pensar como é que vou fazer isto... É assim, eu já fiz o registo. Estou a acabar a zona de login, mas quando o utilizador faz o login, precisa de um link 'especial' para ir ao index, do tipo: "<form action="index.php?xxxx" method="POST"> .

Uma coisa assim... Para o utilizador aceder ao index com a sua conta, com os seus privilégios. Membro normal, vip e/ou mesmo Administrador!

Espero que me tenham percebido e que me possam ajudar a fazer este "link".

Regards  :cheesygrin:

Share this post


Link to post
Share on other sites
Paulo Cabral

deves ter um campo na tabela que indique o tipo de utilizador, ao fazer o login verificas o tipo de utilizador e mandas para a pagina que lhe pertence

Share this post


Link to post
Share on other sites
MrDewerbe

Eu isso já tinha pensado, mas estar a fazer páginas para cada utilizador  :nono:

:cheesygrin:

Share this post


Link to post
Share on other sites
brunoais

Em vez de teres uma página diferente para cada utilizador porque não ter uma página em que fazes algumas alterações dependendo do nível do utilizador que está a aceder?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
MrDewerbe

É isso bruno, mas só que eu não sei fazer links para essas páginas.

Ora ai está a dúvida  :bored: Por isso é que criei o tópico  😳

Espero que me possas ajudar  :smoke:

Share this post


Link to post
Share on other sites
brunoais

Tens o mm url, por isso n há muito q saber. As alterações são feitas baseando-se no nível de utilizador do utilizador que está a aceder. Cda utilizador terá um id, e baseando-se nesse id sabes, a partir da DB, o que é que esse utilizador tem direito. Usando essas informações e if's resolves o problema.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
oxyzero

Isto é fácil, e não precisas métodos GET para o fazer, porque se o fizesses, os utilizadores podiam mudá-los e tinham os privilégios que quisessem.

Ora, na tua base de dados, tens uma tabela users (ou utilizadores, o que for), nessa tabela podes definir um campo para os privilégios, por exemplo: id ; username ; password ; nome ; ... ; privilegios ;

Metes o valor de privilégios a 0 por default, porque assim cada membro novo que se registar será membro normal, se for 1 é vip, se for 2 é admin.

No teu login, o que vasta fazer é:

em login.php

<?php
session_start();

require("connection.php"); // Ficheiro para conexão à base de dados.

$user=$_POST['user'];
$pass=$_POST['pass'];

$query = mysql_query("SELECT * FROM (nome da tua tabela) WHERE username=$user AND password=$pass");

$rows = mysql_num_rows($query);

if ($rows==1){

$userData = mysql_fetch_assoc(mysql_query($query));
   $privilegio = $userData['(nome do campo do privilegio)'];
        $id = $userData['id'];

// Sucesso no login!

$_SESSION['user']=$user;
$_SESSION['id']=$id;
$_SESSION['privilegio']=$privilegio;
header("Location:index.php");

}else{
echo "Esse utilizador não foi encontrado.";
}

?>

Agora que tens o login feito (embora tenhas ainda algum trabalho a acabá-lo (segurança etc.. )) passemos ao index.php. O código que vou meter é só para a forma de contéudo no teu site. Se queres metê-lo noutro sitio, tens de editar obviamente:

index.php

<?php
session_start();

require("connection.php");

if ($_SESSION['user']){

// Logged in
$privilegio = $_SESSION['privilegio'];

if ($privilegio==0){
     echo "Utilizador normal!";
}else{
      if ($privilegio==1){
     echo "VIP";
}else{
    echo "Zona do admin";
  }

}


}else{

// fazer login

echo "<form method='POST' action='login.php'/>
User: <input type='text' name='user'/>
Pass: <input type='password' name='pass'/>
<input type='submit' value='Login'/></form>";

}

?>

Está aí. Não sei se tem erros ou não, porque não testei. Não te deveria dar assim a resposta directa, mas não podes por informação importante no url.

Por exemplo:

site.com/index.php?u=teste&p=123&privilegio=0

Além de a informação ser visivel como o username, password, eu podia meter privilégios a 2 e era admin.

Espero que tenhas entendido o meu ponto de vista. Se tiveres mais alguma dúvida força :P

Share this post


Link to post
Share on other sites
MrDewerbe

WOW  :cheesygrin:

Muito bem explicado, já percebi tudo. É fácil pelo teu ponto de vista :P Sobre aquilo da segurança é que já não apanho nada :x

Se me podesses explicar como fizes-te este link (site.com/index.php?u=teste&p=123&privilegio=0) é que não percebo nada.

site.com/index.php?u=teste&p=123&privilegio=0 - repara no 0, se o user alterar para 1, ficará vip?

No campo privilégios coloco só 1 ou 2 certo?

Cumps.

Share this post


Link to post
Share on other sites
scorch

Tu não deves verificas as coisas que estão no URL, tu deves verificar as permissões do utilizador directamente à base de dados, ou à sessão, mas nunca te deixes fiar só pelo URL. :P


PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
taviroquai

Acerca da segurança...

Tens os users A, B e C.

Tens as páginas (recursos) P1, P2 e P3.

O user A pode aceder as P1, P2 e P3 (administradores)

O user B só pode aceder a P2 (convidados).

O user C só pode aceder as P1 e P2 (membros).

E depois para cada recurso ainda podes querer definir quem pode listar, criar, abrir, alterar ou apagar...

Usa grupos (roles) em vez de users... Usa regras de acesso (ACLs).

Por exemplo:

Regra 1: A, P1, [listar, criar, abrir, alterar, apagar]

Regra 2: A, P3, [listar, criar, abrir, alterar, apagar]

Regra 3: B, P2, [listar, abrir]

Regra 4: C, P1, [listar, criar, abrir, alterar]

Regra 5: C, P2, [listar, criar, abrir, alterar, apagar]

Depois de leres o user da base de dados, e veres que recurso (ou página) ele que aceder, vais a base de dados e lês as regras desse user e com IFs fazes o controlo...

Mais tarde podes ainda fazer herança de permissões aos grupos...

Faz isto que é bem divertido  :P

Não há nada melhor do que dar um Access Denied  ;)

Ops... exagerei na profundidade do tópico... sorry

Share this post


Link to post
Share on other sites
brunoais

Esse código tem uma falha de segurança enorme por guardar esses dados no $_SESSION. A única excepção para isto é se não guardares esses dados no cookie que envias para o utilizador (session_set_save_handler).


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites

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.