求救, 跨项目生成静态页面的问题.
发布于:2022-01-17 09:50:54
#1 ltotal
一个站的前后台分别做成了2个子项目, 即网站目录下包括admin和app两个项目文件夹个各自对应的入口文件admin.php和index.php, 假如现在想在后台(admin子项目)控制前台(app子项目)某个控制器中动作的静态生成, 但按照SP的静态生成方式, spClass("spHtml")->make(array("article", "show", array('id'=>xxx))); 要是这个动作在后台执行的话, 就会被认为是生成关于admin项目的article控制器下show动作的相关静态页面, 而其实这个控制器是在app项目里的, 要生成的是前台app项目aticle下的静态, 请问下有什么方法解决? 谢谢!!
补充: spHtml用到了spUrl函数, 后者是通过url_path_base决定当前入口文件的, 但这个是不好改的, 否则整个后台的链接就出问题了.
2010-01-28 15:47:42
#2 jake
有两个解决方法:
一、(有些难)将前台要生成的控制器也放到后台来,生成的地址一样就可以,然后通过覆盖SP框架的HTML设置的url_getter/url_setter,把url_getter/url_setter换成通过数据库获取地址,那么两端都可以读到同样的网址。
二、(灵活些)通过接口的方式,admin端首先在数据库中写入需要生成HTML的页面的spUrl值,然后启动一个接口(file_get_contents就可以),调用app端的生成程序,app端的生成程序将读取数据库的记录来生成HTML页面。下面有示意图:
2010-01-28 16:12:36
#3 setlt
:$不是很明白!
2010-01-28 16:40:19
#4 jake
第一个方法是通过设置来改变sp生成html的方法,从而实现两个项目能够生成HTML的
第二个方法就是通常跨项目使用的接口方式。UCENTER的两种接口也是和上面说的两种对应。
2010-01-28 16:54:48
#5 ltotal
谢谢jake提供的思路:)
2010-01-29 17:16:50
#6 wyu518
有两个解决方法:
一、(有些难)将前台要生成的控制器也放到后台来,生成的地址一样就可以,然后通过覆盖S ...
jake 发表于 2010-1-28 16:12 
这样会不会不安全呢?会不会产生被人恶意远程调用,然后不停地生成静态文件,一般后台是需要登录并且有权限才能执行生成静态文件的操作,如果调用前台的方法会不会控制不了呢。
2010-02-24 20:49:29
#7 jake
这样会不会不安全呢?会不会产生被人恶意远程调用,然后不停地生成静态文件,一般后台是需要登录并且有权 ...
wyu518 发表于 2010-2-24 20:49 
这里只是提供一个思路,在实际应用中,肯定还需要注意安全的问题,最简单的方法就是在接收端验证一下发送端的IP。
复杂一些的方法就如UCENTER的那种,用双方都保密的密钥的实现。
2010-02-25 10:00:17
#8 怀念曾经
Jake啊,有没有例子来一个行吗?
2010-10-27 11:10:24
#9 redguan
通过第二种方法,
其实就是用第三方来存放一些变量。这些变量是前台和后台公共的。
或者直接将config.php 进行分离。不变的直接放在CONFIG。PHP 里。公共的,通过加设一个APP_NAME 或者入口文件标识。调用子配置。(文件config.php ,数据库,MEMCACHE 形式不限)
2010-11-03 17:56:23
#10 redguan
可以转换一下思路。我觉得一个应用不应该有多个入口,不利用RE——WRITE
应该一个应用一个入口的原则,多个应用就多个目录。
前台(ARTICLE)是一个应用。
前台(BBS)是一个应用。
后台(ADMIN)是一个应用。
将用户操作再放入一个应用(MEMBER或者PASSPORT)。
2010-11-03 18:00:10
#11 redguan
我觉得SP当初设计是为单应用,单入口设计的。
当需要多应用,多入口时。有些不如人意。
2010-11-03 18:02:08