当前位置: 编程技术>php
本页文章导读:
▪PHPThumb PHP 图片缩略图库
1、这是一个缩略图类库 它是一个开源的图片缩略图类库,可以完成多种复杂的图片缩略图生成和现实,使用起来非常的方便。 2、使用方法 这里有一篇关于其简单实用的说明,英文比较简.........
▪php中使用cookie来保存用户登录信息的实现代码
使用cookie保存页面登录信息 1、数据库连接配置页面:connectvars.php 代码如下: <?php //数据库的位置 define('DB_HOST', 'localhost'); //用户名 define('DB_USER', 'root'); //口令 define('DB_PASSWORD', '19900101'); //.........
▪PHP 代码规范小结
命名规范 Θ 类文件都以.class.php为后缀,使用驼峰法命名,并且首字母大写,例如 Pay.class.php; Θ 类名和目录_文件名一致。例如:类名Zend_Autoloader的目录是Zend/Autoloader.class.php; Θ 函数的命名使.........
[1]PHPThumb PHP 图片缩略图库
来源: 互联网 发布时间: 2013-11-30
1、这是一个缩略图类库
它是一个开源的图片缩略图类库,可以完成多种复杂的图片缩略图生成和现实,使用起来非常的方便。
2、使用方法
这里有一篇关于其简单实用的说明,英文比较简单,就不翻译了:
Basic-Usage
3、API
这里有一个API列表:
PHPThumb API
不过非常可惜,API中并没有任何说明,只能对照其英文名称猜测其效果,当然即使猜对了,也要测试下看看是否是正确的。
4、样例
这里我也写了个简单调用它的方法,不过我是把该图片保存成为文件了,basic-usage中的例子全是直接在页面中输出的:
require_once 'phpthumb/ThumbLib.inc.php';
try {
$thumb = PhpThumbFactory::create($realpath);
} catch (Exception $e) {
// handle error here however you'd like
}
$thumb->adaptiveResize($width, $height);
$thumb->save($realpath . '.' . $width . 'x' . $height . '.png');
5、我用到的几个API
使用过程中,对几个API的理解逐渐加深,这里记录下:
resize ($maxWidth, $maxHeight)
resize方法是最常用的缩略图方法,它直接等比例将最大的边缩小到符合要求的高度/宽度,当图片宽高比与要求不一致时,将会有边显示空白。
adaptiveResize ($width, $height)
adaptiveResize方法是在一些特定情况下,不要求图片的完整,而要求显示特定宽高的最多内容。具体计算方式是:
当图片宽度大于所要求宽度,而高度一致时,取该高度下,从图片左右的中间去所要求的宽度;
当图片的高度大了并且宽度一致时,去该宽度下,图片上下居中位置取得所要求的高度;
当宽高都不正确时,先将图片缩放到所要求大小,再按前两条执行。
save ($fileName, $format = ‘GIF|JPG|PNG')
当对图片做好处理后,可以用save方法,将图片保存为format中所指示的编码之一,如果未指定编码,将以原编码方式保存。$fileName是要保存的路径。
它是一个开源的图片缩略图类库,可以完成多种复杂的图片缩略图生成和现实,使用起来非常的方便。
2、使用方法
这里有一篇关于其简单实用的说明,英文比较简单,就不翻译了:
Basic-Usage
3、API
这里有一个API列表:
PHPThumb API
不过非常可惜,API中并没有任何说明,只能对照其英文名称猜测其效果,当然即使猜对了,也要测试下看看是否是正确的。
4、样例
这里我也写了个简单调用它的方法,不过我是把该图片保存成为文件了,basic-usage中的例子全是直接在页面中输出的:
代码如下:
require_once 'phpthumb/ThumbLib.inc.php';
try {
$thumb = PhpThumbFactory::create($realpath);
} catch (Exception $e) {
// handle error here however you'd like
}
$thumb->adaptiveResize($width, $height);
$thumb->save($realpath . '.' . $width . 'x' . $height . '.png');
5、我用到的几个API
使用过程中,对几个API的理解逐渐加深,这里记录下:
resize ($maxWidth, $maxHeight)
resize方法是最常用的缩略图方法,它直接等比例将最大的边缩小到符合要求的高度/宽度,当图片宽高比与要求不一致时,将会有边显示空白。
adaptiveResize ($width, $height)
adaptiveResize方法是在一些特定情况下,不要求图片的完整,而要求显示特定宽高的最多内容。具体计算方式是:
当图片宽度大于所要求宽度,而高度一致时,取该高度下,从图片左右的中间去所要求的宽度;
当图片的高度大了并且宽度一致时,去该宽度下,图片上下居中位置取得所要求的高度;
当宽高都不正确时,先将图片缩放到所要求大小,再按前两条执行。
save ($fileName, $format = ‘GIF|JPG|PNG')
当对图片做好处理后,可以用save方法,将图片保存为format中所指示的编码之一,如果未指定编码,将以原编码方式保存。$fileName是要保存的路径。
[2]php中使用cookie来保存用户登录信息的实现代码
来源: 互联网 发布时间: 2013-11-30
使用cookie保存页面登录信息
1、数据库连接配置页面:connectvars.php
<?php
//数据库的位置
define('DB_HOST', 'localhost');
//用户名
define('DB_USER', 'root');
//口令
define('DB_PASSWORD', '19900101');
//数据库名
define('DB_NAME','test') ;
?>
2、登录页面:logIn.php
<?php
//插入连接数据库的相关信息
require_once 'connectvars.php';
$error_msg = "";
//判断用户是否已经设置cookie,如果未设置$_COOKIE['user_id']时,执行以下代码
if(!isset($_COOKIE['user_id'])){
if(isset($_POST['submit'])){//判断用户是否提交登录表单,如果是则执行如下代码
$dbc = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
$user_username = mysqli_real_escape_string($dbc,trim($_POST['username']));
$user_password = mysqli_real_escape_string($dbc,trim($_POST['password']));
if(!empty($user_username)&&!empty($user_password)){
//MySql中的SHA()函数用于对字符串进行单向加密
$query = "SELECT user_id, username FROM mismatch_user WHERE username = '$user_username' AND "."password = SHA('$user_password')";
//用用户名和密码进行查询
$data = mysqli_query($dbc,$query);
//若查到的记录正好为一条,则设置COOKIE,同时进行页面重定向
if(mysqli_num_rows($data)==1){
$row = mysqli_fetch_array($data);
setcookie('user_id',$row['user_id']);
setcookie('username',$row['username']);
$home_url = 'loged.php';
header('Location: '.$home_url);
}else{//若查到的记录不对,则设置错误信息
$error_msg = 'Sorry, you must enter a valid username and password to log in.';
}
}else{
$error_msg = 'Sorry, you must enter a valid username and password to log in.';
}
}
}else{//如果用户已经登录,则直接跳转到已经登录页面
$home_url = 'loged.php';
header('Location: '.$home_url);
}
?>
<html>
<head>
<title>Mismatch - Log In</title>
<link rel="stylesheet" type="text/css" href="/blog_article/style.css" />
</head>
<body>
<h3>Msimatch - Log In</h3>
<!--通过$_COOKIE['user_id']进行判断,如果用户未登录,则显示登录表单,让用户输入用户名和密码-->
<?php
if(empty($_COOKIE['user_id'])){
echo '<p >'.$error_msg.'</p>';
?>
<!-- $_SERVER['PHP_SELF']代表用户提交表单时,调用自身php文件 -->
<form method = "post" action="/blog_article/</php echo $_SERVER[.html'PHP_SELF'];?>">
<fieldset >
<legend>Log In</legend>
<label for="username">Username:</label>
<!-- 如果用户已输过用户名,则回显用户名 -->
<input type="text" id="username" name="username"
value="<?php if(!empty($user_username)) echo $user_username; ?>" />
<br/>
<label for="password">Password:</label>
<input type="password" id="password" name="password"/>
</fieldset>
<br/>
<input type="submit" value="Log In" name="submit"/>
</form>
<?php
}
?>
</body>
</html>
效果图: 3、登入页面:loged.php
<?php
//已登录页面,显示登录用户名
if(isset($_COOKIE['username'])){
echo 'You are Logged as '.$_COOKIE['username'].'<br/>';
//点击“Log Out”,则转到logOut.php页面进行cookie的注销
echo '<a href="/blog_article/logOut.html"> Log Out('.$_COOKIE['username'].')</a>';
}
/**在已登录页面中,可以利用用户的cookie如$_COOKIE['username']、
* $_COOKIE['user_id']对数据库进行查询,可以做好多好多事情*/
?>
效果图: 4、注销cookie页面:logOut.php(注销后重定向到lonIn.php)
<?php
/**cookies注销页面*/
if(isset($_COOKIE['user_id'])){
//将各个cookie的到期时间设为过去的某个时间,使它们由系统删除,时间以秒为单位
setcookie('user_id','',time()-3600);
setcookie('username','',time()-3600);
}
//location首部使浏览器重定向到另一个页面
$home_url = 'logIn.php';
header('Location:'.$home_url);
?>
1、数据库连接配置页面:connectvars.php
代码如下:
<?php
//数据库的位置
define('DB_HOST', 'localhost');
//用户名
define('DB_USER', 'root');
//口令
define('DB_PASSWORD', '19900101');
//数据库名
define('DB_NAME','test') ;
?>
2、登录页面:logIn.php
代码如下:
<?php
//插入连接数据库的相关信息
require_once 'connectvars.php';
$error_msg = "";
//判断用户是否已经设置cookie,如果未设置$_COOKIE['user_id']时,执行以下代码
if(!isset($_COOKIE['user_id'])){
if(isset($_POST['submit'])){//判断用户是否提交登录表单,如果是则执行如下代码
$dbc = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
$user_username = mysqli_real_escape_string($dbc,trim($_POST['username']));
$user_password = mysqli_real_escape_string($dbc,trim($_POST['password']));
if(!empty($user_username)&&!empty($user_password)){
//MySql中的SHA()函数用于对字符串进行单向加密
$query = "SELECT user_id, username FROM mismatch_user WHERE username = '$user_username' AND "."password = SHA('$user_password')";
//用用户名和密码进行查询
$data = mysqli_query($dbc,$query);
//若查到的记录正好为一条,则设置COOKIE,同时进行页面重定向
if(mysqli_num_rows($data)==1){
$row = mysqli_fetch_array($data);
setcookie('user_id',$row['user_id']);
setcookie('username',$row['username']);
$home_url = 'loged.php';
header('Location: '.$home_url);
}else{//若查到的记录不对,则设置错误信息
$error_msg = 'Sorry, you must enter a valid username and password to log in.';
}
}else{
$error_msg = 'Sorry, you must enter a valid username and password to log in.';
}
}
}else{//如果用户已经登录,则直接跳转到已经登录页面
$home_url = 'loged.php';
header('Location: '.$home_url);
}
?>
<html>
<head>
<title>Mismatch - Log In</title>
<link rel="stylesheet" type="text/css" href="/blog_article/style.css" />
</head>
<body>
<h3>Msimatch - Log In</h3>
<!--通过$_COOKIE['user_id']进行判断,如果用户未登录,则显示登录表单,让用户输入用户名和密码-->
<?php
if(empty($_COOKIE['user_id'])){
echo '<p >'.$error_msg.'</p>';
?>
<!-- $_SERVER['PHP_SELF']代表用户提交表单时,调用自身php文件 -->
<form method = "post" action="/blog_article/</php echo $_SERVER[.html'PHP_SELF'];?>">
<fieldset >
<legend>Log In</legend>
<label for="username">Username:</label>
<!-- 如果用户已输过用户名,则回显用户名 -->
<input type="text" id="username" name="username"
value="<?php if(!empty($user_username)) echo $user_username; ?>" />
<br/>
<label for="password">Password:</label>
<input type="password" id="password" name="password"/>
</fieldset>
<br/>
<input type="submit" value="Log In" name="submit"/>
</form>
<?php
}
?>
</body>
</html>
效果图: 3、登入页面:loged.php
代码如下:
<?php
//已登录页面,显示登录用户名
if(isset($_COOKIE['username'])){
echo 'You are Logged as '.$_COOKIE['username'].'<br/>';
//点击“Log Out”,则转到logOut.php页面进行cookie的注销
echo '<a href="/blog_article/logOut.html"> Log Out('.$_COOKIE['username'].')</a>';
}
/**在已登录页面中,可以利用用户的cookie如$_COOKIE['username']、
* $_COOKIE['user_id']对数据库进行查询,可以做好多好多事情*/
?>
效果图: 4、注销cookie页面:logOut.php(注销后重定向到lonIn.php)
代码如下:
<?php
/**cookies注销页面*/
if(isset($_COOKIE['user_id'])){
//将各个cookie的到期时间设为过去的某个时间,使它们由系统删除,时间以秒为单位
setcookie('user_id','',time()-3600);
setcookie('username','',time()-3600);
}
//location首部使浏览器重定向到另一个页面
$home_url = 'logIn.php';
header('Location:'.$home_url);
?>
[3]PHP 代码规范小结
来源: 互联网 发布时间: 2013-11-30
命名规范
Θ 类文件都以.class.php为后缀,使用驼峰法命名,并且首字母大写,例如 Pay.class.php;
Θ 类名和目录_文件名一致。例如:类名Zend_Autoloader的目录是Zend/Autoloader.class.php;
Θ 函数的命名使用小写字母和下划线的方式。例如:get_client_ip;
Θ 方法的命名使用驼峰法,首字母小写或者使用下划线"_",例如listComment(),_getResource(),通常下划线开头的方法属于私有方法;
Θ 属性的命名使用驼峰法,首字母小写或者使用下划线"_",如$username,$_instance,通常下划线开头的属性属于私有属性;
Θ 常量以大写字母和下划线"_"命名,如"HOME_URL";
常用名词
1>list名词(单数),如listApple,一看我们就知道读取苹果列表,我们没有必要写成getApples或者listApples或readApples——因为get我们规定一般用于读取单个数据,如getApple.listApples不加s我们也知道是取苹果列表(保证尽量缩短变量命名);
2>get名词(单数);
3>名词Total,表示某个东西的总数。如expenseTotal;
4>found:表示某个值是否已经找到;
5>uccess或ok:一项操作是否成功;
6>done:某个工程是否完成;
7>error:是否有错误发生;
8>result:返回的结果
代码重构
1.函数或者方法体内的代码尽量控制在一个屏幕内。
2.类中不使用的方法随机删除。
3.修改别人的类中方法,要签名。
4.在每个模块内写个readme文件(用于比较复杂业务的说明或代码说明)。
5.尽量让每个类做自己的事,每个函数做一件事。
常用代码
用&&或||简化操作
简化前:
$a=1;
$b = 0;
if(isset($a)){
$b=1;
print($b."\n");
}
if($b!=0){
print($b."\n");
}
简化后:
$a=1;
$b = 0;
isset($a) && ($b=1) && print($b."\n");
$b == 0 || print($b."\n");
明显代码看起来更加整齐,更加简单!
判断"=="时,把常量放在前面
之前:
$a = 1;
if($a = 1){
echo '$a == 1';
}
之后:
$a = 1;
if(1 = $a){
echo '$a == 1';
}
明显,常量放在前面的话,编译器就能判断错误。
正规格式:
$a = 1;
if(1 == $a){
echo '$a == 1';
}
查找表法
之前:
/*错误码:4,5,7,8的时候返回状态1,错误码是1,3,6返回状态2*/
$error = 4;
$state = 0;
if($error == 4 || $error == 5 || $error == 7 || $error == 8){
$state = 1;
}
if($error == 1 || $error == 3 || $error == 6){
$state = 2;
}
echo "$state \n";
之后:
/*错误码:4,5,7,8的时候返回状态1,错误码是1,3,6返回状态2*/
$error = 4;
$state = 0;
$arr = array(4 => 1, 5 => 1, 7 => 1, 8 => 1, 1 => 2, 3 => 2, 6 => 2);
isset($arr[$error]) && ($state = $arr[$error]);
echo "$state \n";
明显代码更加凝练,更加清楚,更易懂,速度也更快!
总结
本来想把什么设计模式也往常用代码里放置,但是太多了,不太好放。这些只是微部而已!
大家如果有更好的写法的话,可以留言。
Θ 类文件都以.class.php为后缀,使用驼峰法命名,并且首字母大写,例如 Pay.class.php;
Θ 类名和目录_文件名一致。例如:类名Zend_Autoloader的目录是Zend/Autoloader.class.php;
Θ 函数的命名使用小写字母和下划线的方式。例如:get_client_ip;
Θ 方法的命名使用驼峰法,首字母小写或者使用下划线"_",例如listComment(),_getResource(),通常下划线开头的方法属于私有方法;
Θ 属性的命名使用驼峰法,首字母小写或者使用下划线"_",如$username,$_instance,通常下划线开头的属性属于私有属性;
Θ 常量以大写字母和下划线"_"命名,如"HOME_URL";
常用名词
1>list名词(单数),如listApple,一看我们就知道读取苹果列表,我们没有必要写成getApples或者listApples或readApples——因为get我们规定一般用于读取单个数据,如getApple.listApples不加s我们也知道是取苹果列表(保证尽量缩短变量命名);
2>get名词(单数);
3>名词Total,表示某个东西的总数。如expenseTotal;
4>found:表示某个值是否已经找到;
5>uccess或ok:一项操作是否成功;
6>done:某个工程是否完成;
7>error:是否有错误发生;
8>result:返回的结果
代码重构
1.函数或者方法体内的代码尽量控制在一个屏幕内。
2.类中不使用的方法随机删除。
3.修改别人的类中方法,要签名。
4.在每个模块内写个readme文件(用于比较复杂业务的说明或代码说明)。
5.尽量让每个类做自己的事,每个函数做一件事。
常用代码
用&&或||简化操作
简化前:
代码如下:
$a=1;
$b = 0;
if(isset($a)){
$b=1;
print($b."\n");
}
if($b!=0){
print($b."\n");
}
简化后:
代码如下:
$a=1;
$b = 0;
isset($a) && ($b=1) && print($b."\n");
$b == 0 || print($b."\n");
明显代码看起来更加整齐,更加简单!
判断"=="时,把常量放在前面
之前:
代码如下:
$a = 1;
if($a = 1){
echo '$a == 1';
}
之后:
代码如下:
$a = 1;
if(1 = $a){
echo '$a == 1';
}
明显,常量放在前面的话,编译器就能判断错误。
正规格式:
代码如下:
$a = 1;
if(1 == $a){
echo '$a == 1';
}
查找表法
之前:
代码如下:
/*错误码:4,5,7,8的时候返回状态1,错误码是1,3,6返回状态2*/
$error = 4;
$state = 0;
if($error == 4 || $error == 5 || $error == 7 || $error == 8){
$state = 1;
}
if($error == 1 || $error == 3 || $error == 6){
$state = 2;
}
echo "$state \n";
之后:
代码如下:
/*错误码:4,5,7,8的时候返回状态1,错误码是1,3,6返回状态2*/
$error = 4;
$state = 0;
$arr = array(4 => 1, 5 => 1, 7 => 1, 8 => 1, 1 => 2, 3 => 2, 6 => 2);
isset($arr[$error]) && ($state = $arr[$error]);
echo "$state \n";
明显代码更加凝练,更加清楚,更易懂,速度也更快!
总结
本来想把什么设计模式也往常用代码里放置,但是太多了,不太好放。这些只是微部而已!
大家如果有更好的写法的话,可以留言。
最新技术文章: