我尝试在codeigniter表单中设置密码... 一切似乎都没问题,但无论我使用哪种密码,表格仍然提交......
这是控制器中的代码:
class MyBlog extends Controller{
function MyBlog(){
parent::Controller();
$this->load->helper(array('url','form','html')); //here we load some classes that we use
$this->load->scaffolding('entries'); //scaffolfing is a feature that lets you add or remove elements from the database
$this->load->scaffolding('comments');
$this->load->library('form_validation');//load validation class used to validate our forms...
}
function index(){
$data['title'] = "My Blog Title"; //the title of my blog
$data['query'] = $this->db->get('entries'); //here we make a small query to entries table
$this->load->view('myBlog_view', $data); ///load all data variables on myBlog_view.php
//this is also for the form validation
$this->form_validation->set_rules('title', 'Title', 'required');
$this->form_validation->set_rules('body', 'Body', 'required');
$this->form_validation->set_rules('author', 'Author', 'required');
$this->form_validation->set_rules('pass', 'Pass', 'callback_pass_check');
function pass_check($str) {
if ($str == 'baywatch'){
return TRUE;
}
else{
return FALSE;
}
}
if ($this->form_validation->run() == TRUE)
{
$this->myBlog_insert();
//$this->load->view('formSuccess_view');
}
}
function myBlog_insert(){
$insert = array( 'title' => $_POST['title'],
'body' => $_POST['body'],
'author' => $_POST['author']
);
$this->db->insert('entries',$insert);
redirect('myBlog/');
}
}
这是我的表格:
<div class="theForm">
<?php echo $this->form_validation->error_string; ?>
<?php echo validation_errors(); ?>
<?php echo form_open('myBlog'); ?>
<label for="title">Title:</label>
<input type='text' name="title" size="40" id="title" />
<p>
<label for="body">Body:</label>
<textarea name="body" rows = "10" cols="60" id="body"></textarea>
</p>
<p>
<label for="author">Author:</label>
<input type="text" name="author" size="40" id="author"/>
</p>
<p>
<label for="pass">Password:</label>
<input type="password" name="pass" size="38" id="pass"/>
</p>
<p><input type="submit" value="Submit New Post"/></p>
</form>
</div>
</body>
</html>
任何想法? 提前谢谢
答案 0 :(得分:1)
<label for="pass">Password:</label>
<input type="text" name="pass" size="38" id="author"/>
输入类型是文本无密码,id ='pass'。
答案 1 :(得分:1)
好的,先做几件事:
1)id应该是唯一的。即您的作者字段和密码字段不应具有相同的ID。 2)密码文件应使用“密码”类型而不是“文本”。
我认为你遇到问题的原因是你的回调函数pass_check()。尝试将您的功能更改为:
function pass_check($pass)
{
if($pass !== 'baywatch')
{
return FALSE;
}
顺便说一句,脚手架现已被弃用。我是否可以建议您使用模型和活动记录类作为与数据库交互的方式?此外,这确实不是一种非常安全的密码处理方式。查看一些CI身份验证库,看看是否可以实现其中一个。
答案 2 :(得分:0)
好的伙计......我发现问题是什么...函数pass_check在index()中被声明...并且由于某种原因它需要在外面作为类的方法...希望这会有所帮助其他......我为所有建议提出了一些建议......