Ir para conteúdo
Biel.

pegar ref da url

Recommended Posts

Olá pessoal.pagina1 está assim pagina1.php?ref=444 e a página2 está em branco. Quando submit for pressionado quero pegar ref da pagina1 que está na url e exibir na url da pagina2 ficando assim -> pagina2.php?ref=444

...

Está é a pagina1

<?php
@$ref = $_GET['ref'];
$sqlVF = mysqli_query($ggCon, "SELECT  *  FROM  tab_aprendiz WHERE ref='".$ref."'    ");
while($ggLinha = mysqli_fetch_array($sqlVF)):
@$ref = $ggLinha['ref'];  
endwhile;
?>

<?php if(isset($_POST["MM_ACAO"])){?> 
<?php
@$ref  =  $_POST['ref'];
@$email   = $_POST['email']; 
@$nome = $_POST['nome']; 
?>

<?php 
$ggSql = mysqli_query($ggCon, "INSERT INTO  tab_aprendiz (	
nome  
)VALUES(
'".$nome."'
)");
?> 

<?php
header("Location: pagina2.php?ref=".$ref);
?>
     
<?php }?>  

<?php $phpSelf = $_SERVER['PHP_SELF'];?>
<form action="<?php echo $phpSelf;?>" method="post" name="form1" >
nome <input type="text" required  name="nome" value="joao"  />
<input type="submit" name="MM_ACAO"   value="Cadastrar" />
</form>

<a href="pagina1.php?ref=444">Acessar página1</a>

...

esta é a página2 e está em branco . 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou te mostrar a função mais últil do PHP: var_dump

Com ela você testar qualquer informação existente ou não, com erros ou não

Se clicado no link da tag <a> em pagina1.php:

var_dump($_GET); // Tudo que existe na super global GET

Se submetido o formulário 

var_dump($_POST); // Tudo que existe na super global POST

 

Para que haja redirecionamento na tag <a> o atributo deve possuir na propriedade o endereço do arquivo pagina2.php

Para que haja redirecionamento na tag <form> e os valores dos elementos do formulário possam está na url, basta apenas alterar o protocolo de método substituindo post por get.

 

Apenas para manipular o endereço da barra de navegação do usuário, leia seu tópico anterior pois respondi lá com o link da API que gerencia essa ação.

 

Obs.: Não aconselhável manipular dados no servidor usando GET, apenas use para passar informações de referência, nunca para validação de dados.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estudado o seu código, encontrei duas tarefas entrelaçadas, uma é para procurar informação de uma referência através do marcador <a>, e outra tarefa é fazer um novo cadastro e ao mesmo tempo verificar se ele foi cadastrado. Deixei o marcador <a> de lado, e dei mais atenção ao novo cadastro:

 

pagina1.php

