我的订单有问题。如果一个人按F5太快,可以多次发送订单。我想将order_id
写入文件。
在发送订单并检查order_id
是否已存储之前,如果已存储,请不要再次发送订单。
我得到order_id
,而不是检查它是否在orders.txt
文件中。如果在该文件中找到重定向到“mysite”。如果未存储,请将其写入orders.txt
。
将order_id
写入orders.txt
后,将order_id-XXXX.xml
发送到网址。
事情是:只有else
部分有效。
如果我多次按F5,它每次都会将order_id
写入orders.txt
文件。它不会检查它是否已经存在。它还会多次发送订单。
如果我删除内部if (file_exists($filename))else{}
部分,它就可以正常工作。
继承我的代码:
$order_id= $order->get_order_number();
$filename = $_SERVER['DOCUMENT_ROOT']."/xml/order_id-".$order_id.".xml";
$_cassa_point_url='some_url';
$orders_txt = $_SERVER['DOCUMENT_ROOT']."/xml/orders.txt";
$contents = file_get_contents($orders_txt);
$pattern = preg_quote($order_id, '/');
$pattern = "/^(".$pattern.")/m";
if( strpos(file_get_contents($orders_txt),$order_id) !== false) {
header( "refresh:0;url=mysite );
}else{
$myfile = file_put_contents($orders_txt, $order_id."\r\n" , FILE_APPEND | LOCK_EX);
if (file_exists($filename)) {
$url = $_cassa_point_url . $order_id;
file_get_contents($url);
header( "refresh:0;url=mysite);
return true;
} else {
$url = $_cassa_point_url . $order_id;
file_get_contents($url);
header( "refresh:0;url=mysite );
return true;
}
}
答案 0 :(得分:1)
header( "refresh:0;url=mysite );
您忘记了"
,因此请将其更改为
header( "refresh:0;url=mysite");
你在else
中也以相同的方式完成了它。