Php 成功支付Paypal后无法更新MySQL行

Php 成功支付Paypal后无法更新MySQL行,php,mysql,paypal,Php,Mysql,Paypal,我已经成功设置了Paypal按钮,可以从我的IPN代码接收电子邮件。然而,我不知道如何知道到底是哪个用户支付了款项。我的疑问是,用户使用的电子邮件地址可能与从我的服务中注册的电子邮件地址不同。我试图从$\u会话中获取用户名,但它返回空字符串。这是我的密码: if (strcmp ($res, "VERIFIED") == 0) { $txn_id = $_POST['txn_id']; $payment_amount = $_POST['mc_gross']; $payment_status =

我已经成功设置了Paypal按钮,可以从我的IPN代码接收电子邮件。然而,我不知道如何知道到底是哪个用户支付了款项。我的疑问是,用户使用的电子邮件地址可能与从我的服务中注册的电子邮件地址不同。我试图从
$\u会话
中获取用户名,但它返回空字符串。这是我的密码:

if (strcmp ($res, "VERIFIED") == 0) {
$txn_id = $_POST['txn_id'];
$payment_amount = $_POST['mc_gross'];
$payment_status = $_POST['payment_status'];
$payment_time = date("Y-m-d H:i:s");
$username = $_SESSION['user'];
$body = $txn_id.' '.$payment_amount.' '.$payment_status.' '.$payment_time.' '.$username;
mail("Email Address", 'Subject', $body, ''); 
$connection = new mysqli('localhost', 'user', 'password', 'db');
$query       = $connection->query("UPDATE members SET TRANSID = '$txn_id', PAYAMOUNT = '$payment_amount', PAYSTATUS = '$payment_status', PAYTIME =     '$payment_time' WHERE USERNAME ='$username'");
mysqli_close($connection);
我还添加了
session_start()
ipn.php
的开头。我应该如何为正确的用户更新数据

更新

我使用贝宝IPN系统。用户可以在升级页面上使用Paypal付款。然后Paypal在ipn.php上向我发送交易详细信息。现在,我正在ipn.php中编写代码来更新MySQL表

更新两个

根据迈克的建议,这就是我所拥有的

现在,我的代码如下所示:

$txn_id = $_POST['txn_id'];
$payment_amount = $_POST['mc_gross'];
$payment_status = $_POST['payment_status'];
$payment_time = date("Y-m-d H:i:s");
$username = $_POST['fuser'];
<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="ATXN4EP7FQXR8">
<input type="hidden" name="fuser" value="<?php echo $_SESSION['user'];?>">
<input type="submit" name="submit" value="Pay With Paypal" class="btn btn-primary">
</form>
<input type="hidden" name="custom" value="<?php echo $_SESSION['user'];?>">
$username = $_POST["custom"];
我的按钮是这样的:

$txn_id = $_POST['txn_id'];
$payment_amount = $_POST['mc_gross'];
$payment_status = $_POST['payment_status'];
$payment_time = date("Y-m-d H:i:s");
$username = $_POST['fuser'];
<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="ATXN4EP7FQXR8">
<input type="hidden" name="fuser" value="<?php echo $_SESSION['user'];?>">
<input type="submit" name="submit" value="Pay With Paypal" class="btn btn-primary">
</form>
<input type="hidden" name="custom" value="<?php echo $_SESSION['user'];?>">
$username = $_POST["custom"];
形式如下:

$txn_id = $_POST['txn_id'];
$payment_amount = $_POST['mc_gross'];
$payment_status = $_POST['payment_status'];
$payment_time = date("Y-m-d H:i:s");
$username = $_POST['fuser'];
<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="ATXN4EP7FQXR8">
<input type="hidden" name="fuser" value="<?php echo $_SESSION['user'];?>">
<input type="submit" name="submit" value="Pay With Paypal" class="btn btn-primary">
</form>
<input type="hidden" name="custom" value="<?php echo $_SESSION['user'];?>">
$username = $_POST["custom"];
唯一更新的是“发薪时间”。虽然在电子邮件中我收到了所有的数据。这是表的结构:

TRANSID     varchar(20)
PAYAMOUNT   decimal(7,2)
PAYSTATUS   varchar(25)
PAYTIME     datetime

您在何处设置此会话以及会话从何处开始?@GoudaElalfy您的意思是我在何处设置了
$\u会话['user']
?我在用户登录后或从“记住我”选项设置它,会话开始是
header.php中每个网页顶部的一个选项;在这一行之前$username=$_SESSION['user'];--发生了什么事?@GoudaElalfy我可能无法清楚地说明我的问题。这与Steammike在回答中链接的问题类似。使用“custom”作为输入名称,并检查一次。