2017-04-27 173 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']; 
     ?> 
在home.php頁面

PayPal按鈕

 <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> 

這是我的網頁成功頁面:

<?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"); 
    ?> 

當我嘗試打印電子郵件回聲$email,它不打印。我需要獲得emailid才能將其插入到付款表中。

+3

...你在一個充滿安全感的網站中整合了paypal缺乏?老兄,我真的建議你刪除這個功能...... http://bobby-tables.com瞭解SQL注入以及如何防止它們。其實,每個人都可以在幾秒鐘內破解你的整個網站。使用準備好的語句,永遠不要將GET或POST變量直接放入查詢中!特別是如果你處理貝寶!!!!對不起,但這讓我發瘋了......這極其危險,你在那裏做什麼!你可以因爲這些事情而陷入困境...... – Twinfriends

+0

@Twinfriends我想我必須學習PDO與mysqli一起準備陳述 –

+0

你在混淆東西。準備好的陳述是如何保持querys安全的一種方式。 PDO和mysqli是查詢數據庫的兩種不同的驅動程序。因此,無論是使用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概念man iam只是初學者不是專家 –

相關問題