PHP读取文件不起作用

时间:2016-09-08 07:40:36

标签: php file if-statement

我的订单有问题。如果一个人按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;
        }
    }

1 个答案:

答案 0 :(得分:1)

 header( "refresh:0;url=mysite );

您忘记了",因此请将其更改为

 header( "refresh:0;url=mysite");

你在else中也以相同的方式完成了它。