php标准生成验证码程序

 更新时间:2016年11月25日 15:50  点击:1451
这里提供一款常用的标准的php验证码生成程序有需要的朋友可以参考一下
 代码如下 复制代码

<?php教程

session_start();

$enablegd = 1;
//判断图像处理函数是否存在
$funcs = array('imagecreatetruecolor','imagecolorallocate','imagefill','imagestring','imageline','imagerotate','imagedestroy','imagecolorallocatealpha','imageellips教程e','imagepng');
foreach($funcs as $func)
{
 if(!function_exists($func))
 {
  $enablegd = 0;
  break;
 }
}

ob_clean(); //清理缓冲

if($enablegd)
{
 //create captcha
 $consts = 'cdfgkmnpqrstwxyz23456';
 $vowels = 'aek23456789';
 for ($x = 0; $x < 6; $x++)
 {
  $const[$x] = substr($consts, mt_rand(0,strlen($consts)-1),1); //获取$consts中的一个随机数
  $vow[$x] = substr($vowels, mt_rand(0,strlen($vowels)-1),1); //获取$vowels中的一个随机数
 }
 $radomstring = $const[0] . $vow[0] .$const[2] . $const[1] . $vow[1] . $const[3] . $vow[3] . $const[4];
 $_SESSION['checkcode'] = $string = substr($radomstring,0,4); //显示4个字符

 $imageX = strlen($radomstring)*8; //图像的宽
 $imageY = 20;      //图像的高
 $im = imagecreatetruecolor($imageX,$imageY); //新建一个真彩色图像

 //creates two variables to store color
 $background = imagecolorallocate($im, rand(180, 250), rand(180, 250), rand(180, 250)); //背景色
 $foregroundArr = array(imagecolorallocate($im, rand(0, 20), rand(0, 20), rand(0, 20)),
  imagecolorallocate($im, rand(0, 20), rand(0, 10), rand(245, 255)),
  imagecolorallocate($im, rand(245, 255), rand(0, 20), rand(0, 10)),
  imagecolorallocate($im, rand(245, 255), rand(0, 20), rand(245, 255))
 );
 $foreground2 = imagecolorallocatealpha($im, rand(20, 100), rand(20, 100), rand(20, 100),80); //分配颜色并说明透明度
 $middleground = imagecolorallocate($im, rand(200, 160), rand(200, 160), rand(200, 160)); //中间背景
 $middleground2 = imagecolorallocatealpha($im, rand(180, 140), rand(180, 140), rand(180, 140),80); //中间背景2

 //与左上角的颜色相同的都会被填充
 imagefill($im, 0, 0, imagecolorallocate($im, 250, 253, 254));
 //往图像上写入文字
 imagettftext($im, 12, rand(30, -30), 5, rand(14, 16), $foregroundArr[rand(0,3)], 'C:WindowsFontsArial.ttf', $string[0]);
 imagettftext($im, 12, rand(50, -50), 20, rand(14, 16), $foregroundArr[rand(0,3)], 'C:WindowsFontsArial.ttf', $string[1]);
 imagettftext($im, 12, rand(50, -50), 35, rand(14, 16), $foregroundArr[rand(0,3)],'C:WindowsFontsArial.ttf', $string[2]);
 imagettftext($im, 12, rand(30, -30), 50, rand(14, 16), $foregroundArr[rand(0,3)],'C:WindowsFontsArial.ttf', $string[3]);

 //画边框
 $border = imagecolorallocate($im, 133, 153, 193);
 imagerectangle($im, 0, 0, $imageX - 1, $imageY - 1, $border);

 //画一些随机出现的点
 $pointcol = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255));
 for ($i=0;$i<80;$i++)
 {
  imagesetpixel($im,rand(2,$imageX-2),rand(2,$imageX-2),$pointcol);
 }
 //画随机出现的线
 for ($x=0; $x<9;$x++)
 {
  if(mt_rand(0,$x)%2==0)
  {
   imageline($im, rand(0, 120), rand(0, 120), rand(0, 120), rand(0, 120), rand(0, 999999)); //画线
   imageellipse($im, rand(0, 120), rand(0, 120), rand(0, 120), rand(0, 120), $middleground2); //画椭圆
  }
  else
  {
   imageline($im, rand(0, 120), rand(0, 120), rand(0, 120), rand(0, 120), rand(0, 999999));
   imageellipse($im, rand(0, 120), rand(0, 120), rand(0, 120), rand(0, 120), $middleground);
  }
 }
 //output to browser
 header("content-type:image/pngrn");
 imagepng($im);
 imagedestroy($im);
}
else
{
 $files = glob(XINCHENG_ROOT.'images/checkcode/*.jpg');
 if(!is_array($files)) die('请检查文件目录完整性:/images/checkcode/');

 $checkcodefile = $files[rand(0, count($files)-1)]; //随机其中一个文件
 $_SESSION['checkcode'] = substr(basename($checkcodefile), 0, 4); //获得文件名

 header("content-type:image/jpegrn");
 include $checkcodefile;
}
?>

