Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

function getwheres()函数的BUG

[复制链接]
xxz0318 发表于 2012-4-26 11:40:32 | 显示全部楼层 |阅读模式
本帖最后由 xxz0318 于 2012-4-26 12:15 编辑

请看下面函数的第三个参数

我调用的函数是
  1. $intkeys = array('aid', 'uid');
  2. $strkeys = array('authorname');
  3. $randkeys = array(array(1 => 'rongji'));
  4. $likekeys = array('title', 'username');
  5. $results = getwheres($intkeys, $strkeys, $randkeys, $likekeys);
复制代码
  1. function getwheres($intkeys, $strkeys, $randkeys, $likekeys, $pre='') {

  2. $wherearr = array();
  3. $urls = array();

  4. foreach ($intkeys as $var) {
  5. $value = isset($_GET[$var])?$_GET[$var]:'';
  6. if(strlen($value)) {
  7. $urls[] = "$var=$value";
  8. $var = addslashes($var);
  9. $wherearr[] = "{$pre}{$var}='".intval($value)."'";
  10. }
  11. }

  12. foreach ($strkeys as $var) {
  13. $value = isset($_GET[$var])?trim($_GET[$var]):'';
  14. if(strlen($value)) {
  15. $urls[] = "$var=".rawurlencode($value);
  16. $var = addslashes($var);
  17. $value = addslashes($value);
  18. $wherearr[] = "{$pre}{$var}='$value'";
  19. }
  20. }

  21. foreach ($randkeys as $vars) {
  22. $value1 = isset($_GET[$vars[1].'1'])?$_GET[$vars[1].'1']:'';//Darren修改
  23. $value2 = isset($_GET[$vars[1].'2'])?$_GET[$vars[1].'2']:'';//Darren修改
  24. //$value1 = isset($_GET[$vars[1].'1'])?$vars[0]($_GET[$vars[1].'1']):'';//这里是官方的
  25. //$value2 = isset($_GET[$vars[1].'2'])?$vars[0]($_GET[$vars[1].'2']):'';//这里是官方的
  26. if($value1) {
  27. $urls[] = "{$vars[1]}1=".rawurlencode($_GET[$vars[1].'1']);
  28. $vars[1] = addslashes($vars[1]);
  29. $value1 = addslashes($value1);
  30. $wherearr[] = "{$pre}{$vars[1]}>='$value1'";
  31. }
  32. if($value2) {
  33. $wherearr[] = "{$pre}{$vars[1]}<='$value2'";
  34. $vars[2] = addslashes($vars[2]);
  35. $value2 = addslashes($value2);
  36. $urls[] = "{$vars[1]}2=".rawurlencode($_GET[$vars[1].'2']);
  37. }
  38. }

  39. foreach ($likekeys as $var) {
  40. $value = isset($_GET[$var])?stripsearchkey($_GET[$var]):'';
  41. if(strlen($value)>1) {
  42. $urls[] = "$var=".rawurlencode($_GET[$var]);
  43. $var = addslashes($var);
  44. $value = addslashes($value);
  45. $wherearr[] = "{$pre}{$var} LIKE BINARY '%$value%'";
  46. }
  47. }

  48. return array('wherearr'=>$wherearr, 'urls'=>$urls);
  49. }
复制代码
函数中处理第三个参数的时候的判断(代码中有注释.),怎么把我传递的参数处理成函数了呢?这明明是一个范围的查询,官方却把用户传递的参数处理成函数, 调用用官方的函数处理数据直接出错.

批量搜索官方的使用案例,却发现官方没有一个地方使用这个函数的第三个参数.杯具!

请确认!



PS:官方论坛是怎么有个 什么协助之类的 用户组啊?我上次反馈的BUG,给我修改成沟通中,但是没有任何人给我沟通啊,而且下面给我回复的帖子,说我没讲明白.
今天在查看那个帖子,官方回复已经确认BUG...

 楼主| xxz0318 发表于 2012-4-27 09:37:52 | 显示全部楼层
官方没人啦?每个问题都要多回复几次?
回复

使用道具 举报

 楼主| xxz0318 发表于 2012-4-27 13:41:01 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-16 18:51 , Processed in 0.020546 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表