帝国 CMS 会员登录跳转设置
学会这篇,你就能让帝国 CMS 的会员在登录后跳到你指定的页面,而不是傻乎乎地停在登录页或者跳回首页。下面按操作顺序一步步来。
第一步:先搞清楚默认跳转逻辑
帝国 CMS 默认的会员登录流程是:用户提交账号密码 → 系统验证 → 跳转到「登录后返回地址」。这个地址由登录表单里的 ecmsfrom 参数决定,如果这个参数为空,系统就跳到会员中心首页(/e/member/cp/)。
所以你要控制跳转,核心就是控制这个 ecmsfrom 参数的值。先明确一点:帝国 CMS 的会员登录相关模板都在后台「模板」→「会员模板」里管理,不同版本菜单名称略有差异,本文以帝国 CMS 7.5 为准。
第二步:设置全站默认登录后跳转页
这一步要做的是:不管用户从哪登录,只要没特殊指定,登录后都跳到你想要的页面。
进入后台,找到「系统」→「系统设置」→「会员参数设置」,在页面里找到「会员登录后默认转向地址」这一项。填入你要的地址,比如 /e/member/cp/ 是会员中心,想跳首页就填 /,想跳某个专题页就填完整相对路径如 /zt/vip/。
填完点页面底部的「提交」保存。这个设置是全站默认值,只有登录表单没传 ecmsfrom 时才生效。
注意:这里的地址要用相对路径(以
/开头),别填http://你的域名/xxx这种绝对地址,否则换域名后全部失效。
第三步:在登录表单里指定跳转地址
如果你希望某个页面的登录框跳 A 页,另一个页面的登录框跳 B 页,就得在表单里手动传参。
找到你的登录表单模板,通常在「模板」→「会员模板」→「登录模板」(文件名类似 login.php 对应的模板)。在 <form> 标签内、账号密码输入框旁边加一个隐藏域:
<input type="hidden" name="ecmsfrom" value="/e/member/cp/">
把 value 改成你要跳转的目标地址即可。这样从这个表单登录的用户,登录成功后就会跳到这个地址。
注意:
ecmsfrom的值如果带了特殊字符(比如?、&),要做 URL 编码,否则参数会被截断。例如跳转到/e/member/cp/?type=2,应写成/e/member/cp/%3Ftype%3D2。
第四步:登录后跳转到上一页
很多站点想要的效果是:用户从哪来的,登录后回哪去。做法是把当前页面地址动态写进 ecmsfrom。
在登录模板里,把隐藏域的 value 改成动态输出:
<input type="hidden" name="ecmsfrom" value="<?=$ecmsfrom?>">
同时在调用登录页的链接上带上来源,比如:
/e/member/login/?ecmsfrom=<?=urlencode($_SERVER['REQUEST_URI'])?>
这样用户在文章页点「登录」,登录完就回到那篇文章页。
注意:帝国 CMS 出于安全考虑会对
ecmsfrom做过滤,只允许站内地址。如果你发现传了外部网址结果跳回首页,那就是被拦了,这是正常的防钓鱼机制,别去改。
第五步:验证是否生效
改完后清一次缓存:后台「系统」→「数据更新」→「更新缓存」,勾选全部更新。然后用一个测试会员账号实际登录一遍,看跳转是否符合预期。如果没跳对,按这个顺序排查:登录表单有没有正确传 ecmsfrom → 会员参数设置里的默认地址填对没有 → 缓存清了没有。
小结
- 帝国 CMS 登录跳转由
ecmsfrom参数控制,为空时用后台默认值。 - 全站默认跳转在「会员参数设置」的「会员登录后默认转向地址」里改。
- 单页面跳转在登录表单加
<input type="hidden" name="ecmsfrom" value="目标地址">。 - 地址用相对路径,带特殊字符要 URL 编码,只能跳站内。
- 改完必须更新缓存再测试。
原文链接:https://www.gj0.com/thread-336.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。