phpmyadmin出错:缺少 mcrypt 扩展,请检查 PHP 配置与phpmyadmin无法加载

 更新时间:2016年11月25日 15:49  点击:2230
phpmyadmin出错:缺少 mcrypt 扩展。请检查 PHP 配置。phpmyadmin无法加载解决方案: 今天配置phpMyAdmin出现了这个错: 无法载入 mcrypt 扩展,请检查 PHP 配置

出现以下几种情况后可能会造成运行phpmyadmin程序提示“无法载入 mcrypt 扩展,请检查 PHP 配置”的 错误提示
1、没有正确安装Mysql数据库,在系统服务中Mysql相关的服务没有启动   (请查看正确安装Mysql的方法)
2、在系统的 system32(C:windowssystem32) 目录下缺少 libmcrypt.dll文件,解决方法是找到php目录下的libmcrypt.dll,并将libmcrypt.dll复制到C:windows system32目录中,然后重新启动Web服务。
3、在C:windows目录下的php.ini文件中,没有将“;extension=php_mcrypt.dll”中的前面一个“;”去掉,所以不能使用相应功能,解决方法是打开php.ini文件
找到
;extension=php_mcrypt.dll
改成
extension=php_mcrypt.dll    //去掉前面的;使之生效
4、Mysql目录没有读取权限,正确的目录权限如下:
administrator   完全控制
system    完全控制
user    读取加运行
其他的用户权限全部删除(也可保留,但安全性不高,建议删除),然后重启MYsql服务和Web服务(建议修改此项后重启一下服务器)
当你试过所有办法之后还是不行,其实还有一步,网上很少有说,解决办法,我的是WINXP+IIS+PHP5+MYSQL5
棹面>我的电脑>右键属性>高级>环境变量>系统变量>新建
名:phprc值:d:php  (你的PHP在什么目录就是什么)

 

网上下载的IP地址数据库中的IP地址并非是我们常见的格式(61.175.232.30),而是这种(1034938398)类型的数据,看起来这两个数据好像没有关连,很复杂,其实并不复杂

,以“61.175.232.30”这个IP地址为例,IP地址转换成数字串方法如下:先将“61.175.232.30”转换为十六进制“3d.af.e8.1e”,然后去掉小数点后,变为“3dafe81e”,最后将这个十六进制数转换为十进制“1034938398”,那么“61.175.232.30”就变为“1034938398”了。


方法一:

 代码如下 复制代码

public function ipToLong(){
        $ip = $_SERVER['REMOTE_ADDR'];
        $ip = explode('.', $ip);
        $ip = array_reverse($ip);//数组反转
        $r = 0;
        for($i=0,$j=count($ip); $i<$j; $i++){
            $r += $ip[$i] * pow(256, $i);
        }
        $r = sprintf("%u", $r);
        echo $r;
}

方法二:

 代码如下 复制代码

public function ipToLong(){
        $ip = $_SERVER['REMOTE_ADDR'];
        $ip = explode('.',$ip);
        $r = ($ip[0] << 24) | ($ip[1] << 16) | ($ip[2] << 8) | $ip[3];
        if($r < 0) $r += 4294967296;
        echo $r ;
}

经测试本地的ip是:192.168.1.101,两个方法转换结果是3232235877

ping 192.168.1.101 和 ping 3232235877是一样的。


下面提供用C#实现IP地址转换的代码:

代码

    

 代码如下 复制代码

   //IP地址
       string Ip = "61.175.232.30";
       //取出IP地址去掉‘.’后的string数组
       string [] Ip_List = Ip.Split (".".ToCharArray ());
       string X_Ip = "";
       //循环数组,把数据转换成十六进制数,并合并数组(3dafe81e)
       foreach(string ip in Ip_List)
       {
               X_Ip += Convert.ToInt16 (ip).ToString ("x");
       }

       //将十六进制数转换成十进制数(1034938398)
       long N_Ip = long.Parse (X_Ip, System.Globalization.NumberStyles.HexNumber);

      OK,就这样转换成功了,不信,你可以用windows的命令行工具测试一下,ping 61.175.232.30 和 ping 1034938398 的效果是一样的,都是指向 61.175.232.30 的。

