如何选择网址参数?

时间:2019-05-09 15:03:59

标签: php

因此,我有一个名为biblioteca.php的后台办公室,在这里有一些请求,我可以通过一个名为“ Validar”的按钮来验证它们。该按钮将重定向到这样的页面:http://localhost/pap_16gpsi21/validacao.php?nproposta=87,我可以在其中填写表单并提交。

我想要的是验证与该URL相关的请求。

示例:

我有一个请求,他的电话号码是90,单击“ Validar”,然后将我重定向到类似http://localhost/pap_16gpsi21/validacao.php?nproposta=90的页面,我填写表格并单击“提交”。然后,它更新数据库($updateEstado = "UPDATE propostas SET validacao='Validado'";)中的请求号90

  

biblioteca.php

$selectProp = "SELECT nproposta, prioridade,disponibilidade,validacao,
                      autorizacao,aquisicao,registo,biblioteca,docente 
                FROM propostas 
                ORDER BY nproposta DESC";

$resultado = mysqli_query($ligaBD, $selectProp);

if (mysqli_num_rows($resultado) > 0) {
    // output data of each row
    while($row = mysqli_fetch_assoc($resultado)) {

<td><a class="btn btn-default" href="./validacao.php?nproposta=<?= $row["nproposta"] ?>">Validar</a></td>
  

valida.php

// gets nproposta from propostas
$npropostaLinha = "SELECT nproposta FROM propostas";
$resultado=mysqli_query($ligaBD, $npropostaLinha);
$nproposta = "";
printf($npropostaLinha);
$row = mysqli_fetch_array($resultado,MYSQLI_NUM);
printf("==> ");
print_r($row[0]);
$nproposta = $row[0];   

$insertValidacao = "INSERT INTO validacao 
                            (nproposta,nome_validacao,nif_validacao,
                              email_validacao,preco_validacao) 
            VALUES ($nproposta,'$nome_validacao','$nif_validacao',
                   '$email_validacao','$preco_validacao')"; 

$updateEstado = "UPDATE propostas SET validacao='Validado'";

$resultado = mysqli_query($ligaBD, $insertValidacao);

$resultado = mysqli_query($ligaBD, $updateEstado);

问题是,如果我有3个请求(90,91,92),而我决定仅验证数字91,它将更新第一个数字90。

我也知道这不是最安全的方法,但这只是一个测试。

希望我已明确解释。抱歉,没有语法错误。谢谢

1 个答案:

答案 0 :(得分:1)

您需要对代码进行一些更改,因为我想避免一些逻辑错误。

  1. 您需要定位一个变量,以从SELECT中指定您想要特定的proposta;
  2. 在更新时,您需要指定哪一行,否则将更新数据库中的每条记录;

为此,请转到您的valida.php并添加以下内容:

在最顶部,检查变量是否准备就绪

if (!isset($_POST['nproposta']) || empty($_POST['nproposta'])) {
    //Do here what you desire to stop the script from running. Redirect back if you wish;
    echo "No proposal id was found";
    die;
}

$nPropostaID = $_POST['nproposta'];

一旦有了ID即可定位数据库中的行,请更新查询以考虑这一点;

UPDATE propostas SET validacao='Validado' WHERE nproposta = $nPropostaID

转到您的表单视图,然后在表单中添加以下行

<input type='hidden' value="<?php echo $_GET['nproposta']?>" name="nproposta">

注意:因为您提到您了解SQL注入,所以这是我不愿意进行的测试,但是始终要记住要谨慎对待它们:)我的建议这些查询只是为了帮助您,对于脚本绝对没有好处!