<?php
// mysql tab_aprendiz(id int,ref int,nome varchar,email)
// (1,444,Frank,frank@com)(2,445,Biehl,biel@com)
$ggCon=new mysqli("localhost","root","","laravel");
if(isset($_POST['ref'])){
    $ref=$_POST['ref'];
    $email=$_POST['email'];
    $nome=$_POST['nome'];
    mysqli_query($ggCon,"insert into tab_aprendiz (ref,nome,email)  
        values ('$ref','$nome','$email')");}
echo "<h2>Lista dos delinquentes</h2>";
echo "<table><th>Ref<th>Nome";
$sqlVF=mysqli_query($ggCon,"select * from tab_aprendiz");
while($ggLinha= mysqli_fetch_array($sqlVF)):
    $ref=$ggLinha['ref'];
    $nome=$ggLinha['nome'];
    echo "<tr><td>$ref<td>$nome";
endwhile;
echo "</table>";
?>
<p><h2>Formulário para Cadastrar Novo Delinquente</h2></p>
<form method=post>
<table>
<tr><td>referencia<td><input name="ref" required>
<tr><td>nome<td><input name="nome" required>
<tr><td>email<td><input name="email" required>
<tr><td><input type=submit>
</form>

E aqui está o código que usa o marcador <a> de maneira mais eficiente:

pagina2.php

<?php
$ggCon=new mysqli("localhost","root","","laravel");
if(isset($_GET['ref'])){
    $ref=$_GET['ref'];
    $sqlVF=mysqli_query($ggCon,"select * from tab_aprendiz where ref=$ref");
    $nome=mysqli_fetch_array($sqlVF)['nome'];
    echo "o nome do delinquente com ref $ref é $nome";
}
echo "<p>Escolha o código de um delinquente:";
$sqlVF=mysqli_query($ggCon,"select * from tab_aprendiz");
while($ggLinha= mysqli_fetch_array($sqlVF)):
    $ref=$ggLinha['ref'];
    echo "<br><a href=?ref=$ref>$ref</a>";
endwhile;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só para complementar o tópico do colega que no geral postou algo simplificado, mas devo acrescentar em caso do leigo compreender que pode ser executado algo assim.

Lembrando que no exemplo ou na condição de simplificação do aprendizado não há problemas.

11 horas atrás, Frank K Hosaka disse:

$ref=$_POST['ref'];

Armazena o valor que atribuído ref que veio no protocolo não se sabe de quem ou de onde nem mesmo se foi seu formulário que enviou.

O php vai armazenar na variável $ref sem problemas escapando qualquer codec.

O problema é se usar instrução como essa em uma aplicação pronta e operando:

11 horas atrás, Frank K Hosaka disse:

$sqlVF=mysqli_query($ggCon,"select * from tab_aprendiz where ref=$ref");

Veja e $ref entrou na string de comando sem tratamento algum, sem mencionar o perigo ao banco de dados apenas atentarei em uma quebra de código, tal finalizando o php na linha e imprimindo todo o código fonte processado pelo php, isso inclui dados de acesso em geral que a aplicação está usando no momento.

 

Por fim, como mencionado não há problemas em usar, se for no termos de simplificar um exemplo, um teste ou para prover a curva do aprendizado, pois você sabe que é você que está enviando, e sabe o que está enviando.

Nosso colega não errou em passar a var direto na string, pois o tratamento de dados requer um refino bem apurado de acordo com a situação e não cabe em um só post.

 

Complementando meu post anterior havia me esquecido:

17 horas atrás, Omar~ disse:

Para que haja redirecionamento na tag <form> e os valores dos elementos do formulário possam está na url, basta apenas alterar o protocolo de método substituindo post por get

<form method="get" action="pagina2.php">
  <input type="text" name="envio" value="exemplo" />
  <button type="submit">Enviar</button>
</form>

<--
    Tag's form não utilizam a atributo "name", somente seus componentes
    No atributo "action" você indica para onde os dados devem ser enviados (forneça o endereço se necessário)
    Submetendo o formulário teremos na url pois enviamos pelo GET e não POST:
        endereço http atual/pagina2.php?envio=exemplo
        Pode ser relativo dependendo das configurações do apache ou um htaccess
-->

O arquivo pagina2.php recebe a mesma coisa sem o uso do formulário, pode-se até digitar na barra de navegação que vai do mesmo jeito.

 

<a href="pagina2.php?envio=exemplo">Enviar</a>

POST também pode ser enviado, de forma arbitrária, só que não convém apresentar as formas necessárias para isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não faço tratamento nenhum em nenhuma variável, pois eu confio no PHP. O PHP me devolve uma mensagem de erro ou simplesmente eu chego num resultado inesperado. Veja esse caso:

 

$mysqli=new mysqli("localhost","root","","laravel");

 

Eu não vejo para quê fazer um tratamento de erro nesse caso. Se o PHP não conseguir fazer a conexão, ele simplesmente pára o programa e exibe a mensagem de erro. No meu caso, o erro é quase 100% erro de digitação.

 

Claro que o correto é fazer tratamento de erro para orientar o usuário e ajudá-lo a não perder o seu dia de produção, mas isso está muito além do escopo de qualquer fórum. Eu entendo que a prioridade do forum é ajudar o usuário a se familizar com a gramática da linguagem de programação e mostrar o que é possível fazer com ela, deixando de lado os detalhes acadêmicos.

Compartilhar este post


Link para o post
Compartilhar em outros sites
8 horas atrás, Frank K Hosaka disse:

Eu não vejo para quê fazer um tratamento de erro nesse caso.

Em produção pode expor dados sensíveis.
Tratando o caso de algum erro, você pode exibir uma mensagem mais genérica, que não dê dicas para potenciais invasores.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Biel.
      Olá pessoal. Ao digitar um texto qualquer no input e pressionar submit o valor do atributo href é alterado temporariamente. Como alterar permanentemente no corpo do documento  o valor do atributo href, digitando um nome de link qualquer no campo input e em seguida submit ?
      <!DOCTYPE html> <html> <head> <style> input { width: 100%; font-size: 20px; } textarea { width: 100%; font-size: 16px; height: 200px; } .class88 { margin-top: 50px; padding: 10px; max-width: 100px; } </style> </head> <body> <h2> alterar valor do atributo href</h2> digite um texto qualquer <input type="text" class="class42" value=""> <a id="linkToChange" href="teste5.php" class="class43"></a> <input type="submit" class="class88" value="enviar" onclick="alterarHref()"> <script> function alterarHref() { // pega o valor da class42 var valorDaclass42 = document.querySelector('.class42').value.trim(); // altera o valor do atributo href para o valorDaclass42 sugerido document.querySelector('.class43').setAttribute('href', valorDaclass42); console.log("Href alterado:", valorDaclass42); } </script> </body> </html>  
    • Por Biel.
      Olá pessoal. BannerA está funcionando normalmente. Como usar mesmo script para bannerB e bannerC.
      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Banner Aleatório</title> <style> /* Estilos opcionais para o banner */ #divPai { margin: auto; border: 2px solid red; } #bannerA { width: 240px; height: 480px; overflow: hidden; position: relative; } #bannerA img { width: 100%; height: auto; position: absolute; top: 0; left: 0; transition: 1.5s ease-in; } #bannerA img.active { opacity: 1; } </style> </head> <body> <div id="divPai"> <div id="bannerA" class="bannerA"> <a href="link1"><img src="image1.jpg" alt="Imagem 1"></a> <a href="link2"><img src="image2.jpg" alt="Imagem 2"></a> <a href="link3"><img src="image3.jpg" alt="Imagem 3"></a> </div> <!-- <hr> <div id="bannerB" class="bannerB"> <a href="link4"><img src="image4.jpg" alt="Imagem 4"></a> <a href="link5"><img src="image5.jpg" alt="Imagem 5"></a> <a href="link6"><img src="image6.jpg" alt="Imagem 6"></a> </div> <hr> <div id="bannerC" class="bannerC"> <a href="link7"><img src="image7.jpg" alt="Imagem 7"></a> <a href="link8"><img src="image8.jpg" alt="Imagem 8"></a> <a href="link9"><img src="image9.jpg" alt="Imagem 9"></a> </div> --> </div> <hr> <script> document.addEventListener("DOMContentLoaded", function() { // var banner = document.getElementById("divPai"); // var images = banner.querySelectorAll("img"); var images = document.querySelectorAll("#bannerA img"); // Função para exibir uma imagem aleatória function showRandomImage() { // Escolhe aleatoriamente um índice de imagem var randomIndex = Math.floor(Math.random() * images.length); // Define todas as imagens como ocultas images.forEach(function(img) { img.style.display = "none"; }); // Exibe a imagem aleatória images[randomIndex].style.display = "block"; } // Chama a função inicialmente e define um intervalo para exibir novas imagens a cada 3 segundos showRandomImage(); setInterval(showRandomImage, 1000); // makeSliderKind('.bannerA', 1000); // makeSliderKind('.bannerB', 2000); // makeSliderKind('.bannerC', 3000); }); </script> </body> </html>  
    • Por Biel.
      Olá pessoal. O banner abaixo está funcionando e o link acompanha o banner, até aqui tudo ok ! Quero muito fazer uma transição suave entre uma image e outra, colocando as propiedades e valores no css ou diretamente no javascript e nada de propiedades e valores no html através do style . Se possível coloque no código somente o que precisa . Obrigado!
      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Banner</title> <style> /* Estilos opcionais para o banner */ .banner { width: 240px; height: 480px; overflow: hidden; position: relative; } .banner img { width: 100%; height: auto; position: absolute; top: 0; left: 0; transition: 1.5s ease-in; } .banner img.active { opacity: 1; } </style> </head> <body> <div class="banner" id="banner"> <a href="link1" class="ggg"><img src="image1.jpg" alt="Imagem 1"></a> <a href="link2" class="ggg"><img src="image2.jpg" alt="Imagem 2"></a> <a href="link3" class="ggg"><img src="image3.jpg" alt="Imagem 3"></a> <a href="link4" class="ggg"><img src="image4.jpg" alt="Imagem 4"></a> <a href="link5" class="ggg"><img src="image5.jpg" alt="Imagem 5"></a> </div> <script> document.addEventListener("DOMContentLoaded", function() { var banner = document.getElementById("banner"); var images = banner.querySelectorAll("img"); // Função para exibir uma imagem aleatória function showRandomImage() { // Escolhe aleatoriamente um índice de imagem var randomIndex = Math.floor(Math.random() * images.length); // Define todas as imagens como ocultas images.forEach(function(img) { img.style.display = "none"; }); // Exibe a imagem aleatória images[randomIndex].style.display = "block"; } // Chama a função inicialmente e define um intervalo para exibir novas imagens a cada 3 segundos showRandomImage(); setInterval(showRandomImage, 3000); }); </script> </body> </html>  
       
    • Por Biel.
      Olá pessoal. O banner abaixo está funcionando normalmente, mas a transição entre uma imagem e outra está um tanto truculenta. Quero deixar suave. Como resolver isso? Obrigado !
      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>transition suave entre uma image e outra</title> <style> #banner { width: 240px; height: 480px; overflow: hidden; position: relative; } #bannerGG { width: 100%; height: auto; position: absolute; top: 0; left: 0; opacity: 0; transition: opacity 1s ease-in-out; } /* #tete:active { opacity: 1; } */ </style> </head> <body> <div id="banner"> <img class="bannerGG" src="imagem1.png" alt="Image 1"> <img class="bannerGG" src="imagem2.png" alt="Image 2"> <img class="bannerGG" src="imagem3.png" alt="Image 3"> <img class="bannerGG" src="imagem4.png" alt="Image 4"> <img class="bannerGG" src="imagem5.png" alt="Image 5"> </div> <script> const image = document.querySelectorAll('.bannerGG'); const banner = document.getElementById('banner'); function showRandomImage() { const randomIndex = Math.floor(Math.random() * image.length); const randomImage = image[randomIndex]; const imgElement = document.createElement('img'); imgElement.src = randomImage.src; const linkElement = document.createElement('a'); linkElement.appendChild(imgElement); banner.innerHTML = ''; banner.appendChild(linkElement); } showRandomImage(); setInterval(showRandomImage, 3000); </script> </body> </html>  
    • Por Biel.
      Olá pessoal. O banner abaixo está funcionando, mas quero que o link do banner venha da tag a  e não do javascript . Como resolver? 
      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Mostrar link do banner que está na tag a</title> <style> #banner { width: 240px; height: 480px; overflow: hidden; position: relative; } .banner-img { width: 100%; height: 100%; object-fit: cover; position: absolute; /* opacity: 0; */ transition: opacity 0.5s ease-in-out; } .banner-link { display: block; width: 100%; height: 100%; } </style> </head> <body> <div id="banner"> <a href="link147"><img class="banner-img" src="imagem1.png" alt="Image 1"></a> <a href="link254"><img class="banner-img" src="imagem2.png" alt="Image 2"></a> <a href="link350"><img class="banner-img" src="imagem3.png" alt="Image 3"></a> <a href="link462"><img class="banner-img" src="imagem4.png" alt="Image 4"></a> <a href="link538"><img class="banner-img" src="imagem5.png" alt="Image 5"></a> </div> <script> const images = document.querySelectorAll('.banner-img'); const banner = document.getElementById('banner'); function showRandomImage() { const randomIndex = Math.floor(Math.random() * images.length); const randomImage = images[randomIndex]; const imgElement = document.createElement('img'); imgElement.src = randomImage.src; imgElement.alt = randomImage.alt; imgElement.classList.add('banner-img'); const linkElement = document.createElement('a'); // linkElement.appendChild(imgElement); linkElement.href = randomImage.href; linkElement.classList.add('banner-link'); linkElement.href = "page" + (randomIndex + 1) + ".html"; // Link para cada imagem linkElement.appendChild(imgElement); banner.innerHTML = ''; banner.appendChild(linkElement); } showRandomImage(); setInterval(showRandomImage, 1000); </script> </body> </html> Resolvido,  Obrigado a todos !
×

Informação importante

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