本文章总结了目前常用的几种分页代码,比如说上一页,下一页之类的,还有一种数字分页,像1,2,3...之类的等

 

分页代码

 代码如下 复制代码
<?php
  //page当前页,num每页的页数
  $page=isset($_GET['page'])?intval($_GET['page']):1;
  $num=5;
  $conn = mysql_connect('127.0.0.1','root','');
  if (!$conn) {
   die('Could not connect:'.mysql_error());
  }
  mysql_select_db('shop');
  //获取记录总数
  $total=mysql_num_rows(mysql_query("select * from user"));
  //计算页数
  $pagenum=ceil($total/$num);
  //限制页数不能超出范围
  If($page>$pagenum || $page == 0){
    Echo 'Error : Can Not Found The page.';
    Exit;
  }
  //语句“Select * from table limit 0,10”从table表提取十条信息,0为起点,10为提取的数目
  //$offset为起点值,如当前页为第一页,每页5条,起点即为0,同理当前为第二页,起点将为5
  $offset=($page-1)*$num;
  $result=mysql_query("select * from user limit $offset,$num");
  while($it=mysql_fetch_array($result)){
    echo 'id:'.$it['id'].' name:'.$it['name'].'<br />';
  }
  //显示链接页面切换链接,当前页无链接
  for($i=1;$i<=$pagenum;$i++){
    $show=($i!=$page)?"<a href='index.php?page=".$i."'>$i</a>":"<b>$i</b>";
    echo $show." ";
  }
  echo $total.'条记录,每页5条,共'.$pagenum.'页';
   mysql_free_result($result);
  mysql_close($conn);
?>

实例2

 代码如下 复制代码

<?

//function.php  这里是主函数
function php_page($page_dbname,$page_size,$page)
{
if ($page=="")
 {$page=1;};
if ($ljjl=="")
 {$ljjl=0;};
if($page)
  {
    //$page_dbname="tb_insert";
 //$page_size=4;          //每页显示4条记录
    $query="select count(*) as total from ".$page_dbname;  //从数据库中读取数据
 $result=mysql_query($query);
    $message_count=mysql_result($result,0,"total");  //获取总的记录数
    $page_count=ceil($message_count/$page_size);  //获取总的页数
    $offset=($page-1)*$page_size;  
    $query="select * from ".$page_dbname." order by id desc limit $offset, $page_size";  
 $result=mysql_query($query);
//内容显示 这里只是简单的作个示范,可以按你的要求随便改动。
 while ($myrow=@mysql_fetch_array($result))
 {
  echo $myrow[name]." | ".$myrow[number]." | ".$myrow[tel]." | ".$myrow[address]."<br><br>";
  }
 
}
 echo "页次:".$page."/";
 echo $page_count."页 记录:";
 echo $message_count."条"."<br>";

  if($page!=1)
   {
    echo  "<a href=index.php?page=1>首页</a>&nbsp;";
       echo "<a href=index.php?page=".($page-1).">上一页</a>&nbsp;";
    }
  else
   {
    echo  "首页&nbsp;";
       echo "上一页&nbsp;";  
   }
 
  for($i=1; $i<=$page_count; $i++)
  {
   if ($page==$i)
    {echo  $i."&nbsp;";}
    else
       {echo  "<a href=index.php?page=$i>$i</a>&nbsp;";}
   }
 
  if($page<$page_count)
   {
    echo "<a href=index.php?page=".($page+1).">下一页</a>&nbsp;";
    echo  "<a href=index.php?page=".$page_count.">尾页</a>";
   }
  else
   {
    echo "下一页&nbsp;";
    echo  "尾页";
   }
}
?>

//conn.php   连接数据库

 代码如下 复制代码

<?php

$id=mysql_connect("localhost","root","root")or dir('连接失败:' . mysql_error());
//mysql_connect("IP","用户名","密码")

if(mysql_select_db("db_database06",$id))
echo "";
else
echo ('连接失败:' . mysql_error());
mysql_query("set names gb2312");
?>

//主程序,将上面俩个文件包含进来,再调用一个php_page()就可完成分页。:)

 代码如下 复制代码

 <?php

require_once("conn.php");
require_once("function.php");
php_page("tb_insert",3,$_GET[page]); // "tb_insert"是表名,3是在每页要显示的记录数,$_GET[page]是page的id,直接用就可以了。
?> 

上在的一种是文字分页,比如说上一页,下一页之类的,还有一种数字分页,像1,2,3...之类的,这个比较简单,前者稍微复杂些.最后一种是他们2者结合

 代码如下 复制代码

--> 1 //获取当前页数
         if(isset($_GET['page'])){
             $page = intval($_GET['page']);
         }
         else {
             $page=1;
         }
         $PageSize = 1; //每页的记录数量
         // 获取总数量
         $sql = "select count(*) from blog";
         $result = mysql_query($sql);
         $row = mysql_fetch_row($result);
         $amount = $row[0];
         /*计算总页数
         if($amount){
             if($amount<$PageSize) { //如果总数量小于每页的记录数量$PageSize,那么只有一页.
                 $PageCount = 1;
             }
             if($amount%$PageSize) { //总数量除以每页的记录数量取于
                 $PageCount =& amp;nbsp;(int)($amount/$PageSize)+1;//如果有于,则页数等于总数量除每页的记录数加1
             }
             else{
                 $PageCount =& amp;nbsp;$amount/$PageSize;//没有,则结果是页数
             }
         }
         else{
             $PageCount = 0;
         }*/
         $PageCount = ceil($amount/$PageSize);//总页数=总数量除以每页数量  如果有小树,则进位< span style="color: #008000;">
         if($Page>$PageCount|$page==0){// 如果当前页数大于总页数
             echo "不能发现此页!";
             exit();
         }
      
         //翻页链接
         $PageOut = '';
         if($page==1){//如果页数只有一页
             $PageOut .= '第一页|上一页';
         }
         else{
             $PageOut .= '<a href="index.php?page=1">第一页& lt;/a>|<a href="index.php?page='.($page-1).'">上一页</a>|';
         }
         if($page==$PageCount||$PageCount==0){//如果当前页等于总也数
             $PageOut .= '下一页|尾页';
         }
         else{
             $PageOut .=  '<a href="index.php?page='.($page+1).'">下一页</a>|<a href="index.php?page='.$PageCount.'">尾页</a>';
         }
         //获取数据
         if($amount){
         $sql="select * from blog limit ".($page-1)*($PageSize).",$PageSize";
         $result=mysql_query($sql);
         while($row=mysql_fetch_array($result)){//此段代码只是示例
             $blogs[] = array('bid'=>$row['bid'],'title'=>$row['title']);
             foreach ($blogs as $blog){
             $title=$blog['title'];
             }
             $output = "<a href=index.php?action=blog_del&bid=$blog[bid]>删除</a>".
             "<a href=index.php?action=blog_edit&bid=$blog[bid]>编辑</a>".
             "<a href=index.php?action=blog_view&bid=$blog[bid]>查看</a>";
             include("template/default/blog.tpl.php");
             echo $PageOut;
         }
         for($i=1;$i<=$PageCount;$i++){//数字分页
            $Pageshow = ($i!=$page)?"<a href='index.php?page=".$i."'>$i</a>":"<b>$i</b>";
            echo $PageShow;
          }
          echo $amount.'条记录,每页'.$PageSize.'条,共'.$PageCount.'页';
         }

文章总结了一种比较好的UTF8中文字符截断程序实例分享给大家参考。

最简单的字符截取函数是用php自带的substr()

其实,PHP原生就有多charset下字符截取方案,额,所以就是这个样子...??.

Multibyte String Functions函数族中,


string mb_substr ( string $str , int $start [, int $length [, string $encoding ]] )  用来字符串截取

int mb_strlen ( string $str [, string $encoding ] )  返回字符串长度

但它只支持数字与字母不支持中文

实例

UTF8中文字符截断

 代码如下 复制代码
<?php
 /* UTF-8中文字符截断程序 */
 
 
 $str = "123这是测试字符串";
 $str1 = "()()";
 echo subUTF8str($str,0,3)."<br>";
 echo subUTF8str($str,0,4)."<br>";
 echo subUTF8str($str1,0,4)."<br>";
 echo subUTF8str($str1,0,10)."<br>";
 
 function subUTF8str($str,$start=0,$length=80){
    $cur_len = 0; //人理解的字符串长度
    $all_len = strlen($str); //机器理解字符串长度
    if($length > $all_len)
    {
         return $str;
    }
    for($i = 0;$i < $all_len;)
    {
         if($cur_len == $start)
         {
             break;
         }
         if (ord($str[$i]) > 127)
         {
             $i += 3;
         }else{
             $i += 1;
         }
         $cur_len ++;
    }
     $start_pos = $i;
     $temp_pos = $cur_len;
     for(;$cur_len - $temp_pos < $length;)
     {
         if($i >= $all_len)
             break;
         if (ord($str[$i]) > 127)
         {
             $i += 3;
         }else{
             $i += 1;
         }
         $cur_len ++;
     }
     $end_pos = $i;
     return substr($str,$start_pos,$end_pos);
 }
 ?>

改进后我们把它分页,这样可支持ut8与gbk等中文字符截取

 代码如下 复制代码

function substrs($content, $length){
 if($length && strlen($content)>$length){
  if($db_charset!='utf-8'){
   $retstr='';
   for($i = 0; $i < $length - 2; $i++) {
    $retstr .= ord($content[$i]) > 127 ? $content[$i].$content[++$i] : $content[$i];
   }
   return $retstr;
  }else{
   return utf8_trim(substr($content,0,$length*3));
  }
 }
 return $content;
}

function utf8_trim($str) {
 $len = strlen($str);
 for($i=strlen($str)-1;$i>=0;$i-=1){
  $hex .= ' '.ord($str[$i]);
  $ch   = ord($str[$i]);
  if(($ch & 128)==0) return substr($str,0,$i);
  if(($ch & 192)==192)return substr($str,0,$i);
 }
 return($str.$hex);
}

自己常用的一个手机号正则表达式,今天突然发现不可以验证18开头的手机,下面是我以前的验证函数。
 代码如下 复制代码

function funcMtel($str)//手机号码正则表达试
{
 return (preg_match("/(?:13d{1}|15[03689])d{8}$/",$str))?true:false;
}

测试

18678785887

返回为

false

原因分析,查看了发现上面正则只能验证以13,15开头的,自然18开头的是不可以用的

修改后

 代码如下 复制代码

function funcMtel($str)//手机号码正则表达试
{
 return (preg_match("/(?:1[3|4|5|8]d{1}|15[03689])d{8}$/",$str))?true:false;
}

测试

18678785887

返回为

true

这样就成功了,

总结经验:

像手机号这类都会不断更新号码段了,我们在写函数时把它写成公共函数,这样就可以解决这个问题了。

[!--infotagslink--]

相关文章

  • 用js的document.write输出的广告无阻塞加载的方法

    一、广告代码分析很多第三方的广告系统都是使用document.write来加载广告,如下面的一个javascript的广告链接。复制代码 代码如下:<script type="text/javascript" src="http://gg.5173.com/adpolestar/5173/;ap=2EBE5...2014-06-07
  • jQuery页面加载初始化常用的三种方法

    当页面打开时我们需要执行一些操作,这个时候如果我们选择使用jquery的话,需要重写他的3中方法,自我感觉没什么区 别,看个人喜好了,第二种感觉比较简单明了: 第一种: 复制代码 代码如下: <script type="text/javas...2014-06-07
  • 解决IDEA插件市场Plugins无法加载的问题

    这篇文章主要介绍了解决IDEA插件市场Plugins无法加载的问题,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-10-21
  • phpmyadmin config.inc.php配置示例

    phpmyadmin config.inc.php配置示例...2013-09-29
  • Android WebView加载html5页面实例教程

    如果我们要在Android应用APP中加载html5页面,我们可以使用WebView,本文我们分享两个WebView加载html5页面实例应用。 实例一:WebView加载html5实现炫酷引导页面大多...2016-09-20
  • Angular性能优化之第三方组件和懒加载技术

    这篇文章主要介绍了Angular性能优化之第三方组件和懒加载技术,对性能优化感兴趣的同学,可以参考下...2021-05-11
  • 几种延迟加载JS代码的方法加快网页的访问速度

    本文介绍了如何延迟javascript代码的加载,加快网页的访问速度。 当一个网站有很多js代码要加载,js代码放置的位置在一定程度上将会影像网页的加载速度,为了让我们的网页加载速度更快,本文总结了一下几个注意点...2013-10-13
  • ThinkPHP+jquery实现“加载更多”功能代码

    本篇文章主要介绍了ThinkPHP+jquery实现“加载更多”功能代码,以实例代码讲诉了加载更多的代码实现,非常具有实用价值,需要的朋友可以参考下 ...2017-03-13
  • 解决vue动态路由异步加载import组件,加载不到module的问题

    这篇文章主要介绍了解决vue动态路由异步加载import组件,加载不到module的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-27
  • AngularJS 实现按需异步加载实例代码

    AngularJS 通过路由支持多视图应用, 可以根据路由动态加载所需的视图, 在 AngularJS 的文档中有详细的介绍, 网上也有不少教程, 就不用介绍了!随着视图的不断增加,js文件会越来越多,而 AngularJS 默认需要把全部的js都一次性...2015-10-21
  • 使用phpMyAdmin批量修改Mysql数据表前缀的方法

    多个网站共用一个Mysql数据库时,为使数据库管理不混乱,一般采用不同的网站使用不同前缀名的方式进行区分。而如何批量修改已有数据库的前缀名呢?全部导出修改后再导入?还是一个表一个表的修改?今天我要介绍的是相对简单的...2015-10-21
  • phpMyadmin创建数据库和设置用户权限图解

    phpmyadmin是一款很不错的WEB对mysql数据库管理软件,如果你想创建数据库与设置用户权限我们必须操作用户的很高的权限,如ROOT权限,下面我来给大家介绍介绍。 先来配...2016-11-25
  • vue3如何按需加载第三方组件库详解

    距离 Vue 3.0 正式版发布已经有一段时间了,关于vue3组件库相关的问题还是挺多人感兴趣的,这篇文章主要给大家介绍了关于vue3如何按需加载第三方组件库的相关资料,需要的朋友可以参考下...2021-06-02
  • 修改mysql密码phpmyadmin不能登录

    出现phpmyadmin不能登录是我在修改我mysql服务器密码之后导致的,后来百度了相关的原因,原来是修改了mysql密码之后我们还需要在phpmyadmin目录中去修改config.inc.php中...2016-11-25
  • 用C++面向对象的方式动态加载so的方法

    下面小编就为大家带来一篇用C++面向对象的方式动态加载so的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-04-25
  • 基于Pycharm加载多个项目过程图解

    这篇文章主要介绍了基于Pycharm加载多个项目过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-04-22
  • jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法

    这篇文章主要介绍了jQuery Easyui使用之可折叠面板动态加载无效果的解决方案,非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧...2016-08-24
  • jQuery实现模仿微博下拉滚动条加载数据效果

    这篇文章主要介绍了jQuery实现模仿微博下拉滚动条加载数据效果,涉及jQuery响应下拉滚动事件动态操作页面元素的技巧,需要的朋友可以参考下...2015-12-27
  • C#中调用DLL时未能加载文件或程序集错误的处理方法(详解)

    下面小编就为大家带来一篇C#中调用DLL时未能加载文件或程序集错误的处理方法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • phpmyadmin不能登录,无任何提示的问题解决

    昨天有一朋友说自己的phpmyadmin不能登录并且无任何提示了,问我怎么解决,下面我来分享一下关于phpmyadmin不能登录问题总结. phpmyadmin不能登录没有提示 解决方法:...2016-11-25