⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 findusers.php

📁 讲的是网络编程
💻 PHP
📖 第 1 页 / 共 2 页
字号:
    echo "</html><body>";
    echo "<h2 style='text-align:left;'>"._MA_USER_FINDUS." - ".$modes[$mode]."</h2>";
    $modes_switch = array();
    foreach ($modes as $_mode => $title) {
	    if ($mode == $_mode) continue;
	    $modes_switch[] = "<a href='findusers.php?target=".htmlspecialchars(@$_REQUEST["target"], ENT_QUOTES)."&amp;multiple=".htmlspecialchars(@$_REQUEST["multiple"], ENT_QUOTES)."&amp;token=".htmlspecialchars($token, ENT_QUOTES)."&amp;mode={$_mode}'>{$title}</a>";
    }
    echo "<h4>".implode(" | ", $modes_switch)."</h4>";
    echo "(".sprintf(_MA_USER_ACTUS, "<span style='color:#ff0000;'>$acttotal</span>")." ".sprintf(_MA_USER_INACTUS, "<span style='color:#ff0000;'>$inacttotal</span>").")";
    $form->display();
    
} else {
    $myts =& MyTextSanitizer::getInstance();
    
    $limit = empty($_POST['limit']) ? 50 : intval( $_POST['limit'] );
    $start = intval( @$_POST['start'] );
    
    if (!isset($_POST["query"])) {
	    $criteria = new CriteriaCompo();
	    foreach (array_keys($items_match) as $var) {
		    if ( !empty($_POST[$var]) ) {
		        $match = (!empty($_POST["{$var}_match"])) ? intval($_POST["{$var}_match"]) : XOOPS_MATCH_START;
		        $value = str_replace("_", "\\\_", $myts->addSlashes(trim($_POST[$var])));
		        switch ($match) {
		        case XOOPS_MATCH_START:
		            $criteria->add(new Criteria($var, $value.'%', 'LIKE'));
		            break;
		        case XOOPS_MATCH_END:
		            $criteria->add(new Criteria($var, '%'.$value, 'LIKE'));
		            break;
		        case XOOPS_MATCH_EQUAL:
		            $criteria->add(new Criteria($var, $value));
		            break;
		        case XOOPS_MATCH_CONTAIN:
		            $criteria->add(new Criteria($var, '%'.$value.'%', 'LIKE'));
		            break;
		        }
		    }
	    }
	    if ( !empty($_POST['url']) ) {
	        $url = formatURL(trim($_POST['url']));
	        $criteria->add(new Criteria('url', $url.'%', 'LIKE'));
	    }
	    if ( !empty($_POST['user_from']) ) {
	        $criteria->add(new Criteria('user_from', '%'.$myts->addSlashes(trim($_POST['user_from'])).'%', 'LIKE'));
	    }
	    if ( !empty($_POST['user_intrest']) ) {
	        $criteria->add(new Criteria('user_intrest', '%'.$myts->addSlashes(trim($_POST['user_intrest'])).'%', 'LIKE'));
	    }
	    if ( !empty($_POST['user_occ']) ) {
	        $criteria->add(new Criteria('user_occ', '%'.$myts->addSlashes(trim($_POST['user_occ'])).'%', 'LIKE'));
	    }
	
	    foreach (array("last_login", "user_regdate") as $var) {
		    if ( !empty($_POST["{$var}_more"]) && is_numeric($_POST["{$var}_more"]) ) {
		        $time = time() - (60 * 60 * 24 * intval(trim($_POST["{$var}_more"])));
		        if ( $time > 0 ) {
		            $criteria->add(new Criteria($var, $time, '<='));
		        }
		    }
		    if ( !empty($_POST["{$var}_less"]) && is_numeric($_POST["{$var}_less"]) ) {
		        $time = time() - (60 * 60 * 24 * intval(trim($_POST["{$var}_less"])));
		        if ( $time > 0 ) {
		            $criteria->add(new Criteria($var, $time, '>='));
		        }
		    }
	    }
	    if ( !empty($_POST['posts_more']) && is_numeric($_POST['posts_more']) ) {
	        $criteria->add(new Criteria('posts', intval($_POST['posts_more']), '<='));
	    }
	    if ( !empty($_POST['posts_less']) && is_numeric($_POST['posts_less']) ) {
	        $criteria->add(new Criteria('posts', intval($_POST['posts_less']), '>='));
	    }
	    if ( !empty($_POST['user_mailok']) ) {
	        if ( $_POST['user_mailok'] == "mailng" ) {
	            $criteria->add(new Criteria('user_mailok', 0));
	        } elseif ( $_POST['user_mailok'] == "mailok" ) {
	            $criteria->add(new Criteria('user_mailok', 1));
	        }
	    }
	    if ( !empty($_POST['user_avatar']) ) {
	        if ( $_POST['user_avatar'] == "y" ) {
	            $criteria->add(new Criteria('user_avatar', "('', 'blank.gif')", 'NOT IN'));
	        } elseif ( $_POST['user_avatar'] == "n" ) {
	            $criteria->add(new Criteria('user_avatar', "('', 'blank.gif')", 'IN'));
	        }
	    }
	    if ( !empty($_POST['level']) ) {
			$level_value = array(1 => 1, 2 => 0, 3 => -1);
			$level = isset($level_value[intval($_POST["level"])]) ? $level_value[intval($_POST["level"])] : 1;
			$criteria->add(new Criteria("level", $level));
	    }
	    if ( !empty($_POST['rank']) ) {
		    $rank_obj = $rank_handler->get( $_POST['rank'] );
		    if ($rank_obj->getVar("rank_special")) {
				$criteria->add(new Criteria("rank", intval($_POST['rank'])));
		    } else {
			    if ($rank_obj->getVar("rank_min")) {
	        		$criteria->add(new Criteria('posts', $rank_obj->getVar("rank_min"), '>='));
	    		}
			    if ($rank_obj->getVar("rank_max")) {
	        		$criteria->add(new Criteria('posts', $rank_obj->getVar("rank_max"), '<='));
	    		}
		    }
	    }
	    
	    $total = $user_handler->getCount($criteria, @$_POST["groups"]);
		
	    $validsort = array("uname", "email", "last_login", "user_regdate", "posts");
	    $sort = (!in_array($_POST['user_sort'], $validsort)) ? "uname" : $_POST['user_sort'];
	    $order = "ASC";
	    if ( isset($_POST['user_order']) && $_POST['user_order'] == "DESC") {
	        $order = "DESC";
	    }
	    
        $criteria->setSort($sort);
        $criteria->setOrder($order);
        $criteria->setLimit($limit);
        $criteria->setStart($start);
        $foundusers = $user_handler->getAll($criteria, @$_POST["groups"]);
        
    } else {
	    $query = trim($_POST["query"]);
	    // Query with alias
	    if (preg_match("/select[\s]+.*[\s]+from[\s]+(".$xoopsDB->prefix("users")."[\s]+as[\s]+([^\s]+).*)/i", $query, $matches) ) {
		    $alias = $matches[2];
		    $subquery = $matches[1];
		    
	    // Query without alias
	    } elseif (preg_match("/select[\s]+.*[\s]+from[\s]+(".$xoopsDB->prefix("users")."\b.*)/i", $query, $matches) ) {
		    $alias = "";
		    $subquery = $matches[1];
		    
	    // Invalid query
	    } else {
		    $query = "SELECT * FROM ".$xoopsDB->prefix("users");
		    $subquery = $xoopsDB->prefix("users");
	    }
	    
	    $sql_count = "SELECT COUNT(DISTINCT ".(empty($alias) ? "" : $alias . "." )."uid) FROM ". $subquery;
	    $result = $xoopsDB->query($sql_count);
	    list($total) = $xoopsDB->FetchRow($result);

	    $result = $xoopsDB->query($query, $limit, $start);
        $foundusers = array();
        while ($myrow = $xoopsDB->fetchArray($result)) {
            $object =& $user_handler->create(false);
            $object->assignVars($myrow);
            $foundusers[$myrow["uid"]] = $object;
            unset($object);
        }
    }
    
	echo $js_adduser='
		<script type="text/javascript">
		var multiple='.intval($_REQUEST['multiple']).';
		function addusers() 
		{
	        var sel_str = "";
	        var num = 0;
			var mForm = document.forms["'.$name_form.'"];
			for (var i=0;i!=mForm.elements.length;i++) {
				var id=mForm.elements[i];
				if ( ( (multiple > 0 && id.type == "checkbox") || (multiple == 0 && id.type == "radio") ) && (id.checked == true) && ( id.name == "'.$name_userid.'" ) ) {
					var name = mForm.elements[++i];
					var len = id.value.length + name.value.length;
					sel_str += len + ":" + id.value + ":" + name.value;
					num ++;
				}
			}
			if (num == 0) {
				alert("'._MA_USER_NOUSERSELECTED.'");
				return false;
			}
			sel_str = num + ":" + sel_str;
	        window.opener.addusers(sel_str);
			alert("'._MA_USER_USERADDED.'");
			if (multiple == 0) {
				window.close();
				window.opener.focus();
			}
	        return true;
		}
		</script>
	';
    
    echo "</html><body>";
    echo "<a href='findusers.php?target=".htmlspecialchars(@$_POST["target"], ENT_QUOTES)."&amp;multiple=".intval(@$_POST["multiple"])."&amp;token=".htmlspecialchars($token, ENT_QUOTES)."'>". _MA_USER_FINDUS ."</a>&nbsp;<span style='font-weight:bold;'>&raquo;&raquo;</span>&nbsp;". _MA_USER_RESULTS."<br /><br />";
    if ( empty($start) && empty($foundusers) ) {
    	echo "<h4>"._MA_USER_NOFOUND,"</h4>";
        $hiddenform = "<form name='findnext' action='findusers.php' method='post'>";
        foreach ( $_POST as $k => $v ) {
            if ($k == 'XOOPS_TOKEN_REQUEST') {
                // regenerate token value
                $hiddenform .= $GLOBALS['xoopsSecurity']->getTokenHTML()."\n";
            } else {
                $hiddenform .= "<input type='hidden' name='".htmlSpecialChars($k, ENT_QUOTES)."' value='".htmlSpecialChars($myts->stripSlashesGPC($v), ENT_QUOTES)."' />\n";
            }
        }
        if (!isset($_POST['limit'])) {
            $hiddenform .= "<input type='hidden' name='limit' value='{$limit}' />\n";
        }
        if (!isset($_POST['start'])) {
            $hiddenform .= "<input type='hidden' name='start' value='{$start}' />\n";
        }
        $hiddenform .= "<input type='hidden' name='token' value='".htmlspecialchars($token, ENT_QUOTES)."' />\n";
        $hiddenform .= "</form>";
        
        echo "<div>".$hiddenform;
        echo "<a href='#' onclick='javascript:document.findnext.start.value=0;document.findnext.user_submit.value=0;document.findnext.submit();'>"._MA_USER_SEARCHAGAIN."</a>\n";
        echo "</div>";
    } elseif ( $start < $total ) {
        if ( !empty($total) ) {
			echo sprintf(_MA_USER_USERSFOUND, $total)."<br />";
		}
		if (!empty($foundusers)) {
	        echo "<form action='findusers.php' method='post' name='{$name_form}' id='{$name_form}'>
	        <table width='100%' border='0' cellspacing='1' cellpadding='4' class='outer'>
	        <tr>
	        <th align='center' width='5px'>";
	        if (!empty($_POST["multiple"])) {
				echo "<input type='checkbox' name='memberslist_checkall' id='memberslist_checkall' onclick='xoopsCheckAll(\"{$name_form}\", \"memberslist_checkall\");' />";
			}
			echo "</th>
	        <th align='center'>"._MA_USER_UNAME."</th>
	        <th align='center'>"._MA_USER_REALNAME."</th>
	        <th align='center'>"._MA_USER_REGDATE."</th>
	        <th align='center'>"._MA_USER_LASTLOGIN."</th>
	        <th align='center'>"._MA_USER_POSTS."</th>
	        </tr>";
	        $ucount = 0;
	        foreach (array_keys($foundusers) as $j) {
	            if ($ucount % 2 == 0) {
	                $class = 'even';
	            } else {
	                $class = 'odd';
	            }
	            $ucount++;
	            $fuser_name = $foundusers[$j]->getVar("name") ? $foundusers[$j]->getVar("name") : "&nbsp;";
	            echo "<tr class='$class'>
	            	<td align='center'>";
	        	if (!empty($_POST["multiple"])) {
	            	echo "<input type='checkbox' name='{$name_userid}' id='{$name_userid}' value='".$foundusers[$j]->getVar("uid")."' />";
	            	echo "<input type='hidden' name='{$name_username}' id='{$name_username}' value='".$foundusers[$j]->getVar("uname")."' />";
	        	} else {
	            	echo "<input type='radio' name='{$name_userid}' id='{$name_userid}' value='".$foundusers[$j]->getVar("uid")."' />";
	            	echo "<input type='hidden' name='{$name_username}' id='{$name_username}' value='".$foundusers[$j]->getVar("uname")."' />";
	        	}
	            echo "</td>
	            	<td><a href='".XOOPS_URL."/userinfo.php?uid=".$foundusers[$j]->getVar("uid")."' target='_blank'>".$foundusers[$j]->getVar("uname")."</a></td>
	            	<td>".$fuser_name."</td>
	            	<td align='center'>".($foundusers[$j]->getVar("user_regdate") ? date("Y-m-d", $foundusers[$j]->getVar("user_regdate")) : "")."</td>
	            	<td align='center'>".($foundusers[$j]->getVar("last_login") ? date("Y-m-d H:i", $foundusers[$j]->getVar("last_login")) : "")."</td>
	            	<td align='center'>".$foundusers[$j]->getVar("posts")."</td>";
	            echo "</tr>\n";
	        }
	        echo "<tr class='foot'><td colspan='6'>";
	        
	        // placeholder for external applications
	        if (empty($_POST["target"])) {
		        echo "<select name='fct'><option value='users'>"._DELETE."</option><option value='mailusers'>"._MA_USER_SENDMAIL."</option>";
		        echo "</select>&nbsp;";
		        echo $GLOBALS['xoopsSecurity']->getTokenHTML()."<input type='submit' value='"._SUBMIT."' />";
		        
		    // Add selected users
	        } else {
		        echo "<input type='button' value='"._MA_USER_ADD_SELECTED."' onclick='addusers();' />";
	        }
            echo "<input type='hidden' name='token' value='".htmlspecialchars($token, ENT_QUOTES)."' />\n";
	        echo "</td></tr></table></form>\n";
        }
        
        $hiddenform = "<form name='findnext' action='findusers.php' method='post'>";
        foreach ( $_POST as $k => $v ) {
            if ($k == 'XOOPS_TOKEN_REQUEST') {
                // regenerate token value
                $hiddenform .= $GLOBALS['xoopsSecurity']->getTokenHTML()."\n";
            } else {
                $hiddenform .= "<input type='hidden' name='".htmlSpecialChars($k, ENT_QUOTES)."' value='".htmlSpecialChars($myts->stripSlashesGPC($v), ENT_QUOTES)."' />\n";
            }
        }
        if (!isset($_POST['limit'])) {
            $hiddenform .= "<input type='hidden' name='limit' value='".$limit."' />\n";
        }
        if (!isset($_POST['start'])) {
            $hiddenform .= "<input type='hidden' name='start' value='".$start."' />\n";
        }
        $hiddenform .= "<input type='hidden' name='token' value='".htmlspecialchars($token, ENT_QUOTES)."' />\n";
        if ( !isset($total) || ( $totalpages = ceil($total / $limit) ) > 1 ) {
            $prev = $start - $limit;
            if ( $start - $limit >= 0 ) {
                $hiddenform .= "<a href='#0' onclick='javascript:document.findnext.start.value=".$prev.";document.findnext.submit();'>"._MA_USER_PREVIOUS."</a>&nbsp;\n";
            }
            $counter = 1;
            $currentpage = ($start+$limit) / $limit;
            
            if (!isset($total)) {
	            while ( $counter <= $currentpage ) {
	                if ( $counter == $currentpage ) {
	                    $hiddenform .= "<strong>".$counter."</strong> ";
	                } elseif ( ($counter > $currentpage-4 && $counter < $currentpage+4) || $counter == 1 ) {
	                    $hiddenform .= "<a href='#".$counter."' onclick='javascript:document.findnext.start.value=".($counter-1)*$limit.";document.findnext.submit();'>".$counter."</a> ";
	                    if ( $counter == 1 && $currentpage > 5 ) {
	                        $hiddenform .= "... ";
	                    }
	                }
	                $counter++;
	            }
            } else {
	            while ( $counter <= $totalpages ) {
	                if ( $counter == $currentpage ) {
	                    $hiddenform .= "<strong>".$counter."</strong> ";
	                } elseif ( ($counter > $currentpage-4 && $counter < $currentpage+4) || $counter == 1 || $counter == $totalpages ) {
	                    if ( $counter == $totalpages && $currentpage < $totalpages-4 ) {
	                        $hiddenform .= "... ";
	                    }
	                    $hiddenform .= "<a href='#".$counter."' onclick='javascript:document.findnext.start.value=".($counter-1)*$limit.";document.findnext.submit();'>".$counter."</a> ";
	                    if ( $counter == 1 && $currentpage > 5 ) {
	                        $hiddenform .= "... ";
	                    }
	                }
	                $counter++;
	            }
            }
            
            $next = $start + $limit;
            if ( ( isset($total) && $total > $next) || ( !isset($total) && count($foundusers) >= $limit ) ) {
                $hiddenform .= "&nbsp;<a href='#".$total."' onclick='javascript:document.findnext.start.value=".$next.";document.findnext.submit();'>"._MA_USER_NEXT."</a>\n";
            }
        }
        $hiddenform .= "</form>";
        
        echo "<div>".$hiddenform;
        if (isset($total)) {
        	echo "<br />".sprintf(_MA_USER_USERSFOUND, $total) . "&nbsp;";
    	}
        echo "<a href='#' onclick='javascript:document.findnext.start.value=0;document.findnext.user_submit.value=0;document.findnext.submit();'>"._MA_USER_SEARCHAGAIN."</a>\n";
        echo "</div>";
    }
}

xoops_footer();
?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -