Не удается опубликовать VAR в другой файл PHP успешно - PullRequest
0 голосов
/ 29 июня 2018

У меня есть php файл A.php содержит форму с именем formA.

formA получает результат, а затем публикует и сохраняет в MYSQL методом php & SQL & traditional HTML form posting.

В одном из полей в formA я хочу опубликовать это значение $amount в другом php-файле B.php. Это потому, что в B.php есть скрытая форма. Я пытался опубликовать это с помощью php-curl метод для дальнейших действий.

В B.php я пытался проверить, могу ли я успешно получить $amount.

Оба print_r($_POST); print_r($_GET); показывают Array ( ) Array ( ), что означает, что не удалось получить amount

Вот мой код:

A.php:

if ($_SERVER["REQUEST_METHOD"] == "POST") {

  // Validate amount
    $input_amount = trim($_POST["amount"]);
    if (empty($input_amount)) {
        $amount_err = "Please enter the amount.";
    } elseif (!ctype_digit($input_amount)) {
        $amount_err = 'Please enter a positive integer value.';
    } else {
        $amount = $input_amount;
    }
//storing to db
 if (empty($CName_err) && empty($Address_err) && empty($amount_err) && empty($Phone_err)) {
        // Prepare an insert statement
        $pdo = Database::connect();
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql = "INSERT INTO donation (CName, Address, Phone, Amount ,Ticket, Purpose) VALUES (?, ?, ?, ? ,?, ?)";

        $q = $pdo->prepare($sql);
        $q->execute(array($CName, $Address, $Phone, $amount ,$Ticket ,$Purpose));
        Database::disconnect();



        //curl part start:  post the `amount`
        $ch = curl_init();

curl_setopt($ch, CURLOPT_URL,"B.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
            "amount=amount,input_amount=input_amount");




// receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$server_output = curl_exec ($ch);

curl_close ($ch);



    header("Location: B.php");
}

}
?>

//Form A -the field that get the `amount` value 

    <div class="form-group <?php echo (!empty($amount_err)) ? 'has-error' : ''; ?>">                             
                                 <label>* Donation amount</label>                    
               <input list="amount" name="amount"  multiple class="form-control"> 
   <datalist id="amount" >
    <option value="100">
    <option value="300">
    <option value="500">
    <option value="1000">
  </datalist>  
                     <span class="help-block"><?php echo $amount_err; ?></span>
                        </div>
....other fields. .... 

B.php:

<?php
print_r($_POST);
print_r($_GET);
    $amount = null;
    if ( !empty($_GET['amount'])) {
        $amount = $_REQUEST['amount'];
    }
     ...later  action....

?>

Как решить эту проблему?

1 Ответ

0 голосов
/ 29 июня 2018

Ваше значение CURLOPT_POSTFIELDS неверно отформатировано и не содержит ожидаемых значений. Кодировка ваших значений должна быть в том, что известно как application/x-www-form-urlencoded. По сути, переменные разделены &.

У Дэвида Уолша есть потрясающий пример здесь .

Ваша строка должна выглядеть примерно так. "amount=".$amount."&input_amount=".$input_amount

...