php实现数据和页面分离 php实现数据和页面分离-成都快上网建站

php实现数据和页面分离 php实现数据和页面分离

各位高手,请问php中怎样实现代码和页面分离

f判断,如果是管理员,跳转到哪个页面,如果是普通用户跳转到另一个页面!

创新互联公司是一家专业提供平南企业网站建设,专注与成都做网站、成都网站建设、H5建站、小程序制作等业务。10年已为平南众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。

PHP页面怎么分离为HTML+PHP

前后端分离可以使用ajax,php后台return,如果数据获取成功,返回list,

ajax代码如下:

$.ajax({

type: "GET",

url: "test.json",//php请求数据的地址

data: {aaa:'aaa'},//可选,发送到服务器的数据

dataType: "json",

success: function(data){

$('#resText').empty(); //清空resText里面的所有内容

var html = 'option查询后选择/option';

$.each(data, function(commentIndex, comment){

html += 'option value="' + comment[0]+ '""' + comment[1]+ '/option';

});

$('#resText').html(html);

}

});

select 加上一个id="resText".大概的意思就是这样,具体根据你的需求在做修改。

php如何实现将页面分成几个模块?

首先说布局div+css:横向三个div,左边左浮动,右边的右浮动。然后右边的div内放置两个div(上下结构),上下div里各有两个div,分别左右浮动。

再说php文件:如果是面向过程的话,直接把页面写成.php后缀,页面中直接写入php代码,用echo输出。如果是面向对象的话,就需要使用模板引擎,将php内容进行分配。

大佬们tp框架下php怎么实现前后端分离

不加载模板 只做接口 数据通过$this-ajaxrerturn(); 返回给请求者 前端所有数据通过ajax或者使用vue等数据绑定类的框架 通过js把获取到的数据渲染到页面 这样前端就不会有后端代码 这就是前后端分离

php实现代码分离,用什么框架?

一个优秀的WEB架构,必定会应用一些分层设计的思想,这样可以让系统开发起来更灵活,同时后期维护也比较方便。本文作者麦舒设计了一个前端与后端分离的架构,原文分享如下:

看了《系统架构:Web应用架构的新趋势—前端和后端分离的一点想法》 这篇文章,对前端与后端的分离非常认同,这样做对于系统的维护是有相当大的好处的。正好自己也设计了一个这样的系统,于是把它拿出来,和大家讨论一下。这个架构,与其说是想出来,还不如说是我做系统总结出来的最佳实践。

我们做的系统,前端的页面基本都是使用 JavaScript 的富户端页面,主要应用的框架用,jquery、jquery ui、knockout js、Durandal、另外,还有自己封装的一些 UI 组件,后端的主要采用到的技术有 OData、MVC、Linq to SQL 以及自己写的一个权限管理组件,数据库采用的是 SQL Server 2005。

下面向大家介绍一下各模块的功能以及其划分的目的,我们先从用户界面看起吧

一、关于前端的 dataProvider

简单点说,就是一个给界面调用的数据访问层,很多人都人这样的疑问,在这里加一个数据访问层,是不是多余?只要你做的前端,你都会碰到下面这些问题:

1、一个产品或者项目,前端与后端是同时进行了,这时候,根本没有后端的接口,甚至可以说,连个接口的定义都没有。作为前端开发人员,你如何去开展自己的工作?

2、作为前端开发人员,你有没有碰到,因为后端的接口挂掉,导致你的工作没法继续做下去的情形?

3、作为前端开发人员,往往免不了要和第三方的接口进行对接,你有没有碰到过,和你做对接的人员,突然因为项目紧,被抽走了,留给你的只有一堆需要传N个参数,传了后接着出“对象为空”的异常呢?你根本不知道哪里参数传错了。面对这些接口,你除了破口大骂,得不到任何帮助。

4、作为前端开发人员,你有没有试过,你向后端的开发组,要一个接口,他们需要讨论个几天,然后再花几天才能给你,给你之后,还不能用,又得再花几天时间调试呢?

如果你向我一样,都曾经都碰过这些问题,你就不会怀疑这个 dataProvider 存在的必要了,有了这个 dataProvider,可以最大减少后端接口对前端开发的影响。下面是一个 dataProvider 的实例:

