joomla php变量有一个随机的“。”数值背后的字符

时间:2015-08-30 06:35:46

标签: php mysql joomla

我有这个由Joomla提供支持的网站!该网站有一个自定义组件,我建立该组件以允许事件注册,并且发票编号被编码为具有自动增量功能。

发票编号的示例如DOMAINNAME-00015-0000000055。请注意,“00015”是事件ID,“0000000055”是增量。因此,在此发票之后,下一个数字将是DOMAINNAME-00015-0000000056,依此类推。

所以最近有这个事件被托管,大约有1500个注册。但是,我注意到有一些预订的发票号码生成错误。一个例子就像DOMAINNAME-0015.-0000000057,所以如果你注意到事件ID是“0015”。而不是“00015”。我检查了访问日志并注意到当从视图传递事件ID变量时它实际上传递了“15”。而不只是“15”。

用户需要转到活动详情页面并点击此链接预订他们的预订。所以我怀疑在事件详细信息页面上,包含添加到链接的事件ID的变量呈现为“15”。如果发票号码生成错误,则代替“15”。

但现在的问题是为什么?我没有看到价值不一致的情况,1500中有大约6个案例有这个问题。事件ID应该从数据库中提取,它的平坦值为15。

任何有经验的人都知道为什么会这样?

[编辑]

以下是用户点击进行首次初始预订的链接代码。这里的变量“cid”应该是“15”,但是从网络托管服务器的访问日志中,用户输入的链接的变量“cid”的值设置为“15”。而不是“15”,这导致发票生成的错误。使用joomla抓取数组“$ post”!核心功能“JRequest :: get();”我认为不应该是问题。

$apply_individual = 'index.php?option='.$post['option'].'&task=default&view=eventregistration&cid='.$post['cid'].'&type=individual';

这是生成发票编号的部分。

function generateInvoiceID($event_id) {
    // Get a database object
    $db =& JFactory::getDBO();  
    $query = "SELECT * FROM #__db_name ORDER BY id";
    $db->setQuery($query);
    $results = $db->loadObjectList();

    $order_id = array();

    if(isset($results)) {
        foreach($results as $result) {
            if(!empty($result->invoice_id)) {
                $invoice_event_id = substr($result->invoice_id, 6, -11);
                $check_event_id = str_pad($event_id, 5, 0, STR_PAD_LEFT);
                $get_invoice_number = substr($result->invoice_id, -10);

                if($invoice_event_id == $check_event_id) {
                    //$order_id[] = $result->invoice_id;
                    $order_id[] = $get_invoice_number;
                }
            }
        }

        // get max id
        if(isset($order_id) && !empty($order_id)) {
            $max_id = max($order_id);
            //$max_id = substr($max_id, 12);
            $max_id++;
        } else {
            $max_id = 1;
        }

        $invoice_number = str_pad($max_id, 10, 0, STR_PAD_LEFT);
        $event_id = str_pad($event_id, 5, 0, STR_PAD_LEFT);
        $invoice_id = 'DOMAINNAME-'.$event_id.'-'.$invoice_number;
        $invoice_id = strtoupper($invoice_id);
    }

    return $invoice_id;
}

正如您所看到的,使用php函数“str_pad”将event_id转换为5位数。增量数字虽然完美。我也注意到如果我添加一个“。”在用户单击的链接中,我将生成一个发票号,如“DOMAINNAME-0015.-0000000058”。但我不知道为什么一个值例如“15”。将首先传递到链接。此问题不会影响所有发票号码,只会影响1500个中的5个。

0 个答案:

没有答案