当前位置: 编程技术>php
本页文章导读:
▪php 分页类 扩展代码
原来发表过一个脱离数据库的分页类,最近使用的时候发现有些时候搜索的东西过于大的时候,采用url传递参数的方式,可能会有一定的影响或者叫已知的bug,这次做了一些扩展,同时兼容.........
▪PHP 输出简单动态WAP页面
当然,也有其他方法,网上可以搜索得到。我这里推荐一个既能浏览http页面又能浏览wap页面的方法,那就是用Firefox + wmlbrowser组件。装好wmlbrowser组件的firefox就可以支持直接浏览wap页面了。.........
▪Windows PHP5和Apache的安装与配置
一 下载安装程序 Apache可以从http://www.apache.org/dyn/closer.cgi/httpd/binaries/win32/下载 PHP可以从http://www.php.net下载. 二 安装程序 1、Apache的程序安装相对来说要较为的简单一些,我.........
[1]php 分页类 扩展代码
来源: 互联网 发布时间: 2013-11-30
原来发表过一个脱离数据库的分页类,最近使用的时候发现有些时候搜索的东西过于大的时候,采用url传递参数的方式,可能会有一定的影响或者叫已知的bug,这次做了一些扩展,同时兼容了以前的模式,使用上面很简单的,只需要多设置一个参数就可以了代码如下:
<?php
/**
* 功能: 分页类,根据提供的数据总量和页面大小
* 创建日期:Fri Apr 20 16:45:21 CST 2007
* 最后更新:
* 作者: sanshi <sanshi0815@tom.com>
*/
class pagination
{
var $result = array();
var $pVar = "myp";//page参数分页记数
var $urlParamStr = ""; //页面的所有参数
var $sqlMoveNumber = 0; //数据的偏移量
var $is_post = false;
public function pagination()
{
}
public function set($sum,$pageSize,$page="",$is_post = false)
{
$this->is_post = $is_post;
$this->pVar = defined('PAGE_BAR') ? PAGE_BAR : 'myp' ;
$url = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
//计算出总页数
$curPage = $this->getCurPage();
$temp['sumPage'] = ceil($sum/$pageSize);
//修改了,页码超出的bug
if($curPage>$temp['sumPage']) $curPage=$temp['sumPage'];
$temp['curPage'] = $curPage;
$temp['nextPage'] = $temp['sumPage'] > $curPage ? ($curPage+1) : $temp['sumPage'];
$temp['upPage'] = $curPage >1 ? $curPage-1 :1;
$temp['endPage'] = $temp['sumPage'];
$this->urlParamStr = $this->_makeUrl(/blog_article/$url/index.html);
$temp['urlPageStr'] = ($page=="") ? $this->_makeUrl(/blog_article/$url/index.html) : $page.$this->urlParamStr;
$this->sqlMoveNumber = $curPage <2 ? 0 : ($curPage-1)*$pageSize;
$temp['sqlMoveNumber'] = $this->sqlMoveNumber;
$temp['rowNo'] = $sum;
$this->result = $temp;
return $this->result;
//print_r($temp);exit();
}
public function getSqlMove()
{
return $this->sqlMoveNumber;
}
public function getFooter()
{
$str= "共有 <FONT COLOR=#FF0033>{$this->result['rowNo']}</FONT> 条 <a href='/blog_article/{$this->result[/index.html'urlPageStr']}{$this->result['upPage']}'";
if($this->is_post) $str .=" onclick='return sanshi_page_post(this.href,{$this->result['upPage']});' ";
$str .=" >上一页</a> ";
$str .=" 当前 {$this->result['curPage']} 页";
$str .=" 共有 {$this->result['sumPage']} 页";
$str .=" <a href='/blog_article/{$this->result[/index.html'urlPageStr']}{$this->result['nextPage']}'";
if($this->is_post) $str .=" onclick='return sanshi_page_post(this.href,{$this->result['nextPage']});' ";
$str .=" >下一页</a>";
return $str;
}
public function getJumpPage()
{
if($this->is_post)
{
$str = " 跳到第 <select name='topage' size='1' onchange='sanshi_page_post(\"{$this->result['urlPageStr']}\"+this.value,this.value)'>\n";
}else{
$str = " 跳到第 <select name='topage' size='1' onchange='window.location=\"{$this->result['urlPageStr']}\"+this.value'>\n";
}
for($i=1;$i<=$this->result['sumPage'];$i++)
{
$str .= ($i==$this->result['curPage']) ? "<option value='$i' selected>$i</option>\n" : "<option value='$i'>$i</option>\n";
}
$str.="</select> 页";
//输出form表单
if($this->is_post)
{
$str .="<script type="text/javascript"><!--
function sanshi_page_post(jump_link,page_no)
{
document.getElementById('sanshi_goPage').action = jump_link; document.getElementById('{$this->pVar}').value = page_no;
document.getElementById('sanshi_goPage').submit();
return false;
}
// --></script>";
$str .="<form name='sanshi_goPage' id='sanshi_goPage' method=post>";
$str .="<input type=\"hidden\" name='{$this->pVar}' id='{$this->pVar}' value=0>";
$_POST = isset($_POST) ? $_POST : array();
foreach($_POST AS $k=>$v)
{
$str .="<input type=\"hidden\" name=\"{$k}\" id=\"{$k}\" value=\"{$v}\">";
}
$str .="</form>";
}
return $str;
}
public function getCurPage()
{
return isset($_GET[$this->pVar]) ? intval($_GET[$this->pVar]) : 1 ;
}
//分析出url的参数返回?后的参数,页码为空 包括问号
private function _makeUrl(/blog_article/$url/index.html)
{
$arrayUrl=parse_url($url);
if(isset($arrayUrl['query']))
{
$q=$arrayUrl['query'];
parse_str($q,$qParam);
//print_r($qParam);
if(array_key_exists($this->pVar,$qParam))
{
foreach ($qParam AS $k=>$v)
{
if($k !=$this->pVar) $temp[$k] = $v;
}
$temp[$this->pVar] = "";
if(function_exists("http_build_query"))
return '?'.http_build_query($temp);
else
return '?'.sanshi_http_build_query($temp);
}else {
return "?{$q}&{$this->pVar}=";
}
}else{
return "?{$this->pVar}=";
}
}
}
function sanshi_http_build_query($a,$b='',$c=0)
{
if (!is_array($a)) return false;
foreach ((array)$a as $k=>$v)
{
if ($c)
$k=$b."[".$k."]";
elseif (is_int($k))
$k=$b.$k;
if (is_array($v)||is_object($v))
{
$r[]=http_build_query($v,$k,1);
continue;
}
$r[]=$k."=".urlencode($v);
}
return implode("&",$r);
}
/*
//print_r($_SERVER);
$p = new pagination();
$p->set(10,2,'thi.php');
echo $p->getFooter();
echo $p->getJumpPage();
*/
?>
代码如下:
<?php
/**
* 功能: 分页类,根据提供的数据总量和页面大小
* 创建日期:Fri Apr 20 16:45:21 CST 2007
* 最后更新:
* 作者: sanshi <sanshi0815@tom.com>
*/
class pagination
{
var $result = array();
var $pVar = "myp";//page参数分页记数
var $urlParamStr = ""; //页面的所有参数
var $sqlMoveNumber = 0; //数据的偏移量
var $is_post = false;
public function pagination()
{
}
public function set($sum,$pageSize,$page="",$is_post = false)
{
$this->is_post = $is_post;
$this->pVar = defined('PAGE_BAR') ? PAGE_BAR : 'myp' ;
$url = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
//计算出总页数
$curPage = $this->getCurPage();
$temp['sumPage'] = ceil($sum/$pageSize);
//修改了,页码超出的bug
if($curPage>$temp['sumPage']) $curPage=$temp['sumPage'];
$temp['curPage'] = $curPage;
$temp['nextPage'] = $temp['sumPage'] > $curPage ? ($curPage+1) : $temp['sumPage'];
$temp['upPage'] = $curPage >1 ? $curPage-1 :1;
$temp['endPage'] = $temp['sumPage'];
$this->urlParamStr = $this->_makeUrl(/blog_article/$url/index.html);
$temp['urlPageStr'] = ($page=="") ? $this->_makeUrl(/blog_article/$url/index.html) : $page.$this->urlParamStr;
$this->sqlMoveNumber = $curPage <2 ? 0 : ($curPage-1)*$pageSize;
$temp['sqlMoveNumber'] = $this->sqlMoveNumber;
$temp['rowNo'] = $sum;
$this->result = $temp;
return $this->result;
//print_r($temp);exit();
}
public function getSqlMove()
{
return $this->sqlMoveNumber;
}
public function getFooter()
{
$str= "共有 <FONT COLOR=#FF0033>{$this->result['rowNo']}</FONT> 条 <a href='/blog_article/{$this->result[/index.html'urlPageStr']}{$this->result['upPage']}'";
if($this->is_post) $str .=" onclick='return sanshi_page_post(this.href,{$this->result['upPage']});' ";
$str .=" >上一页</a> ";
$str .=" 当前 {$this->result['curPage']} 页";
$str .=" 共有 {$this->result['sumPage']} 页";
$str .=" <a href='/blog_article/{$this->result[/index.html'urlPageStr']}{$this->result['nextPage']}'";
if($this->is_post) $str .=" onclick='return sanshi_page_post(this.href,{$this->result['nextPage']});' ";
$str .=" >下一页</a>";
return $str;
}
public function getJumpPage()
{
if($this->is_post)
{
$str = " 跳到第 <select name='topage' size='1' onchange='sanshi_page_post(\"{$this->result['urlPageStr']}\"+this.value,this.value)'>\n";
}else{
$str = " 跳到第 <select name='topage' size='1' onchange='window.location=\"{$this->result['urlPageStr']}\"+this.value'>\n";
}
for($i=1;$i<=$this->result['sumPage'];$i++)
{
$str .= ($i==$this->result['curPage']) ? "<option value='$i' selected>$i</option>\n" : "<option value='$i'>$i</option>\n";
}
$str.="</select> 页";
//输出form表单
if($this->is_post)
{
$str .="<script type="text/javascript"><!--
function sanshi_page_post(jump_link,page_no)
{
document.getElementById('sanshi_goPage').action = jump_link; document.getElementById('{$this->pVar}').value = page_no;
document.getElementById('sanshi_goPage').submit();
return false;
}
// --></script>";
$str .="<form name='sanshi_goPage' id='sanshi_goPage' method=post>";
$str .="<input type=\"hidden\" name='{$this->pVar}' id='{$this->pVar}' value=0>";
$_POST = isset($_POST) ? $_POST : array();
foreach($_POST AS $k=>$v)
{
$str .="<input type=\"hidden\" name=\"{$k}\" id=\"{$k}\" value=\"{$v}\">";
}
$str .="</form>";
}
return $str;
}
public function getCurPage()
{
return isset($_GET[$this->pVar]) ? intval($_GET[$this->pVar]) : 1 ;
}
//分析出url的参数返回?后的参数,页码为空 包括问号
private function _makeUrl(/blog_article/$url/index.html)
{
$arrayUrl=parse_url($url);
if(isset($arrayUrl['query']))
{
$q=$arrayUrl['query'];
parse_str($q,$qParam);
//print_r($qParam);
if(array_key_exists($this->pVar,$qParam))
{
foreach ($qParam AS $k=>$v)
{
if($k !=$this->pVar) $temp[$k] = $v;
}
$temp[$this->pVar] = "";
if(function_exists("http_build_query"))
return '?'.http_build_query($temp);
else
return '?'.sanshi_http_build_query($temp);
}else {
return "?{$q}&{$this->pVar}=";
}
}else{
return "?{$this->pVar}=";
}
}
}
function sanshi_http_build_query($a,$b='',$c=0)
{
if (!is_array($a)) return false;
foreach ((array)$a as $k=>$v)
{
if ($c)
$k=$b."[".$k."]";
elseif (is_int($k))
$k=$b.$k;
if (is_array($v)||is_object($v))
{
$r[]=http_build_query($v,$k,1);
continue;
}
$r[]=$k."=".urlencode($v);
}
return implode("&",$r);
}
/*
//print_r($_SERVER);
$p = new pagination();
$p->set(10,2,'thi.php');
echo $p->getFooter();
echo $p->getJumpPage();
*/
?>
[2]PHP 输出简单动态WAP页面
来源: 互联网 发布时间: 2013-11-30
当然,也有其他方法,网上可以搜索得到。我这里推荐一个既能浏览http页面又能浏览wap页面的方法,那就是用Firefox + wmlbrowser组件。装好wmlbrowser组件的firefox就可以支持直接浏览wap页面了。
由于需要动态输出内容,我们不得不将页面的后缀名定为.php,那这样如何让浏览器将其解析为wap页面呢?很简单,只要在头文件输出的时候告诉浏览器该文件的MIME类型就行了。
<?php
header("Content-type: text/vnd.wap.wml");
?>
有了上面一句,文件的扩展名就不重要了。
接下来就当是在编写一个PHP文件就行了,语法啊函数啊全部照常,记得在开头先输出XML的格式头,
<?php
echo ('<?xml version="1.0"?>');
?>
另外,文本的格式要按wml的格式来写(也相当于xml),wml规范相当严格,一点失误都可能导致无法输出所需页面。
一个wml的模板如下:
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.3//EN" "http://www.wapforum.org/DTD/wml13.dtd" >
<wml>
<card title="">
</card>
</wml>
目前的大多数WAP手机(Nokia7110、爱立信R320S等等)都是使用UTF-8编码的,也就是采用UNICODE来编码。这样,如果我们直接在WML使用中文字符(GB2312编码),将会产生乱码,手机用户无法识别,所以我们在输出中文之前,要使用程序或函数对中文进行UNICODE的编码。而在少数支持GB2312编码的手机或WAP终端设备中,我们可以在程序中定义好文档的内码类型后即可直接正确显示汉字。
由于需要动态输出内容,我们不得不将页面的后缀名定为.php,那这样如何让浏览器将其解析为wap页面呢?很简单,只要在头文件输出的时候告诉浏览器该文件的MIME类型就行了。
代码如下:
<?php
header("Content-type: text/vnd.wap.wml");
?>
有了上面一句,文件的扩展名就不重要了。
接下来就当是在编写一个PHP文件就行了,语法啊函数啊全部照常,记得在开头先输出XML的格式头,
代码如下:
<?php
echo ('<?xml version="1.0"?>');
?>
另外,文本的格式要按wml的格式来写(也相当于xml),wml规范相当严格,一点失误都可能导致无法输出所需页面。
一个wml的模板如下:
代码如下:
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.3//EN" "http://www.wapforum.org/DTD/wml13.dtd" >
<wml>
<card title="">
</card>
</wml>
目前的大多数WAP手机(Nokia7110、爱立信R320S等等)都是使用UTF-8编码的,也就是采用UNICODE来编码。这样,如果我们直接在WML使用中文字符(GB2312编码),将会产生乱码,手机用户无法识别,所以我们在输出中文之前,要使用程序或函数对中文进行UNICODE的编码。而在少数支持GB2312编码的手机或WAP终端设备中,我们可以在程序中定义好文档的内码类型后即可直接正确显示汉字。
[3]Windows PHP5和Apache的安装与配置
来源: 互联网 发布时间: 2013-11-30
一 下载安装程序
Apache可以从http://www.apache.org/dyn/closer.cgi/httpd/binaries/win32/下载
PHP可以从http://www.php.net下载.
二 安装程序
1、Apache的程序安装相对来说要较为的简单一些,我们从网站下来的是一个Windows下的安装程序,我们可以直接双击运行,这样我们就便利Apache在我们的电脑上安下家来了。
2、我们在这里要注意的就是在下载PHP时一定要下载那个zip包的,而不要下载Installer的.将我们下载下来的PHP包解压到C盘下的根目录下,并将解压出来的文件夹改名为php。
三 配置
1、最好是无论使用何种接口(CGI 或者 SAPI)都确保 php5ts.dll 可用,因此必须将此文件放到 Windows 路径中。最好的位置是 Windows 的 system 目录:
c:\windows\system for Windows 9x/ME
c:\winnt\system32 for Windows NT/2000 或者 c:\winnt40\system32 for Windows NT/2000 服务器版
c:\windows\system32 for Windows XP
2、下一步是设定有效的 PHP 配置文件,php.ini。压缩包中包括两个 ini 文件,php.ini-dist 和 php.ini-recommended。建议使用 php.ini-recommended,因为此文件对默认设置作了性能和安全上的优化。
将选择的 ini 文件拷贝到 PHP 能够找到的目录下并改名为 php.ini。PHP 默认在 Windows 目录下搜索 php.ini:
3 在 Windows 9x/ME/XP 下将选择的 ini 文件拷贝到 %WINDIR%,通常为 c:\windows。
在 Windows NT/2000 下将选择的 ini 文件拷贝到 %WINDIR% 或 %SYSTEMROOT% 下,通常为 c:\winnt 或 c:\winnt40 对应于服务器版本。
4 Apache中PHP的设置
有两种方法使得 PHP 工作在 Windows 下的 Apache。一是使用 CGI 二进制文件,另一是使用 Apache 模块 DLL。无论那种方法,您首先必须停止 Apache 服务器,然后编辑 httpd.conf,以配置 Apache 和 PHP 协同工作。
如果我们要使用CGI二进制文件,那么我们要将如下指令插入到 Apache 的 httpd.conf 配置文件中,以设置 CGI 二进制文件:
PHP 以 CGI 方式安装到 Apache 2.0:
ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php.exe"
如果我们想把 PHP 作为 Apache 2.0 的模块,那么就一定要移动 php4ts.dll 到 winnt/system32(Windows NT/2000)或 windows/system32(Windows XP),覆盖原有文件(如果有的话),对于 PHP 5,这个文件是 php5ts.dll。然后我们要插入如下两行到 httpd.conf 中,以使我们的 PHP 作为 Apache 的 PHP-Module 安装:
PHP 以模块方式安装到 Apache 2.0:
; For PHP 4 do something like this:
LoadModule php4_module "c:/php/php4apache2.dll"
AddType application/x-httpd-php .php
; For PHP 5 do something like this:
LoadModule php5_module "c:/php/php5apache2.dll"
AddType application/x-httpd-php .php
经过这样的配置以后,我们就安装好了我们的PHP和Apache服务器了。我们可以简单的测试一下:
1、测试Apache:
我们打开浏览器,在地址栏中输入localhost,如果可以出现Apache页面,则说明我们的Apache可以正常工作了。
2、测试PHP设置:
我们可以简单的编写一个PHP页面,我们可以用文本编辑器,输入下面的代码:
<html>
<head>
<title>
hello
</title>
</head>
<body>
<?php echo "hello,php"; ?>
</body>
</html>
然后将这个文件存为hello.php,将其放在Apache的htdocs目录中(我们也可以在http.conf文件中来更改这个目录的),然后在我们的浏览器中输入http://localhost/hello.php,如果能够正确的显示hello,php就说明我们的PHP配置是可以正常工作的。
这样以后我们也可以来设计我们的PHP站点了
Apache可以从http://www.apache.org/dyn/closer.cgi/httpd/binaries/win32/下载
PHP可以从http://www.php.net下载.
二 安装程序
1、Apache的程序安装相对来说要较为的简单一些,我们从网站下来的是一个Windows下的安装程序,我们可以直接双击运行,这样我们就便利Apache在我们的电脑上安下家来了。
2、我们在这里要注意的就是在下载PHP时一定要下载那个zip包的,而不要下载Installer的.将我们下载下来的PHP包解压到C盘下的根目录下,并将解压出来的文件夹改名为php。
三 配置
1、最好是无论使用何种接口(CGI 或者 SAPI)都确保 php5ts.dll 可用,因此必须将此文件放到 Windows 路径中。最好的位置是 Windows 的 system 目录:
c:\windows\system for Windows 9x/ME
c:\winnt\system32 for Windows NT/2000 或者 c:\winnt40\system32 for Windows NT/2000 服务器版
c:\windows\system32 for Windows XP
2、下一步是设定有效的 PHP 配置文件,php.ini。压缩包中包括两个 ini 文件,php.ini-dist 和 php.ini-recommended。建议使用 php.ini-recommended,因为此文件对默认设置作了性能和安全上的优化。
将选择的 ini 文件拷贝到 PHP 能够找到的目录下并改名为 php.ini。PHP 默认在 Windows 目录下搜索 php.ini:
3 在 Windows 9x/ME/XP 下将选择的 ini 文件拷贝到 %WINDIR%,通常为 c:\windows。
在 Windows NT/2000 下将选择的 ini 文件拷贝到 %WINDIR% 或 %SYSTEMROOT% 下,通常为 c:\winnt 或 c:\winnt40 对应于服务器版本。
4 Apache中PHP的设置
有两种方法使得 PHP 工作在 Windows 下的 Apache。一是使用 CGI 二进制文件,另一是使用 Apache 模块 DLL。无论那种方法,您首先必须停止 Apache 服务器,然后编辑 httpd.conf,以配置 Apache 和 PHP 协同工作。
如果我们要使用CGI二进制文件,那么我们要将如下指令插入到 Apache 的 httpd.conf 配置文件中,以设置 CGI 二进制文件:
PHP 以 CGI 方式安装到 Apache 2.0:
ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php.exe"
如果我们想把 PHP 作为 Apache 2.0 的模块,那么就一定要移动 php4ts.dll 到 winnt/system32(Windows NT/2000)或 windows/system32(Windows XP),覆盖原有文件(如果有的话),对于 PHP 5,这个文件是 php5ts.dll。然后我们要插入如下两行到 httpd.conf 中,以使我们的 PHP 作为 Apache 的 PHP-Module 安装:
PHP 以模块方式安装到 Apache 2.0:
; For PHP 4 do something like this:
LoadModule php4_module "c:/php/php4apache2.dll"
AddType application/x-httpd-php .php
; For PHP 5 do something like this:
LoadModule php5_module "c:/php/php5apache2.dll"
AddType application/x-httpd-php .php
经过这样的配置以后,我们就安装好了我们的PHP和Apache服务器了。我们可以简单的测试一下:
1、测试Apache:
我们打开浏览器,在地址栏中输入localhost,如果可以出现Apache页面,则说明我们的Apache可以正常工作了。
2、测试PHP设置:
我们可以简单的编写一个PHP页面,我们可以用文本编辑器,输入下面的代码:
<html>
<head>
<title>
hello
</title>
</head>
<body>
<?php echo "hello,php"; ?>
</body>
</html>
然后将这个文件存为hello.php,将其放在Apache的htdocs目录中(我们也可以在http.conf文件中来更改这个目录的),然后在我们的浏览器中输入http://localhost/hello.php,如果能够正确的显示hello,php就说明我们的PHP配置是可以正常工作的。
这样以后我们也可以来设计我们的PHP站点了
最新技术文章: