Pagina web apenas um visitante por vez.

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

E quando um visitante estiver na página e outro tentar entrar?

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.

(!) Beleza, e você ou alguém aí, tem esse código em PHP para me passar, e onde eu o colocaria na página html?

Ah, você deseja um código pronto?

Pensei que queria dicas de como desenvolver o que precisa.

Eu nunca tive necessidade igual e não conheci alguém que tenha tido a mesma necessidade.

Quem saiba alguém aqui tenha o código já pronto ou tenha a disposição para fazê-lo para você.

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

Acesse o link em 2 browsers diferentes ( um do lado do outro para avaliar):

http://v9.infinitusweb.com.br/forum_sc/index/

feche a pagina cujo link entrou no site e aguarde 12 segundos +ou menos observando o link do browser que não conseguiu entrar.

*VALE lembrar que se outro estiver testando ao mesmo tempo vai inviabilizar o acesso nos 2 browsers
Se é isso que desejava posto o código aqui

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!

Então vamos ao código:

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.

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

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

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