解决PHP报错ZipArchive library is not enabled异常的方法

 更新时间:2016年11月25日 17:18  点击:2175
本文章为各位介绍一篇关于解决PHP报错ZipArchive library is not enabled异常的方法,希望文章能够对大家有帮助。

   今天在Linux底下上传Excel文件时,抛出“ZipArchive library is not enabled” 的异常。而我在本地的windows下的代码则是运行正常的。
 
      原因是:在Linux下没有php_zip.dll这个文件(有也不会起作用的),所以需要重新编译一下php的zip模块。
    
     在Unix/Linux下的解决办法 :
  
      1、依次运行如下命令:

 

      cd /usr/src 

      wget 
http://pecl.php.net/get/zip
   (默认会在线下载最新版本的)

      tar zxvf zip.x.x.tgz   (所下载的包名)

      cd zip-1.x.x 

      /usr/bin/phpize    (对应的phpize路径 find / -name phpize 出来结果/usr/bin/phpize)

      ./configure --with-php-config=/usr/bin/php-config (对应的php-config路径)

      make 

      make instal


 
      2、查看生成的模块路径(安装完之后,屏幕上会提示zip.so的位置):
     cd /usr/lib/php/modules/ (对应的extensions路径 /usr/lib/php/modules/)
 
      3、修改php.ini
      增加 extension=zip.so
    然后同样在php.ini文件中,将zlib.output_compression = Off 改为 zlib.output_compression = On ;
 
      4、最后再重启一下Apache:./apachectl restart ;
    
      这个针对php的zip模块就安装完成了,能够在php中使用ZipArchive类了。
 
      附:在Windows下的解决办法就比较简单了 :
 
     1、在php.ini文件中,将extension=php_zip.dll前面的分号“;”去除
  然后同样在php.ini文件中,将 zlib.output_compression = Off 改为 zlib.output_compression = On ;
 
     2、重启Apache服务器。

接口签名现在在应用开发中我们通常会用到了,像做支付接口时就必须要用到接口签名了,我们下面来看一个简单的在app应用中的接口签名实现原理了。

接口开发是各系统之间对接的重要方式,其数据是通过开放的互联网传输,对数据的安全性要有一定要求。为了提高传输过程参数的防篡改性,签名sign的方式是目前比较常用的方式。

我这里介绍一种方式,是目前国内互联网公司常用的一种方式,其中淘宝的支付宝支付接口、淘宝开放平台接口、腾讯开放平台等应用的一种方式。

 一、签名参数sign生成的方法

