不需要mod_rewrite直接使用PHP实现伪静态化页面

 更新时间:2016年11月25日 16:13  点击:1550

在你的程序初始化时使用如下代码:
<?php
$Php2Html_FileUrl = $_SERVER["REQUEST_URI"];
$Php2Html_UrlString = str_replace("/", "", strrchr($Php2Html_FileUrl, "/"));
$Php2Html_UrlQueryStrList = explode("@", $Php2Html_UrlString);
foreach($Php2Html_UrlQueryStrList as $Php2Html_UrlQueryStr)
{
$Php2Html_TmpArray = explode("|", $Php2Html_UrlQueryStr);
$_GET[$Php2Html_TmpArray[0]] = $Php2Html_TmpArray[1];
}
echo '假静态:$_GET变量<br />';
print_r($_GET);
?>
然后php中调用$_GET变量就像平常一样了。
连接使用方式:
****.php/param1|1234@param2|4321
和****.php?param1=1234&param2=4321一样。

MySQL并发能力强、响应速度快,是性能优异的数据库软件;PHP是功能强大的服务器端脚本语言。笔者在山西铝厂网站开发中,采用PHP4.0 MySQL3.23.38建立了多种应用。下面,以一个简单的聊天室设计为例,介绍PHP MySQL在网页开发中的应用。

  1、总体设计

  1.1 构思与规划:

  聊天室的基本原理,就是把每个连上同一网页的用户传送的发言数据储存起来,然后将所有的发言数据传给每一用户。也就是说,用数据库汇集每个人的发言,并将数据库中的数据传给每一个人就实现了聊天室的功能。

  1.2 表设计

  首先使用MySQL建立表chat用来储存用户的发言:

mysql> CREATE TABLE chat
-> (chtime DATATIME,
-> nick CHAR(10) NOT NULL,
->words CHAR(150));

  表中只设定了三个域,chtime是发言的时间,nick为发言者的昵称,words是发言的内容,发言最多150个字符

  1.3 网页设计

  一个最简单的聊天室通常需要两个页框:一个页框是用户输入发言的表单,另一个用来显示大家的发言。所以代码段通常至少需要如下几段:

  建立页框的结构(main.php)

  显示大家发言的程序段(cdisplay.php)

  传送用户发言的程序段(speak.php)

  用户登录进入聊天室程序段(login.php)

  2、代码设计

  以上规划完成后,就可以着手代码设计了,采用php可以非常简明实现以上的功能。

  2.1 用户登录login.php,本段代码是一个完全HTML网页

<html>
<head>
 <title>用户登录</title>
</head>
<body>请输入您的昵称<br>
<form action=”main.php” method=”post” target=”_self”>
 <input type=”text” name=”nick” cols=”20”>
 <input type=”submit” value=”登录”>
</body>
</html>

  用户提交自己的昵称后,就进入到聊天室,以下的处理交由main.php处理。

  2.2 页框主体代码段main.php:

<?
 setcookie(“nick”,$nick) //用cookie记录用户昵称,是常用的传递变量方法
?>

<html>
<title>山西铝厂聊天室试用版ver1.0</title>
<frameset rows=”80%,*”>
<frame src=” cdisplay.php” name=”chatdisplay”>
<frame src=”speak.php” name=”speak”>
</frameset>
</html>

<?php
$num = count($array);
if($num)
{
sort($array);
}
if($num!=0)
{
$m = $array[0];
$n = 0;
$kind=1;
echo $array[0]."----------";
for($z=0;$z<$num;$z )
{
if($m!=$array[$z])
{
echo $array[$z-1]." ";
echo $array[$z];
$kind=0;
$m=$array[$z];
}
$n ;
$m ;
//echo $array[$z]."'/n'";
}
if($kind==1)
{
echo $array[$num-1]."重复的数据! ";
}
?>

<?
function isgb($code)
{
if (strlen($code)>=2)
{
$code=strtok($code,"");
if ((ord($code[0]) < 161)||(ord($code[0]) >= 247))
{
return (0);
}
else
{
if ((ord($code[1]) <= 161)||(ord($code[1]) >= 254))
{
return (0);
}
else
{
return (1);
}
}
}
else
{
return (1);
}
}

function gboffset($code)
{
if (strlen($code) >= 2)
{
$code=strtok($code,"");
return ((ord($code[0]) - 161) * 94 (ord($code[1]) - 161));
}
else
{
return(-1);
}
}

function wordtostring($code)
{
return (chr(hexdec(substr($code,0,2))).chr(hexdec(substr($code,2,2))));
}

function gbtobig5($code)

Cookie真是一个伟大的发明,它答应web开发者保留他们的用户的登录状态。然而,当你的站点或网络
有一个以上的域名时就会出现问题了。

  在Cookie规范上说,一个cookie只能用于一个域名,不能够发给其它的域名。因此,假如在浏览器中对一个域名设置了一个cookie,这个cookie对于其它的域名将无效。假如你想让你的用户从你的站点中的其中一个进行登录,同时也可以在其它域名上进行登录,这可真是一个大难题。

  我的解决方案将使用下面的一般框架:

一个预置的脚本将用来接受通过GET或COOKIE方式传递过来的sessionid号。它将比COOKIE优先选择GET
变量。所以,无论何时需要引用交叉的域名时,我们把sessionid做为一个URL参数进行发送。修改Apache配置,用来实现重写所有的交叉域名的cookie。这样做的原因一会儿就会清楚了。在任何时候出现一个交叉域名引用时使用变量。

第一步:创建预置脚本
  将下面的代码加到预置脚本中(或出现在所有脚本之前的函数中)。


<?php

/* 支持交叉域名cookie... */

// 假如GET变量已经设置了,并且它与cookie变量不同
//则使用get变量(更新cookie)
global $HTTP_COOKIE_VARS, $HTTP_GET_VARS;
if (isset($sessionid) && isset($HTTP_GET_VARS['sessionid']) && ($HTTP_COOKIE_VARS['sessionid'] != $HTTP_GET_VARS['sessionid'])) {
SetCookie('sessionid', $HTTP_GET_VARS['sessionid'], 0, '/', '');
$HTTP_COOKIE_VARS['sessionid'] = $HTTP_GET_VARS['sessionid'];
$sessionid = $HTTP_GET_VARS['sessionid'];
}
?>

  一旦这个代码运行之后,一个全局的'sessionid'变量将可以用于脚本。它将保存着用户的cookie中的
sessionid值,或者是通过GET请求发来的sessionid值。


第二步:为所有的交叉域名引用使用变量
  创建一个全局的配置文件,用于存放可以进行切换的域名的基本引用形式。例如,假如我们拥有
domain1.com和domain2.com,则如下设置:


<?php
$domains['domain1'] = "http://www.domain1.com/-$sessionid-";
$domains['domain2'] = "http://www.domain2.com/-$sessionid-";
?>

  现在,假如在代码中如下做:


<?php
echo "Click &lt;a href="", $domains['domain2'], "/contact/?email=yes"&gt;here&lt;/a&gt; to contact us.";
?>

[!--infotagslink--]

相关文章