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 Rafael_Ferreira
      Não consigo carregar a imagem do captcha do meu formulário. Foi testado com o xampp e easyphp. Também não carregou a imagem de outros captcha. 
       
       
    • Por luiz monteiro
      Olá.
      Estou atualizando meu conhecimento com Front-End e me deparei com o seguinte problema.
      Criei um sistema para fazer o upload de imagens e alguns campos text.
      Algo bem simples para depois começar a estudar javascript para mostrar a miniatura....
      Mas quando saio do navegador Chrome ou da aba por mais de 3 minutos, ao retornar o navegador as vezes atualiza ou nem chega atualizar mas limpa os campos.
      Estou usando um Smart Motorola com Android, mas um amigo testou no iPhone e acontece a mesma coisa.
      Gostaria de saber se há como usar javascript para evitar isso?
      Agradeço desde já.

      <!DOCTYPE html>
      <html>
      <head>
          <meta charset="utf-8">
          <meta name="viewport" content="width=device-width, initial-scale=1">
          <title>Uploader</title>
      </head>
      <body>
          <form action="?" method="post" enctype="multipart/form-data">
              <br><br>
              <div>selecione a imagem 1</div>
              <input type="file" name="foto1" accept="image/*">
              <br><br>
              <input type="text" name="nome_imagem1">
              
              <br><br>
              <input type="file" name="foto2" accept="image/*">
              <br><br>
              <input type="text" name="nome_imagem2">
              
              <br><br>

              <input type="file" name="foto3" accept="image/*">
              <br><br>
              <input type="text" name="nome_imagem3">
              
              <br><br>
              <input type="submit" value="Enviar">
              <br><br>
          </form>
      <?php
      if ($_SERVER['REQUEST_METHOD'] == 'POST')
      {
          vardump ($_FILES);
      }
      ?>
      </body>
      </html>
       
       
       
    • Por belann
      Olá!
       
      Estou usando o nextjs versão 15.2.3 e criei uma navbar que quando é carregado o programa aparece com a home, mas na hora de clicar na página produtos desaparece a navbar.
      A navbar esta sendo chamada no layout.tsx estou usando typescript
      e fica dessa forma
      <div>           <Navbar/>             <main>{children}</main>             </div>  
    • Por luiz monteiro
      Olá, tudo bem?
       
      Estou melhorando meu conhecimento em php e mysql e, me deparei com o seguinte. A tabela da base de dados tem um campo do tipo varchar(8) o qual armazena números. Eu não posso alterar o tipo desse campo. O que preciso é fazer um select para retornar o números que contenham zeros a direita ou a esquerda.
      O que tentei até agora
       
      Ex1
      $busca = $conexao->prepare("select campo form tabela where (campo = :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form']);
       
      Se a direita da string $_REQUEST['campo_form'] termina ou inicia com zero ou zeros, a busca retorna vazio.
      Inseri dados numéricos, da seguinte maneira para testar: 01234567;  12345670: 12345678: 12340000... entre outros nessa coluna. Todos os valores que não terminam ou não iniciam com zero ou zeros, o select funciona.
       
       
      Ex2
      $busca = $conexao->prepare("select campo form tabela where (campo = 0340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex3
      $busca = $conexao->prepare("select campo form tabela where (campo = '02340001' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex4
      $busca = $conexao->prepare("select campo form tabela where (campo like 2340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex5
      $busca = $conexao->prepare("select campo form tabela where (campo like '12340000') ");
      Esse número está cadastrado, mas não retorna.
       
      Ex6
      $busca = $conexao->prepare("select campo form tabela where (campo like '"12340000"' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex7
      $busca = $conexao->prepare("select campo form tabela where (campo like :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form'])
      Não retorna dados.
       
      O  $_REQUEST['campo_form'] é envio via AJAX de um formulário. 
      Usei o gettype para verificar o post, e ele retorna string.
      Fiz uma busca com número 12345678 para verificar o que o select retorna, e também retrona como string.
       
      Esse tipo de varchar foi usado porque os números que serão gravados nesse campo,  terão zeros a direita ou na esquerda. Os tipos number do mysql não gravam zeros, então estou usando esse. O problema é a busca.
      Agradeço desde já.
       
       
×

Informação importante

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