当前位置: 编程技术>php
本页文章导读:
▪用PHP中的 == 运算符进行字符串比较
最近在Greg Beaver's的blog上发表的一篇新文章 comparing strings in PHP with the == operator 中提及了PHP的 == 运算符在对字符串进行比较时值得注意的问题。 在某些情况下,PHP会把类数值数据(如含.........
▪PHP图片上传类带图片显示
这是一个PHP的文件上传类带图片显示的.其实做成函数就可以了.不过还是做成类好玩一点.~~~~ 本来应该用JS来验证上传文件类型的.但懒得做了. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transiti.........
▪整合了前面的PHP数据库连接类~~做成一个分页类!
不知道学PHP有没有前途~哎越写越没劲 <?php Class createdb //类的开始 { var $db= "localhost";//数据库地址; var $dbname = "root";//用户名; var $dbpwd = "";//密码; var $dbtable = "mysql";//.........
[1]用PHP中的 == 运算符进行字符串比较
来源: 互联网 发布时间: 2013-11-30
最近在Greg Beaver's的blog上发表的一篇新文章 comparing strings in PHP with the == operator 中提及了PHP的 == 运算符在对字符串进行比较时值得注意的问题。
在某些情况下,PHP会把类数值数据(如含有数字的字符串等)转换成数值处理,== 运算符就是其中之一。在使用 == 运算符对两个字符串进行松散比较时,PHP会把类数值的字符串转换为数值进行比较,下面的实验证实了这个结论:
<?php
var_dump('01' == 1);
?>
以上代码输出结果为:
bool(true)
所以,在使用对字符串进行比较时,建议使用 === 运算符对字符串进行严格的检查,或使用strcmp()等函数,从而避免可能产生的问题。PHP手册中的《PHP 类型比较表》对此也有详细说明。
除此之外,常用的in_array()函数也存在弱类型的问题,见如下代码:
<?php
var_dump(in_array('01', array('1')));
?>
以上代码输出结果为:
bool(true)
相信用过该函数进行安全性检查的PHP编程人员都知道这会产生怎么样的安全问题了吧?幸好in_array()函数为我们提供了第三个参数,把它设为 true 就可以打开in_array()函数的强制类型检查机制,如下代码所示:
<?php
var_dump(in_array('01', array('1'), true));
?>
输出结果为:
bool(false)
由于PHP是一种弱类型的语言,也就是说数据类型这个概念在PHP中被弱化。因而如果在编程时过分忽略数据类型(也是大部份PHP程序员的通病),会产生一些问题,甚至导致安全漏洞。最后,还是那句说得很烦很烦的话,对外来数据进行严格检查和过滤。
在某些情况下,PHP会把类数值数据(如含有数字的字符串等)转换成数值处理,== 运算符就是其中之一。在使用 == 运算符对两个字符串进行松散比较时,PHP会把类数值的字符串转换为数值进行比较,下面的实验证实了这个结论:
<?php
var_dump('01' == 1);
?>
以上代码输出结果为:
bool(true)
所以,在使用对字符串进行比较时,建议使用 === 运算符对字符串进行严格的检查,或使用strcmp()等函数,从而避免可能产生的问题。PHP手册中的《PHP 类型比较表》对此也有详细说明。
除此之外,常用的in_array()函数也存在弱类型的问题,见如下代码:
<?php
var_dump(in_array('01', array('1')));
?>
以上代码输出结果为:
bool(true)
相信用过该函数进行安全性检查的PHP编程人员都知道这会产生怎么样的安全问题了吧?幸好in_array()函数为我们提供了第三个参数,把它设为 true 就可以打开in_array()函数的强制类型检查机制,如下代码所示:
<?php
var_dump(in_array('01', array('1'), true));
?>
输出结果为:
bool(false)
由于PHP是一种弱类型的语言,也就是说数据类型这个概念在PHP中被弱化。因而如果在编程时过分忽略数据类型(也是大部份PHP程序员的通病),会产生一些问题,甚至导致安全漏洞。最后,还是那句说得很烦很烦的话,对外来数据进行严格检查和过滤。
[2]PHP图片上传类带图片显示
来源: 互联网 发布时间: 2013-11-30
这是一个PHP的文件上传类带图片显示的.其实做成函数就可以了.不过还是做成类好玩一点.~~~~
本来应该用JS来验证上传文件类型的.但懒得做了.
<!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 http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<form id="form1" name="upload" enctype="multipart/form-data" method="post" action="/blog_article/upload.html">
<input type="hidden" name="MAX_FILE_SIZE " />
<input type="file" name="file" />
<input type="submit" name="Submit" value="提交" />
</form>
</body>
</html>
<?php
Class upload
{
var $upload_name;
var $upload_tmp_address;
var $upload_server_name;
var $upload_filetype ;
var $file_type;
var $file_server_address;
var $image_w=900; //要显示图片的宽
var $image_h=350; //要显示图片的高
var $upload_file_size;
var $upload_must_size= 50000; //允许上传文件的大小,自己设置
function upload_file()
{
$this->upload_name = $_FILES["file"]["name"]; //取得上传文件名
$this->upload_filetype = $_FILES["file"]["type"];
$this->upload_server_name = date("Y_m_dH_i_s").$this->upload_name;
$this->upload_tmp_address = $_FILES["file"]["tmp_name"]; //取得临时地址
$this->file_type = array("image/gif","image/pjpeg"); //允许上传文件的类型
$this->upload_file_size = $_FILES["file"]["size"]; //上传文件的大小
if(in_array($this->upload_filetype,$this->file_type))
{ if($this->upload_file_size < $this->upload_must_size)
{
echo("上传成功,谢谢支持");
$this->file_server_address = "D:\usr\www\html\upload/".$this->upload_server_name;
move_uploaded_file($this->upload_tmp_address,$this->file_server_address);//从TEMP目录移出
echo("<img src=/blog_article/$this->file_server_address width=$this->image_w height=$this->image_h/>/index.html"); //显示图片
}
else
{
echo("文件容量太大");
}
}
else
{
echo("不支持此文件类型,请重新选择");
}
}
}
$dd = new upload;
$dd->upload_file();
?>
本来应该用JS来验证上传文件类型的.但懒得做了.
<!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 http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<form id="form1" name="upload" enctype="multipart/form-data" method="post" action="/blog_article/upload.html">
<input type="hidden" name="MAX_FILE_SIZE " />
<input type="file" name="file" />
<input type="submit" name="Submit" value="提交" />
</form>
</body>
</html>
<?php
Class upload
{
var $upload_name;
var $upload_tmp_address;
var $upload_server_name;
var $upload_filetype ;
var $file_type;
var $file_server_address;
var $image_w=900; //要显示图片的宽
var $image_h=350; //要显示图片的高
var $upload_file_size;
var $upload_must_size= 50000; //允许上传文件的大小,自己设置
function upload_file()
{
$this->upload_name = $_FILES["file"]["name"]; //取得上传文件名
$this->upload_filetype = $_FILES["file"]["type"];
$this->upload_server_name = date("Y_m_dH_i_s").$this->upload_name;
$this->upload_tmp_address = $_FILES["file"]["tmp_name"]; //取得临时地址
$this->file_type = array("image/gif","image/pjpeg"); //允许上传文件的类型
$this->upload_file_size = $_FILES["file"]["size"]; //上传文件的大小
if(in_array($this->upload_filetype,$this->file_type))
{ if($this->upload_file_size < $this->upload_must_size)
{
echo("上传成功,谢谢支持");
$this->file_server_address = "D:\usr\www\html\upload/".$this->upload_server_name;
move_uploaded_file($this->upload_tmp_address,$this->file_server_address);//从TEMP目录移出
echo("<img src=/blog_article/$this->file_server_address width=$this->image_w height=$this->image_h/>/index.html"); //显示图片
}
else
{
echo("文件容量太大");
}
}
else
{
echo("不支持此文件类型,请重新选择");
}
}
}
$dd = new upload;
$dd->upload_file();
?>
[3]整合了前面的PHP数据库连接类~~做成一个分页类!
来源: 互联网 发布时间: 2013-11-30
不知道学PHP有没有前途~哎越写越没劲
<?php
Class createdb //类的开始
{
var $db= "localhost";//数据库地址;
var $dbname = "root";//用户名;
var $dbpwd = "";//密码;
var $dbtable = "mysql";//使用的数据库
var $conn; //数据库连接;
var $result; //结果集
var $mysql; //执行的mysql
var $row; //结果集中找数据
function createconn() //这个类方法是开始一个conn连接,然后开始选择数据库
{
$this->conn = mysql_connect($this->db,$this->dbname,$this->dbpwd);
mysql_select_db($this->dbtable,$this->conn);
}
function getresule() //这个是得到一个结果集
{
$this->result = mysql_query($this->mysql,$this->conn);
}
function getrow() //创建一个向前的结果集指针
{
$this->row = mysql_fetch_array($this->result);
return $this->row;
}
function closedatabase()
{
mysql_close($this->conn);
}
}//类结束,开始调用类来读mysql数据库数据.
//调试数据库连接的代码!不需要的.
/* $bb = new createdb; //类实例化
$bb->createconn();// 调用类的连接
$bb->mysql="select * from friends_conf";
$bb->getresule(); //调用类得到结果集
while($bb->getrow()){ //调用类创建指针向前读循环读数据,
echo($bb->row["confname"]);
echo($bb->row["confvalue"]);
}*/
?>
//分页类~ 继承了上面的方法
<?php
Class pagefy extends createdb{
var $nametatol; //总的记录数
var $namemust = 1; //每一页想要显示的记录数
var $pageall;
var $i = 1;
var $m ;
var $p = 8; //需要显示的页码;
var $a;
function gettatol() //取总的记录数方法
{ //先要连接数据库
$this->nametatol = $this->row[0]; //总的记录数
}
function getpage() //取总页数
{
$this->pageall = $this->nametatol % $this->namemust;
if($this->pageall)
{
$this->pageall = (int)($this->nametatol / $this->namemust) + 1;
return $this->a = $this->pageall ;
}
else
{
return $this->a = $this->pageall = (int)($this->nametatol / $this->namemust);
}
}
function num_pl() //页码显示
{
$this->pageall = $this->pageall - ($this->pageall - $this->p);
while($this->pageall)
{
echo("<a href='/blog_article/pagefy/n/$this-/gt;i.html'>$this->i</a>");
echo(" "); //想显示什么样式自己加
$this->i++;
$this->pageall =$this->pageall -1;
}
}
function get_num_pl() //取的LIMIT的前一个参数(开始ROW数)
{
$this->m = $_GET["n"] * $this->namemust - $this->namemust;
}
function showpage() //显示分页的内容
{
$this->createconn();
$this->mysql="select * from friends_conf limit $this->m ,$this->namemust";
$this->getresule();
while($this->getrow())
{
echo($this->row["confname"]); //你想读出的字段,自己添加
echo($this->row["confvalue"]);
}
}
function firstpage() //首页
{
echo("<a href='/blog_article/pagefy/n/1.html'>首页<a>");
}
function backpage() //上一页
{
if($this->i = $_GET["n"] - 1)
{
echo("<a href='/blog_article/pagefy/n/$this-/gt;i.html'>上一页<a>");
}
}
function nextpage() //下一页
{
$this->i = $_GET["n"] + 1;
if($this->i <= $this->a)
{
echo("<a href='/blog_article/pagefy/n/$this-/gt;i.html'>下一页<a>");
}
}
function footpage() //最后一页
{
echo("<a href='/blog_article/pagefy/n/$this-/gt;a.html'>最后一页<a>");
}
}
?>
<?php //调试部分
$mm = new pagefy;
$mm->createconn();
$mm->mysql="select count(*) from friends_conf";
$mm->getresule();
$mm->closedatabase();
$mm->getrow();
$mm->gettatol();
$mm->getpage();
$mm->num_pl();
$mm->get_num_pl();
$mm->showpage();
$mm->closedatabase();
$mm->firstpage();
$mm->backpage();
$mm->nextpage();
$mm->footpage();
?>
这个类已经调试完成!十分好用~~~~~~~~~~~~~~~~
类就是你的刀~不提前炼好,难到要等打架的时候再去炼呀!~早死人了~~
所有我一有空!就写个方面的功能类~~~~~~
应该来说我这个类~~相对简单~~~看不懂的问~
<?php
Class createdb //类的开始
{
var $db= "localhost";//数据库地址;
var $dbname = "root";//用户名;
var $dbpwd = "";//密码;
var $dbtable = "mysql";//使用的数据库
var $conn; //数据库连接;
var $result; //结果集
var $mysql; //执行的mysql
var $row; //结果集中找数据
function createconn() //这个类方法是开始一个conn连接,然后开始选择数据库
{
$this->conn = mysql_connect($this->db,$this->dbname,$this->dbpwd);
mysql_select_db($this->dbtable,$this->conn);
}
function getresule() //这个是得到一个结果集
{
$this->result = mysql_query($this->mysql,$this->conn);
}
function getrow() //创建一个向前的结果集指针
{
$this->row = mysql_fetch_array($this->result);
return $this->row;
}
function closedatabase()
{
mysql_close($this->conn);
}
}//类结束,开始调用类来读mysql数据库数据.
//调试数据库连接的代码!不需要的.
/* $bb = new createdb; //类实例化
$bb->createconn();// 调用类的连接
$bb->mysql="select * from friends_conf";
$bb->getresule(); //调用类得到结果集
while($bb->getrow()){ //调用类创建指针向前读循环读数据,
echo($bb->row["confname"]);
echo($bb->row["confvalue"]);
}*/
?>
//分页类~ 继承了上面的方法
<?php
Class pagefy extends createdb{
var $nametatol; //总的记录数
var $namemust = 1; //每一页想要显示的记录数
var $pageall;
var $i = 1;
var $m ;
var $p = 8; //需要显示的页码;
var $a;
function gettatol() //取总的记录数方法
{ //先要连接数据库
$this->nametatol = $this->row[0]; //总的记录数
}
function getpage() //取总页数
{
$this->pageall = $this->nametatol % $this->namemust;
if($this->pageall)
{
$this->pageall = (int)($this->nametatol / $this->namemust) + 1;
return $this->a = $this->pageall ;
}
else
{
return $this->a = $this->pageall = (int)($this->nametatol / $this->namemust);
}
}
function num_pl() //页码显示
{
$this->pageall = $this->pageall - ($this->pageall - $this->p);
while($this->pageall)
{
echo("<a href='/blog_article/pagefy/n/$this-/gt;i.html'>$this->i</a>");
echo(" "); //想显示什么样式自己加
$this->i++;
$this->pageall =$this->pageall -1;
}
}
function get_num_pl() //取的LIMIT的前一个参数(开始ROW数)
{
$this->m = $_GET["n"] * $this->namemust - $this->namemust;
}
function showpage() //显示分页的内容
{
$this->createconn();
$this->mysql="select * from friends_conf limit $this->m ,$this->namemust";
$this->getresule();
while($this->getrow())
{
echo($this->row["confname"]); //你想读出的字段,自己添加
echo($this->row["confvalue"]);
}
}
function firstpage() //首页
{
echo("<a href='/blog_article/pagefy/n/1.html'>首页<a>");
}
function backpage() //上一页
{
if($this->i = $_GET["n"] - 1)
{
echo("<a href='/blog_article/pagefy/n/$this-/gt;i.html'>上一页<a>");
}
}
function nextpage() //下一页
{
$this->i = $_GET["n"] + 1;
if($this->i <= $this->a)
{
echo("<a href='/blog_article/pagefy/n/$this-/gt;i.html'>下一页<a>");
}
}
function footpage() //最后一页
{
echo("<a href='/blog_article/pagefy/n/$this-/gt;a.html'>最后一页<a>");
}
}
?>
<?php //调试部分
$mm = new pagefy;
$mm->createconn();
$mm->mysql="select count(*) from friends_conf";
$mm->getresule();
$mm->closedatabase();
$mm->getrow();
$mm->gettatol();
$mm->getpage();
$mm->num_pl();
$mm->get_num_pl();
$mm->showpage();
$mm->closedatabase();
$mm->firstpage();
$mm->backpage();
$mm->nextpage();
$mm->footpage();
?>
这个类已经调试完成!十分好用~~~~~~~~~~~~~~~~
类就是你的刀~不提前炼好,难到要等打架的时候再去炼呀!~早死人了~~
所有我一有空!就写个方面的功能类~~~~~~
应该来说我这个类~~相对简单~~~看不懂的问~
最新技术文章: