Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wagner Moura

Redirecionar em Sequência.

Recommended Posts

Bom dia Pessoal, aqui estou mais uma vez solicitando a ajuda de vocês...

 

No meu site eu tenho um redir.php de redirecionamento para vários links, onde uso a função

<?php

$id = rand(1,3);
if ($id == 1)
{header ("Location: pasta/01.php");}
else
if ($id == 2)
{header ("Location: pasta/02.php");}
else
if ($id == 3)
{header ("Location: pasta/03.php");}
else
?>
Eu gostaria que o redirecionamento fosse feito em sequencia e destruir o redirecionamento aberto, ou seja,
se ja abriu o 01.php , ele não permite mais abrir , proximo clique que houve no redir.php irá abrir o 02.php ,
e não permitir mais.
Para eu ter um controle de quais ja foram abertos, eu pensei em criar com fopen, fread...
Eu pensei no seguinte, criar um arquivo chamado links.txt onde ficará o caminho dos sites
links.txt ex.:
pasta/01.php
pasta/02.php
pasta/03.php
pasta/04.php
pasta/05.php
pasta/06.php
e no redir.php criar alguma função para ler o arquivo links.txt , pegar a primeira linha , abrir o location , apagar a linha . fazendo assim que o proximo clique va para a primeira linha , pois sera será a sequencia, visto que ira abrir , apagar e fechar salvando.
Deu pra entender um pouco?
Só que eu ja tentei aqui botar a cuca pra funcionar e só me vem esse jeito na cabeça que também não sei por onde começar....
Mas aceito algum outro método que possa ser mas simples e eficaz!
DESDE JÁ AGRADEÇO A COLABORAÇÃO E AJUDA DE TODOS !!!!!!!! VALEU...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de tudo, qual o motivo do redirecionamento e o motivo de existir N pastas?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

Abre uma sessão e guarda o valor de uma página;

<?php

session_start();

//na página 01
$minhaPaginaAtual = 1;
verificaPagina($minhaPaginaAtual);



//função verificadora
function verificaPagina($PaginaAtual){
    if($_SESSION['pagina_acessada'] > $PaginaAtual){
        //redirecione
        header("Location: " . $_SESSION['pagina_acessada'] . ".php");
    }else{
        $_SESSION['pagina_acessada'] = $PaginaAtual;
    }
}

há várias outras maneiras mais isso ai acho que já resolve seu caso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gabriel Heming

 

A pasta é só uma, o que muda são os arquivos.

 

 

 

 

 

 

android17

 

 

Mas desse modo seu, o session será pelo cokies né, para a pessoa que está acessando. E não para acesso simultaneos.

 

Eu queria o seguinte. Que os acessos fosse em sequencia, o primeiro acesso ao redir levasse para 01.php o segundo acesso ao 02.php e assim vai...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Refaço a minha pergunta mudando de "pastas" para "arquivos". Quero entender a real necessidade, não consigo encontrar um exemplo prático e útil para o que quer realizar.

 

Dependendo da situação, pode ser que haja uma forma mais assertiva.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Gabriel Heming

 

É o seguinte,

 

Quando a pessoa termina o cadastro no meu site gero um botão ( CÓDIGOS PROMOCIONAIS ) , os códigos só podem ser usado por 1 pessoa. Entendeu?

 

Então eu quero que o link do código promocional seja mostrado pro cadastro 1 e seja excluido do txt ou de uma session, e assim em sequencia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não está usando banco de dados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com o SGBD seria mais fácil, pois ele já contemplaria muitas situações que, em um arquivo, você terá que prever, tais como:

 

- Integridade;

- Concorrência;

- I/O.

 

