Как мне передать данные POST в дескриптор JavaScript в формате валюты? Полоса проверки

0

У меня есть форма Stripe, я пытаюсь добавить дисплей для суммы покупки:

data-description="<?php echo $_POST['plan']; ?>"

но выше выдает ошибки на дисплее "уведомление неопределенных переменных", даже с isset.

Следующий код работает без ошибок, за исключением случаев, когда я пытаюсь выполнить эхо-данные POST.

<form action="pages/scharge.php" method="post">
    <div>

        <input type="radio" name="plan" value="2500"> Beta membership <br>
        <input type="radio" name="plan" value="3500"> VIP membership <br>

    </div>
    <div>

                <label for="plan"> If you would like to pay another amount, enter the amount here:</label>
                <input type="text" name="plan" />
                <label for="invoice_num"> Enter the invoice number here:</label>
                <input type="text" name="invoice_num" />

        </div>
        <div>
        <script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
                data-key="<?php echo $stripe['publishable_key']; ?>"
                data-amount="<?php if(isset($_POST['plan'])); echo $_POST['plan']; ?> " data-description=" ">
        </script>

        </div>
</form>

Как бы я отбросил данные POST в data-description = "" в формате валюты (полоса составляет 18,00 долл. США = 1800), чтобы клиенты могли видеть нужную сумму до нажатия покупки?

  • 1
    if(isset($_POST['plan'])); На самом деле означает «Если установлено $ _POST ['plain'], то ничего не делать».
  • 0
    @briosheje, просто повторяя это, выводит исключение «неверное целое число» в коде оформления заказа. По счастливой случайности, isset исправил эту ошибку и позволил ей перенести эти данные POST в мой файл scharge.php.
Показать ещё 3 комментария
Теги:
post
stripe-payments

1 ответ

0

Это должно работать:

data-description="<?php 
  if (isset($_POST['plan'])) echo htmlspecialchars($_POST['plan']);
?>"

Обратите внимание: нет ; после if (isset($_POST['plan'])). Если вы поставили точку с запятой, PHP интерпретирует эту точку с запятой как (пустой) оператор, который предполагается условно выполнить if.

Если вы чувствуете смущение о точках с запятой, другой, возможно, более безопасный способ написания:

data-description="<?php 
  if (isset($_POST['plan'])) {
      echo htmlspecialchars($_POST['plan']);
  }
?>"

Здесь вы можете включить столько операторов, сколько хотите (разделенных точкой с запятой) между фигурными фигурными скобками, и все они будут выполнены только в том случае, если установлен $_POST['plan']. Убедитесь, что между условием if и {, хотя и не существует точки с запятой.

Также обратите внимание на htmlspecialchars(). Без этого ваш код широко открыт для атак межсайтового скриптинга (XSS), причем злоумышленник переходит в параметр типа plan="><script>alert("XSS");//.

Каждый раз, когда вы вставляете строку (которая не должна анализироваться как HTML-код) в ваш вывод HTML, вы всегда должны избегать ее с помощью htmlspecialchars(). Предпочтительно, сделайте это, даже если вы уверены, что строка не может содержать символы, которые могут быть проанализированы как разметка HTML; это просто хорошая привычка и может спасти ваш код от взлома, если вы когда-нибудь решите изменить строку позже.

  • 0
    @IImari Karonen по-прежнему не выводится, используя следующий код bpaste.net/show/a555f275456f
  • 0
    @mine: Как выглядит вывод HTML? Вы на самом деле получаете пустой атрибут data-description , но непустой data-amount ?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню