MyBaseController.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?php
  2. defined('BASEPATH') or exit('No direct script access allowed');
  3. class MyBaseController extends CI_Controller
  4. {
  5. public function __construct()
  6. {
  7. parent::__construct();
  8. date_default_timezone_set('PRC');
  9. $this->load->library('session');
  10. }
  11. /**
  12. * 操作错误跳转的快捷方法
  13. * @access protected
  14. * @param string $message 错误信息
  15. * @param string $jumpUrl 页面跳转地址
  16. * @param mixed $ajax 是否为Ajax方式 当数字时指定跳转时间
  17. * @return void
  18. */
  19. protected function error($message = '', $jumpUrl = '', $ajax = false)
  20. {
  21. $this->dispatchJump($message, 0, $jumpUrl, $ajax);
  22. }
  23. /**
  24. * 操作成功跳转的快捷方法
  25. * @access protected
  26. * @param string $message 提示信息
  27. * @param string $jumpUrl 页面跳转地址
  28. * @param mixed $ajax 是否为Ajax方式 当数字时指定跳转时间
  29. * @return void
  30. */
  31. protected function success($message = '', $jumpUrl = '', $ajax = false)
  32. {
  33. $this->dispatchJump($message, 1, $jumpUrl, $ajax);
  34. }
  35. /**
  36. * Ajax方式返回数据到客户端
  37. * @access protected
  38. * @param mixed $data 要返回的数据
  39. * @param String $type AJAX返回数据格式
  40. * @param int $json_option 传递给json_encode的option参数
  41. * @return void
  42. */
  43. protected function ajaxReturn($data, $type = 'JSON', $json_option = 0)
  44. {
  45. if (empty($type)) {
  46. $type = 'JSON';
  47. }
  48. switch (strtoupper($type)) {
  49. case 'JSON':
  50. // 返回JSON数据格式到客户端 包含状态信息
  51. header('Content-Type:application/json; charset=utf-8');
  52. exit(json_encode($data, $json_option));
  53. case 'XML':
  54. // 返回xml格式数据
  55. header('Content-Type:text/xml; charset=utf-8');
  56. exit(xml_encode($data));
  57. case 'JSONP':
  58. // 返回JSON数据格式到客户端 包含状态信息
  59. header('Content-Type:application/json; charset=utf-8');
  60. $handler = isset($_GET[C('VAR_JSONP_HANDLER')]) ? $_GET[C('VAR_JSONP_HANDLER')] : C('DEFAULT_JSONP_HANDLER');
  61. exit($handler.'('.json_encode($data, $json_option).');');
  62. case 'EVAL':
  63. // 返回可执行的js脚本
  64. header('Content-Type:text/html; charset=utf-8');
  65. exit($data);
  66. default:
  67. // 用于扩展其他返回格式数据
  68. Hook::listen('ajax_return', $data);
  69. }
  70. }
  71. /**
  72. * URL重定向
  73. * @param string $url 重定向的URL地址
  74. * @param integer $time 重定向的等待时间(秒)
  75. * @param string $msg 重定向前的提示信息
  76. * @return void
  77. */
  78. protected function redirect($url, $time = 0, $msg = '')
  79. {
  80. //多行URL地址支持
  81. $url = str_replace(array("\n", "\r"), '', $url);
  82. if (empty($msg)) {
  83. $msg = "系统将在{$time}秒之后自动跳转到{$url}!";
  84. } else {
  85. $msg .='<br>';
  86. $msg .="系统将在{$time}秒之后自动跳转到{$url}!";
  87. }
  88. if (!headers_sent()) {
  89. // redirect
  90. if (0 === $time) {
  91. header('Location: ' . $url);
  92. } else {
  93. header("refresh:{$time};url={$url}");
  94. echo($msg);
  95. }
  96. exit();
  97. } else {
  98. $str = "<meta http-equiv='Refresh' content='{$time};URL={$url}'>";
  99. if ($time != 0) {
  100. $str .= $msg;
  101. }
  102. exit($str);
  103. }
  104. }
  105. private function dispatchJump($message, $status = 1, $jumpUrl = '', $ajax = false)
  106. {
  107. if (true === $ajax || $this->input->is_ajax_request()) {// AJAX提交
  108. $data = is_array($ajax)?$ajax:array();
  109. $data['info'] = $message;
  110. $data['status'] = $status;
  111. $data['url'] = $jumpUrl;
  112. $this->ajaxReturn($data);
  113. } else {
  114. $this->redirect($jumpUrl, 5, $message);
  115. }
  116. }
  117. /**
  118. * 是否是AJAx提交的
  119. * @return bool
  120. */
  121. protected function IS_AJAX()
  122. {
  123. return (! empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest');
  124. }
  125. /**
  126. * 是否是GET提交的
  127. */
  128. protected function IS_GET()
  129. {
  130. return $_SERVER['REQUEST_METHOD'] == 'GET' ? true : false;
  131. }
  132. /**
  133. * 是否是POST提交
  134. * @return int
  135. */
  136. protected function IS_POST()
  137. {
  138. return ($_SERVER['REQUEST_METHOD'] == 'POST') ? true : false;
  139. }
  140. }