私はこれで丸一日立ち往生しており、これは私がこれまでコーディングで立ち往生してきた最長のものです。私を助けてください。
私は次のコードを持っています、それはデータベースのアカウントを確認するために使用されるペイパルipnURLです。私は最初にSQLなどに接続し、次にペイパルからユーザー情報を取得し、次にデータベースからユーザー情報を取得します。支払う前に、ユーザーはuser_level列に「unverified」の値を持っている必要があり、「unverified」の場合は更新する必要があります。
これが私が立ち往生している奇妙なことです。コードを実行する前に実際のデータベースをチェックインしたにもかかわらず、user_levelの値が「未確認」になることはありません。実際には「未確認」です。しかし、mysql_query($ u)をコメントアウトすると、値'unverified'が返されます。
何が起こっているのかというと、実際のコードが呼び出されて更新されるかどうかを確認する前に、レコードが更新されているようです。
どなたか助けてください、大歓迎です。私
$sql_connect = @mysql_connect($_SERVER['HTTP_HOST'].':3306','root', '******') or die('Could not connect: ' . mysql_error());
mysql_select_db('4bkk');
$url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
$postFields = 'cmd=_notify-validate';
foreach($_POST as $key => $value)
{
$postFields .= "&$key=".urlencode($value);
}
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $postFields
));
$result = curl_exec($ch);
curl_close($ch);
if($result=='VERIFIED'){
$log = 'Verfied --- ';
//get buyers information from PAYPAL checkout
$email = $_POST['payer_email'];
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$amount = $_POST['amount3'];
$plan = $_POST['option_selection1'];
$q = "SELECT * FROM users WHERE email='$email'";
$data = mysql_query($q);
$con = mysql_fetch_array($data);
//get buyers information from DATABASE
$email2 = $con['email'];
$first_name = $con['first_name'];
$last_name = $con['last_name'];
$active = $con['active'];
$user_level = $con['user_level'];
$log .= $first_name.' , '.$last_name.' , '.$email2.' , '.$active.' , '.$user_level.' **************** '.$email ;
if($email2==$email){ //User already has a record
if($user_level=='unverified'){ // User unverified, ready for verification
$log .= 'Emails match, and user is VERIFIED';
$u = "UPDATE users SET active='verified', user_level='$plan' WHERE email='$email' LIMIT 1";
$log .= $u;
mysql_query($u);
}
else{ // User is already verified,
$log .= 'Emails match, BUT user is NOT VERIFIED';
}
}
else{ //User doesn't have a record
$log .= 'Emails DONT match, execute update here';
}
$fh = fopen('result_ipn_test.txt', 'w');
//fwrite($fh, $subject.' --- '.$message);
fwrite($fh, $message.' ********** '.$log);
fclose($fh);
}
else
echo 'INVALID';
mysql_close();