第1步: 将所有参数(注意是所有参数),除去sign本身,以及值是空的参数,按参数名字母升序排序。
第2步: 然后把排序后的参数按参数1值1参数2值2…参数n值n(这里的参数和值必须是传输参数的原始值,不能是经过处理的,如不能将"转成”后再拼接)的方式拼接成一个字符串。
第3步: 把分配给接入方的验证密钥key拼接在第2步得到的字符串前面。
第2步: 在上一步得到的字符串前面加上验证密钥key(这里的密钥key是接口提供方分配给接口接入方的),然后计算md5值,得到32位字符串,然后转成大写.
第4步: 计算第3步字符串的md5值(32位),然后转成大写,得到的字符串作为sign的值。

举例:

假设传输的数据是/interface.php?sign=sign_value&p2=v2& p1=v1&method=cancel&p3=&pn=vn(实际情况最好是通过post方式发送),

其中sign参数对应的sign_value就是签名的值。

第一步,拼接字符串,首先去除sign参数本身,然后去除值是空的参数p3,剩下p2=v2&p1=v1&method=cancel& amp;pn=vn,然后按参数名字符升序排序,method=cancel&p1=v1&p2=v2&pn=vn.

第二步,然后做参数名和值的拼接,最后得到methodcancelp1v1p2v2pnvn
第三步,在上面拼接得到的字符串前加上验证密钥key,我们假设是abc,得到新的字符串abcmethodcancelp1v1p2v2pnvn

第四步,然后将这个字符串进行md5计算,假设得到的是abcdef,然后转为大写,得到ABCDEF这个值即为sign签名值。

注意,计算md5之前请确保接口与接入方的字符串编码一致,如统一使用utf-8编码或者GBK编码,如果编码方式不一致则计算出来的签名会校验失败。

二、签名验证方法:

根据前面描述的签名参数sign生成的方法规则,计算得到参数的签名值,和参数中通知过来的sign对应的参数值进行对比,如果是一致的,那么就校验通过,如果不一致,说明参数被修改过。

例子

 

 代码如下 复制代码
<?php
//header('Content-Type: text/xml; charset=utf-8');
include_once(dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.'phpsec'.DIRECTORY_SEPARATOR.'Math'.DIRECTORY_SEPARATOR.'BigInteger.php');
include_once(dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.'phpsec'.DIRECTORY_SEPARATOR.'Crypt'.DIRECTORY_SEPARATOR.'AES.php');
include_once(dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.'phpsec'.DIRECTORY_SEPARATOR.'Crypt'.DIRECTORY_SEPARATOR.'RSA.php');
//密文
$crypttext = 'v66YKULHFld2JElhm/J9qik2Edr1JHdZIc/k/OesU2GbTX2usXyvF4jGvzvoihrrE8FsfKmllmjsMIjO5fdrS/FD20bYFii4JW3BO3bzshXmz6AEs2DWwG4sK9mNojfOC0IsMoV311X5/JlgUoQXkDy4F5HHpYE9d/xGb0g2XE/hnGSSy2cpQcvQtBlBmixwSckNhsEG92lovlOz8ULwkqG5o7x+qB7P/EMII/WaFAXBJXDXvZX7lmGcOgon6wLhKJLGXorP6BIxOg6LGc6Ux7BAt3i9+0lujNgxIq/sDsl23hsr3yOUpV5C5a813nrHx4HJyd/hBT1UvIUml+eTmJwWCpSfs2cvxIUr0CE57JAZVyXjK13shK3IsZHLPPsm/JcDCrdy0Co/d5uIGJAdzXdsQ56xsju+tlvnA1J6yq2tDIfYK/x6k911A5WXLKYxztD1nq+bTYN3Gv/WFfrzVtgWQBrh06ihS2cwvna0S9EV/YPmhnAjJmrX4trNr9NXQ9xaZaW4lGRg87U5QDV+nQjj1THk0XHFc69N9g2+DsAGyEs9tK6U0ZQ72hJZqZhBCDH1UKw0PLyIhJdxpgPPOWGp8/QVVU2julTeKunvgAAEc3n+GoZfqjsCDi1S6T2MTnjWYWNoFRBhvEZFD/revgpasTOzDQa5NqR1B+mUF70r6uw6MWLJ7cT9Tz3jq+CA';
$aeskey = base64_decode('qZe60QZFxuirub2ey4+7+Q==');
//AES解密,采用ECB模式
$aes = new Crypt_AES(CRYPT_MODE_ECB);
//设置AES密钥
$aes->setKey($aeskey);
//解密AES密文
$plaintext = $aes->decrypt(base64_decode($crypttext));
echo $plaintext;
echo '<hr />';
//AES加密明文
//echo $aes->encrypt($plaintext);
//rsa公钥
$publickey = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCffOeIVYut9jW5w1L5uKX4aDvd837a8JhaWm5S8YqNQfgEmfD9T+rDknXLqMT+DXeQAqGo4hBmcbej1aoMzn6hIJHk3/TfTAToNN8fgwDotHewsTCBbVkQWtDTby3GouWToVsRi1i/A0Vfb0+xM8MnF46DdhhrnZrycERBSbyrcwIDAQAB';
//echo base64_decode($publickey);
//rsa签名
$signature = 'XHin4uUFqrKDEhKBD/hQisXLFFSxM6EZCvCPqnWCQJq3uEp3ayxmFuUgVE0Xoh4AIWjIIsOWdnaToL1bXvAFKwjCtXnkaRwUpvWrk+Q0eqwsoAdywsVQDEceG5stas1CkPtrznAIW2eBGXCWspOj+aumEAcPyYDxLhDN646Krzw=';
//echo base64_decode($signature);
$rsa = new Crypt_RSA();
//设置RSA签名模式 CRYPT_RSA_SIGNATURE_PSS or CRYPT_RSA_SIGNATURE_PKCS1
$rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1);
//var_dump($rsa->createKey());
//生成RSA公钥、私钥
//extract($rsa->createKey());
//使用RSA私钥生成签名
//$rsa->loadKey($privatekey);
//$signature = $rsa->sign($plaintext);
//使用RSA公钥验证签名
echo $plaintext;
$rsa->loadKey(base64_decode($publickey));
echo $rsa->verify($plaintext, base64_decode($signature)) ? 'verified' : 'unverified';
echo '<hr />';
//生成RSA公钥、私钥
//var_dump($rsa->createKey());
extract($rsa->createKey());
//使用RSA私钥加密数据
$rsa->loadKey($privatekey);
$ciphertext = $rsa->encrypt($plaintext);
//使用RSA公钥解密数据
$rsa->loadKey($publickey);
echo $rsa->decrypt($ciphertext);
提取URL是需要通过正则来匹配了,其实我们就是正则来获取字符串中的url地址了,具体的实现方法如下文所示。

这篇文章主要介绍了php提取字符串中网站url地址的方法,可通过正则匹配查找并提取出URL地址,需要的朋友可以参考下

$postInfo['answer2'] ='学习php的方法很多,通过搜索引擎可以搜索到很多资料,当然也可以进入PHP二次开发博客学习哦:http://www.111cn.net,一起交流学'; 
 

preg_match_all("/http:[\/]{2}[a-z]+[.]{1}[a-z\d\-]+[.]{1}[a-z\d]*[\/]*[A-Za-z\d]*[\/]*[A-Za-z\d]*/",$postInfo['answer2'],$array2);  

  

print_r($array2);  

  

if(!emptyempty($array2[0]))  

{  

 foreach ($array2[0] as $k=>$v){  

  $postInfo['answer2'] = str_replace($array2[0][$k],'',$postInfo['answer2'] );  

 }  

}

输出结果:

    (  

        [0] => Array  

            (  

                [0] => http://www.111cn.net

            )  

    )

简易信息聚合(也叫聚合内容)是一种RSS基于XML标准,在互联网上被广泛采用的内容包装和投递协议。RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,使用非常的多,下面我们来介绍在生成rss时pubDate所需日期时间格式的方法

SS / ATOM 的格式要产生都很简单, 麻烦的是日期格式的产生(RSS => pubDate, ATOM => created).

发现 PHP Date 有提供这些需要的相关全域变量可以使用:(PHP 5.1.1 以后开始支援这些全域变量)

 echo DATE_RSS; // D, d M Y H:i:s O

    echo DATE_ATOM; // Y-m-d\TH:i:sP

    echo date(DATE_RSS); // Wed, 23 Apr 2008 19:27:19 +0800

    echo date(DATE_ATOM); // 2008-04-23T19:27:38+08:00

如果是 MySQL timestamp/datetime format 直接拉出来的资料, 就可以直接使用:

 date(DATE_RSS, ($MYSQL_DATETIME_DATA));

