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

标签 php codeigniter tankauth

好的,我现在有一个测试页面,它只是测试我的积分系统。几乎当用户按下按钮时,就会给他们 5 分。现在的问题是每次我刷新页面时用户都会获得 5 分。这怎么了?如果有必要,我可以发布库和模型功能。这是 Controller 和 View :

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 Controller :

<?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);
                }
        }
}

最佳答案

要修复您所遇到的问题,只需检查 Controller 中页面是否有提交的帖子而不仅仅是刷新:

你可以使用这个:

if($_POST)
{
   // do something
}  

或者

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

要在 Codeigniter 中执行 AJAX 发布,您只需在 Controller 中调用公共(public)函数并回显要返回的值,我会使用 JSON。

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

关于php - Codeigniter:每次刷新页面时都会运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12444318/

相关文章:

php - mysql建表时使用变量作为表名

php - 带标题下载的文件不起作用

php - Codeigniter 在 href 中传递下拉列表的选定值

php - sql插入语句中的getdate()和newid()

javascript - php 在页面加载时检查 javascript

php - Codeigniter 和 Tank Auth - 新的注册字段被错误地添加到数据库中?

php - PHP 脚本是否需要等待 MySql 触发器完成?

php - 比较 MySQL 中的 ip 地址范围与开始和结束 ip 地址

php - 我怎样才能告诉 Tank Auth 完全不激活用户?

Codeigniter 坦克授权