2

このコードの何が問題になっていますか?

理由はわかりますが、ここでフォーマットが台無しになっています。それは次の行です:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

私はここに新しく、すべての助けに感謝しています。ありがとう。

<?php
if(isset($_POST['payment'])){
    require('config.php');
    $ch= curl_init('https://coinbase.com/api/v1/account/generate_receive_address');
    $amount=$_POST['amount'];
    $json=json_encode(array("api_key"=>COINBASE_APIKEY,"address"=>array("callback_url"=>$_SERVER['HTTP_HOST'] . dirname($_SERVER['REQUEST_URI']).'callback.php')));
    curl_setopt($ch, CURLOPT_HTTPHEADERS, array('Content-Type: application/json'));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
    curl_setopt($ch, CURLOPT_POST, 1);
    $jsonreturn=json_decode(curl_exec($ch),true);
    if(is_integer($amount) && $amount>0 && $jsonreturn['callback_url']==$_SERVER['HTTP_HOST'] . dirname($_SERVER['REQUEST_URI']).'callback.php'){
        $mysql=new mysqli(MYSQL_HOSTNAME,MYSQL_USERNAME,MYSQL_PASSWORD,MYSQL_DATABASE);
        $mysql->query("INSERT INTO invoices(Amount, Address) VALUES ('$amount','".$jsonreturn['address']."')");
        $mysql->close();
        header('refresh: 1;url=payment.php?address='.$jsonreturn['address'].'&amount='.$amount);
        exit();
    }else{
        header("refresh: url=payment.php?error=1");
        exit();
    }
}
?>
4

1 に答える 1

3

問題は実際にCURLOPT_HTTPHEADERSは行にあります。(行番号は、PHP コードの行数だけでなく、ファイルの先頭から始まります)

実際の PHP 定数はCURLOPT_HTTPHEADER(単数形) であり、 ではありませんCURLOPT_HTTPHEADERS

PHP が未定義の定数を処理する方法により、警告メッセージが生成され (おそらく構成設定のために隠されています)、未定義の定数を文字列として扱います"CURLOPT_HTTPHEADERS"。 .

更新しました

コードから期待する結果が得られない場合は、次の点を確認してください。

  1. 接続パラメーター - ホスト名、ユーザー名、パスワードなどはどこから来たのですか? あなたはそれらが正しいと確信していますか。

  2. 変数値をクエリに挿入する前に、変数値を適切にエスケープしていません。値に引用符があると、問題が発生します。echoクエリを実行する代わりに SQL を試してから、データベースに対して手動で実行してみてください。また、代わりに準備済みステートメントの使用を検討することを強くお勧めします。

于 2013-06-22T06:14:49.107 に答える