一款由网页提供的php mysql 分页显示代码,样式比较多有需要的朋友可以下载使用。

先我们来看看分页的效果,如果是你想要的就可以下载了。

p.php教程分页类的核心代码

 代码如下 复制代码

<?php
/*

php 分页类
只要实现分页。不与数据库教程连接。

如果是伪静态 只需修改84行以下的A标签即可 如   "<a href='index_".$i.".html'>".$i."</a>"  (index_表示你的伪静态地址) 其他的A标签页是一样

*/

/*

          鄙人工作时间写了个简单实用的  php 分页类   现和大家分享。。
   
    QQ:348145486
   
    email:  tzk_php@163.com 
   
    欢迎大家一起学习交流

*/


class Page{

 public $page_size="20";                     //每页显示的数据数目
 public $page_num;                           //总的数据数目
 public $page_url="";                        //分页的当前URL
 public $pageval;                            //分页的当前页
 public $page_ys;                            //总的页数
 public $page_tf=false;                      //判断能否执行分页的值
 public $page;

 /**********初始化分页类************/
   
 function __construct($page_num,$page_size=""){
  $this->page_num=$page_num;                                                            //获取所有需要显示的数据数目

  if($page_size!=""){
   $this->page_size=$page_size;                                                      //获取每页显示数据数据
  }

  $this->page_url=$_SERVER['SCRIPT_NAME'];                                              //获取当前的URL地址

  if($this->page_num>$this->page_size){                                                 //判断是否能执行分页
   $this->page_ys=ceil($this->page_num/$this->page_size);                            //获取总的分页数
   $this->page_tf=true;                                                              //将分页权限复制以便下面再次判断
  }

  if(!empty($_GET['page'])){                                                            //只允许页码在分页数范围内
   if($_GET['page']>="1"){
    if($_GET['page']<=$this->page_ys){
     $this->pageval=$_GET['page'];
    }else{
     $this->pageval=$this->page_ys;
    }
   }else{
    $this->pageval="1";
   }
  }else{
   $this->pageval="1";
  }

  $this->page=($this->pageval-1)*$this->page_size;                                       //查询数据库数据时的第一条数据

 }

 /************执行分页 返回分页按钮**********/


 function page_fy($val=""){
  if($this->page_tf==true){
   if($val==""){
    return $this->page_style_one();
   }else if ($val=="1"){
     return $this->page_style_two();
   }elseif ($val=="2"){
    return $this->page_style_three();
   }
  }
 }

 /**********分页按钮 样式一*********/

 function page_style_one(){
  if($this->pageval=="1"){
   $up="1";
  }else{
   $up=$this->pageval-1;
  }

  if($this->pageval>=$this->page_ys){
   $down=$this->page_ys;
  }else{
   $down=$this->pageval+1;
  }
  $one="<a href='".$this->page_url."?page=1'>首页</a>";
  $two="<a href='".$this->page_url."?page=".$up."'>上一页</a>";
  $three="<a href='".$this->page_url."?page=".$down."'>下一页</a>";
  $four="<a href='".$this->page_url."?page=".$this->page_ys."'>末页</a>";
  return $page_echo = $one.$two.$three.$four;
 }

 /***********分页按钮 样式二*************/

