Validar o parametro da url

05/12/2017

0

PHP

Olá Pessoal,
Estou utilizando o Projeto boletophp para gerar boleto itau
Preciso consistir se foi mudado os parametros da url
por exemplo:

Quando clico no botão gerar boleto chama a seguinte página
http://www.site.com.br/clientel/boleto/gera_boleto.php?id=1152&c=2391&banco=itau

a Id se refere ao cliente 1152 e ao boleto 2391 que estao em bases distintas.

O que acontece é que depois de mostrar o boleto na tela,
Se eu mudar a id por exemplo para 1151 vai alterar para este outro cliente,
ou se mudar o segundo codigo 2392 ele mostra o outro boleto e muito pior,
mistura o boleto de um cliente com cadastro de outro.

Como posso fazer para bloquear essa mudança ?
Juliana Carneiro

Juliana Carneiro

Responder

Post mais votado

06/12/2017

Em vez de enviar os parâmetros via método GET, envie usando método POST.
Mas imagino que a url para gerar o boleto, seja acessada por um link, nesse caso, substituo o link por um formulário com campos ocultos e com um único botão de submit, algo similar a isso:
<form action="http://www.site.com.br/clientel/boleto/gera_boleto.php" method="post">
    <input type="hidden" name="id" value="1152">
    <input type="hidden" name="c" value="2391">
    <input type="hidden" name="banco" value="itau">
    <button type="submit">Gerar Boleto</button>
</form>


Assim, você pode utilizar o css para formatar o button como um link

Ismael Sousa

Ismael Sousa
Responder

Mais Posts

06/12/2017

Juliana Carneiro

Realmente pensei nisto, mas como estou trabalhando a pouco tempo com php fiquei na dúvida,
hoje esta assim o código.


<?php
// $dado_venc = $recibo->verificaValidade($row[ID]);

//if($recibo->linhas($dado_venc) > 0){?>
<a target="_blank" title="Clique aqui para gerar o boleto Itau " href="<?php echo $baseURL?>/adicional/boleto/gera_boleto.php?id=<?php echo $dados['ID']."&c=".$row['ID']?>&banco=itau" class="btn ui-state-default ui-corner-all">
<span class="ui-icon ui-icon-print"></span>
Gerar Boleto
</a>//
</td>
Responder

06/12/2017

Juliana Carneiro

deu quase tudo certo, deu um erro na consulta do mysql quando mudei para Post

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ID'].' LIMIT 1' at line 1

gera_boleto.php

require_once '../../adm/modulos/imoveis/classes/locacoes.class.php';
$clientes = new Clientes();

require_once("../../adm/classes/configuracoes.class.php");
$cfg = Config::getInstance()->get();
$baseURL = $cfg['baseURL'];

$locacoes = new Locacoes();
$dadosCliente = $clientes->getDados($_POST["id"]);
$dadosCliente["nome"] = utf8_encode($dadosCliente["nome"]);

$dadosRecibo = $locacoes->getDados($_POST["c"]);





switch ($_POST["banco"]){
case "sicredi" : $incfile = "boleto_sicredi.php";
break;
case "itau" : $incfile = "boleto_itau.php";
break;
}
include "$incfile";
?>

Responder

06/12/2017

Ismael Sousa

Você também pode usar a target="_blank" nos formulários.
Quanto ao erro, utilize a função var_dump para ver as variáveis/valores que estão sendo recebidos via POST:

var_dump($_POST);
Responder

06/12/2017

Juliana Carneiro

Você também pode usar a target="_blank" nos formulários.
Quanto ao erro, utilize a função var_dump para ver as variáveis/valores que estão sendo recebidos via POST:

var_dump($_POST);


No painel.php ( onde tem o post para o gerar_boleto.php)

Não estou sabendo passar os dados

o var_dump antes mostra o contéudo correto das variaves antes de chamar o gerar_boleto.php
mas o var_dump no gera_boleto.php mostra que somente "itau" passou, as outras variáves estao em branco

$recibo = new Locacoes();
$lista = $recibo->listaPorCliente($dados['ID']);
while ($row = mysql_fetch_array($lista)){
$pieces = explode("-", $row['data_vencimento']);
$data_venc = $pieces[2]."/".$pieces[1]."/".$pieces[0];


?>
<tr>
<td><?php echo $row['n_documento'];?></td>
<td><?php echo $data_venc;?></td>
<td>
<?php
// aqui conteudo correto
var_dump ($dados);
var_dump ($dados['ID']);
var_dump ($row['ID']);

?>
<form action="http://www.site.com.br/adicional/boleto/gera_boleto.php" method="post">
<input type="hidden" name="id" value=<?php $dados['ID']?>>
<input type="hidden" name="c" value=<?php $row['ID']?>>
<input type="hidden" name="banco" value="itau">
<button type="submit">Gerar Boleto</button>
</form>

gera_boleto.php

var_dump($_POST);
var_dump ($_POST["id"]);
var_dump ($_POST["c"]);
/// mostra o seguinte resultado na pagina
array(3) { ["id"]=> string(0) "" ["c"]=> string(0) "" ["banco"]=> string(4) "itau" } string(0) "" string(0) ""



$locacoes = new Locacoes();
$dadosCliente = $clientes->getDados($_POST["id"]);
$dadosCliente["nome"] = utf8_encode($dadosCliente["nome"]);
$dadosRecibo = $locacoes->getDados($_POST["c"]);


Responder

06/12/2017

Ismael Sousa

Faltou um colocar o echo em
<?php $dados['ID']?>

tente algo como
<input type="hidden" name="id" value="<?php echo $dados["ID"]; ?>">
Responder

06/12/2017

Otavio Merces

Boa tarde, Preciso levantar um site, Já tenho o template. Preciso fazer alterações, adicionar 3 sistemas de pagamento, e fazer um menu dentro do site com algumas informações. Preciso adicionar um calculadora não convencional. Preferencia por programadores em MG. Interessados . WHATSAPP - 31 - 996050420
Responder

07/12/2017

Juliana Carneiro


Deu tudo certo agora e ficou bem melhor, pois agora não mostra a ID na url.
Obrigada pela ajuda.

Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar