当有效用户提交要存储在数据库中的表单内容时,我发布的网站正在生成以下错误:
Forbidden
You don't have permission to access /index.php/user/add on this server.
Additionally, a 404 Not Found error was encountered while trying to use an
ErrorDocument to handle the request.这是一个私人网站。所有用户都必须登录。一些用户可以添加内容。使用CI会话有一个添加的edit字段,其值从用户表中的用户记录中检索到0或1,并在登录时复制到user_data会话数组。变量$this->session->userdata('edit')用于控制器和视图中的if语句。值为1时,用户将看到将显示视图(窗体)以编辑或添加内容的链接。
这是我如何使用变量设置菜单项的片段:
<?php if ($this->session->userdata('edit') == 1) { ?>
<li><a href="<?php echo site_url().'/user/add'; ?>">Add</a></li>
<?php }; ?>这是处理表单数据的基本结构。此函数位于控制器文件user.php中。
function add(){
if ($this->session->userdata('logged_in') ){
//runs form validation
if ( $this->form_validation->run() == FALSE ) {
//if false, redisplays the form and data with failed fields highlghted
}//if
if ($this->form_validation->run() == TRUE) {
//processes the data and stores in the database
}//form validation run
} else {
redirect ("user/login");
} //if...else
}//add检查数据库后,这些禁止错误之一,没有数据插入。由于验证错误而重新显示的表单也不会发生。这些因素使我相信,这不仅仅是一个CodeIgniter问题,而是一个服务器问题。如果你看一下这个链接 --它显示了浏览器(火狐或Chrome,其他尚未使用的浏览器)中接收到的错误的屏幕截图,这并不是CI代码中错误所产生的错误的通常CodeIgniter外观。
添加/编辑内容表单运行良好。如前所述,错误发生在表单提交时。同样,它也只发生在托管公司的服务器上。我检查了user.php的权限,它们和其他文件一样是644。
什么是可能的解决办法?如果这是一个服务器问题,我应该寻找或要求我的托管公司看什么?如果这是CI会话问题,那么在文档CodeIgniter中,它使用不同于$_SESSION超级全局的系统。将用户数据复制到该数组并让代码从该变量数组中查找数据是明智的吗?还是创建一个不同的数组并将键保存在那里?
修订和解决方案I重新测试了与此项目关联的数据库的连接。我可以联系上。下一步,我可以选择记录,但不能插入。我用原始的、简单的语句进行了这些测试。
在检查这个用户和数据库的权限时,我发现虽然检查了所有特权,但没有一个单独的特权被检查。(见这个屏幕截图.)
我忽略了“所有特权”复选框,手动选中了其他每个复选框。进行像上面概述的那些小测试,然后与网站上的表单交互,我得到了我期望的结果。
我不明白的事:
我已经回去了,试图检查所有的特权,然后取消其他单独检查。这不可能。从经常与此主机上的Panelbox交互到设置用户并将其与数据库相关联,我知道我发现上述状态并不常见。
当我第一次发布这个帖子时,我没有概述它,但是在从服务器上传和运行站点时,禁止的错误并没有立即发生。由于管理员能够在开始接收错误之前完美地提交五个完整的表单,我认为这是一个会话问题。这一争用也是因为有时删除cookie,然后登录,我或管理员能够提交表单并将数据插入数据库。
谢谢你抽出时间阅读这篇文章。
发布于 2014-06-11 16:10:11
经常测试与数据库关联的用户权限。有时候事情会变。
https://stackoverflow.com/questions/24091101
复制相似问题