设为首页
收藏本站
Archiver
用户
登录
入住
用户名
Email
自动登录
找回密码
密码
登录
入住 CI 中国社区
首页
返回 CodeIgniter 中国首页
论坛
BBS
导读
Guide
个人主页
Space
中文手册
搜索
CodeIgniter 搜索引擎
视频教程
案例
任务
搜索
搜索
本版
帖子
用户
设为首页
收藏本站
Archiver
开启辅助访问
切换到宽版
日志
相册
分享
记录
CodeIgniter4
CodeIgniter3
CodeIgniter2
帖子
好友
道具
勋章
收藏
任务
记录
留言板
设置
我的收藏
退出
腾讯QQ
微信登录
CodeIgniter 中国开发者社区
»
论坛
›
CodeIgniter 开发
›
CodeIgniter 进阶讨论
›
表单自动填充的问题
返回列表
查看:
5890
|
回复:
2
[视图]
表单自动填充的问题
[复制链接]
ares333
ares333
当前离线
积分
392
IP卡
狗仔卡
发表于 2009-12-12 14:50:03
|
显示全部楼层
|
阅读模式
本帖最后由 ares333 于 2009-12-12 14:51 编辑
如下是用于登陆验证的简单代码,位于admin/start控制器
PHP
复制代码
function
login
(
)
{
$this
->
load
->
view
(
'admin/login'
,
$data
)
;
}
function
assess
(
)
{
if
(
$_POST
[
'username'
]
==
'ares'
&&
$_POST
[
'password'
]
==
'123'
)
{
redirect
(
'admin/main'
)
;
}
else
{
$this
->
login
(
)
;
}
}
复制代码
login视图关键代码
HTML
复制代码
<?php echo form_open
(
'admin/start/assess'
,array
(
'name'
=
>
'myform'));?>
<
input
name
=
"username"
class
=
"editbox4"
value
=
"<?php echo set_value('username');?>
" size="20">
<
input
class
=
"editbox4"
type
=
"password"
size
=
"20"
name
=
"password"
>
<?php echo form_close
(
)
;?>
复制代码
访问http://localhost/admin/start/login 填写正确的用户名和错误的密码,显然不会进入admin/main控制器,返回了登录界面,而且用户名被自动填上了,这说明CI能够自动填充表单(<?php echo set_value('username');?>)。但是有一个比较不爽的问题,浏览器的地址栏变成了http://localhost/admin/start/assess,很不爽,我想解决的就是这个地址问题
改进如上代码,只修改了assess()方法
PHP
复制代码
function
assess
(
)
{
if
(
$_POST
[
'username'
]
==
'ares'
&&
$_POST
[
'password'
]
==
'123'
)
{
redirect
(
'admin/main'
)
;
}
else
{
redirect
(
'admin/login'
)
;
}
}
复制代码
再次填写正确的用户名和错误的密码,浏览器地址栏变成了理想的http://localhost/admin/start/login,但是CI的自动填充功能失效了,也就是说用户名那个输入框是空的。
有没有办法使表单能够自动填充,而且浏览器地址栏显示http://localhost/admin/start/login ???
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
Hex
Hex
当前离线
积分
50167
IP卡
狗仔卡
发表于 2009-12-12 15:20:32
|
显示全部楼层
那你只能自己填充表单了,因为 redirect 以后是另外一个请求了,这只能通过 session 存储两个请求之间的数据。当然,你可以改进一下验证类。
一般来说,我建议用 redirect,这样可以避免重复提交的问题。
回复
支持
反对
使用道具
举报
显身卡
ares333
ares333
当前离线
积分
392
IP卡
狗仔卡
楼主
|
发表于 2009-12-12 16:54:04
|
显示全部楼层
本帖最后由 ares333 于 2010-3-6 09:16 编辑
首先谢谢你的及时回复,我又考虑了一下,session存储太麻烦,首先要修改index.php,添加session_start()一行,而且也不清楚如果加载了CI原生类库SESSION会不会起冲突,因为我开发后台用的CI原生SEESION。
后来我又考虑了一下,感觉搞代码时间长了容易反映迟钝,吧上面的代码又修改了一下就OK了。
表单自动填充是有前提的,前提就是装载表单视图的控制器函数必须能够接收此表单的$_POST数据,个人感觉。
PHP
复制代码
function
login
(
)
{
if
(
$this
->
assess
(
$_POST
[
'username'
]
,
$_POST
[
'password'
]
)
)
redirect
(
'admin/main'
)
;
$this
->
load
->
view
(
'admin/login'
,
$data
)
;
}
function
assess
(
$name
=
''
,
$pass
=
''
)
{
if
(
$name
==
'ares'
&&
$pass
==
'123'
)
{
return
TRUE
;
}
else
{
return
FALSE
;
}
}
复制代码
当然这只是原理代码,省去了从数据库读取管理员信息和设置session信息等步骤。
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
入住 CI 中国社区
本版积分规则
发表回复
回帖后跳转到最后一页