2017-04-27 20 views
0

私は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を支払いテーブルに挿入する必要があります。

+3

...セキュリティが不足しているサイトにpaypalを統合しましたか?私は本当にこの機能を削除することをお勧めします... http://bobby-tables.com SQLインジェクションとそれらを防ぐ方法について学びます。実際、誰もが数秒でサイト全体をハックすることができます。準備されたステートメントを使用してはいけません。絶対にクエリーにGETまたはPOST変数を直接入れないでください!特にあなたがpaypalを扱っていないなら!!申し訳ありませんが、それは私を狂ってしまう...あなたがそこでやっていることは極端に危険です!あなたはそのようなことのために大きなトラブルに陥ることがあります... – Twinfriends

+0

@Twinfriends私は私がmysqliでPDOを準備することを学ばなければならないと思います –

+0

あなたはものを混ぜています。準備されたステートメントは、あなたの倉庫を安全に保つ方法です。 PDOとmysqliは、データベースを照会するための2つの異なるドライバです。ですから、PDOドライバを使ってPreparedステートメントを学ぶか、mysqliドライバを使って準備されたステートメントを学習するかのどちらかですが、存在しない "mysqliを持つPDO準備ステートメント"はありません。 PDOとmysqliを同時に使用することはできません。 – Twinfriends

答えて

0

MySQLクエリに構文エラーがあります。あなたの質問の終わりを見てください。一重引用符がないと思います。このクエリで

$row = mysqli_fetch_array(mysqli_query($conn, "select * from `at_reg_user` where `email`='$user_id")); 

試してみてください:

$row = mysqli_fetch_array(mysqli_query($conn, "select * from `at_reg_user` where `email`='$user_id'")); 

ヒント:テストされていないこれはあなたのクエリです。 セキュリティを確保するために、コード全体を書き直すべきだと思います。それはバグがいっぱいです。

+0

このような質問はサポートしないでください...彼は支払いシステムを使用しており、コードにはSQLインジェクションがたくさんあります。そのようなエラーを見つける前に、彼はまずそれを修正するべきです。今すぐ彼は単にあなたの答えをコピーして貼り付けてくれるので、もし彼が働いていれば、彼は彼の安全保障が不足していることに気をつけません。 – Twinfriends

+0

@Twinfriendsはい、あなたは正しいです。しかし、それは私のビジネスではありません... – trpx

+0

@Twinfriends iamはPHPの概念を学んでいます。私はちょうど初心者ではなく、エキスパートです。 –

0

PayPalのPayment Data Transferを調べることをおすすめします。 $ _GETデータに依存しないので、より安全です。

関連する問題