目前支持的日期全域变量有以下:

 DATE_ATOM: Atom  Atom (example: 2005-08-15T15:52:01+00:00)

    DATE_COOKIE: HTTP Cookies (example: Monday, 15-Aug-05 15:52:01 UTC)

    DATE_ISO8601: ISO-8601 (example: 2005-08-15T15:52:01+0000)

    DATE_RFC822: RFC 822 (example: Mon, 15 Aug 05 15:52:01 +0000)

    DATE_RFC850: RFC 850 (example: Monday, 15-Aug-05 15:52:01 UTC)

    DATE_RFC1036: RFC 1036 (example: Mon, 15 Aug 05 15:52:01 +0000)

    DATE_RFC1123: RFC 1123 (example: Mon, 15 Aug 2005 15:52:01 +0000)

    DATE_RFC2822: RFC 2822 (Mon, 15 Aug 2005 15:52:01 +0000)

    DATE_RFC3339: Same as DATE_ATOM

    DATE_RSS: RSS (Mon, 15 Aug 2005 15:52:01 +0000)

    DATE_W3C: World Wide Web Consortium (example: 2005-08-15T15:52:01+00:00)

PHP 预定义的日期格式

自 PHP 5.1.1 起定义有以下常量来提供标准日期表达方法,可以用于日期格式函数

 echo DATE_RSS; // D, d M Y H:i:s O

    echo DATE_ATOM; // Y-m-d\TH:i:sP

    echo date(DATE_RSS); // Wed, 23 Apr 2008 19:27:19 +0800

    echo date(DATE_ATOM); // 2008-04-23T19:27:38+08:00

虽然格式简单, 但用PHP内的预定义格式岂不更加方便.

目前PHP所有支持的日期格式:

DATE_ATOM: Atom  Atom (example: 2005-08-15T15:52:01+00:00)

    DATE_COOKIE: HTTP Cookies (example: Monday, 15-Aug-05 15:52:01 UTC)

    DATE_ISO8601: ISO-8601 (example: 2005-08-15T15:52:01+0000)

    DATE_RFC822: RFC 822 (example: Mon, 15 Aug 05 15:52:01 +0000)

    DATE_RFC850: RFC 850 (example: Monday, 15-Aug-05 15:52:01 UTC)

    DATE_RFC1036: RFC 1036 (example: Mon, 15 Aug 05 15:52:01 +0000)

    DATE_RFC1123: RFC 1123 (example: Mon, 15 Aug 2005 15:52:01 +0000)

    DATE_RFC2822: RFC 2822 (Mon, 15 Aug 2005 15:52:01 +0000)

    DATE_RFC3339: Same as DATE_ATOM

    DATE_RSS: RSS (Mon, 15 Aug 2005 15:52:01 +0000)

    DATE_W3C: World Wide Web Consortium (example: 2005-08-15T15:52:01+00:00)

 

生成rss例子

header("Content-type: application/xml");  //定义header头,以防止chrome内核的浏览器不支持rss订阅,如果不支持就输出xml格式的文件
/**
 * 查询数据库,获取要输出rss的数据
 */
$database = "nameofthedatabase";
$dbconnect = mysql_pconnect(localhost, dbuser, dbpassword);
mysql_select_db($database, $dbconnect);
$query = "select link, headline, description from `headlines` limit 15";
$result = mysql_query($query, $dbconnect);
while ($line = mysql_fetch_assoc($result)) {
    $return[] = $line;
}
$now = date("D, d M Y H:i:s T");
$output = "<?xml version=\"1.0\" encoding=\"utf-8\"?>
            <rss version=\"2.0\">
                <channel>
                    <title>山东道路交通安全网-$lanmu</title>
                    <link>http://sdjtaq.cn/rss</link>
                    <description>Latest 100 articles of $lanmu</description>
                    <pubDate>$now</pubDate>
                    <lastBuildDate>$now</lastBuildDate>
                    <docs>http://someurl.com</docs>
                    <managingEditor>810706080@qq.com</managingEditor>
                    <webMaster>810706080@qq.com</webMaster>
            ";
