codeigniter设置密码!

时间:2010-07-05 18:03:07

标签: php codeigniter passwords

我尝试在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>

任何想法? 提前谢谢

3 个答案:

答案 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()中被声明...并且由于某种原因它需要在外面作为类的方法...希望这会有所帮助其他......我为所有建议提出了一些建议......