标签: codeigniter

Codeigniter访问$ this-> input-> post()的最佳实践

我已经使用CodeIgniter编写了一段时间,当我编程或读取其他程序员的代码时,我通常会遇到两种从输入中获取数据的方法.一个是从控制器获取输入,然后作为参数传递给模型,如下所示:

class MyController extends Controller
{
    .
    .
    .
    public function login()
    {
       $username = $this->input->post('username');
       $password = $this->input->post('password');
       $this->load->model('User');
       $this->User->login($username, $password);
    }
}

class User extends Model
{
    .
    .
    .
    public function login($username, password)
    {
      ....
    }
}
Run Code Online (Sandbox Code Playgroud)

另一个是直接从Model访问输入参数,如下所示:

class MyController extends Controller
{
    .
    .
    .
    public function login()
    {
       $this->load->model('User');
       $this->User->login();
    }
}

class User extends Model
{
    .
    .
    .
    public function login()
    {
       $username = $this->input->post('username');
       $password = $this->input->post('password');
    }
}
Run Code Online (Sandbox Code Playgroud)

您认为更好的做法是什么?我倾向于第一个,因为它给了模型更多的独立性,但我在示例代码和其他开发人员中看到了第二种方法.不可否认,第二种方法更短,特别是当您接受5-10个输入字段时.

coding-style codeigniter

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

如何使用jQuery在表单输入中转义"&"符号字符

我的jQuery脚本有问题,通过POST方法发送数据.问题是,只要它通过Ajax发送数据,句子中有"&"符号,它会在找到"&"时剪切句子.

请查看下面的图片了解更多信息.

传递给ajax POST的文本 在firebug上ajax POST后输出 已保存在数据库中的数据 jQuery ajax POST

php ajax jquery codeigniter

14
推荐指数
3
解决办法
3万
查看次数

带有特殊字符的Json_decode

我通过jQuery Ajax将数据作为JSON发布到我的服务器上遇到了一个大问题.JSLint说数据没问题,请求的Content-Type设置为application/x-www-form-urlencoded; charset=UTF-8.服务器在PHP 5.2.11上运行,所以我无法使用json_last_error().

我尝试了url_decode,utf8_decode和html_entities_decode,但似乎没有任何效果.

var_dump(json_decode($jdata));返回null,但如果我做了var_dump($jdata)一切看起来没问题.$jdata是帖子数据:$jdata = $this->input->post('requestdata');.

这里从Firebug获取一些示例后期数据:

