За последние 24 часа нас посетили 34690 программистов и 1695 роботов. Сейчас ищут 892 программиста ...

Помогите с кодом пожалуйста

Тема в разделе "PHP для новичков", создана пользователем DimaBLR, 14 май 2017.

  1. DimaBLR

    DimaBLR Новичок

    С нами с:
    20 фев 2017
    Сообщения:
    16
    Симпатии:
    0
    Всем привет. Помогите новичку с уже готовым кодом. Нужно просто лишь понять что и куда вставить.
    В общем, на WordPress реализован баланс пользователя (через плагин WP-Recall) и его пополнение. Также в виде плагина реализовано списание с баланса некой суммы в виде кнопки и код этого плагина выглядит так:
    PHP:
    1. <?php
    2. /*
    3. Plugin Name: Оплата (списание) с баланса клиента
    4. Plugin URI:
    5. Description: Списание денег за генерацию pdf документа
    6. Version: 1.1.1
    7. Author: noname
    8. Author URI:
    9. Example: [oplati5r]5[/oplati5r]
    10. */
    11.  
    12. class oplati5r
    13. {
    14.     var $options = array(
    15.         "zashchita" => "JU69Bni6um"
    16.     );
    17.     function oplati5r(){
    18.         if (!function_exists ('add_shortcode') ) return;
    19.         add_shortcode('oplati5r', array (&$this, 'pay_func') );
    20.     }
    21.     function pay_func($atts, $summa=5) {
    22.         if ($summa<=0)
    23.             return '';
    24.         $user = wp_get_current_user();
    25.         $uid = ( isset( $user->ID ) ? (int) $user->ID : 0 );
    26.         if (isset($_POST['kodovoe_slovo'])) {
    27.             if (!$uid) $html = '<span style="color:red">Вы не авторизованы для оплаты</span>';
    28.             elseif  ($_POST['kodovoe_slovo']!=md5($uid.$summa.$options['zashchita'])) $html = '<span style="color:red">Ошибка отправки формы</span>';
    29.             else {
    30.                 global $wpdb;  
    31.                 $balans = $wpdb->get_var("SELECT user_balance FROM wp_rmag_users_balance WHERE user_id = '".$uid."' ");
    32.                 if ($balans<$summa) $html = '<span style="color:red">У вас недостаточно средств ('.$balans.' USD). Пополните баланс</span>';
    33.                 else {
    34.                     $wpdb->query("UPDATE wp_rmag_users_balance SET user_balance = ".( floatval($balans)-floatval($summa) )." WHERE user_id = '".$uid."' ");
    35.                     $to = get_bloginfo('admin_email');
    36.                             $subject = 'oplata 5 rubley';
    37.                             $message = "Пользователь с логином " .$user->user_login . " оплатил ".$summa." с баланса ".$balans.
    38.                             "<br>Код проверки платежа RAzc329mYD";
    39.                             wp_mail( $to, $subject, $message);
    40.             $html = '<span style="color:green">Оплата принята</span>';
    41.                    
    42.                 }
    43.             }
    44.         }
    45.         return $html.'<form action="" method="post">
    46.        <input type="hidden" name="kodovoe_slovo" value="'.md5($uid.$summa.$options['zashchita']).'">
    47.        <input type="submit" value="Оплатить '.$summa.' USD и сгенерировать PDF документ ">
    48.        </form>';
    49.     }
    50. }
    51. $oplati5r = new oplati5r();
    52. ?>



    Этот код работает, НО он выводит кнопку "Оплатить 5 руб" тегами [oplati5r]5[/oplati5r] в тексте страницы WordPress. Как это чудо встроить в мою страницу, которая выглядит так:

    PHP:
    1. <form action="<?php echo get_template_directory_uri()?>/action.php" method="post"><ul>        
    2.             <div class="i589">1. Alien Registration Number(s) (A-Number) (if any) <span class="tooltip anim" tabindex="0">???<span>Номер Alien это номер который вводится из какого-то документа и находится этот номер где-то там. <br><b>Более подробно на примере ниже:</b> <br> <img src="<?php echo get_template_directory_uri()?>/1.jpg" alt="Фотоподсказка"> </span></span><input class="u-full-width" type="text" placeholder="Alien номер" name="val1" id="alien" required ></div> <br>
    3.             <div class="i589">2. U.S. Social Security Number (if any) <span class="tooltip anim" tabindex="0">???<span>Номер SSN это номер который вводится из какого-то документа и находится этот номер где-то там. <br><b>Более подробно на примере ниже:</b> <br> <img src="<?php echo get_template_directory_uri()?>/2.jpg" alt="Фотоподсказка"> </span></span> <input class="u-full-width" type="text" placeholder="Соушел номер" name="val2" id="ssn" required > </div> <br>
    4.             <div class="i589">3. Complete Last Name <span class="tooltip anim" tabindex="0">???<span>Номер Alien это номер который вводится из какого-то документа и находится этот номер где-то там. <br><b>Более подробно на примере ниже:</b> <br> <img src="1.jpg" alt="Фотоподсказка"> </span></span><input class="u-full-width" type="text" placeholder="Фамилия" name="val3" id="exampleEmailInput" required pattern="^[a-zA-Z]+$" title="Вы обязаны написать фамилию ТОЛЬКО на латинском языке"> </div> <br>
    5.             <div class="i589">4. First Name <span class="tooltip anim" tabindex="0">???<span>Номер Alien это номер который вводится из какого-то документа и находится этот номер где-то там. <br><b>Более подробно на примере ниже:</b> <br> <img src="1.jpg" alt="Фотоподсказка"> </span></span><input class="u-full-width" type="text" placeholder="Имя" name="val4" id="exampleEmailInput" required pattern="^[a-zA-Z]+$" title="Вы обязаны написать фамилию ТОЛЬКО на латинском языке"> </div> <br>
    6.             <div class="i589">5. Middle Name <span class="tooltip anim" tabindex="0">???<span>Номер Alien это номер который вводится из какого-то документа и находится этот номер где-то там. <br><b>Более подробно на примере ниже:</b> <br> <img src="1.jpg" alt="Фотоподсказка"> </span></span><input class="u-full-width" type="text" placeholder="Отчество" name="val5" id="exampleEmailInput" required pattern="^[a-zA-Z]+$" title="Вы обязаны написать фамилию ТОЛЬКО на латинском языке"> </div> <br>
    7.             <textarea class="u-full-width" type="text" placeholder="Бла бла" rows="10" cols="45" name="val6"></textarea>
    8.             </ul>
    9.             <br>Галочка или крестик там где есть (к примеру там где выбор пола Gender)
    10.             <input class="u-full-width" type="checkbox" name="val7" option="xxx" id="exampleEmailInput">
    11.            
    12.             <br><input type="submit" value="Оплатить 5руб и сгенерировать Pdf форму I-589">

    То еть проще говоря мне нужно чтобы после ввода данных клиентом, при нажатии на кнопку "Оплатить 5руб и сгенерировать Pdf форму I-589" сразу выполнялся и action.php и происходило списание с баланса . И без всяких тегов типа как тут [oplati5r]5[/oplati5r]. В общем говоря проще как это всё объеденить

    Заранее всем спасибо !
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  3. DimaBLR

    DimaBLR Новичок

    С нами с:
    20 фев 2017
    Сообщения:
    16
    Симпатии:
    0
    ну это не совсем то. Попробую переформулировать вопрос:
    Вот у меня есть простая форма action form:

    PHP:
    1. <form action="action.php" method="POST">
    2. <br/><input type="radio" name="answer" value="a1">Кнопка один
    3. <br/><input type="radio" name="answer" value="a2">Кнопка два
    4. <br/><input type="text" name="login" style="width:400px;" value="Значение по умолчанию">
    5. <br/><input type="submit" value="OK">
    6. </form>

    А вот у меня плагин рукописный установлен на списание суммы с клиента:
    PHP:
    1. <?php
    2.  
    3. class oplati5r
    4. {
    5.     var $options = array(
    6.         "zashchita" => "JU69Bni6um"
    7.     );
    8.     function oplati5r(){
    9.         if (!function_exists ('add_shortcode') ) return;
    10.         add_shortcode('oplati5r', array (&$this, 'pay_func') );
    11.     }
    12.     function pay_func($atts, $summa=5) {
    13.         if ($summa<=0)
    14.             return '';
    15.         $user = wp_get_current_user();
    16.         $uid = ( isset( $user->ID ) ? (int) $user->ID : 0 );
    17.         if (isset($_POST['kodovoe_slovo'])) {
    18.             if (!$uid) $html = '<span style="color:red">Вы не авторизованы для оплаты</span>';
    19.             elseif  ($_POST['kodovoe_slovo']!=md5($uid.$summa.$options['zashchita'])) $html = '<span style="color:red">Ошибка отправки формы</span>';
    20.             else {
    21.                 global $wpdb;  
    22.                 $balans = $wpdb->get_var("SELECT user_balance FROM wp_rmag_users_balance WHERE user_id = '".$uid."' ");
    23.                 if ($balans<$summa) $html = '<span style="color:red">У вас недостаточно средств ('.$balans.')</span>';
    24.                 else {
    25.                     $wpdb->query("UPDATE wp_rmag_users_balance SET user_balance = ".( floatval($balans)-floatval($summa) )." WHERE user_id = '".$uid."' ");
    26.                     $to = get_bloginfo('admin_email');
    27.                             $subject = 'oplata 5 rubley';
    28.                             $message = "Пользователь с логином " .$user->user_login . " оплатил ".$summa." с баланса ".$balans.
    29.                             "<br>Код проверки платежа RAzc329mYD";
    30.                             wp_mail( $to, $subject, $message);
    31.                     $html = '<span style="color:green">Оплата принята</span>';
    32.                 }
    33.             }
    34.         }
    35.         return $html.'<form action="" method="post">
    36.        <input type="hidden" name="kodovoe_slovo" value="'.md5($uid.$summa.$options['zashchita']).'">
    37.        <input type="submit" value="Оплатить '.$summa.' руб">
    38.        </form>';
    39.     }
    40. }
    41. $oplati5r = new oplati5r();
    42. ?>


    И если я в свою action form вместо
    Код (Text):
    1. <input type="submit" value="OK">
    подставляю шорт код из плагина
    Код (Text):
    1. <?php echo do_shortcode( '[oplati5r]8[/oplati5r]' ); ?>
    то кнопка появляется эта из плагина но она не делает проверки на наоичие баланса у пользователя и тупо запускает action.php
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Когда в статьи например вызываешь шорткод кнопки оплаты, то там проверка баланса происходит?
     
  5. DimaBLR

    DimaBLR Новичок

    С нами с:
    20 фев 2017
    Сообщения:
    16
    Симпатии:
    0
    Да, там работает кнопка да и тут даже если вынести php шорт код её за тег </form> то она тоже работает, но тогда уже не запускается form action
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    значит там свой form, задача не такая простая, какие у тебя знания PHP?