Codeigniter:每次刷新页面时都会运行函数

时间:2012-09-16 03:50:30

标签: php codeigniter tankauth

好的,所以我现在有一个测试页面,它只是测试我的点系统。当用户按下按钮时,它给了他们5分。现在的问题是每次刷新页面时用户得到5分。这怎么了?如有必要,我可以发布库和模型函数。这是控制器和视图:

welcome.php查看:

Hi, <strong><?php echo $username; ?></strong>! <?php echo $fullname ?> is now logged in now. </br>
You have <?php echo $points; ?> Points.</br>
<?php echo anchor('/auth/logout/', 'Logout'); ?></br>
<?php echo form_open('add_points'); ?>
<?php echo form_submit('/auth/add_points/', 'Get 5 free Points!'); ?>
<?php echo form_close(); ?>
<?php echo var_dump($pointhistory); ?>

welcome.php控制器:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Welcome extends CI_Controller
{
        function __construct()
        {
                parent::__construct();

                $this->load->helper(array('form','url'));
                $this->load->library('tank_auth');
                $this->lang->load('tank_auth');
        }

        function index()
        {
                if (!$this->tank_auth->is_logged_in()) {
                        redirect('/auth/login/');
                } else {
                        $data['user_id']        = $this->tank_auth->get_user_id();
                        $data['username']       = $this->tank_auth->get_username();
                        $data['fullname']       = $this->tank_auth->get_fullname();
                        $data['points']         = $this->tank_auth->get_points();
                        $data['pointhistory']   = $this->tank_auth->get_point_history();
                        $this->load->view('welcome', $data);
                }
        }
}

1 个答案:

答案 0 :(得分:2)

要修复您拥有的内容,只需检查控制器是否有网页提交了帖子,而不只是刷新:

你可以用这个:

if($_POST)
{
   // do something
}  

OR

更好的方法是使用AJAX调用而不是刷新页面。这可能是最好的解决方案。

要在Codeigniter中执行AJAX帖子,您只需要调用控制器中的公共函数并回显要返回的值,我会使用JSON。

jQuery使客户端变得非常简单:http://api.jquery.com/jQuery.ajax/