小编Jam*_*ern的帖子

Codeigniter - 挂钩记录GET/POST请求

客户端要求记录所有GET/POST请求并将其存储90天以用于其应用程序.我写了一个HOOK,似乎记录了一些GETS/POSTS,但数据少于我的预期.例如,在提交表单数据时,条目似乎不会放入日志中.有人写过类似的东西吗?

这是我到目前为止的版本:

class Logging {

    function __construct() {
        $this->CI =& get_instance();
    }

    function index() {
        $this->CI->load->model('Logging_m');
        $this->CI->load->model('Portal_m');

        //get POST and GET values for LOGGING        
        $post = trim(print_r($this->CI->input->post(), TRUE));
        $get = trim(print_r($this->CI->input->get(), TRUE));

        $this->CI->Logging_m->logPageView(array(
                'portal_id' => $this->CI->Portal_m->getPortalId(),
                'user_id' => (!$this->CI->User_m->getUserId() ? NULL : $this->CI->User_m->getUserId()),
                'domain' => $_SERVER["SERVER_NAME"],
                'page' => $_SERVER["REQUEST_URI"],
                'post' => $post,
                'get' => $get,
                'ip' => $this->CI->input->ip_address(),
                'datetime' => date('Y-m-d H:i:s')
        ));
    }

}
Run Code Online (Sandbox Code Playgroud)

此数据存储在名为"Logging_m"的模型中,如下所示:

<?php 
class Logging_m extends CI_Model {

  function __construct() {
    parent::__construct();
  }

  function logPageView($data) { …
Run Code Online (Sandbox Code Playgroud)

hook post logging codeigniter get

7
推荐指数
1
解决办法
1万
查看次数

PDO 绑定参数取决于它们是否存在于查询中

假设我有一个 mysql 查询,它是根据某些条件构建的:示例

$query = "SELECT * from `usertable` where users_active=:users_active";
if($mode=="archived") {
    $query .= " AND archived=:archived";
}

$stmt = $dbpdo->prepare($query);
$stmt->bindParam(':users_active', $users_active);
$stmt->bindParam(':archived', $archived);
$stmt->execute();
Run Code Online (Sandbox Code Playgroud)

现在,如果我运行上面的代码,它仅在 $mode=="archived" 时才有效,否则命名占位符“:archived”将不会成为查询的一部分。

从一方面来说,这对我来说是有道理的,但又引出了如何优雅地处理它的问题。我的应用程序中有很多查询是有条件构建的。我可以这样做,但这对我来说似乎是重复的:

if($mode=="archived") {
    $stmt->bindParam(':archived', $archived);
}
Run Code Online (Sandbox Code Playgroud)

这看起来很冗长,特别是如果查询的构建方式有很多条件的话。有谁对如何做到这一点有一个更简洁的想法,而无需添加大量条件测试。

任何想法将不胜感激。

问候

詹姆士

php mysql pdo bindparam

2
推荐指数
1
解决办法
1423
查看次数

LibGDX And​​roid游戏 - 在滚动屏幕上显示固定文本(即分数)

我开始在LibGDX中开始玩游戏,才开始.我已经加载了一个基本的瓷砖地图,一个玩家精灵,可以移动角色,屏幕(相机)滚动 - 完美.

我在屏幕的右下角有两个重叠的纹理,一个左右箭头,用作控制角色的游戏手柄.我将这些与player.x位置相关联,该位置始终固定在屏幕中心.到目前为止凉爽....如下:

/////////////////////////////////////////////////////////////////
private void renderJoypad(float deltaTime)
{
    batch.draw(Assets.leftJoypad, blockman.position.x-14, 1, 3, 3);
    batch.draw(Assets.rightJoypad, blockman.position.x-9, 1, 3, 3);
}
Run Code Online (Sandbox Code Playgroud)

我现在试图将玩家的分数放在屏幕的左上角.分数由位图字体组成,如下所示.

font = new BitmapFont(Gdx.files.internal("fonts/minecrafter.fnt"),Gdx.files.internal("fonts/minecrafter.png"),false);
    font.setScale(0.02f);
Run Code Online (Sandbox Code Playgroud)

在我的render()方法中,我调用了一些其他方法来更新,比如leftJoypad等的位置,就像在renderJoypad()中一样.我也在调用我的绘制字体方法来更新乐谱的位置,但是,当我滚动它时,它都是生涩的,有时它显示的字符数量应该少于应有的数量.

public void drawScore(float deltaTime) 
{
    font.draw(batch, "00000", blockman.position.x, 10);
}
Run Code Online (Sandbox Code Playgroud)

我相信我需要将得分(以及任何其他屏幕文本,HUD等)放入舞台,但我无法理解如何使用我现有的代码.

我的show方法如下:

public void show()
{
    //load assets class to get images etc
    Assets Assets = new Assets();

    //start logging Framerate
    Gdx.app.log( GameScreen.LOG, "Creating game" );
    fpsLogger = new FPSLogger();

    //set the stage - bazinga

    Gdx.input.setInputProcessor(stage);

    //stage.setCamera(camera);
    //stage.setViewport(480, 360, false);

    batch = …
Run Code Online (Sandbox Code Playgroud)

sprite libgdx

1
推荐指数
1
解决办法
3477
查看次数

标签 统计

bindparam ×1

codeigniter ×1

get ×1

hook ×1

libgdx ×1

logging ×1

mysql ×1

pdo ×1

php ×1

post ×1

sprite ×1