2 отправляет 1 Работающий тот же код?

#php #html

#php #HTML

Вопрос:

Итак, у меня есть 2 кнопки отправки, несмотря ни на что, даже если я удалю весь код из неработающей кнопки, я получу ошибку 403, запрещенную, но вторая кнопка отправки работает…

Вот мой html / php код для кнопок:

 <form action="buy.php?id=<?php echo $id; ?>" method="POST">
<input type="email" class="form-control" name="email" placeholder="Email" required>
<br>
<p></p>
<?php if($row['pp'] == 1){
echo '
<input type="submit" class="btn btn-primary" value="Pay with Paypal" name="pp">';
} ?>
<p></p>
<?php if($row['btc'] == 1){
echo '
<input type="submit" class="btn btn-info" value="Pay with Bitcoin" name="btc">';
} ?></form>
  

Код для кнопок:

 if(isset($_POST['btc'])){
    $email = htmlentities($_POST['email'], ENT_QUOTES);
    $stmt = $db->prepare("INSERT INTO invoices (itemid, username, email, price, status, type) VALUES (:itemid, :username, :email, :price, :status, :type)");
    $stmt->execute(array(':itemid' => $id, ':username' => $row['username'], ':email' => $email, ':price' => $row['price'], ':status' => "awaiting", ':type' => "btc"));
    $id = $db->lastInsertId();
    $stmt = $db->prepare("SELECT * FROM invoices WHERE id = :id");
    $stmt->execute(array(':id' => $id));
    $row2 = $stmt->fetch();
}
  

Разница только в том, где btc является его pp для сломанной кнопки.

Комментарии:

1. Из этого я действительно не понимаю, что произойдет, если вы отправите с помощью кнопки pp.

2. Ничего, он просто переходит к запрещенному доступу 403.

3. … и где вы объявляете свои входные параметры ( $id , $row -array и т. Д.), Которые вы используете в своих db-запросах и в строке запроса? Вам нужно показать нам соответствующий код, а не только фрагменты.

Ответ №1:

<input type="submit" class="btn btn-info" value="Pay with Bitcoin" name="btc"> Будет работать только потому, что в вашем php-коде вы публикуете только это <input type="submit" class="btn btn-info" value="Pay with Bitcoin" name="btc">

Для достижения вашей цели,

Используйте одно и то же имя для обеих кнопок, но с разным значением для каждой.

 <input type="submit" class="btn btn-primary" value="Pay with Paypal" name="btnPay">
<input type="submit" class="btn btn-info" value="Pay with Bitcoin" name="btnPay">
  

Затем в вашем php-файле:

 <?php

  if(isset($_POST['btnPay'])){
    if($_POST['btnPay'] == "Pay with Paypal"){
      //code for paypal payment
    }
    else if($_POST['btnPay'] == "Pay with Bitcoin"){
      //code for bitcoin payment
    }
  }

?>
  

Комментарии:

1. … или просто иметь скрытое поле с btc или pp в качестве значения, вместо сравнения меток кнопок в серверной части (метки меняются, и код ломается).

2. Для OP это зависит от того, какой подход он намеревается использовать.

3. Спасибо, что исправили это.

4. Что ж, его метод явно не сработал, так почему бы не порекомендовать лучший подход? 🙂

5. Подождите, теперь он не вставляется в базу данных с тем, что он вставлял раньше.