 function page_style_two(){                                                 //下面这个呢,逻辑很复杂,思维很林乱,
  $page_echo="";
  if($this->pageval=="1"){
   $up="1";
  }else{
   $up=$this->pageval-1;
  }

  if($this->pageval>=$this->page_ys){
   $down=$this->page_ys;
  }else{
   $down=$this->pageval+1;
  }
  $two="<a href='".$this->page_url."?page=".$up."'>上一页</a>";
  $three="<a href='".$this->page_url."?page=".$down."'>下一页</a>";
  
  if($this->page_ys>"6"){

      if($this->pageval<=3){
       $i=2;
       $i_to=5;       
      }elseif ($this->pageval>=($this->page_ys-2)){
       $i=$this->page_ys-4;
       $i_to=$this->page_ys-1;
      }else{
       $i=$this->pageval-2;
       $i_to=$this->pageval+2;
      }
     
  if($this->pageval>4){
   $page_one="...";
  }else{
   $page_one="";
   }

  if($this->pageval<($this->page_ys-3)){
   $page_two="...";
  }else{
   $page_two="";
   }
 
  for ($i;$i<=$i_to;$i++){
   $page_echo.="<a href='".$this->page_url."?page=".$i."'>".$i."</a>";                //如果是伪静态 只需修改A标签即可 如   "<a href='index_".$i.".html'>".$i."</a>"   其他的A标签页是一样
  }   
 
  }else{
   for ($i=2;$i<=($this->page_ys-1);$i++){
       $page_echo.="<a href='".$this->page_url."?page=".$i."'>".$i."</a>";
      }
     
  }
  
  return $two."<a href='".$this->page_url."?page=1'>1</a>".$page_one.$page_echo.$page_two."<a href='".$this->page_url."?page=".$this->page_ys."'>".$this->page_ys."</a>".$three;

 }
 
 /*****************分页按钮 样式三  样式3大家可以写了。 *******************/
 
 function page_style_three(){
  return $this->page_style_two();
 }

 

}
?>

调用方法

 代码如下 复制代码

<style type="text/css教程">

a{ color:#fff; text-decoration:none; padding:2px 5px; background-color:#09C; border:#F63 double 1px; margin:0 2px; font-size:14px;}
a:hover{color:#f00; background-color:#CCC;}
body{color:#999;}
</style>
<?php

include 'p.php';                    //载入分页类库
         
$page=new Page('12345',"10");               //实例化类库     312  为显示的总条数     10   为每页显示的条数  


echo "样式二<br/>";
echo "<br/>";
echo "<br/>";
echo $page->page_fy('1');                //使用分页样式

echo "<br/>";echo "<br/>";echo "<br/>";echo "<br/>";


echo "样式一<br/>";
echo "<br/>";
echo "<br/>";
echo $page->page_fy();                    //使用分页样式


?>

虽然是说简单的数据库连接代码,但最终是来判断用户权限的,有需要的朋友可以参考一下。
 代码如下 复制代码

<?php教程
error_reporting(0);
session_start();
//数据库教程连接
$conn = mysql教程_connect('localhost', 'root', '');
mysql_select_db('chenkun', $conn);
mysql_query('SET NAMES UTF-8');
//定义常量
define('ALL_PS', 'PHP');

function user_shell($uid, $shell, $m_id) {
    $sql = "select * from admin where uid='$uid'";
    $query = mysql_query($sql);
    $row = mysql_fetch_array($query);

    $shell = is_array($row) ? $shell == md5($row['username'] . $row['password'] . ALL_PS) : FALSE;
    if ($shell) {
        if ($row['m_id'] <= $m_id) {
            return $row;
        }
        echo "你的权限不足";
        exit ();
    } else {
        echo "你无权限访问该页";
        exit ();
    }
}

function user_mktime($onlinetime) {
    $new_time = mktime();
    if (($new_time - $onlinetime) > '900') {
        session_destroy();
        echo "登陆超时";
        exit ();
    } else {
        $_SESSION['times'] = mktime();
    }

}
?>

下面举出了三种获取文件缀名方法代码有需要的朋友可以参考一下。

<?php教程
//方法一:
function extend_1($file_name)
{
$retval="";
$pt=strrpos($file_name, ".");
if ($pt) $retval=substr($file_name, $pt+1, strlen($file_name) - $pt);
return ($retval);
}
//方法二
function extend_2($file_name)
{
$extend = pathinfo($file_name);
$extend = strtolower($extend["extension"]);
return $extend;
}
//方法三
function extend_3($file_name)
{
$extend =explode("." , $file_name);
$va=count($extend)-1;
return $extend[$va];
}
?>

php教程 显示文章 几分钟 几小时 几天前

 $time = time() - $time;
        if ($time <= 24 * 3600) {
            if ($time > 3600) {
                $timestring = intval($time / 3600) . '小时前';
            } elseif ($time > 60) {
                $timestring = intval($time / 60) . '分钟前';
            } elseif ($time > 0) {
                $timestring = $time . '秒前';
            } else {
                $timestring = '现在前';
            }
        }

[!--infotagslink--]

相关文章

  • PHP 验证码不显示只有一个小红叉的解决方法

    最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
  • jQuery Real Person验证码插件防止表单自动提交

    本文介绍的jQuery插件有点特殊,防自动提交表单的验证工具,就是我们经常用到的验证码工具,先给大家看看效果。效果图如下: 使用说明 需要使用jQuery库文件和Real Person库文件 同时需要自定义验证码显示的CSS样式 使用实例...2015-11-08
  • JS实现随机生成验证码

    这篇文章主要为大家详细介绍了JS实现随机生成验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-06
  • php二维码生成

    本文介绍两种使用 php 生成二维码的方法。 (1)利用google生成二维码的开放接口,代码如下: /** * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】 * @param strin...2015-10-21
  • Java生成随机姓名、性别和年龄的实现示例

    这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
  • C#生成随机数功能示例

    这篇文章主要介绍了C#生成随机数功能,涉及C#数学运算与字符串操作相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • php生成唯一数字id的方法汇总

    关于生成唯一数字ID的问题,是不是需要使用rand生成一个随机数,然后去数据库查询是否有这个数呢?感觉这样的话有点费时间,有没有其他方法呢?当然不是,其实有两种方法可以解决。 1. 如果你只用php而不用数据库的话,那时间戳+随...2015-11-24
  • Jquery插件实现点击获取验证码后60秒内禁止重新获取

    通过jquery.cookie.js插件可以快速实现“点击获取验证码后60秒内禁止重新获取(防刷新)”的功能效果图:先到官网(http://plugins.jquery.com/cookie/)下载cookie插件,放到相应文件夹,代码如下:复制代码 代码如下: <!DOCTYPE ht...2015-03-15
  • jQuery为动态生成的select元素添加事件的方法

    下面小编就为大家带来一篇jQuery为动态生成的select元素添加事件的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-09-01
  • PHP自动生成后台导航网址的最佳方法

    经常制作开发不同的网站的后台,写过很多种不同的后台导航写法。 最终积累了这种最写法,算是最好的吧...2013-09-29
  • php实现点击可刷新验证码

    验证码类文件 CreateImg.class.php <&#63;php class ValidationCode { private $width,$height,$codenum; public $checkcode; //产生的验证码 private $checkimage; //验证码图片 private $disturbColor = ''; /...2015-11-08
  • 基于JavaScript实现验证码功能

    这篇文章主要介绍了基于JavaScript实现验证码功能的相关资料...2017-04-03
  • js生成随机数的方法实例

    js生成随机数主要用到了内置的Math对象的random()方法。用法如:Math.random()。它返回的是一个 0 ~ 1 之间的随机数。有了这么一个方法,那生成任意随机数就好理解了。比如实际中我们可能会有如下的需要: (1)生成一个 0 - 1...2015-10-21
  • Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法

    这篇文章主要介绍了Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-06-24
  • 单击按钮发送验证码,出现倒计时的简单实例

    下面小编就为大家带来一篇单击按钮发送验证码,出现倒计时的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 代码...2017-07-06
  • PHP验证码生成与验证例子

    验证码是一个现在WEB2.0中常见的一个功能了,像注册、登录又或者是留言页面,都需要注册码来验证当前操作者的合法性,我们会看到有些网站没有验证码,但那是更高级的验证了,...2016-11-25
  • 基于Pytorch版yolov5的滑块验证码破解思路详解

    这篇文章主要介绍了基于Pytorch版yolov5的滑块验证码破解思路详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-25
  • PHP生成不同颜色、不同大小的tag标签函数

    复制代码 代码如下:function getTagStyle(){ $minFontSize=8; //最小字体大小,可根据需要自行更改 $maxFontSize=18; //最大字体大小,可根据需要自行更改 return 'font-size:'.($minFontSize+lcg_value()*(abs($maxFo...2013-10-04
  • jQuery实现发送验证码控制按钮禁用功能

    最近接到新需求,需要实现一个点击发送验证码之后,按钮禁用,在5秒之后取消禁用,看似需求很简单,实现起来还真的好好动动脑筋,下面小编把jquery控制按钮禁用核心代码分享给大家,需要的朋友参考下吧...2021-07-24
  • 工信部的ICP备案网站登录时验证码一直输入不正确怎么回事

    工信部的ICP备案网站登录时验证码一直输入不正确怎么回事,为了防止一些机器采集人工信部对于查询验证做得识别度极低,所以许多的朋友都会发现输入验证码一直有问题了,那...2016-10-10