foreach ($artList as $line) {
    $date = strtotime($line['add_time']); //将数据库的时间格式化成时间戳
    $output .= "<item> \n"
            . "<title>" . $line['title'] . "</title>\n"
            . " <link>http://sdjtaq.cn/aq_show_" . $line['id'] . ".html</link>\n"
            . "<description><![CDATA[" . $line['zhaiyao'] . "]]></description>\n"
            . "<pubDate>" . date("D, d M Y H:i:s O", $date) . "</pubDate>\n"
            . "</item>\n";
}
$output .= "</channel>\n</rss>";
echo $output;

微信公众平台现在有许多的api接口了我们可以利用微信公众平台来实现许多的一些功能,下面来看一个php版本的微信公众平台开发实例。
最近在做微信公众平台开发,一口气写了二十几个功能,挺有意思的~
 
闽南师大小秘书
 
今天来分享一下开发经验~
微信公众平台提供的接口很简单,先看看消息交互流程:
 
微信公众平台消息交互流程
 
说的通俗一些,用户使用微信发送消息 -> 微信将数据发送给开发者 -> 开发者处理消息并返回数据至微信 -> 微信把返回数据发送给用户,期间数据交互通过XML完成,就这么简单。
 
下面写个实例,开发微信智能聊天机器人:
 
1. 注册微信公众平台账号
微信公众平台:
https://mp.weixin.qq.com/


注: 目前一张身份证只能注册两个账号,账号名称关乎加V认证,请慎重注册。
 
2. 申请服务器/虚拟主机
没有服务器/虚拟主机的童鞋可以使用BAE和SAE,不多介绍。
 
3. 开启开发者模式
微信公众平台有两个模式,一个是编辑模式(傻瓜模式),简单但功能单一。另一个是开发者模式,可以通过开发实现复杂功能。两个模式互斥,显而易见,登录微信公众平台并通过“高级功能”菜单开启开发者模式。
 
4. 填写接口配置信息
同样是在“高级功能”菜单中配置,需要配置两项参数:
URL: 开发者应用访问地址,目前仅支持80端口,以“http://www.YoonPer.com/weixin/index.php”为例。
TOKEN: 随意填写,用于生成签名,以“YoonPer”为例。
填写完把下面代码保存为index.php并上传至http://www.YoonPer.com/weixin/目录,最后点击“提交”完成验证

<?php
define("TOKEN", "YoonPer"); //TOKEN值
$wechatObj = new wechat();
$wechatObj->valid();
class wechat {
 public function valid() {
  $echoStr = $_GET["echostr"];
  if($this->checkSignature()){
   echo $echoStr;
   exit;
  }
 }

 private function checkSignature() {
  $signature = $_GET["signature"];
  $timestamp = $_GET["timestamp"];
  $nonce = $_GET["nonce"];
  $token = TOKEN;
  $tmpArr = array($token, $timestamp, $nonce);
  sort($tmpArr);
  $tmpStr = implode( $tmpArr );
  $tmpStr = sha1( $tmpStr );
  if( $tmpStr == $signature ) {
   return true;
  } else {
   return false;
  }
 }
}
?>


这玩意儿就是微信公众平台校验URL是否正确接入,研究代码没有实质性意义,验证完即可删除文件,就不详细说明了,有兴趣的童鞋可以查看官方文档。
微信公众平台API文档:
http://mp.weixin.qq.com/wiki/index.php


5. 开发微信公众平台功能
OK,上面提到了,微信公众平台与开发者之间的数据交互是通过XML完成的,既然用到XML,当然得遵循规范,所以在着手开发之前先看看官方接口文档提供的XML规范,以文本消息为例:
 
当用户向微信公众账号发送消息时,微信服务器会POST给开发者一些数据:
<xml>
<!--开发者微信号-->
<ToUserName><![CDATA[toUser]]></ToUserName>
<!--发送方帐号(OpenID)-->
<FromUserName><![CDATA[fromUser]]></FromUserName>
<!--消息创建时间 (整型)-->
<CreateTime>12345678</CreateTime>
<!--消息类别 (text文本消息)-->
<MsgType><![CDATA1]></MsgType>
<!--消息内容-->
<Content><![CDATA[content]]></Content>
<!--消息ID (64位整型)-->
<MsgId>1234567890123456</MsgId>
</xml>
 
