Ir para conteúdo

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 landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
    • Por ILR master
      Pessoal, pergunta bem simples. Abaixo tenho o seguinte código:
       
      <script>
      function alerta()
      {
        if (window.confirm("Você realmente quer sair?")) {
          window.open("sair.html");
      }
      }
      </script>
       
      Funciona perfeitamente, só que está abrindo em outra janela e quero que abra na mesma janela.
       
      Alguém pode me ajudar?
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, plural, ativo. Nela tem cadastrado vários itens e seu respectivo plural. No campo ativo eu coloco a letra "S" para informar que esta palavra está ativa no sistema. Por exemplo: 1, casa, casas, S 2, mesa, mesas, S 3, cama, camas, S 4, moto, motos, S 5, rádio, rádios O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "variações" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, camas, moto 2, mesas, casas, radio 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela variações da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "casa". Preciso fazer com que o php me liste todos os registros da tabela "variações" que contenham a palavra "casa". Porém se tiver algum registro com a palavra "casas" também tem que ser listado. Neste caso ele irá encontrar dois registros. Agora eu preciso que o php verifique os demais itens e faça a listagem apenas dos item que estão ativos (que contenham um "S" no campo ativo. Neste caso ele irá encontrar apenas um registro, pois o segundo registro contém a palavra "rádio". E "rádio" não está ativo na tabela itens. Como faço isso?
    • Por First
      Olá a todos!
       
      Quando eu tento fazer o login me mostra esse erro "Could not log you in."; Alguém sabe me ajudar a resolver esse problema no meu código?
      <?php require_once("core/init.php"); if (Input::exists()) { if (Token::check(Input::get("token"))) { $validate = new Validate(); $validation = $validate->check($_POST, array( "username" => array("required" => true), "password" => array("required" => true) )); if ($validation->passed()) { $user = new User(); $remember = (Input::get("remember")) === "on" ? true : false; $login = $user->login(Input::get("username"), Input::get("password"), $remember); if ($login) { Session::flash("home", "Welcome back!"); Redirect::to("index.php"); } else { echo "Could not log you in."; } } else { foreach ($validation->errors() as $error) { echo $error."<BR>"; } } } } ?> <form action="" method="POST"> <div class="field"> <label for="username">Username</label> <input type="text" name="username" id="username"> </div> <div class="field"> <label for="password">Password</label> <input type="password" name="password" id="password"> </div> <div class="field"> <label for="remember"> <input type="checkbox" name="remember" id="remember"> Remember me </label> </div> <input type="hidden" name="token" value="<?php echo Token::generate(); ?>"> <input type="submit" value="Log in"> </form>  
       
      Desde já obrigado.
    • Por ckcesar
      Eu tenho uma aplicação no zend com a versão 5.6 e com o postgresql 9.6. Agora eu precisei mudar a versão do meu postgresql para o 16.1, a parte de conexão do bd e consultas sqls funciona perfeitamente, o meu problema está para acessar os meus controllers. Eles não são encontrados em nenhuma rota, quero ver se alguém já passou por esse problema para me ajudar. Obrigado.
×

Informação importante

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