示例#1
0
文件: hq.php 项目: antixrist/HQuery
 static function redirectFromAnyPageOnce($arr)
 {
     $res = hq::matchOnce($arr);
     if (is_string($res)) {
         if (isset($res[0]) && $res[0] === '*') {
             $res[0] = ' ';
             $res = trim($res);
             hq::URL() . $res;
         } else {
             if (isset($res[0]) && $res[0] === '?') {
                 $url = explode('?', hq::URL(), 2);
                 $base = $url[0];
                 if (isset($url[1])) {
                     $url = explode('&', $url);
                     $params = array();
                     foreach ($url as $str) {
                         $str = explode('=', $str, 2);
                         if (!isset($str[1])) {
                             $params[$str[0]] = null;
                         } else {
                             $params[$str[0]] = $str[1];
                         }
                     }
                     $res[0] = ' ';
                     $res = trim($res);
                     $res = explode('&', $res);
                     foreach ($res as $str) {
                         $str = explode('=', $str, 2);
                         if (!isset($str[1])) {
                             $params[$str[0]] = null;
                         } else {
                             if ($str[1] === '%unset%') {
                                 unset($params[$str[0]]);
                             } else {
                                 $params[$str[0]] = $str[1];
                             }
                         }
                     }
                     $res = $base . '?';
                     $n = 0;
                     foreach ($params as $par => $val) {
                         if ($n !== 0) {
                             $res .= '&';
                         }
                         if ($val === null) {
                             $res .= $par;
                         } else {
                             $res .= $par . '=' . $val;
                         }
                         $n++;
                     }
                 } else {
                     $res = $base . $res;
                 }
             } else {
                 if ($res === '' || $res[0] === '/') {
                     $res = hq::baseURL() . $res;
                 }
             }
         }
         if ($res === hq::URL()) {
             return false;
         }
         if (hq::$redirectTestMode) {
             echo "\n<br>\n Redirect To " . $res . "\n<br>\n";
             return true;
         }
         header('Location: ' . $res);
         exit;
     }
     return false;
 }