Jump to content

Recommended Posts

Posted

Viva.

Criei um script de login com base na abertura de uma sessão.

Basicamente, o script cria a seguinte variavel após verificação do user / pass:

$_SESSION["id"]

(em que o id é o nº do user)

Nos restantes ficheiros o login é considerado se esta variável existir...

O que gostaria de saber é se é possível criar uma sessão que seja "única" para poder ter dois sites com o mesmo sistema de login, no mesmo alojamento, em pastas diferentes, porque desta forma, ao fazer login num deles, automaticamente estou a fazer no outro.

Obrigado.

portalmundial.net »» criamos sites

Posted

Não percebi como isso ajuda... Não sei se me fiz explicar.

Vamos imaginar que tenho dois sites distintos. dominio.com/a e dominio.com/b

Ambos têm um sistema de login e "passam valores" entre as diferentes páginas através da sessão. Estão no mesmo alojamento em pastas diferentes.

Ou seja, fazendo login no site dominio.com/a/login.php  acontece o seguinte:

session_start();

$_SESSION["id"]=20;

Se eu entrar na outra pasta » dominio.com/b/mostrar_id.php (com o seguinte conteudo):

session_start();

$id=_SESSION["id"];

echo"$id";

O que vai acontecer é que ele vai buscar uma sessão aberta no outro site e mostra o valor 20...

Eu queria abrir sessões diferentes, para não haver misturas entre as sessões dos dois sites.

portalmundial.net »» criamos sites

Posted

Não percebi como isso ajuda... Não sei se me fiz explicar.

Vamos imaginar que tenho dois sites distintos. dominio.com/a e dominio.com/b

Ambos têm um sistema de login e "passam valores" entre as diferentes páginas através da sessão. Estão no mesmo alojamento em pastas diferentes.

Ou seja, fazendo login no site dominio.com/a/login.php  acontece o seguinte:

session_start();

$_SESSION["id"]=20;

Se eu entrar na outra pasta » dominio.com/b/mostrar_id.php (com o seguinte conteudo):

session_start();

$id=_SESSION["id"];

echo"$id";

O que vai acontecer é que ele vai buscar uma sessão aberta no outro site e mostra o valor 20...

Eu queria abrir sessões diferentes, para não haver misturas entre as sessões dos dois sites.

Se no site > dominio.com/a/login.php  definiste a session assim

session_start();

$_SESSION["id"]=20;

na pasta > dominio.com/b/mostrar_id.php é só definir a session outra vez

session_start();

$_SESSION["id"] = 43;

ou então trocas $_SESSION["id"]  por $_SESSION["gid"]  ou $_SESSION["user_id"]  qualquer coisa não faz diferença.

Posted

Mesmo assim não me fiz entender.

Vou explicar melhor. A ideia é ter dois sites com login (vamos supor, duas lojas online), no mesmo alojamento, em pastas diferentes, com o mesmo script.

Uma loja vende computadores, a outra vende perfumes.

Um utilizador que por acaso esteja com login efectuado na loja de perfumes, se introduzir o endereço da loja de computadores, vai ter o login feito, apesar da base de dados dos utilizadores ser diferente,  a sessão aberta na loja de perfumes vai ser reconhecida pela loja dos computadores.

Há alguma forma de isto não acontecer?

Andei a pesquisar o comando session_name() e não sei se será para estes casos. Alguem conhece?

portalmundial.net »» criamos sites

Posted

Mesmo assim não me fiz entender.

Vou explicar melhor. A ideia é ter dois sites com login (vamos supor, duas lojas online), no mesmo alojamento, em pastas diferentes, com o mesmo script.

Uma loja vende computadores, a outra vende perfumes.

Um utilizador que por acaso esteja com login efectuado na loja de perfumes, se introduzir o endereço da loja de computadores, vai ter o login feito, apesar da base de dados dos utilizadores ser diferente,  a sessão aberta na loja de perfumes vai ser reconhecida pela loja dos computadores.

Há alguma forma de isto não acontecer?

Andei a pesquisar o comando session_name() e não sei se será para estes casos. Alguem conhece?

Se isso acontece é porque o script não esta bem programado, e eu não sei como te ajudar neste caso se fosse eu a fazer o script já saberia como resolver.

Existe alguma relação entre a loja de perfumes e a loja de computadores ?

Posted

da maneira que ele está a programar não vai ter a mesma falha que tinha o meu script kingless?

Posted

Supostamente a loja de computadores e loja de perfumes são separadas mas o que acontece é que estão no mesmo alojamento, mas em pastas separadas.

Neste caso o problema são os logins, caso um user navegue em simultaneo nos dois sites.

Vou explicar o que eu fiz.

Um user introduz o user / pass... o que eu faço é ir a base de dados fazer o query. Se obtiver uma "row" em que o user é "x" e a pass é "y" então acontece o seguinte:

$_SESSION["login"] = "on";

Em caso contrário $_SESSION["login"] = "off";

O problema é que esta expressão é comum aos dois sites... Fazendo login num deles o user (se navegar simultaneamente) está a entrar tambem no outro.

O que estou a fazer mal?

portalmundial.net »» criamos sites

Posted

da maneira que ele está a programar não vai ter a mesma falha que tinha o meu script kingless?

Yep, quase a mesma coisa...

Supostamente a loja de computadores e loja de perfumes são separadas mas o que acontece é que estão no mesmo alojamento, mas em pastas separadas.

Neste caso o problema são os logins, caso um user navegue em simultaneo nos dois sites.

Vou explicar o que eu fiz.

Um user introduz o user / pass... o que eu faço é ir a base de dados fazer o query. Se obtiver uma "row" em que o user é "x" e a pass é "y" então acontece o seguinte:

$_SESSION["login"] = "on";

Em caso contrário $_SESSION["login"] = "off";

O problema é que esta expressão é comum aos dois sites... Fazendo login num deles o user (se navegar simultaneamente) está a entrar tambem no outro.

O que estou a fazer mal?

O id não pode ser um numero facil como por exemplo 1 ou 2 ou 3 tem que ser algo como c3b978658s545s0adedfbb461febc3b5bcba, e nunca faças isso $_SESSION["login"] = "on"; e $_SESSION["login"] = "off";  isso permiti ataques a conta de um certo usuario...

Acho que o problema é que a base de dados da loja X é a mesma que a a da loja Y,  ou então o problema esta no login... não sei...

A loja x e a loja y estão a utilizar a mesma base de dados e as mesmas tabelas ?

Posted

Não... As bases de dados são diferentes. Simplesmente caso seja detectada a variável "on" o login considera-se efectuado.

Depois existe outra variável que é o id (neste caso o id do utilizador) para que a base de dados possa ir buscar o nome do utilizador e apresentar a mensagem Benvindo X...

A única questão é que se o user 25 estiver com login no site dos computadores, vai conseguir estar online no site dos perfumes, igualmente como user com id=25 (mas não seria a mesma pessoa... o sistema iria buscar o nome do user 25 do outro site, numa BD diferente).

portalmundial.net »» criamos sites

Posted

Buscar o usuario pelo id não é a melhor forma de se fazer isso... podemos considerar isso como uma falha de segurança. O problema esta na forma como programaste o script e nisso não te posso ajudar.

Posted

Já descobri como resolver...

Baste que utilize o comando session_name antes de cada session_start

...

Resumindo... Se eu tenho duas pastas no mesmo alojamento e abro uma sessão fazendo:

session_start();

$_SESSION["var"]="a";

De seguida vou a um outro qualquer ficheiro e faço:

session_start();

$var=$_SESSION["var"];

echo "$var";

O resultado é "a".

Como resolver:

session_name("site_computadores");

session_start();

No outro site faço:

session_name("site_perfumes");

session_start();

Basta fazer isto sempre que se abrir sessão, e não há mistura entre as variáveis das diferentes sessões.

Kingless... Em relação à falha de segurança que referiste, vou colar o código e agradecia imenso que desses uma ajuda.

$result = mysql_query("SELECT nome, id FROM clientes WHERE user='$user' AND pass='$pass' ");

Basicamente o id é o número do cliente (gerado por auto-increment na base de dados, que é único, assim como o username).

Apartir deste ID abro uma variável na sessão e é isto que identifica o user enquanto ele navega.

Por exemplo, uma encomenda feita pelo user, é identificada como user "25" nome "Manuel José" (que foi buscar a base de dados no momento do login).

O que está mal aqui. Como farias para corrigir?

portalmundial.net »» criamos 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.