开发者在处理完消息后需要返回数据给微信服务器:
<xml>
<!--接收方帐号(OpenID)-->
<ToUserName><![CDATA[toUser]]></ToUserName>
<!--开发者微信号-->
<FromUserName><![CDATA[fromUser]]></FromUserName>
<!--消息创建时间 (整型)-->
<CreateTime>12345678</CreateTime>
<!--消息类别 (text文本消息)-->
<MsgType><![CDATA1]></MsgType>
<!--回复消息内容-->
<Content><![CDATA[content]]></Content>
<!--星标操作(位0x0001被标志时 星标刚收到的消息)-->
<FuncFlag>0</FuncFlag>
</xml>
除文本消息外,微信公众平台还支持用户发送图片消息、地理位置消息、链接消息、事件推送,而开发者还可以向微信公众平台回复音乐消息和图文消息,各类消息XML规范也可以参见官方文档。
 
来看看官方提供的一个PHP示例,我做了一些精简:
<?php
$wechatObj = new wechat();
$wechatObj->responseMsg();
class wechat {
 public function responseMsg() {

  //---------- 接 收 数 据 ---------- //

  $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //获取POST数据

  //用SimpleXML解析POST过来的XML数据
  $postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);

  $fromUsername = $postObj->FromUserName; //获取发送方帐号(OpenID)
  $toUsername = $postObj->ToUserName; //获取接收方账号
  $keyword = trim($postObj->Content); //获取消息内容
  $time = time(); //获取当前时间戳


  //---------- 返 回 数 据 ---------- //

  //返回消息模板
  $textTpl = "<xml>
  <ToUserName><![CDATA[%s]]></ToUserName>
  <FromUserName><![CDATA[%s]]></FromUserName>
  <CreateTime>%s</CreateTime>
  <MsgType><![CDATA[%s]]></MsgType>
  <Content><![CDATA[%s]]></Content>
  <FuncFlag>0</FuncFlag>
  </xml>";

  $msgType = "text"; //消息类型
  $contentStr = 'http://www.YoonPer.com'; //返回消息内容

  //格式化消息模板
  $resultStr = sprintf($textTpl,$fromUsername,$toUsername,
  $time,$msgType,$contentStr);
  echo $resultStr; //输出结果
 }
}
?>
把代码保存为index.php并上传至http://www.YoonPer.com/weixin/目录,如果刚才没删除该文件,则直接覆盖。
 
现在用户通过微信公众平台发送任何消息公众账号均会返回一条内容为“http://www.YoonPer.com”的消息。
接下来需要做的就是根据用户消息动态返回结果~
 
SimSimi(小黄鸡)是目前比较火的聊天机器人,我用CURL开发了一个免费的SimSimi(小黄鸡)接口,传入关键词会返回文本回复,这部分不是本文重点,就不多说明,直接上代码(2014.07.28更新):
<?php
function simsimi ($keyword)
{
    $keyword = urlencode($keyword);
    //----------- 获取COOKIE ----------//
    $url = "http://www.simsimi.com/";
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $content = curl_exec($ch);
    list($header, $body) = explode("\r\n\r\n", $content);
    preg_match_all("/set\-cookie:([^\r\n]*);/iU", $header, $matches);
    $cookie = implode(';', $matches[1]).";simsimi_uid=1;";
    curl_close($ch);
    //----------- 抓 取 回 复 ----------//
    $url = "http://www.simsimi.com/func/reqN?lc=ch&ft=0.0&req=$keyword&fl=http%3A%2F%2Fwww.simsimi.com%2Ftalk.htm";
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_COOKIE, $cookie);
    $content = json_decode(curl_exec($ch), 1);
    curl_close($ch);
    if ( $content['result'] == '200' ) {
        return $content['sentence_resp'];
    } else {
        return '我还不会回答这个问题...';
    }
}
?>
把上面两段代码整合在一起就大功告成了,需要说明一点,微信服务器在5秒内收不到响应会断掉连接,通过此接口有可能会超时,且SimSimi已经屏蔽了BAE和SAE上的抓取请求,推荐使用SimSimi官方收费API,速度比较快~

