所以我正在尝试修改目前这样工作的系统:
第一个问题:我不确定这是如何工作的,即使客户被发送到另一台服务器,会话仍然存活?或者它是否留在我们的服务器中,当用户返回时,变量仍然存在? (如果是这样,它如何识别用户?)
第二名:
流程太长,客户收到3页我想删除的冗余信息,suprerizing prepayment.php中的所有内容,并将信息发送到com_web_process.php立即处理(删除步骤2-4)
我可以将信息提供给银行API并且存款工作得非常好。但是当它在文件credit_card_process.php中返回我们的服务器时,它会打印银行生成的信息(收据等),但会话变量(cusotmer的电子邮件,姓名,居住国家)中存储的信息不会显示。
如果有帮助我可以发布所有文件,或者我认为最相关的部分(会话变量等)
有趣的是我通过在com_web_process.php中打印变量来测试它们并且它们显示正确,但是当他们去银行并回来时它们会丢失。
按出现顺序排列的文件:
pre_payment.php
form name =“frm_main”action =“pay_info.php?lang =”method =“post”onSubmit =“return validate_register();”
//customer information
Pay_info.php
$last_url=$_SERVER['HTTP_REFERER'];
//我不确定这是做什么
$last_name=$_POST["last_name"];
//在变量中获取客户数据(我不明白为什么他们这样做而不是直接发布到会话变量)
$_SESSION['first_name']=$first_name;
//将变量放入会话变量
form name="frm_main" action="payment.php?lang=<?=$LANG_TYPE?>" method="post"
input type="hidden" name="first_name" value="<?=$_SESSION['first_name']?>"
//使用会话变量发布到下一个表单
payment.php
$_SESSION["CREDIT_CARD_TRANS"]="YES";
稍后会对此进行验证以确保您实际进行交易,在我的新尝试中我在pre_payment中创建了此变量
$last_name=$_POST["last_name"];
获取变量的帖子(必要吗?我们还没有会话吗?)
<form name="frmMain" action="credit_card_pay.php?lang=<?=$LANG_TYPE?>" method="post" onSubmit="return validatePayment();">
<input type="hidden" name="last_name" value="<?=$last_name?>" />
发送到下一个文件的变量
credit_card_pay.php
<input type="hidden" name="vpc_LirtsName" value="<?=$last_name?>" /> this variable last_name is not declared anywhere in the code, I dont know how, why or if its even using it
<form name="frm_main" action="com_web_process.php" method="post" onsubmit=" return credit_card_validation();">
<input type="hidden" name="reciept_last_name" value="<?=$_POST["reciept_first_name"]?>" />
将客户信息发布到下一个文件
com_web_process.php。
$_SESSION["CC_FIRST_NAME"]=$_POST["reciept_first_name"]; posting customer info to session variables
<form name="frmMain" action="./PHP_VPC_3Party_DO.php" method="post">
<input type="hidden" name="vpc_ReturnURL" size="63" value="http://www.visaustralia.com/ekey/credit_card_process.php" maxlength="250"/>
<input type="hidden" name="vpc_Amount" value="<?=$_POST["vpc_Amount"]?>" size="20" maxlength="10"/> sending info to the bank file in our server that connects and sends the information to the bank.
credit_card_process.php
$NAME=$_SESSION["CC_NAME"];
<td width="421" class="formLabel2" style="padding:5px;"><strong><?=$NAME?></strong>
从会话中获取名称并将其打印在收据中
答案 0 :(得分:0)
1)是的,通过设置具有会话ID的cookie,会话保持活动状态。当你执行session_start时,PHP会查找会话并启动会话,通常靠近页面的开头。我建议命名会话,请参阅session_name()。您可能希望在第1步开始会话。
当银行向用户的浏览器发送重定向并返回您的服务器时,浏览器会发送会话cookie,允许php恢复会话并识别用户。
2)如果你回来时丢失了会话,请确保所设置的cookie的URL与他们被重定向的URL匹配,相同的域名,www等。不太可能但确保cookie设置为足够长的期满(或没有)。检查cookie是登录php还是使用Firefox / Firebug等。如果返回时cookie值不同,你知道你没有重新启动同一个会话但是创建了一个新的空会话。