A integridade é a principal, pois assim, você poderia controlar os códigos que já foram utilizados e referenciar quando e por quem (caso houver).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não preciso nem saber quem usou o código não, realmente só preciso que um código mostrado a um cadastro não seja mostrado a ele. Não posso usar banco de dados. :(

OBS nem toda hospedagem que ira ficar o site tem acesso a mysql

 

E aí, será que da pra gente criar sem criação de banco de dados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se esse é o caso, use SQLite.

 

Sim, é possível fazer de outra forma. Mas como já comentei, você terá que implementar e prever situações que o SGBD mais simples já o faz.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que o cliente realmente não quer usar nenhum tipo de banco de dados. :(

 

Do jeito que tentei te falar la em cima, será que não daria certo? Ele quer uma coisa mais amador mesmo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu sugeriria de duas formas.

 

A primeira com dois arquivos. Um com uma lista ativa de códigos e outro com os códigos já utilizados. O problema dessa forma, é que você precisa carregar toda a lista em memória e, a partir de então, verificar se o código existe ou não na lista.

Utilize as funções (ler e escrever arquivos): fopen, fread, fwrite, file_get_contents, file_put_contents e/ou similares.

Outra forma, seria criar arquivos com o nome do código, em duas pastas separadas. A pasta de ativos e a de utilizados. Assim, você pode utilizar a própria consulta do file system e verificar se o arquivo existe em uma pasta, senão, pode verificar na outra pasta ou realizar qualquer outra ação. Dessa forma, você ganha certa agilidade na consulta, pois poderá consultar diretamente pelas funções do PHP. Mas perde na questão granularidade e, de toda e qualquer forma, continua sendo um método lento (como toda a leitura de dados em disco).

Utilize as funções (busca e escrita de arquivos): glob, file_put_contents
Classes: DirectoryIterator e/ou RecursiveDirectoryIterartor;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente, estude e traga suas dificuldades para cá.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Estou com uma dúvida, referente cálculo de valores em tempo real.

      Tenho uma rotina, que faz o cálculo, o problema é mostrar o resultado.

      Quero mostrar o RESULTADO assim: 0,00  ou  0.00

      Abaixo posto o código.
      jQuery('input').on('keyup',function(){ //Remover ponto e trocar a virgula por ponto var m = document.getElementById("pgRest").value; while (m.indexOf(".") >= 0) { m = m.replace(".", ""); } m = m.replace(",","."); //Remover ponto e trocar a virgula por ponto var j = document.getElementById("pgDsct").value; while (j.indexOf(".") >= 0) { j = j.replace(".", ""); } j = j.replace(",","."); m = parseFloat(jQuery('#pgRest').val() != '' ? jQuery('#pgRest').val() : 0); j = parseFloat(jQuery('#pgDsct').val() != '' ? jQuery('#pgDsct').val() : 0); //Mostra o Resultado em Tempo Real jQuery('#pgTroco').val(m - j); <<=== aqui estou errando })  
       
      Grato,
       
      Cesar
       
       
    • Por violin101
      Caro amigos, saudações.

      Tenho uma tabela escrita em JS que funciona corretamente.
       
      Minha dúvida:
      - como devo fazer para quando a Tabela HTML estiver vazia, exibir o LOGO da Empresa ?

      Abaixo posto o script:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'i' ) return;// Não é Ctrl+A, portanto interrompemos o script evt.preventDefault(); //Chama a Função Calcular Qtde X Valor Venda calcvda(); var idProdutos = document.getElementById("idProdutos").value; var descricao = document.getElementById("descricao").value; var prd_unid = document.getElementById("prd_unid").value; var estoque_atual = document.getElementById("estoque_atual").value; var qtde = document.getElementById("qtde").value; var vlrunit = document.getElementById("vlrunit").value; var vlrtotals = document.getElementById("vlrtotal").value; var vlrtotal = vlrtotals.toLocaleString('pt-br', {minimumFractionDigits: 2}); if(validarConsumo(estoque_atual)){ //Chama a Modal com Alerta. $("#modal_qtdemaior").modal(); } else { if(qtde == "" || vlrunit == "" || vlrtotal == ""){ //Chama a Modal com Alerta. $("#modal_quantidade").modal(); } else { //Monta a Tabela com os Itens html = "<tr style='font-size:13px;'>"; html += "<td width='10%' height='10' style='text-align:center;'>"+ "<input type='hidden' name='id_prds[]' value='"+idProdutos+"'>"+idProdutos+"</td>"; html += "<td width='47%' height='10'>"+ "<input type='hidden' name='descricao[]' value='"+descricao+"'>"+descricao+ "<input type='hidden' name='esp[]' value='"+prd_unid+"'> - ESP:"+prd_unid+ "<input type='hidden' name='estoq[]' value='"+estoque_atual+"'></td>"; html += "<td width='10%' height='10' style='text-align:center;'>"+ "<input type='hidden' name='qtde[]' value='"+qtde+"'>"+qtde+"</td>"; html += "<td width='12%' height='10' style='text-align:right;'>"+ "<input type='hidden' name='vlrunit[]' value='"+vlrunit+"'>"+vlrunit+"</td>"; html += "<td width='14%' height='10' style='text-align:right;'>"+ "<input type='hidden' name='vlrtotal[]' value='"+vlrtotal+"'>"+vlrtotal+"</td>"; html += "<td width='12%' height='10' style='text-align:center;'>"+ "<button type='button' class='btn btn-uvas btn-remove-produto' style='margin-right:1%; padding:1px 3px; font-size:12px;' title='Remover Item da Lista'>"+ "<span class='fa fa-minus' style='font-size:12px;'></span></button></td>"; html += "</tr>"; $("#tbventas tbody").append(html); //Função para Somar os Itens do Lançamento somar(); $("#idProdutos").val(null); $("#descricao").val(null); $("#prd_unid").val(null); $("#qtde").val(null); $("#vlrunit").val(null); $("#vlrtotal").val(null); $("#idProdutos").focus(); //Se INCLUIR NOVO produto - Limpa a Forma de Pagamento $("#pgSoma").val(null); $("#pgRest").val(null); $("#pgDsct").val(null); $("#pgTroco").val(null); $("#tbpagar tbody").empty(); }//Fim do IF-qtde }//Fim do Validar Consumo });//Fim da Função btn-agregar  
      Grato,

      Cesar
       
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.