[!--infotagslink--]

相关文章

  • php 中file_get_contents超时问题的解决方法

    file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25
  • HTTP 408错误是什么 HTTP 408错误解决方法

    相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • ps把文字背景变透明的操作方法

    ps软件是现在非常受大家喜欢的一款软件,有着非常不错的使用功能。这次文章就给大家介绍下ps把文字背景变透明的操作方法,喜欢的一起来看看。 1、使用Photoshop软件...2017-07-06
  • c#检测usb设备拨插类库USBClassLibrary分享

    这篇文章主要介绍了c#检测usb设备拨插类库USBClassLibrary的简单示例,需要的朋友可以参考下...2020-06-25
  • intellij idea快速查看当前类中的所有方法(推荐)

    这篇文章主要介绍了intellij idea快速查看当前类中的所有方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02
  • Mysql select语句设置默认值的方法

    1.在没有设置默认值的情况下: 复制代码 代码如下:SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_timeFROM userinfoLEFT JOIN region ON userinfo.adm_regionid = region.id 结果:...2014-05-31
  • js导出table数据到excel即导出为EXCEL文档的方法

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht...2013-10-13
  • mysql 批量更新与批量更新多条记录的不同值实现方法

    批量更新mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码 代码如下:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';如果更新同一字段为同一个值,mysql也很简单,修改下where即...2013-10-04
  • js基础知识(公有方法、私有方法、特权方法)

    本文涉及的主题虽然很基础,在许多人看来属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题。这里会涉及到对象属性的封装、原型、构造函数、闭包以及立即执行表达式等知识。公有方法 公有方法就是能被外部访问...2015-11-08
  • ps怎么制作倒影 ps设计倒影的方法

    ps软件是一款非常不错的图片处理软件,有着非常不错的使用效果。这次文章要给大家介绍的是ps怎么制作倒影,一起来看看设计倒影的方法。 用ps怎么做倒影最终效果&#819...2017-07-06
  • c#中分割字符串的几种方法

    单个字符分割 string s="abcdeabcdeabcde"; string[] sArray=s.Split('c'); foreach(string i in sArray) Console.WriteLine(i.ToString()); 输出下面的结果: ab de...2020-06-25
  • PHP 验证码不显示只有一个小红叉的解决方法

    最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
  • 安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法

    手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21
  • js控制页面控件隐藏显示的两种方法介绍

    javascript控制页面控件隐藏显示的两种方法,方法的不同之处在于控件隐藏后是否还在页面上占位 方法一: 复制代码 代码如下: document.all["panelsms"].style.visibility="hidden"; document.all["panelsms"].style.visi...2013-10-13
  • 连接MySql速度慢的解决方法(skip-name-resolve)

    最近在Linux服务器上安装MySql5后,本地使用客户端连MySql速度超慢,本地程序连接也超慢。 解决方法:在配置文件my.cnf的[mysqld]下加入skip-name-resolve。原因是默认安装的MySql开启了DNS的反向解析。如果禁用的话就不能...2015-10-21
  • C#方法的总结详解

    本篇文章是对C#方法进行了详细的总结与介绍,需要的朋友参考下...2020-06-25
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
  • EXCEL数据上传到SQL SERVER中的简单实现方法

    EXCEL数据上传到SQL SERVER中的方法需要注意到三点!注意点一:要把EXCEL数据上传到SQL SERVER中必须提前把EXCEL传到服务器上.做法: 在ASP.NET环境中,添加一个FileUpload上传控件后台代码的E.X: 复制代码 代码如下: if...2013-09-23