var dataProvider = (function () {

var fakeProvider = {

countries: new Countries()

};

var realProvider = {

countries: new JData.WebDataSource()

};

//下面的接口,根据情况二选一

return fakeProvider; //这个是假的 dataProvider,从本地读

return realProvider; //这个是真正 dataProvider,从接口读

})();

从上面可以看出来,这个 dataProvider 使用了工厂模式来创建,它有两个实例,fakeProvider和realProvider,fakeProvider是用来提供一些模拟数据,而realProvider提供从接口读取出来的数据。当没有接口,或者接口挂掉,我们可以先从 fakeProvider 来读取数据。等接口好了,切换到 realProvider 。

二、关于用户界面输入的验证

1、数据的验证。用户在界面输入数据后,接着调用 dataProvider 里的接口对数据进行处理,但是在向服务端提交之前,得先对数据进行验证。那个这个验证如何进行呢?dataProvider先从服务端获实体的描述信息,这些描述包括但不限于:主外键、属性的验证信息(比如是否可空),当然,这个实体信息是可以缓存起来,以便重用的。然后 dataProvider 再根据这个描述信息来对数据进行验证。

2、错误信息的显示

当验证到某一个属性不合法,验证信息的模块就在页面查找出对应输入控件,它是怎么查找的呢?比如说,Contry 的 Name 输入为空是不可以的。那它就先查找 id 为Coutry的元素,然后再Coutry元素下面再找id 或者 name 为 Name 的控件,如果找不到则直接弹窗显示错误信息。例如:

form id="Country"

input name="Name"/

/form

三、关于后端使用 OData

1、作为后端开发人员,你有没有碰到过这种前端开发人员,今天让你加一个字段,好,加了,然后打包发布。明天又让你加一个字段。后天突然又说,前两天加的字段,不需要,你会不会有种想喊“操”的冲动?

2、作为后端开发员员,你有没有碰到过这种前端开发人员,今天跟你说接口不够用,要加个 GetUserByName 的方法,明天又说,还得加个 GetUserByEmail 的方法?然后,过了一段时间,你发现接口越来越多,维护的模块越来越痈肿,并且这些接口,你只敢加,不敢删除。因为,你根本不知道这些,有哪个不用的,你跑去问前端,他也回答不出来。所以一些接口哪怕是没用的,也只能永远系统里,直到它生命周期的结束。

如果你也碰到类似于我这种烦恼,使用 OData 也许是一个不错的选择,把查询的权限都开发给前端的开发人员,他爱怎么查就怎么查,都由它去。

四、关于后端使用MVC

我们的系统,使用MVC都是用来处理从前端提交上来的数据的,使用它主要是开发人员都熟悉MVC,然后MVC再调用业务层代码,同时,还需要处理:

1、对提交上来的数据进行验证

2、处理系统的异常,包括对异常进行重新的包装,再传回到客户端,以便于客户端的处理。对异常的信息进行记录。

五、数据访问层

关于数据访问层,在我们的系统里实际是一个 ORM 的包装器(ORM Wrapper),你在对 ORM 裹上一层外衣。目的在于:

1、对数据进行拦截。例如:有些数据,只对某个角色的开发。数据访问层需要对根据过滤条件,然后再结合查询条件,重新生成SQL。

2、对数据假删除的处理。见过很多系统,都是把删除放到业务层来进行的,其实这是不适合的,从业务的角度来说,关心的是删除,在执行删除后,这条数据从我眼前消失就可以了。至真删除还是假删除,这与我无关。数据访问层,要做的就是这工作,它可以数据在真删除与假删除之间进行切换,只要配置一下,就可以把真删除变成假删除(其实就是把Delete操作变成Update操作),使得进行业务开发人员,不用再关心数据的真假删除。

3、对数据进行跟踪、备份。你肯定碰到过这么一种需要,需要记下来,每一次的更新操作的时间,以及更新了些什么内容。对于删除的数据,能够把它还原回来。数据访问层,通过对 ORM进行包装,完全可以记录下每一次更新、删除这些操作,然后记录下来即可。当然,这些需求利用数据提供的功能也是可以实现的,不在讨论的范围内。

php 怎样使页面逵雙hp代码分离

通过php文件调用,经过一系列处理后,用eval函数将希望的变量带入生成所需要的动态页。这样,我就没再看vbb源码,而转入eval函数了。php中文手册是这样介绍eval函数的:

