当前位置: 编程技术>php
本页文章导读:
▪《PHP编程最快明白》第七讲:php图片验证码与缩略图
实例22 图片验证的核心代码 代码如下: <?php //header("content-type:image/png"); $num ='1234'; $imagewidth=60; $imageheight=18; $numimage = imagecreate($imagewidth,$imageheight); imagecolorallocate($numimage,240,240,240); for($i=0;$i.........
▪《PHP编程最快明白》第六讲:Mysql数据库操作
答案就是做成一个类--数据库类就产生了。通过对函数的二次封装,实现了非常好的重用。要用的时候再include进去。 在讲PHP数据库之前,先介绍一下Mysql要点:大家可以用phpmyadmin学习数据.........
▪《PHP编程最快明白》第五讲:php目录、文件操作
实例15 目录创建、删除 代码如下: <?php $dirfile="文件夹"; $dirfile=iconv("UTF-8","GB2312",$dirfile);//转码,否则会看到windows里面是乱码,但程序能正常操作,读取目录时反过来才看到目录的真正名.........
[1]《PHP编程最快明白》第七讲:php图片验证码与缩略图
来源: 互联网 发布时间: 2013-11-30
实例22 图片验证的核心代码
<?php
//header("content-type:image/png");
$num ='1234';
$imagewidth=60;
$imageheight=18;
$numimage = imagecreate($imagewidth,$imageheight);
imagecolorallocate($numimage,240,240,240);
for($i=0;$i<strlen($num);$i++){
$x = mt_rand(1,8)+$imagewidth*$i/4;
$y = mt_rand(1,$imageheight/4);
$color=imagecolorallocate($numimage,mt_rand(0,150),mt_rand(0,150),mt_rand(0,150));
imagestring($numimage,5,$x,$y,$num[$i],$color);
}
for($i=0;$i<200;$i++){
$randcolor=imagecolorallocate($numimage,rand(200,255),rand(200,255),rand(200,255));
imagesetpixel($numimage,rand()%70,rand()%20,$randcolor);
}
imagepng($numimage);
imagedestroy($numimage);
?>
这个是输出4个验证码的例子,对于汉字,需要font文件和imagettftext函数,用到的时候大家再网上搜索吧。你要产生随机数,那有mt_rand函数;你还要用到session保存这个随机数;如果需要转成utf-8,需要iconv函数。
实例23 缩略图
<?php
class SimpleImage {
var $image;
var $image_type;
function load($filename) {
$image_info = getimagesize($filename);
$this->image_type = $image_info[2];
if( $this->image_type == IMAGETYPE_JPEG ) {
$this->image = imagecreatefromjpeg($filename);
} elseif( $this->image_type == IMAGETYPE_GIF ) {
$this->image = imagecreatefromgif($filename);
} elseif( $this->image_type == IMAGETYPE_PNG ) {
$this->image = imagecreatefrompng($filename);
}
}
function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image,$filename,$compression);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image,$filename);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image,$filename);
}
if( $permissions != null) {
chmod($filename,$permissions);
}
}
function output($image_type=IMAGETYPE_JPEG) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image);
}
}
function getWidth() {
return imagesx($this->image);
}
function getHeight() {
return imagesy($this->image);
}
function resizeToHeight($height) {
$ratio = $height / $this->getHeight();
$width = $this->getWidth() * $ratio;
$this->resize($width,$height);
}
function resizeToWidth($width) {
$ratio = $width / $this->getWidth();
$height = $this->getheight() * $ratio;
$this->resize($width,$height);
}
function scale($scale) {
$width = $this->getWidth() * $scale/100;
$height = $this->getheight() * $scale/100;
$this->resize($width,$height);
}
function resize($width,$height) {
$new_image = imagecreatetruecolor($width, $height);
imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $new_image;
}
}
$newfile = UPLOAD_DIR."/icons/".md5($_SESSION['USER']->email).".jpg";//上传文件保存的目录
$image = new SimpleImage();
$image->load($_FILES['icons']['tmp_name']);//上传的临时文件名
$image->resizeToWidth(80);设置宽度
$image->save($newfile);
?>
代码如下:
<?php
//header("content-type:image/png");
$num ='1234';
$imagewidth=60;
$imageheight=18;
$numimage = imagecreate($imagewidth,$imageheight);
imagecolorallocate($numimage,240,240,240);
for($i=0;$i<strlen($num);$i++){
$x = mt_rand(1,8)+$imagewidth*$i/4;
$y = mt_rand(1,$imageheight/4);
$color=imagecolorallocate($numimage,mt_rand(0,150),mt_rand(0,150),mt_rand(0,150));
imagestring($numimage,5,$x,$y,$num[$i],$color);
}
for($i=0;$i<200;$i++){
$randcolor=imagecolorallocate($numimage,rand(200,255),rand(200,255),rand(200,255));
imagesetpixel($numimage,rand()%70,rand()%20,$randcolor);
}
imagepng($numimage);
imagedestroy($numimage);
?>
这个是输出4个验证码的例子,对于汉字,需要font文件和imagettftext函数,用到的时候大家再网上搜索吧。你要产生随机数,那有mt_rand函数;你还要用到session保存这个随机数;如果需要转成utf-8,需要iconv函数。
实例23 缩略图
代码如下:
<?php
class SimpleImage {
var $image;
var $image_type;
function load($filename) {
$image_info = getimagesize($filename);
$this->image_type = $image_info[2];
if( $this->image_type == IMAGETYPE_JPEG ) {
$this->image = imagecreatefromjpeg($filename);
} elseif( $this->image_type == IMAGETYPE_GIF ) {
$this->image = imagecreatefromgif($filename);
} elseif( $this->image_type == IMAGETYPE_PNG ) {
$this->image = imagecreatefrompng($filename);
}
}
function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image,$filename,$compression);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image,$filename);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image,$filename);
}
if( $permissions != null) {
chmod($filename,$permissions);
}
}
function output($image_type=IMAGETYPE_JPEG) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image);
}
}
function getWidth() {
return imagesx($this->image);
}
function getHeight() {
return imagesy($this->image);
}
function resizeToHeight($height) {
$ratio = $height / $this->getHeight();
$width = $this->getWidth() * $ratio;
$this->resize($width,$height);
}
function resizeToWidth($width) {
$ratio = $width / $this->getWidth();
$height = $this->getheight() * $ratio;
$this->resize($width,$height);
}
function scale($scale) {
$width = $this->getWidth() * $scale/100;
$height = $this->getheight() * $scale/100;
$this->resize($width,$height);
}
function resize($width,$height) {
$new_image = imagecreatetruecolor($width, $height);
imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $new_image;
}
}
$newfile = UPLOAD_DIR."/icons/".md5($_SESSION['USER']->email).".jpg";//上传文件保存的目录
$image = new SimpleImage();
$image->load($_FILES['icons']['tmp_name']);//上传的临时文件名
$image->resizeToWidth(80);设置宽度
$image->save($newfile);
?>
[2]《PHP编程最快明白》第六讲:Mysql数据库操作
来源: 互联网 发布时间: 2013-11-30
答案就是做成一个类--数据库类就产生了。通过对函数的二次封装,实现了非常好的重用。要用的时候再include进去。
在讲PHP数据库之前,先介绍一下Mysql要点:大家可以用phpmyadmin学习数据库操作。
在phpmyadmin里看到编码这一项全部选中文utf-8就对了。
Mysql数据库类型主要是: char(固定空间字符串,多大就是多少个中文字符)、varchar(可变空间字符串,多大就是初始化多少个中文字符)、int(整数多大就是多少位)、float(浮点数)、timestamp(日期,可选建立时自动创建,输出时就已经是格式化过的date)、text(文本)、bool(布尔型)
写sql语句时SUM()可以统计值;order by 'id' DESC LIMIT 10,10等要活用。
在phpmyadmin学一下sql语句增删改查就行了。
实例20 Mysql类
<?php
class opmysql{
private $host = 'localhost'; //服务器地址
private $name = 'root'; //登录账号
private $pwd = ''; //登录密码
private $dBase = 'a0606123620'; //数据库名称
private $conn = ''; //数据库链接资源
private $result = ''; //结果集
private $msg = ''; //返回结果
private $fields; //返回字段
private $fieldsNum = 0; //返回字段数
private $rowsNum = 0; //返回结果数
private $rowsRst = ''; //返回单条记录的字段数组
private $filesArray = array(); //返回字段数组
private $rowsArray = array(); //返回结果数组
private $idusername=array();
private $idsubtitle=array();
//初始化类
function __construct($host='',$name='',$pwd='',$dBase=''){
if($host != '')
$this->host = $host;
if($name != '')
$this->name = $name;
if($pwd != '')
$this->pwd = $pwd;
if($dBase != '')
$this->dBase = $dBase;
$this->init_conn();
}
//链接数据库
function init_conn(){
$this->conn=@mysql_connect($this->host,$this->name,$this->pwd);
@mysql_select_db($this->dBase,$this->conn);
mysql_query("set names utf8");
}
//查询结果
function mysql_query_rst($sql){
if($this->conn == ''){
$this->init_conn();
}
$this->result = @mysql_query($sql,$this->conn);
}
//取得查询结果字段数目
function getFieldsNum($sql){
$this->mysql_query_rst($sql);
$this->fieldsNum = @mysql_num_fields($this->result);
}
//取得查询结果行数目
function getRowsNum($sql){
$this->mysql_query_rst($sql);
if(mysql_errno() == 0){
return @mysql_num_rows($this->result);
}else{
return '';
}
}
//取得记录数组有索引(单条记录)
function getRowsRst($sql){
$this->mysql_query_rst($sql);
if(mysql_error() == 0){
$this->rowsRst = mysql_fetch_array($this->result,MYSQL_ASSOC);
return $this->rowsRst;
}else{
return '';
}
}
//取得记录数组有索引(多条记录)全部
function getRowsArray($sql){
$this->mysql_query_rst($sql);
if(mysql_errno() == 0){
while($row = mysql_fetch_array($this->result,MYSQL_ASSOC)) {
$this->rowsArray[] = $row;
}
return $this->rowsArray;
}else{
return '';
}
}
//更新、删除、添加记录数,返回影响到的行数
function uidRst($sql){
if($this->conn == ''){
$this->init_conn();
}
@mysql_query($sql);
$this->rowsNum = @mysql_affected_rows();
if(mysql_errno() == 0){
return $this->rowsNum;
}else{
return '';
}
}
//获取对应的字段值,一条数字索引,mysql_array_rows才是带字段索引
function getFields($sql,$fields){
$this->mysql_query_rst($sql);
if(mysql_errno() == 0){
if(mysql_num_rows($this->result) > 0){
$tmpfld = @mysql_fetch_row($this->result);
$this->fields = $tmpfld[$fields];
}
return $this->fields;
}else{
return '';
}
}
//错误信息
function msg_error(){
if(mysql_errno() != 0) {
$this->msg = mysql_error();
}
return $this->msg;
}
//释放结果集
function close_rst(){
mysql_free_result($this->result);
$this->msg = '';
$this->fieldsNum = 0;
$this->rowsNum = 0;
$this->filesArray = '';
$this->rowsArray = '';
$this->idsubtitle='';
$this->idusername='';
}
//关闭数据库
function close_conn(){
$this->close_rst();
mysql_close($this->conn);
$this->conn = '';
}
}
?>
实例21 类的使用、密码的md5加密
<?php
$conne = new opmysql();
$conne-> getRowsArray($sql);
$conne-> close_conn();
$password=”123456一二三四五六”;
echo md5($password.”www.kuphp.com”);//输出为32位的密文,是没有解密函数的,可以实现简单的加密功能。
?>
在讲PHP数据库之前,先介绍一下Mysql要点:大家可以用phpmyadmin学习数据库操作。
在phpmyadmin里看到编码这一项全部选中文utf-8就对了。
Mysql数据库类型主要是: char(固定空间字符串,多大就是多少个中文字符)、varchar(可变空间字符串,多大就是初始化多少个中文字符)、int(整数多大就是多少位)、float(浮点数)、timestamp(日期,可选建立时自动创建,输出时就已经是格式化过的date)、text(文本)、bool(布尔型)
写sql语句时SUM()可以统计值;order by 'id' DESC LIMIT 10,10等要活用。
在phpmyadmin学一下sql语句增删改查就行了。
实例20 Mysql类
代码如下:
<?php
class opmysql{
private $host = 'localhost'; //服务器地址
private $name = 'root'; //登录账号
private $pwd = ''; //登录密码
private $dBase = 'a0606123620'; //数据库名称
private $conn = ''; //数据库链接资源
private $result = ''; //结果集
private $msg = ''; //返回结果
private $fields; //返回字段
private $fieldsNum = 0; //返回字段数
private $rowsNum = 0; //返回结果数
private $rowsRst = ''; //返回单条记录的字段数组
private $filesArray = array(); //返回字段数组
private $rowsArray = array(); //返回结果数组
private $idusername=array();
private $idsubtitle=array();
//初始化类
function __construct($host='',$name='',$pwd='',$dBase=''){
if($host != '')
$this->host = $host;
if($name != '')
$this->name = $name;
if($pwd != '')
$this->pwd = $pwd;
if($dBase != '')
$this->dBase = $dBase;
$this->init_conn();
}
//链接数据库
function init_conn(){
$this->conn=@mysql_connect($this->host,$this->name,$this->pwd);
@mysql_select_db($this->dBase,$this->conn);
mysql_query("set names utf8");
}
//查询结果
function mysql_query_rst($sql){
if($this->conn == ''){
$this->init_conn();
}
$this->result = @mysql_query($sql,$this->conn);
}
//取得查询结果字段数目
function getFieldsNum($sql){
$this->mysql_query_rst($sql);
$this->fieldsNum = @mysql_num_fields($this->result);
}
//取得查询结果行数目
function getRowsNum($sql){
$this->mysql_query_rst($sql);
if(mysql_errno() == 0){
return @mysql_num_rows($this->result);
}else{
return '';
}
}
//取得记录数组有索引(单条记录)
function getRowsRst($sql){
$this->mysql_query_rst($sql);
if(mysql_error() == 0){
$this->rowsRst = mysql_fetch_array($this->result,MYSQL_ASSOC);
return $this->rowsRst;
}else{
return '';
}
}
//取得记录数组有索引(多条记录)全部
function getRowsArray($sql){
$this->mysql_query_rst($sql);
if(mysql_errno() == 0){
while($row = mysql_fetch_array($this->result,MYSQL_ASSOC)) {
$this->rowsArray[] = $row;
}
return $this->rowsArray;
}else{
return '';
}
}
//更新、删除、添加记录数,返回影响到的行数
function uidRst($sql){
if($this->conn == ''){
$this->init_conn();
}
@mysql_query($sql);
$this->rowsNum = @mysql_affected_rows();
if(mysql_errno() == 0){
return $this->rowsNum;
}else{
return '';
}
}
//获取对应的字段值,一条数字索引,mysql_array_rows才是带字段索引
function getFields($sql,$fields){
$this->mysql_query_rst($sql);
if(mysql_errno() == 0){
if(mysql_num_rows($this->result) > 0){
$tmpfld = @mysql_fetch_row($this->result);
$this->fields = $tmpfld[$fields];
}
return $this->fields;
}else{
return '';
}
}
//错误信息
function msg_error(){
if(mysql_errno() != 0) {
$this->msg = mysql_error();
}
return $this->msg;
}
//释放结果集
function close_rst(){
mysql_free_result($this->result);
$this->msg = '';
$this->fieldsNum = 0;
$this->rowsNum = 0;
$this->filesArray = '';
$this->rowsArray = '';
$this->idsubtitle='';
$this->idusername='';
}
//关闭数据库
function close_conn(){
$this->close_rst();
mysql_close($this->conn);
$this->conn = '';
}
}
?>
实例21 类的使用、密码的md5加密
代码如下:
<?php
$conne = new opmysql();
$conne-> getRowsArray($sql);
$conne-> close_conn();
$password=”123456一二三四五六”;
echo md5($password.”www.kuphp.com”);//输出为32位的密文,是没有解密函数的,可以实现简单的加密功能。
?>
[3]《PHP编程最快明白》第五讲:php目录、文件操作
来源: 互联网 发布时间: 2013-11-30
实例15 目录创建、删除
<?php
$dirfile="文件夹";
$dirfile=iconv("UTF-8","GB2312",$dirfile);//转码,否则会看到windows里面是乱码,但程序能正常操作,读取目录时反过来才看到目录的真正名字。
if(!file_exists($dirfile))//用于判断目录或文件是否存在
mkdir($dirfile);//创建目录
rmdir($dirfile);//删除目录,必须为空目录,否则要先删除里面的所有文件,后面有删除方法
echo "<br>";
?>
实例16 文件创建、删除、读取、转数组
<?php
$filename="文件.txt";
$filename=iconv("UTF-8","GB2312",$filename);//转码,否则会看到windows里面是乱码
file_put_contents($filename,'');//自动创建空文件,如果已存在则删除再创建,具体可以增加file_exists判断,比fopen、fputs、fclose等函数简单。
unlink($filename);//注意文件名都是GB2312编码
file_put_contents($filename,"大家好!\r\n大家好啊!",FILE_APPEND);
//看到没,写入两行, 第三个参数可选,表示是以增加方式写入,否则清空内容再写入
echo file_get_contents($filename);//忽略换行读取整个文件
echo "<br>";
$arr=file($filename);//文件按行读到数组里
print_r($arr);
echo "<br>";
readfile($filename);//文件直接输出到屏幕
echo "<br>";
?>
实例17 获取url信息、客户端ip地址
<?php
//获取域名或主机地址
echo $_SERVER['HTTP_HOST']."<br>";
//获取网页地址(中间部分)
echo $_SERVER['PHP_SELF']."<br>";
//获取网址参数(?后面部分)
echo $_SERVER["QUERY_STRING"]."<br>";
//来源客户端ip地址
if($_SERVER['HTTP_CLIENT_IP']){
$onlineip=$_SERVER['HTTP_CLIENT_IP'];
}elseif($_SERVER['HTTP_X_FORWARDED_FOR']){
$onlineip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$onlineip=$_SERVER['REMOTE_ADDR'];
}
echo $onlineip;
echo "<br>";
?>
实例18 获取文件修改时间戳、遍历目录文件
<?php
$filename="文件.txt";
$filename=iconv("UTF-8","GB2312",$filename);
$passtime=time()-filectime($filename);//创建时间差,不准,一般不用
echo $passtime;
echo "<br>";
$passtime=time()-filemtime($filename);//修改时间差,用于更新判断,缓冲等判断
echo $passtime;
echo "<br>";
$dir="../";
print_r($arr=scandir($dir));//获得主目录的所有文件和文件夹名称
foreach($arr as $value){
if (!is_dir($dir.$value)) //是否目录,目录还包括"."、".."两个数组,通过判断可以知道是文件还是目录,以及是什么类型的后序名
echo iconv("GB2312","UTF-8",$value)."<br>\r\n";
}
?>
实例19 文件包含
<?php
$filename="文件.txt";
@include($filename);//包含到此处,然后由服务器处理成html代码。
/*
@表示读取不了时忽略错误警告,用于PHP语句、函数前,一般服务器端显示错误是关闭的,但是个别例外。除此之外,大家还可以try-catch捕捉异常,或者用file_exists函数先判断文件是否存在。
*/
require_once($filename);//预处理包含,一般用于配置、函数等包含进来。这两个函数都可以选择_once,强调包含一次。
//这四个函数都会被服务器处理PHP代码,简化重复的代码,很常用。实例15的readfile则直接当html输出到客户页面
?>
可以看出,PHP操作文件目录的函数是比较简单和强大的,一个功能也就一行代码搞定。本章没有介绍copy函数,大家可以自己试试。
代码如下:
<?php
$dirfile="文件夹";
$dirfile=iconv("UTF-8","GB2312",$dirfile);//转码,否则会看到windows里面是乱码,但程序能正常操作,读取目录时反过来才看到目录的真正名字。
if(!file_exists($dirfile))//用于判断目录或文件是否存在
mkdir($dirfile);//创建目录
rmdir($dirfile);//删除目录,必须为空目录,否则要先删除里面的所有文件,后面有删除方法
echo "<br>";
?>
实例16 文件创建、删除、读取、转数组
代码如下:
<?php
$filename="文件.txt";
$filename=iconv("UTF-8","GB2312",$filename);//转码,否则会看到windows里面是乱码
file_put_contents($filename,'');//自动创建空文件,如果已存在则删除再创建,具体可以增加file_exists判断,比fopen、fputs、fclose等函数简单。
unlink($filename);//注意文件名都是GB2312编码
file_put_contents($filename,"大家好!\r\n大家好啊!",FILE_APPEND);
//看到没,写入两行, 第三个参数可选,表示是以增加方式写入,否则清空内容再写入
echo file_get_contents($filename);//忽略换行读取整个文件
echo "<br>";
$arr=file($filename);//文件按行读到数组里
print_r($arr);
echo "<br>";
readfile($filename);//文件直接输出到屏幕
echo "<br>";
?>
实例17 获取url信息、客户端ip地址
代码如下:
<?php
//获取域名或主机地址
echo $_SERVER['HTTP_HOST']."<br>";
//获取网页地址(中间部分)
echo $_SERVER['PHP_SELF']."<br>";
//获取网址参数(?后面部分)
echo $_SERVER["QUERY_STRING"]."<br>";
//来源客户端ip地址
if($_SERVER['HTTP_CLIENT_IP']){
$onlineip=$_SERVER['HTTP_CLIENT_IP'];
}elseif($_SERVER['HTTP_X_FORWARDED_FOR']){
$onlineip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$onlineip=$_SERVER['REMOTE_ADDR'];
}
echo $onlineip;
echo "<br>";
?>
实例18 获取文件修改时间戳、遍历目录文件
代码如下:
<?php
$filename="文件.txt";
$filename=iconv("UTF-8","GB2312",$filename);
$passtime=time()-filectime($filename);//创建时间差,不准,一般不用
echo $passtime;
echo "<br>";
$passtime=time()-filemtime($filename);//修改时间差,用于更新判断,缓冲等判断
echo $passtime;
echo "<br>";
$dir="../";
print_r($arr=scandir($dir));//获得主目录的所有文件和文件夹名称
foreach($arr as $value){
if (!is_dir($dir.$value)) //是否目录,目录还包括"."、".."两个数组,通过判断可以知道是文件还是目录,以及是什么类型的后序名
echo iconv("GB2312","UTF-8",$value)."<br>\r\n";
}
?>
实例19 文件包含
代码如下:
<?php
$filename="文件.txt";
@include($filename);//包含到此处,然后由服务器处理成html代码。
/*
@表示读取不了时忽略错误警告,用于PHP语句、函数前,一般服务器端显示错误是关闭的,但是个别例外。除此之外,大家还可以try-catch捕捉异常,或者用file_exists函数先判断文件是否存在。
*/
require_once($filename);//预处理包含,一般用于配置、函数等包含进来。这两个函数都可以选择_once,强调包含一次。
//这四个函数都会被服务器处理PHP代码,简化重复的代码,很常用。实例15的readfile则直接当html输出到客户页面
?>
可以看出,PHP操作文件目录的函数是比较简单和强大的,一个功能也就一行代码搞定。本章没有介绍copy函数,大家可以自己试试。
最新技术文章: