PHP很难理解这个功能[关闭]

Posted

技术标签:

【中文标题】PHP很难理解这个功能[关闭]【英文标题】:PHP Hard time understand this function [closed] 【发布时间】:2013-01-30 15:37:33 【问题描述】:

我有这个函数是另一个程序员写的,但他早就退出了。

我试图理解他写的这个函数,但我没有完全理解它。

它从 csv 文件 中获取一个 token,数量应该取决于我选择的数量。但是 force_plaform 变量的作用是什么? 还有 $_GET x 参数和 $_COOKIE x 参数有什么作用?

// Get a purchaselink from a given token (if one exists) and a given csv
function getPurchaseLink($token, $csvfile, $force_platform = "", $quantity = 1)

$fp = fopen($csvfile, 'r', true);
$columns = fgetcsv($fp, 1024, ',');

while (($row = fgetcsv($fp, 1024, ","))) 
    $row = array_combine($columns, $row);
    if ($row['purchaseToken'] == $token) 
        $purchaseLink = $row;
        break;
    


// Default to pucharse link
$url = http://www.purchase.com//?p1=zzM5X9k4dF%2BDzrTnixoaKw3Fg7wZ8h5pkjp%2BLEidTXBg40xOjcFj5PtPlQniMskLm0W3ti65mE2KafUifZe9dZAcE&ref=purchase.com&style=146&ga=UA-2689090-1&C1=C01507;1;0&C2=C0508;0;0;
if ($url)      
  // Convert GET x-parameters to cmp, mkey1 and mkey2 if they are present
  $append = "";
  if((isset($_GET["x-source"])) && ($_GET["x-source"] != "")) 
    $append = "&cmp=source_" . $_GET["x-source"];
    $nextParameter = "x-" . $_GET["x-source"];
    $counter = 1;
    $searching = TRUE;
    while(($searching) && ($counter <= 2)) 
      if((!isset($_GET[$nextParameter])) || ($_GET[$nextParameter] == "")) 
        $searching = FALSE;
      
      else 
        $append .= "&mkey" . $counter . "=" . str_replace("x-", "", $nextParameter) . "_" . $_GET[$nextParameter];
        $nextParameter = "x-" . $_GET[$nextParameter];
    $counter += 1;
      
    
  
  // Convert COOKIE x-parameters to cmp, mkey1 and mkey2 if they are present and there are no GET x-parameters
  if(($append == "") && (isset($_COOKIE["x-source"])) && ($_COOKIE["x-source"] != "")) 
    $append = "&cmp=source_" . $_COOKIE["x-source"];
    $nextParameter = "x-" . $_COOKIE["x-source"];
    $counter = 1;
    $searching = TRUE;
    while(($searching) && ($counter <= 2)) 
      if((!isset($_COOKIE[$nextParameter])) || ($_COOKIE[$nextParameter] == "")) 
        $searching = FALSE;
      
      else 
        $append .= "&mkey" . $counter . "=" . str_replace("x-", "", $nextParameter) . "_" . $_COOKIE[$nextParameter];
        $nextParameter = "x-" . $_COOKIE[$nextParameter];
    $counter += 1;
      
    
  
  // Return upclick purchase link   
  return $url . $append;


if ($quantity != 1) 
    $url .= "&quantity=" . $quantity;


// Pass on tracking parameters from URI query and cookies
$append = "";
foreach($_GET as $parameter => $value) 
    if(strpos($parameter, "x-") === 0 || $parameter == "tracking" || $parameter == "serial" || $parameter == "affiliate") 
        $append .= "&" . $parameter . "=" . $value;
    

if (empty($append)) 
    foreach($_COOKIE as $parameter => $value) 
        if(strpos($parameter, "x-") === 0) 
            $append .= "&" . $parameter . "=" . $value;
        
    


$append = str_replace("x-tracking", "tracking", $append);
$append = str_replace("x-affiliate", "affiliate", $append);
$append = str_replace("&serial=", "&x-serial=", $append);

return $url . $append;
 

【问题讨论】:

很可能他留下了一个烂摊子:) 大部分......因为我找不到与 force_platform 变量相关的任何内容。谢谢 【参考方案1】:

该函数正在构建一个查询字符串 (URL) 并返回它。程序调用该 URL 后所做的事情不取决于此代码,而是取决于被调用页面上的代码。此代码仅生成一个 URL。至于force_plaform,它似乎根本没有在函数中使用(只是在函数头中)。它是一个未使用的变量。至于$_GET$_COOKIE 变量,代码只是检查它们是否存在,如果存在则将它们附加到查询字符串中。

【讨论】:

哦,谢谢,我就是这么想的,force_platform 让我对那个功能感到困惑...... :) 由于您是新人:不客气,但不要忘记 +1 您认为有帮助的答案和/或将它们作为您问题的答案。此问题可能过于本地化,因此,在您将积分奖励给帮助过您的用户后,您可能会要求关闭该问题,因为它可能对其他人没有帮助,因为它非常适合您的环境。 确定XD,我如何关闭它? 在您的问题标签下,您应该会看到一个投票关闭问题的选项,因为它过于本地化。

以上是关于PHP很难理解这个功能[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

你能用 PDO 查询帮助我理解这个 PHP 代码吗? [关闭]

很难理解节点中的 async.parallel

php中依赖注入的问题[关闭]

更好地理解 PHP 和 SQL [关闭]

PyUSB怎么理解? [关闭]

关闭模式视图但保留数据