函式:eval()

杂项函式库

eval

将值代入字串之中。

语法: void eval(string code_str);

传回值: 无

函式种类: 资料处理

内容说明

本函式可将字串之中的变数值代入,通常用在处理资料库的资料上。参数 code_str为欲处理的字串。值得注意的是待处理的字串要符合 PHP 的字串格式,同时在结尾处要有分号。使用本函式处理后的字串会沿续到 PHP 程式结束。

使用范例

以下为引用的内容:

?php

$string = '杯子';

$name = '咖啡';

$str = '这个 $string 中装有 $name.br';

echo $str;

eval( "\$str = \"$str\";" );

echo $str;

?

本例的传回值为

这个 $string 中装有 $name。

这个 杯子 中装有 咖啡。

例子测试没有任何问题。可是,当我测试如下代码时,却出现了错误:

以下为引用的内容:

?

$aa='my name is yyy!';

$str='input type="text" name="textfield" value="$aa"';

eval( "\$str = \"$str\";" );

echo $str;

?

百思不得其解后,求救,在网友提出的一系列解决方案中,终于以这种方式运行成功:

以下为引用的内容:

?

$aa='my name is yyy!';

$str='input type="text" name="textfield" value="\'$aa\'"';

eval( "\$str = \"$str\";" );

echo $str;

?

可是,当我把$str 插入如下一个表中然后又提取出时,又出错了。

数据库 evaltest

# 表结构 'envtest'

以下为引用的内容:

CREATE TABLE envtest (

id tinyint(4) NOT NULL auto_increment,

sour mediumtext,

PRIMARY KEY (id),

UNIQUE id (id),

KEY id_2 (id)

);

#表内容 'envtest'

以下为引用的内容:

INSERT INTO envtest VALUES( '1', 'input type=\"text\" name=\"textfield\" value=\"$aa\"');

php文件如下:

以下为引用的内容:

?

$aa='my name is yyy!';

$conn=mysql_connect('localhost','root','');

$sele='select sour from envtest where id=1';

$res=mysql_db_query('evaltest',$sele);

$arra=mysql_fetch_array($res);

$str=$arra['sour'];

eval( "echo \"$str\";" );

?

再看看php中文手册,发现这么一句话:“待处理的字串要符合 PHP 的字串格式”,什么叫“符合 PHP 的字串格式”(有谁知道,麻烦告诉一声)。我不知道,也无从查找,只好看看字串处理函数。发现htmlspecialchars()好像可用,于是试了一把:

以下为引用的内容:

?

$aa='my name is yyy!';

$conn=mysql_connect('localhost','root','');

$sele='select sour from envtest where id=1';

$res=mysql_db_query('evaltest',$sele);

$arra=mysql_fetch_array($res);

$str=htmlspecialchars($arra['sour']);

eval( "echo \"$str\";" );

?

可是在页面上显示是这样的:

以下为引用的内容:

input type="text" name="textfield" value="my name is yyy!"

变量带入成功,可显示不符合要求.察看文件源码,内容如下:

以下为引用的内容:

input type="text" name="textfield" value="my bsp name bsp is yyy!"

再看看手册的htmlspecialchars()的用法,发现此函数对字串作了如下操作:

(和) 转成

" (双引号) 转成 "

(小于) 转成

(大于) 转成

再查找,没发现与此函数作用相反的函数,于是,自己加了几行代码,再作如下调试,终于成功。

以下为引用的内容:

?php

function dehtml($str){

$str=str_replace('"','"',$str);

$str=str_replace('','',$str);

$str=str_replace('','',$str);

$str=str_replace('','',$str);

return $str;

}

$aa='my name is yyy!';

$conn=mysql_connect('localhost','root','');

$sele='select sour from envtest where id=1';

$res=mysql_db_query('evaltest',$sele);

$arra=mysql_fetch_array($res);

$str=HTMLSpecialChars($arra['sour']);

eval( "echo dehtml(\"$str\");" );

?

在这个代码调试成功后,我又把一个内容复杂的html页面的源码加入一变量后插入到evaltest表中,再次测试,也成功了。


网站栏目:php实现数据和页面分离 php实现数据和页面分离
标题来源:http://kswjz.com/article/doosijh.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流