Anonymous 发表于 2023-2-9 17:12

PHP实用封装函数集一

<div style="background:#eeeeee; border:1px solid #cccccc; padding:5px 10px"><code style="background-color:#e6e6fa;border-left:5px solid #ff0000;display:block;padding:5px 5px 5px 5px;">获取本周前的12周开始时间与结束时间</code>
<p>在统计中,会经常遇到&ldquo;统计本月前的12个月的数据&rdquo;,这个非常好计算,一年12个月,好计算。如果说,要&ldquo;统计本周前的12周的数据&rdquo;,这还真是第一次碰到这种需求。</p>

<p>好吧,看招:</p>
//本周前的前12周以及对应开始日期、结束日期<br />
function&nbsp;get_12_week()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;$now&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;time();<br />
&nbsp;&nbsp;&nbsp;&nbsp;$curr_week_1&nbsp;=&nbsp;date(&#39;Y-m-d&#39;,&nbsp;strtotime(&#39;-&#39;&nbsp;.&nbsp;(date(&quot;w&quot;,$now)-1).&#39;&nbsp;days&#39;,&nbsp;$now));//得到本周星期一<br />
&nbsp;&nbsp;&nbsp;&nbsp;$i&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;while(true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$i&nbsp;+=&nbsp;1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$before_week_1&nbsp;=&nbsp;date(&#39;Y-m-d&#39;,&nbsp;strtotime(&#39;-7&nbsp;days&#39;,&nbsp;strtotime($curr_week_1)));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$before_week_7&nbsp;=&nbsp;date(&#39;Y-m-d&#39;,&nbsp;strtotime(&#39;+6&nbsp;days&#39;,&nbsp;strtotime($before_week_1)));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$week[$i]&nbsp;=&nbsp;[<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;format_time_start&#39;&nbsp;=&gt;&nbsp;$before_week_1,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;format_time_end&#39;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;$before_week_7,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;time_start&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;strtotime($before_week_1),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;time_end&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;strtotime($before_week_7.&#39;&nbsp;23:59:59&#39;)];<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$curr_week_1&nbsp;&nbsp;&nbsp;=&nbsp;$before_week_1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($i&nbsp;&gt;=&nbsp;12)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;$week&nbsp;=&nbsp;array_reverse($week);<br />
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$week;<br />
}</div>

<div>&nbsp;</div>

<p>&nbsp;</p>

<p>&nbsp;</p>

<div style="background:#eeeeee; border:1px solid #cccccc; padding:5px 10px"><code style="background-color:#e6e6fa;border-left:5px solid #ff0000;display:block;padding:5px 5px 5px 5px;">获取本周一,周未的时间: $today&nbsp; = date(&#39;Y-m-d&#39;);</code><br />
$curr&nbsp;&nbsp; = strtotime($today);<br />
$i&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = date(&#39;N&#39;);<br />
$diff&nbsp;&nbsp; = $i - 1;<br />
$monday = strtotime(&#39;-&#39;.$diff.&#39; days&#39;);<br />
$begin = date(&#39;Y-m-d&#39;, $monday);<br />
$end&nbsp;&nbsp; = date(&#39;Y-m-d 23:59:59&#39;, strtotime(&#39;+6 days&#39;, $monday));<br />
echo $begin, &quot;\n&quot;, $end; //输出:<br />
2021-01-11<br />
2021-01-17 23:59:59</div>

Anonymous 发表于 2023-2-9 17:14

php一次打印多个变量,方便调试:dd

<p>//一次打印多个变量,方便调试。实用函数dd,仿var_dump,但比var_dump美观</p>

<div style="background:#eeeeee; border:1px solid #cccccc; padding:5px 10px">if(!function_exists(&#39;dd&#39;)){<br />
&nbsp; &nbsp; function dd(){<br />
&nbsp; &nbsp; &nbsp; &nbsp; header(&#39;Content-type:text/html;charset=utf-8&#39;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; $ua &nbsp; &nbsp; &nbsp;= $_SERVER[&#39;HTTP_USER_AGENT&#39;];<br />
&nbsp; &nbsp; &nbsp; &nbsp; $b &nbsp; &nbsp; &nbsp; = 0;<br />
&nbsp; &nbsp; &nbsp; &nbsp; if(stripos($ua, &#39;Gecko&#39;) !== false) $b = 1;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; //得到传入的参数:<br />
&nbsp; &nbsp; &nbsp; &nbsp; $trace = debug_backtrace();<br />
&nbsp; &nbsp; &nbsp; &nbsp; $param = $trace[&#39;args&#39;];<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$fileline = &#39;文件:&#39;. $trace[&#39;file&#39;] . &#39;___&#39; . &#39;行:&#39;. $trace[&#39;line&#39;];<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;echo &#39;&lt;p&gt;&#39;,$fileline, &#39;&lt;/p&gt;&#39;;<br />
&nbsp; &nbsp; &nbsp; &nbsp; for ($i = 0; $i &lt; count($param); $i++) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $tips = (is_array($param[$i]) || is_object($param[$i])) ? &#39;数组&#39;.($i+1) : &#39;变量&#39;. ($i+1);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo $b ? (&#39;&lt;fieldset&gt;&lt;legend&gt;变量:&#39;.($tips).&#39;,值为:&lt;/legend&gt;&#39;) : (&#39;变量:$&#39;.($tips).&#39;,值为:&#39;);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo $b ? &#39;&lt;pre&gt;&#39; : &#39;&#39;;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; empty($param[$i]) ? var_dump($param[$i]) : print_r($param[$i]) ;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo $b ? &#39;&lt;/pre&gt;&#39; : &#39;&#39;;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo $b ? &#39;&lt;/fieldset&gt;&#39; : PHP_EOL;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; exit;<br />
&nbsp; &nbsp; }<br />
}</div>

<p>调用示例:dd($var1, $var2, $var3, $var4, $var5);&nbsp;</p>

杰克工作室 发表于 2023-2-20 11:31

curl函数封装函数

<p>curl函数封装:&nbsp;</p>

<div style="background:#eeeeee; border:1px solid #cccccc; padding:5px 10px">
<pre>
function curl_($url, $post_data = array(), $timeout = 30, $ext = array())
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); //执行超时
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1); //连接超时

    if (!empty($ext[&#39;referer&#39;])) {
      curl_setopt($ch, CURLOPT_REFERER, $ext[&#39;referer&#39;]);
    }
&nbsp;$ua = &#39;Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36&#39;;
    if (!empty($ext[&#39;user_agent&#39;])) {
      $ua = $ext[&#39;user_agent&#39;];
    }
    curl_setopt($ch, CURLOPT_USERAGENT, $ua);
    if (!empty($ext[&#39;header&#39;])) {
      curl_setopt($ch, CURLOPT_HTTPHEADER, $ext[&#39;header&#39;]); //构造
    }

    if (!empty($post_data)) {
      curl_setopt($ch, CURLOPT_POST, 1);
      if (is_array($post_data)) {
            $mydata = http_build_query($post_data);
      } else {
            $mydata = $post_data;
      }
      curl_setopt($ch, CURLOPT_POSTFIELDS, $mydata);
    }
    if (preg_match(&#39;~^https~i&#39;, $url)) {
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    }
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $content = curl_exec($ch);
    curl_close($ch);
    return $content;
}</pre>
</div>

<p>调用示例:&nbsp;</p>

<pre>
$img_content = curl_($url, array(), 30, [&#39;referer&#39;=&gt;$url]);</pre>

杰克工作室 发表于 2023-2-20 11:36

通用日志记录函数:filelog

<div style="background:#eeeeee; border:1px solid #cccccc; padding:5px 10px">
<pre>
/**
* 通用日志记录函数
*
* 此函数日志文件路径为:.\data\log\20180106_[$fileName|$level].log
* @param string $msg 日志内容
* @param string $level 日志级别 NORMAL:一般级别,默认。NOTICE:提醒,WARING:警告,ERR:错误
* @param type $fileName 仅文件名称。默认为空时将按照默认方式(日期)提供文件名
*/
function filelog($msg, $fileName = &#39;&#39;, $level = &#39;NORMAL&#39;) {
    $levels = array(&#39;NORMAL&#39;, &#39;NOTICE&#39;, &#39;WARING&#39;, &#39;ERR&#39;);
    !in_array($level, $levels) &amp;&amp; $level = &#39;NORMAL&#39;;

    $discuz_root = dirname(__DIR__);
    $dir = $discuz_root . &#39;./data/log/&#39;; //DIRECTORY_SEPARATOR

    if(!is_dir($dir)) mkdir($dir, 0755, true);

    $destination = $dir . date(&#39;Ymd&#39;) . &#39;_&#39; .(empty($fileName) ? (strtoupper($level) . &quot;.log&quot;) : $fileName);

    $now = date(&#39;Y-m-d H:i:s&#39;, time());

    //检测日志文件大小,超过配置大小则备份日志文件重新生成
    $log_size = 2 * 1024* 1024;
    if(is_file($destination) &amp;&amp; floor($log_size) &lt;= filesize($destination) )
    {
      rename($destination,dirname($destination).&#39;/&#39;.time().&#39;-&#39;.basename($destination));
    }

    if (!is_file($destination)) {
      touch($destination);
      chmod($destination, 0775);
    }
    if(!is_string($msg)){
      //$msg = print_r($msg, true);
      $msg = var_export($msg, true);
    }
    error_log(&quot;[{$now}]_{$level}: {$msg}\r\n\n&quot;, 3, $destination);
}</pre>
</div>

杰克工作室 发表于 2023-3-1 10:14

发送HTTP状态函数:send_http_status

<pre>
/**
&nbsp;* 发送HTTP状态
&nbsp;* @param integer $code 状态码
&nbsp;* @return void
&nbsp;*/
function send_http_status($code, $exit=false)
{
&nbsp; &nbsp; if($code == 404 &nbsp;|| $code == 500)
&nbsp; &nbsp; {
&nbsp; &nbsp; &nbsp; &nbsp; $msg = GROUP_NAME . &#39;/&#39; . MODULE_NAME . &#39;/&#39; . ACTION_NAME . &#39;:不存在!&#39;;
&nbsp; &nbsp; &nbsp; &nbsp; if(GROUP_NAME == &#39;GROUP_NAME&#39;){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $msg = $_SERVER[&#39;REQUEST_URI&#39;] . &#39;?&#39; . ($_SERVER[&#39;QUERY_STRING&#39;] ?? &#39;&#39;);
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; $ip &nbsp;= GetRealIp();//获取IP地址
&nbsp; &nbsp; &nbsp; &nbsp; $str = date_() . &#39; _ [&#39;.$ip.&#39;][&#39;.($_SERVER[&#39;REQUEST_METHOD&#39;] ?? &#39;&#39;).&#39;]&#39; . $msg;
&nbsp; &nbsp; &nbsp; &nbsp; $filefullpath = C(&#39;LOG_PATH&#39;) . &#39;/&#39;. date(&#39;Y-m-d&#39;).&#39;.error.log&#39;;
&nbsp; &nbsp; &nbsp; &nbsp; filelog($filefullpath, $str);
&nbsp; &nbsp; }
&nbsp; &nbsp; static $_status = array(
&nbsp; &nbsp; &nbsp; &nbsp; // Informational 1xx
&nbsp; &nbsp; &nbsp; &nbsp; 100 =&gt; &#39;Continue&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 101 =&gt; &#39;Switching Protocols&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; // Success 2xx
&nbsp; &nbsp; &nbsp; &nbsp; 200 =&gt; &#39;OK&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 201 =&gt; &#39;Created&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 202 =&gt; &#39;Accepted&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 203 =&gt; &#39;Non-Authoritative Information&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 204 =&gt; &#39;No Content&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 205 =&gt; &#39;Reset Content&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 206 =&gt; &#39;Partial Content&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; // Redirection 3xx
&nbsp; &nbsp; &nbsp; &nbsp; 300 =&gt; &#39;Multiple Choices&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 301 =&gt; &#39;Moved Permanently&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 302 =&gt; &#39;Moved Temporarily &#39;, // 1.1
&nbsp; &nbsp; &nbsp; &nbsp; 303 =&gt; &#39;See Other&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 304 =&gt; &#39;Not Modified&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 305 =&gt; &#39;Use Proxy&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; // 306 is deprecated but reserved
&nbsp; &nbsp; &nbsp; &nbsp; 307 =&gt; &#39;Temporary Redirect&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; // Client Error 4xx
&nbsp; &nbsp; &nbsp; &nbsp; 400 =&gt; &#39;Bad Request&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 401 =&gt; &#39;Unauthorized&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 402 =&gt; &#39;Payment Required&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 403 =&gt; &#39;Forbidden&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 404 =&gt; &#39;Not Found&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 405 =&gt; &#39;Method Not Allowed&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 406 =&gt; &#39;Not Acceptable&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 407 =&gt; &#39;Proxy Authentication Required&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 408 =&gt; &#39;Request Timeout&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 409 =&gt; &#39;Conflict&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 410 =&gt; &#39;Gone&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 411 =&gt; &#39;Length Required&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 412 =&gt; &#39;Precondition Failed&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 413 =&gt; &#39;Request Entity Too Large&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 414 =&gt; &#39;Request-URI Too Long&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 415 =&gt; &#39;Unsupported Media Type&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 416 =&gt; &#39;Requested Range Not Satisfiable&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 417 =&gt; &#39;Expectation Failed&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; // Server Error 5xx
&nbsp; &nbsp; &nbsp; &nbsp; 500 =&gt; &#39;Internal Server Error&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 501 =&gt; &#39;Not Implemented&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 502 =&gt; &#39;Bad Gateway&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 503 =&gt; &#39;Service Unavailable&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 504 =&gt; &#39;Gateway Timeout&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 505 =&gt; &#39;HTTP Version Not Supported&#39;,
&nbsp; &nbsp; &nbsp; &nbsp; 509 =&gt; &#39;Bandwidth Limit Exceeded&#39;
&nbsp; &nbsp; );
&nbsp; &nbsp; if (isset($_status[$code])) {
&nbsp; &nbsp; &nbsp; &nbsp; header(&#39;HTTP/1.1 &#39; . $code . &#39; &#39; . $_status[$code]);
&nbsp; &nbsp; &nbsp; &nbsp; // 确保FastCGI模式下正常
&nbsp; &nbsp; &nbsp; &nbsp; header(&#39;Status:&#39; . $code . &#39; &#39; . $_status[$code]);
&nbsp; &nbsp; }
&nbsp; &nbsp; if($exit){
&nbsp; &nbsp; &nbsp; &nbsp; exit;
&nbsp; &nbsp; }
}
</pre>

杰克工作室 发表于 2023-3-1 10:22

获取用户真实IP函数:GetRealIp()

<pre>

/**
&nbsp;* 获取用户的真实ip,仅适用于cgi运行方式,cli运行方式请不要使用
&nbsp;* @return string,IP十五位字符,
&nbsp;*/
function GetRealIp(){
&nbsp; &nbsp; static $_map = array();
&nbsp; &nbsp; if(isset($_map[&#39;ip&#39;]))
&nbsp; &nbsp; &nbsp; &nbsp; $ip = $_map[&#39;ip&#39;];
&nbsp; &nbsp; else{
&nbsp; &nbsp; &nbsp; &nbsp; if(isset($_SERVER[&quot;HTTP_X_CONNECTING_IP&quot;])) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ip = trim($_SERVER[&quot;HTTP_X_CONNECTING_IP&quot;]);
&nbsp; &nbsp; &nbsp; &nbsp; }else if(isset($_SERVER[&quot;HTTP_FW_ADDR&quot;])) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ip = trim($_SERVER[&quot;HTTP_FW_ADDR&quot;]);
&nbsp; &nbsp; &nbsp; &nbsp; }else if(isset($_SERVER[&quot;HTTP_CDN_SRC_IP&quot;])){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ip = trim($_SERVER[&quot;HTTP_CDN_SRC_IP&quot;]);
&nbsp; &nbsp; &nbsp; &nbsp; }else if(getenv ( &quot;REMOTE_ADDR&quot; ) &amp;&amp; strcasecmp ( getenv ( &quot;REMOTE_ADDR&quot; ), &quot;unknown&quot; ) ) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ip = trim(getenv(&quot;REMOTE_ADDR&quot;));
&nbsp; &nbsp; &nbsp; &nbsp; }else if (isset ( $_SERVER [&#39;REMOTE_ADDR&#39;] ) &amp;&amp; $_SERVER [&#39;REMOTE_ADDR&#39;] &amp;&amp; strcasecmp ( $_SERVER [&#39;REMOTE_ADDR&#39;], &quot;unknown&quot; )){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ip = trim($_SERVER [&#39;REMOTE_ADDR&#39;]);
&nbsp; &nbsp; &nbsp; &nbsp; }else if(getenv ( &quot;HTTP_X_FORWARDED_FOR&quot; ) &amp;&amp; strcasecmp ( getenv ( &quot;HTTP_X_FORWARDED_FOR&quot; ), &quot;unknown&quot; )) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ip = getenv ( &quot;HTTP_X_FORWARDED_FOR&quot; );
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ip = explode ( &#39;,&#39;, $ip );
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $len = count($ip);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $tmp = trim($_SERVER[&#39;REMOTE_ADDR&#39;]);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for($i=0;$i&lt;$len;$i++){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $t = trim($ip[$i]);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if($t!=&quot;127.0.0.1&quot;){
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $tmp = $t;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ip = $tmp;
&nbsp; &nbsp; &nbsp; &nbsp; }else
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ip = &quot;127.0.0.1&quot;;
&nbsp; &nbsp; &nbsp; &nbsp; $_map[&#39;ip&#39;] = $ip;
&nbsp; &nbsp; }
&nbsp; &nbsp;
&nbsp; &nbsp; return $ip;
}</pre>

杰克工作室 发表于 2023-3-1 10:24

thinkphp获取cookie方法:cookie

<pre>

/**
&nbsp;* Cookie 设置、获取、删除
&nbsp;* @param string $name cookie名称
&nbsp;* @param mixed $value cookie值
&nbsp;* @param mixed $options cookie参数
&nbsp;* @return mixed
&nbsp;*/
function cookie($name, $value = &#39;&#39;, $option = null)
{
&nbsp; &nbsp; // 默认设置
&nbsp; &nbsp; $config = array(
&nbsp; &nbsp; &nbsp; &nbsp; &#39;prefix&#39; =&gt; C(&#39;COOKIE_PREFIX&#39;), // cookie 名称前缀
&nbsp; &nbsp; &nbsp; &nbsp; &#39;expire&#39; =&gt; C(&#39;COOKIE_EXPIRE&#39;), // cookie 保存时间
&nbsp; &nbsp; &nbsp; &nbsp; &#39;path&#39; =&gt; C(&#39;COOKIE_PATH&#39;), // cookie 保存路径
&nbsp; &nbsp; &nbsp; &nbsp; &#39;domain&#39; =&gt; C(&#39;COOKIE_DOMAIN&#39;), // cookie 有效域名
&nbsp; &nbsp; );
&nbsp; &nbsp; // 参数设置(会覆盖黙认设置)
&nbsp; &nbsp; if (!is_null($option)) {
&nbsp; &nbsp; &nbsp; &nbsp; if (is_numeric($option))
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $option = array(&#39;expire&#39; =&gt; $option);
&nbsp; &nbsp; &nbsp; &nbsp; elseif (is_string($option))
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parse_str($option, $option);
&nbsp; &nbsp; &nbsp; &nbsp; $config = array_merge($config, array_change_key_case($option));
&nbsp; &nbsp; }
&nbsp; &nbsp; // 清除指定前缀的所有cookie
&nbsp; &nbsp; if (is_null($name)) {
&nbsp; &nbsp; &nbsp; &nbsp; if (empty($_COOKIE))
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;
&nbsp; &nbsp; &nbsp; &nbsp; // 要删除的cookie前缀,不指定则删除config设置的指定前缀
&nbsp; &nbsp; &nbsp; &nbsp; $prefix = empty($value) ? $config[&#39;prefix&#39;] : $value;
&nbsp; &nbsp; &nbsp; &nbsp; if (!empty($prefix)) {// 如果前缀为空字符串将不作处理直接返回
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foreach ($_COOKIE as $key =&gt; $val) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (0 === stripos($key, $prefix)) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setcookie($key, &#39;&#39;, time() - 3600, $config[&#39;path&#39;], $config[&#39;domain&#39;]);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; unset($_COOKIE[$key]);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; return;
&nbsp; &nbsp; }
&nbsp; &nbsp; $name = $config[&#39;prefix&#39;] . $name;
&nbsp; &nbsp; if (&#39;&#39; === $value) {
&nbsp; &nbsp; &nbsp; &nbsp; if (isset($_COOKIE[$name])) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $value = $_COOKIE[$name];
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (0 === strpos($value, &#39;think:&#39;)) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $value = substr($value, 6);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return array_map(&#39;urldecode&#39;, json_decode(MAGIC_QUOTES_GPC ? stripslashes($value) : $value, true));
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return $value;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; } else {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return null;
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; } else {
&nbsp; &nbsp; &nbsp; &nbsp; if (is_null($value)) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setcookie($name, &#39;&#39;, time() - 3600, $config[&#39;path&#39;], $config[&#39;domain&#39;]);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; unset($_COOKIE[$name]); // 删除指定cookie
&nbsp; &nbsp; &nbsp; &nbsp; } else {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // 设置cookie
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (is_array($value)) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $value = &#39;think:&#39; . json_encode(array_map(&#39;urlencode&#39;, $value));
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $expire = !empty($config[&#39;expire&#39;]) ? time() + intval($config[&#39;expire&#39;]) : 0;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setcookie($name, $value, $expire, $config[&#39;path&#39;], $config[&#39;domain&#39;]);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_COOKIE[$name] = $value;
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; }
}</pre>

杰克工作室 发表于 2023-3-1 10:24

thinkphp获取session函数:session

<pre>
//注:稍微将此函数里获取配置的地方改动一下,即可拿到其它框架使用
/**
&nbsp;* session管理函数
&nbsp;* @param string|array $name session名称 如果为数组则表示进行session设置
&nbsp;* @param mixed $value session值
&nbsp;* @param boolean &nbsp; &nbsp; &nbsp;$isPrefix
&nbsp;* @return mixed
&nbsp;*/
function session($name, $value = &#39;&#39;)
{
&nbsp; &nbsp; $prefix = <span style="color:#e74c3c">C(&#39;SESSION_PREFIX&#39;)</span>;

&nbsp; &nbsp; if (is_array($name)) { // session初始化 在session_start 之前调用
&nbsp; &nbsp; &nbsp; &nbsp; if (isset($name[&#39;prefix&#39;])) <span style="color:#e74c3c">C(&#39;SESSION_PREFIX&#39;</span>, $name[&#39;prefix&#39;]);
&nbsp; &nbsp; &nbsp; &nbsp; if (C(&#39;VAR_SESSION_ID&#39;) &amp;&amp; isset($_REQUEST[<span style="color:#e74c3c">C(&#39;VAR_SESSION_ID&#39;)</span>])) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; session_id($_REQUEST);
&nbsp; &nbsp; &nbsp; &nbsp; } elseif (isset($name[&#39;id&#39;])) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; session_id($name[&#39;id&#39;]);
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; ini_set(&#39;session.auto_start&#39;, 0);
&nbsp; &nbsp; &nbsp; &nbsp; if (isset($name[&#39;name&#39;])) session_name($name[&#39;name&#39;]);
&nbsp; &nbsp; &nbsp; &nbsp; if (isset($name[&#39;path&#39;])) session_save_path($name[&#39;path&#39;]);
&nbsp; &nbsp; &nbsp; &nbsp; if (isset($name[&#39;domain&#39;])) ini_set(&#39;session.cookie_domain&#39;, $name[&#39;domain&#39;]);
&nbsp; &nbsp; &nbsp; &nbsp; if (isset($name[&#39;expire&#39;])) ini_set(&#39;session.gc_maxlifetime&#39;, $name[&#39;expire&#39;]);
&nbsp; &nbsp; &nbsp; &nbsp; if (isset($name[&#39;use_trans_sid&#39;])) ini_set(&#39;session.use_trans_sid&#39;, $name[&#39;use_trans_sid&#39;] ? 1 : 0);
&nbsp; &nbsp; &nbsp; &nbsp; if (isset($name[&#39;use_cookies&#39;])) ini_set(&#39;session.use_cookies&#39;, $name[&#39;use_cookies&#39;] ? 1 : 0);
&nbsp; &nbsp; &nbsp; &nbsp; if (isset($name[&#39;cache_limiter&#39;])) session_cache_limiter($name[&#39;cache_limiter&#39;]);
&nbsp; &nbsp; &nbsp; &nbsp; if (isset($name[&#39;cache_expire&#39;])) session_cache_expire($name[&#39;cache_expire&#39;]);
&nbsp; &nbsp; &nbsp; &nbsp; if (isset($name[&#39;type&#39;])) <span style="color:#e74c3c">C(&#39;SESSION_TYPE&#39;</span>, $name[&#39;type&#39;]);
&nbsp; &nbsp; &nbsp; &nbsp; if (<span style="color:#e74c3c">C(&#39;SESSION_TYPE&#39;)</span>) { // 读取session驱动
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $class = &#39;Session&#39; . ucwords(strtolower(C(&#39;SESSION_TYPE&#39;)));
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // 检查驱动类
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (require_cache(EXTEND_PATH . &#39;Driver/Session/&#39; . $class . &#39;.class.php&#39;)) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $hander = new $class();
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $hander-&gt;execute();
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // 类没有定义
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; throw_exception(L(&#39;_CLASS_NOT_EXIST_&#39;) . &#39;: &#39; . $class);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; // 启动session
&nbsp; &nbsp; &nbsp; &nbsp; if (<span style="color:#e74c3c">C(&#39;SESSION_AUTO_START&#39;)</span>) session_start();
&nbsp; &nbsp; } else {
&nbsp; &nbsp; &nbsp; &nbsp; // 启动session
&nbsp; &nbsp; &nbsp; &nbsp; if (!isset($_SESSION)) session_start();

&nbsp; &nbsp; &nbsp; &nbsp; if (&#39;&#39; === $value) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (0 === strpos($name, &#39;[&#39;)) { // session 操作
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (&#39;&#39; == $name) { // 暂停session
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; session_write_close();
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } elseif (&#39;&#39; == $name) { // 启动session
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; session_start();
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } elseif (&#39;&#39; == $name) { // 销毁session
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION = array();
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; session_unset();
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; session_destroy();
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } elseif (&#39;&#39; == $name) { // 重新生成id
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; session_regenerate_id();
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } elseif (0 === strpos($name, &#39;?&#39;)) { // 检查session
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $name = substr($name, 1);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (strpos($name, &#39;.&#39;)) { // 支持数组
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; list($name1, $name2) = explode(&#39;.&#39;, $name);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return $prefix ? isset($_SESSION[$prefix][$name1][$name2]) : isset($_SESSION[$name1][$name2]);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return $prefix ? isset($_SESSION[$prefix][$name]) : isset($_SESSION[$name]);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } elseif (is_null($name)) { // 清空session
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($prefix) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; unset($_SESSION[$prefix]);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION = array();
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } elseif ($prefix) { // 获取session
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (strpos($name, &#39;.&#39;)) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; list($name1, $name2) = explode(&#39;.&#39;, $name);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return isset($_SESSION[$prefix][$name1][$name2]) ? $_SESSION[$prefix][$name1][$name2] : null;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return isset($_SESSION[$prefix][$name]) ? $_SESSION[$prefix][$name] : null;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (strpos($name, &#39;.&#39;)) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; list($name1, $name2) = explode(&#39;.&#39;, $name);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return isset($_SESSION[$name1][$name2]) ? $_SESSION[$name1][$name2] : null;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return isset($_SESSION[$name]) ? $_SESSION[$name] : null;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; } elseif (is_null($value)) { // 删除session
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($prefix) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; unset($_SESSION[$prefix][$name]);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; unset($_SESSION[$name]);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; } else { // 设置session
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($prefix) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!is_array($_SESSION[$prefix])) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION[$prefix] = array();
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION[$prefix][$name] = $value;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // 如果没有支持两级以上的数组会出现值覆盖的情况
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (strpos($name, &#39;.&#39;)) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; list($name1, $name2) = explode(&#39;.&#39;, $name);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION[$name1][$name2] = $value;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION[$name] = $value;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; }
}
</pre>

杰克工作室 发表于 2023-3-3 11:38

php将变量输出到console:consolelog()

<pre>
//一次打印多个变量,方便调试,将信息输出到console.log里
if(!function_exists(&#39;consolelog&#39;)){
&nbsp; &nbsp; function consolelog(){
&nbsp; &nbsp; &nbsp; &nbsp; header(&#39;Content-type:text/html;charset=utf-8&#39;);
&nbsp; &nbsp; &nbsp; &nbsp; $ua &nbsp; &nbsp; &nbsp;= $_SERVER[&#39;HTTP_USER_AGENT&#39;];
&nbsp; &nbsp; &nbsp; &nbsp; if(stripos($ua, &#39;Gecko&#39;) !== false) return ;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; //得到传入的参数:
&nbsp; &nbsp; &nbsp; &nbsp; $trace = debug_backtrace();
&nbsp; &nbsp; &nbsp; &nbsp; $param = $trace[&#39;args&#39;];
&nbsp; &nbsp; &nbsp; &nbsp; echo &#39;&lt;script&gt;&#39;;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$fileline = &#39;文件:&#39;. $trace[&#39;file&#39;] . &#39;___&#39; . &#39;行:&#39;. $trace[&#39;line&#39;];
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;echo &#39;console.log(&quot;&#39;,$fileline, &#39;&quot;);&#39;;
&nbsp; &nbsp; &nbsp; &nbsp; for ($i = 0; $i &lt; count($param); $i++) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $tips = (is_array($param[$i]) || is_object($param[$i])) ? &#39;数组&#39;.($i+1) : &#39;变量&#39;. ($i+1);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;echo &#39;console.log(&quot;&#39;.$tips.&#39;=&quot;&#39;.(empty($param[$i]) ? var_dump($param[$i]) : print_r($param[$i])).&#39;);&#39;;
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; echo &#39;&lt;/script&gt;&#39;;
&nbsp; &nbsp; }
}</pre>

<Br><br>
页: [1]
查看完整版本: PHP实用封装函数集一