私はPHPでPayPalの統合ページを開発しました。支払いと成功のページも機能していますが、私はユーザーのメールを受け取っていません。PHPでユーザーの詳細を取得する方法
home.phpページ
<?php
ob_start();
session_start();
require_once 'dbconfig.php';
error_reporting(0);
// if session is not set this will redirect to login page
if(!isset($_SESSION['user_id'])) {
header("Location: index");
exit;
}
$user_id=$_SESSION['user_id'];
$row=mysqli_fetch_array(mysqli_query($conn,"select *from `at_reg_user`
where `email`='$user_id'"));
$name=$row['fname'].' ' .$row['lname'];
?>
これは私のページの成功のページです
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="YYHR897NQVQCY">
<input type="image" src="https://www.sandbox.paypal.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.sandbox.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
home.phpページで
のPayPalボタン:私は、電子メールを印刷しようとすると
<?php
include 'dbconfig.php';
ob_start();
session_start();
if(!isset($_SESSION['user_id'])) {
header("Location: index");
exit;
} else {
$user_id = $_SESSION['user_id'];
$row = mysqli_fetch_array(mysqli_query($conn, "select * from `at_reg_user` where `email`='$user_id"));
$email = $row['email'];
}
$txn_id = $_GET['tx'];
$payment_gross = $_GET['amt'];
$currency_code = $_GET['cc'];
$payment_status = $_GET['st'];
if($_GET['st']=="Completed") {
$txn_id = $_GET['tx'];
$payment_gross = $_GET['amt'];
$currency_code = $_GET['cc'];
$payment_status = $_GET['st'];
//select statement for disabling user to perform back button
$result = mysqli_fetch_array(mysqli_query($conn, "SELECT txn_id FROM `payments` where `txn_id`='$txn_id'"));
if ($result > 0) {
echo("<SCRIPT LANGUAGE='JavaScript'>
window.alert(' Sorry you have already done payment')
</SCRIPT>");
} else {
$query = mysqli_query($conn, "INSERT INTO `payments`(`txn_id`, `payment_gross`, `currency_code`, `payment_status`) VALUES ('$txn_id','$payment_gross','$currency_code','$payment_status')");
if ($query) {
echo $email;
echo "<br/>";
echo $txn_id;
echo "<br/>";
echo $payment_gross;
echo "<br/>";
echo $currency_code;
echo "<br/>";
echo $payment_status;
echo "<br/>";
} else {
echo("<SCRIPT LANGUAGE='JavaScript'>
window.alert(' Payment Successful but not inserted')
</SCRIPT>");
}
}
}
echo "<h4>Payment done Successfully. Note down the above transaction details for further assistance </h4>";
header("Refresh:10; url=home");
?>
echo $email
、それは印刷されません。私はemailidを支払いテーブルに挿入する必要があります。
...セキュリティが不足しているサイトにpaypalを統合しましたか?私は本当にこの機能を削除することをお勧めします... http://bobby-tables.com SQLインジェクションとそれらを防ぐ方法について学びます。実際、誰もが数秒でサイト全体をハックすることができます。準備されたステートメントを使用してはいけません。絶対にクエリーにGETまたはPOST変数を直接入れないでください!特にあなたがpaypalを扱っていないなら!!申し訳ありませんが、それは私を狂ってしまう...あなたがそこでやっていることは極端に危険です!あなたはそのようなことのために大きなトラブルに陥ることがあります... – Twinfriends
@Twinfriends私は私がmysqliでPDOを準備することを学ばなければならないと思います –
あなたはものを混ぜています。準備されたステートメントは、あなたの倉庫を安全に保つ方法です。 PDOとmysqliは、データベースを照会するための2つの異なるドライバです。ですから、PDOドライバを使ってPreparedステートメントを学ぶか、mysqliドライバを使って準備されたステートメントを学習するかのどちらかですが、存在しない "mysqliを持つPDO準備ステートメント"はありません。 PDOとmysqliを同時に使用することはできません。 – Twinfriends