你现在的位置:首页 > PHP网站建设知识库 > ZenCart > 正文

zencart products_id=空值的时候总是提示没有该产品

不知道大家有没有发现,只要随便在地址后面添加 products_id= 的参数的时候都会跳到product_info这个页面,并且提示“Sorry, the product was not found.”,虽然我们不是每个地址都有可能添加这个参数,但是既然发现了这个问题怎么都得解决了吧。

比如我们给shpping_cart这个页面添加这个空值的参数,就会跳到产品页面提示“Sorry, the product was not found.”这就很纳闷了是吧,正常的情况应该是还是访问这个当前页面,只是没有对这个参数做任何处理而已。

经过认真的研究后发现了原来是在includes\init_includes\init_sanitize.php 这个系统加载的文件里面做了特别的处理。打开这个文件找到 

/** 
* validate products_id for search engines and bookmarks, etc. 
*/ 
  if (isset($_GET['products_id']) && isset($_SESSION['check_valid']) &&  $_SESSION['check_valid'] != 'false') { 
   $check_valid = zen_products_id_valid($_GET['products_id']); 
   if (!$check_valid) { 
     $_GET['main_page'] = zen_get_info_page($_GET['products_id']); 
     /** 
      * do not recheck redirect 
       */ 
     $_SESSION['check_valid'] = 'false'; 
      zen_redirect(zen_href_link($_GET['main_page'], 'products_id=' . $_GET['products_id'])); 
    } 
} else { 
   $_SESSION['check_valid'] = 'true'; 
  } 

看到没有,原来是在这里做了处理了。 

这个代码的意思就是,只要地址里面有products_id这个参数,他就会去数据库找看看有没有对应的这个产品,如果没有找到就提示这个产品不存在。看了zencart对这段代码的注释,我觉得好像对我没有必要,因为根据具体需求情况开发的话,这个作用就不一定合适了。所以我把这段代码注释了以后就程序就按正常的方式走了。