为了账号安全,请及时绑定邮箱和手机立即绑定

ajax请求后PHP中的变量丢失

ajax请求后PHP中的变量丢失

PHP
当年话下 2022-07-29 16:51:00
我的目标 - 通过条带或贝宝付款,一旦完成,向客户提供表格以上传文件以通过电子邮件发送给我。我的表单处于引导模式。我正在努力确保除非付款,否则无法提交表格。客户当前付款,由 ajax 完成。这可以正常工作,并且会显示一个付款 ID。但是,当我向同一个 php 文档发送另一个 ajax 请求以完成电子邮件发送时,使用$send_form = $_POST["email_form"];,该变量$payment_made已丢失其值。<?php$send_form = $_POST["email_form"]; //this is sent by ajax. Will be 'yes' if the form to send has been submitted.switch ($action){  case 'stripe':    //do stripe transaction    //set a variable to indicate payment is complete using transaction ID    $payment_made = $transaction->id;  break;  case 'paypal':    //do paypal transaction    //set a variable to indicate payment is complete using transaction ID    $payment_made = $transaction->id;  break;}function sendmail() {  //usual php mail function (works fine)}if ($send_form = 'yes' && $payment_made != '') {  sendmail();}?>我的问题:如何使用$payment_made变量来验证付款是否已完成,以防止未经授权使用电子邮件表单?除非有要求,否则我不会上传 ajax 或 html 代码,因为只要我$payment_made在使用phpmail().
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

我使用 PHP 会话来存储然后删除变量。


<?php

session_start();

$send_form = $_POST["email_form"]; //this is sent by ajax. Will be 'yes' if the form to send has been submitted.


switch ($action){

  case 'stripe':

    //do stripe transaction

    //set a variable to indicate payment is complete using transaction ID

    $_SESSION["payment_made"] = $transaction->id;

  break;

  case 'paypal':

    //do paypal transaction

    //set a variable to indicate payment is complete using transaction ID

    $_SESSION["payment_made"] = $transaction->id;

  break;

}


function sendmail() {

  //usual php mail function (works fine)

  session_unset();

  session_destroy();

  mail();

}


if ($send_form = 'yes' && $_SESSION["payment_made"] != '') {

  sendmail(); 

}

?>


查看完整回答
反对 回复 2022-07-29
  • 1 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号