Olá, boa tarde!
Preciso desenvolver uma pagina em html (talvez utilizando php ou javascript, não sei qual utilizar) de livre acesso, mas onde não possa haver múltiplos visitantes ao mesmo tempo, apenas um por vez. Mas nada de login e ou senha (a página é de livre acesso). Uma página simples e comum em html. Mas que só aceite um visitante por vez (e que este visitante demore o tempo de quiser, ou seja, sem limite de tempo para ficar na página web).
Tente fazer o controle pelo ip.
Pegando direto pelas variáveis globais do PHP.
Crie uma rotina tb para ver se a pessoa desconectou ou seja limpar o ip.
PS: guarde este ip no banco e no scheduler do banco de dados limpe este ip a cada 1 minuto.
Eu faria pela sessão do php.
Um timer que fica atualizando uma tabela em memória
Se outro visitante entrar e o time for maior que 2x o tempo do timer quer dizer que a página foi fechada.
. . . . .
Quem sabe podemos combinar um valor pelo serviço… Se não for caro, eu posso pagar. Antes gostaria de conversar com a pessoa interessada em desenvolver o código pelo telefone para acertarmos valores e de como eu preciso exatamente que seja feito.
Cara, você é fera! Haroldo, sensacional, espetacular, fórum scriptcase é o máximo na web! Funcionou com excelente perfeição!
Que seu trabalho seja sempre assim, abençoado! Obrigado!
Para o exemplo demonstrado foram criados:
1)Uma tabela em memória (maior resposta nas consultas e atualizações) no banco de dados para o registro de quem esta com o site aberto.
Uma aplicação do tipo blank de nome index, responsável em redirecionar para página inicial do site caso ninguém a esteja acessando ou deixar em pausa temporária até a página ser liberada (o que chamamos de acesso indisponível no momento) .
Uma aplicação blank de nome ajax_set, chamada a cada 10 segundos pela app index via ajax post, responsável pela atualização dos dados na tabela.
Uma aplicação blank de nome home_page, a qual representa a página inicial do site.
SQL para criação da Tabela:
CREATE TABLE `index_acesso_unico` (
`session_access` CHAR(32) NOT NULL,
`data_hora` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00'
)
COLLATE='utf8_general_ci'
ENGINE=MEMORY
;
Aplicação Blank: index
Global em sessão de saída: var_valida_home_page
onExecute:
[code][var_valida_home_page]=“valida_123”;
?>
sc_include_lib(“Jquery”);
<?PHP
echo " Sessão PHP:".session_id();
[/code]
Aplicação Blank: ajax_set
Global em sessão de saída: var_valida_home_page
onExecute:
[code]
if (!isset([var_valida_home_page]) && [var_valida_home_page]!='valida_123'):
unset([var_valida_home_page]);
DIE('Ops!. Acesso inválido');
endif;
$sess=session_id();
$sel=
"SELECT
session_access,
TIME_TO_SEC(TIMEDIFF(now(), i.data_hora))
FROM
index_acesso_unico i";
sc_lookup(ds,$sel);
if (empty({ds})):
sc_exec_sql("INSERT INTO index_acesso_unico (session_access, data_hora) values ('$sess',NOW())");
die('0');
endif;
if ($sess==$ds[0][0]):
sc_exec_sql("Update index_acesso_unico set data_hora=now() where session_access='".session_id()."'");
sc_commit_trans();
die('0');
else:
if ($ds[0][1]>12) {
sc_exec_sql('DELETE FROM index_acesso_unico');
sc_exec_sql("INSERT INTO index_acesso_unico (session_access, data_hora) values ('$sess',NOW())");
die(0);
}else{
die('1');
}
endif;
[/code]
Aplicação Blank: home_page
Global em sessão de entrada: var_valida_home_page
onExecute:
[code]
if (!isset([var_valida_home_page]) && [var_valida_home_page]!='valida_123'):
unset([var_valida_home_page]);
DIE('Ops!. Acesso inválido');
endif;
?>
sc_include_lib(“Jquery”);
PAGINA INICIAL DO SITE.
<h2>ESTOU DENTRO.</h2>
<?PHP
echo " Sessão PHP:".session_id();
[/code]
Nota: Todo sistema é sujeito a falhas. Os testes realizados aqui foram através de 2 browsers e um usuário apenas. Em situações de alta concorrência o sistema pode falhar por não ter sido possível testar nessas condições. Mas sempre há jeito de melhorar a segurança.
Um exemplo de aumentar a segurança seria adicionando LOCK READ (no ínicio) e UNLOCK (no final) para a tabela na aplicação ajax_set.
TAGS: Haroldo, Ajax, Jquery, TimeOut, Acesso Simultâneo, Bloqueio Página, Pagina web apenas um visitante por vez
TÓPICOS RELACIONADOS: http://www.scriptcase.com.br/forum/index.php/topic,4439.msg86263.html#msg86263