{
    "projectnumber": "345",
    "projecdescription": "345",
    "articles": [
        {
            "position": 1,
            "article_id": 677,
            "online_text": "3 Behälter; Band I-III nach indiv. Stückliste, Sprache: DE - Sprache: de"
        },
        {
            "position": 2,
            "article_id": 678,
            "online_text": "2 Behälter; Band I-III nach indiv. Stückliste, Sprache: ### - Sprache: en"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

编辑:

我现在试过这个:

$string = $this->input->post('requestdata');
var_dump($string);
$json = preg_replace('/,\s*([\]}])/m', '$1', utf8_encode($string));
$json = …
Run Code Online (Sandbox Code Playgroud)

php jquery json codeigniter

14
推荐指数
2
解决办法
2万
查看次数

在Codeigniter中使用LIMIT进行SELECT

我在Codeigniter中开发了一个站点,在我的模型中我有一个这样的函数:

function nationList($limit=null, $start=null) {
    if ($this->session->userdata('language')=="it")
    $this->db->select('nation.id, nation.name_it as name');
    if ($this->session->userdata('language')=="en")
    $this->db->select('nation.id, nation.name_en as name');
    $this->db->from('nation');
    $this->db->order_by("name", "asc");
    $this->db->limit($limit, $start);
    $query = $this->db->get();
    $nation = array();
    foreach ($query->result() as $row)
        array_push($nation, $row);

    return $nation;     
}
Run Code Online (Sandbox Code Playgroud)

如果进入我的控制器,我会无限制地调用该函数,并且start不会返回如下结果:

$data["nationlist"] = $this->Nation_model->nationList();
Run Code Online (Sandbox Code Playgroud)

相反,如果我设置限制并开始工作!如果limit和start为null,为什么不返回结果?如果limit和start为null,我不想创建第二个函数或控件.如果在没有控件或第二个函数的情况下限制和启动为null以使代码变得有用并且效率更高,我该如何解决这个问题呢?

php sql codeigniter

14
推荐指数
2
解决办法
12万
查看次数

如何从UBUNTU中的codeigniter中删除index.php

我知道这个问题已被提出,我尝试了所有这些但仍然无法从url中删除index.php.这是我的详细信息

Ubuntu 12.10
PHP : 5.4.6
Mod_rewrite in on
CI verson: 2.1
Run Code Online (Sandbox Code Playgroud)

.htacess看起来像:

RewriteEngine On
RewriteBase /projectname

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]  
Run Code Online (Sandbox Code Playgroud)

我也看下面的链接,但没有运气.. 无法从url CI网站删除index.php

如何删除codeigniter路径中的"index.php"

我的"/ etc/apache2/sites-available/default"如下所示:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None 
        </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # …
Run Code Online (Sandbox Code Playgroud)

php .htaccess mod-rewrite codeigniter

14
推荐指数
2
解决办法
3万
查看次数

我可以为用户提供加密字符串,并确保它在1-2小时内是安全的

我们正在做一个简单的游戏,其中:

  • 用户收到next number of play作为encrypted string 之前他们玩
  • 之后他们玩,加密password提供给他们检查游戏数量是正确的.
  • 每个加密的字符串only valid for 1-2 hours和播放次数,验证字符串和加密字符串在此之后再次重新生成
  • 加密的字符串包含验证(5个字符)代码,因此两个用户和我们都可以确保解密过程成功

要加密的示例字符(QQ9LU在播放前提供给用户的随机验证码):

下一个游戏编号:8 - 验证字符串:QQ9LU

示例加密字符串(在播放前提供给用户):

NXRykKOv3B6kuu4Ke3svp7HH3enNiqIZrJSXJiF54QkHHjtXgqpUXxyuP7YUNICeFLg ==

示例密码(播放后提供):

请注意,这是为每次加密随机生成的

FA00RDjA77hlOzcOzH6kuGcc29CyM7Hw

我们使用CodeIgniter 2.2.2加密类来加密/解密字符串

加密方法信息:

  • 使用的功能:$this->encrypt->encode($msg, $pass);每次随机传递
  • 密码是CodeIgniter 2的默认值 MCRYPT_RIJNDAEL_256
  • Mcrypt模式是 MCRYPT_MODE_CBC

我的问题是:

  1. 我能相信用户在1-2小时内无法破解加密的字符串(并在获取密码之前知道播放的次数)(除了运气好)

  2. 将随机验证码Verify String: T3YH4放在哪里好或坏?是影响安全吗?(这是为了验证解密结果是否成功,我们也添加了它,因为每个字符串中唯一的变量是一个数字,例如只有数字8变为7,所以我们想要在字符串中添加更多变量字符以便可能有一个安全性更好)

任何其他建议表示赞赏

php encryption codeigniter

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

PHP str_replace():不推荐将 null 传递给类型为 array|string 的参数 #3 ($subject)

我在运行我的应用程序时收到此错误:

PHP str_replace():不推荐将 null 传递给类型为 array|string 的参数 #3 ($subject)

我正在使用 CodeIgniter 版本:V4.1.8 PHP 版本:8.1.2,完整错误输出如下:

{"data":[
    ["omron","<span class=\"label label-success\">Active<\/span>",
    "<button type=\"button\" class=\"btn btn-default\" onclick=\"editBrand(4)\" data-toggle=\"modal\" data-target=\"#editBrandModal\"><i class=\"fa fa-pencil\"><\/i><\/button> <button type=\"button\" class=\"btn btn-default\" onclick=\"removeBrand(4)\" data-toggle=\"modal\" data-target=\"#removeBrandModal\"><i class=\"fa fa-trash\"><\/i><\/button>\n\t\t\t\t"]
    ]
}
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: 8192</p>
<p>Message:  str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated</p>
<p>Filename: core/Output.php</p>
<p>Line Number: 457</p>


    <p>Backtrace:</p>
Run Code Online (Sandbox Code Playgroud)

更新:代码

if ($this->parse_exec_vars === TRUE) 
{ 
    $memory = round(memory_get_usage() …
Run Code Online (Sandbox Code Playgroud)

php codeigniter

14
推荐指数
2
解决办法
8万
查看次数

在CodeIgniter中,如何通过电子邮件发送给我的PHP错误消息?

我想通过电子邮件收到错误日志.例如,如果出现Warning-level错误消息,我想收到有关它的电子邮件.

如何在CodeIgniter中使用它?

php email error-logging codeigniter

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

调度方法

我正在为家庭护理公司开发一个PHP应用程序.他们每周安排x个护理人员参加x个服务用户(客户)的住宿.每个服务用户都有一个"访问时间"的集合"时间表",其中包括时段加上访问持续时间(以分钟为单位).

例如,服务用户可以具有以下计划.

      AM   Lunch   Tea   Late   Night   Respite
Mon   30m  -       30m   60m    -       -
Tue   30m  -       -     60m    -       -
Wed   20m  25m     30m   60m    120m    -
Thu   -    -       30m   -      -       -
Fri   30m  25m     -     -      -       -
Sat   -    -       -     -      -       -
Sun   20m  25m     -     -      -       -
Run Code Online (Sandbox Code Playgroud)

这些期间当前以以下格式存储在数据库中:

Table: Service_user_schedules
id   service_user_id   day   period   duration
Run Code Online (Sandbox Code Playgroud)

护理人员每周都会填写一份表格,列出他们可以工作的时间.然后将此数据输入系统并以下列格式存储在数据库中:

Table: Carer_available_shifts
id   carer_id   day   period
Run Code Online (Sandbox Code Playgroud)

现在问题是,我需要创建一个控制器来获取这些数据,并根据他们提供的可用性自动将护理者分配给服务用户.这需要是可编辑的,以便在没有人可用于特定护理者的情况下,用户可以选择一个不可用的,并且它们仍将被添加到数据库中.

目前,我有一堆乱七八糟的循环,函数和回声来检查护理人员是否可用于特定服务用户并使其可编辑.

有没有人之前执行过这种任务,如果有的话,你找到了一种简单的方法来完成它.我宁愿让它面向对象,所以我可以重用相同的泛型类,但此刻,我完全失去了!

编辑:我现在已经为这个问题增加了一笔赏金.我目前正在研究遗传算法(我从来没有听说过,更不用说了!)作为基于一些答案的这个问题的解决方案.我想知道你们是否有人使用其他方法来解决这类问题,或者你们是否使用过遗传算法,你能否就如何将它们应用于这一特定问题提供一般性的解释.

我认为这个障碍在许多"人员配备"类型的应用程序中相当普遍,并且对网上任何地方的讨论很少感到惊讶!

UPDATE

对于这个特定的项目,我想我最终可能会使用Tak所描述的数据库方法,但如果我有更多的开发时间,将来可能转换为使用GA.

我现在对于将赏金奖励给谁感到有点失落.duedl0r在他(或她)的回答中付出了很多努力.它让我对遗传算法的世界有了深刻的了解 …

php time codeigniter scheduling date

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

带APC和Codeigniter的进度条 - IE和Chrome出现问题

我正在尝试使用Codeigniter和AP​​C制作进度条.

这是我的表格:

<form method="post" action="" id="upload_file" enctype="multipart/form-data" target="result_frame">

<input type="hidden" value="<?php echo uniqid(); ?>" id="progress_key" name="APC_UPLOAD_PROGRESS" />

<p><label for="userfile">S&eacute;l&eacute;ctionnez un fichier</label><br />
<input type="file" name="userfile" id="userfile" size="20" />
&nbsp;
<button class="btn btn-primary" type="submit" name="submit" id="submit" value="Submit"><span class="icon-upload"></span>&nbsp;Valider</button></p>  
Run Code Online (Sandbox Code Playgroud)

当用户点击提交按钮时,它会触发上传过程.这是我的"检查进度"功能:

function checkProgress() {

$.ajax({
    type: "POST",
    url: "/fbe_upload/index.php/fbeupload/upload_progress",
    async: true,
    dataType: "json",
    data: {
        session_unid: $('#progress_key').val()
    },
    //Success
    success: function(data) {

        //Progress
        liveProgress = data.progress;

        //Progress bar
        $('#progressBar-' + idRow).attr("class", "progress progress-striped active");
        $('#progressBar-' + idRow + " div.bar").css("width", parseInt(liveProgress) + "%"); …
Run Code Online (Sandbox Code Playgroud)

javascript upload codeigniter apc progress-bar

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