标签: codeigniter-2

CodeIgniter验证:可以验证GET查询字符串吗?

表单验证库似乎只适用于POST.我需要使用查询字符串,并希望使用CI来验证传递的值.有没有办法做到这一点?

codeigniter codeigniter-2

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

从DataTables中第0行的数据源请求未知参数"1"

当我尝试从我的数据库中检索数据到表时,我收到此错误:

DataTables warning (table id = 'student_table'): Requested unknown 
parameter '1' from the data source for row 0
Run Code Online (Sandbox Code Playgroud)

下面是我使用的javascript

<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
    $('#student_table').dataTable( {
        "bProcessing": true,
        "bServerSide": true,
        "sServerMethod": "POST",
        "sAjaxSource": "<?php echo base_url()?>index.php/data/all"
    } );            
} );
</script>
Run Code Online (Sandbox Code Playgroud)

检索到的JSON数据:

{"sEcho":0,"iTotalRecords":3,
"iTotalDisplayRecords":3,
"aaData":[["85","t1","1D"],["74","test475","4A"],
["777","maiz","5"]],"sColumns":"id,name,class"}
Run Code Online (Sandbox Code Playgroud)

以下是我的表格:

<table class="datatable tables" id="student_table">
    <thead>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Class</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td class="dataTables_empty">Loading data from server</td>
        </tr>
    </tbody>
</table> 
Run Code Online (Sandbox Code Playgroud)

PHP代码(点燃数据表)

$this->load->library('datatables');

$this->datatables->select('admission,name,class');
$this->datatables->from('students');
echo $this->datatables->generate();
Run Code Online (Sandbox Code Playgroud)

我正在使用codeigniter和DataTables.

为什么我会收到该错误以及如何将数据检索到表中?

php codeigniter-2 jquery-datatables

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

Codeigniter:加入'where in'子句

我想加入表格列出两类小说和浪漫的书籍.如何使用WHERE IN子句进行JOIN(甚至可能?抱歉,noob在这里)

这是我被困在的地方:

$categories = array(10,12);
$query = select()->from('books');
$query->join('genre_map','genre_map.gid IN ('.implode(",", $categories).')');
Run Code Online (Sandbox Code Playgroud)

Jn Table genre_map:bookid,genre_id

任何SQL Query/CodeIgniter帮助都将非常感激.

codeigniter codeigniter-2

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

如何在codeigniter中切换数据库

我是CI的新手,我只想知道有没有办法在CI中切换数据库,例如:在登录页面中,有一个下拉列表,您可以指定要连接的数据库,查看如下所示

<select name="select" id="select"  >
  <option value="1">DB1</option>                
  <option value="2">DB2</option>              
</select>
Run Code Online (Sandbox Code Playgroud)

我在database.php中有2个数据库,default另一个是local 默认情况下我使用的是默认数据库.

$active_group = 'default'; $active_record = TRUE;

我的问题是如何根据下拉值指定db,如果我选择DB1,连接到默认值,DB2转到本地....我知道如何通过以下方式手动切换db:

 $this->load->database('default', TRUE); OR
 $this->load->database('local', TRUE);
Run Code Online (Sandbox Code Playgroud)

由于我有不同的控制器和模型,我怎么能实现这一点...我尝试过:首先在登录功能中获取dropdownlist的值:

$this->load->model('My_Model');
$db = $this->input->post('select')
$this->My_Model->getDB($db);
Run Code Online (Sandbox Code Playgroud)

然后在我的模型中我得到了功能:

function getDB($db)
{
    if($db ==1)
    {
        $this->db  = $this->load->database('default', TRUE);
         }
    elseif($db ==2)
    {
        $this->db  = $this->load->database('local', TRUE);
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,它不起作用.....任何帮助都会得到很多赞赏!!!!

php database database-connection codeigniter codeigniter-2

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

ALTER TABLE tbl AUTO_INCREMENT = 123作为codeigniter活动记录查询?

如何执行

ALTER TABLE tblname AUTO_INCREMENT = 123
Run Code Online (Sandbox Code Playgroud)

作为codeigniter活动记录查询?

在codeigniter中有一个名为dbforge-> modify_column()的东西,我是否必须使用它,如果是这样的话?

mysql codeigniter-2

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

CodeIgniter自动加载特定的类

我按照Phil的Sturgeon 示例创建了两个控制器,Public_Controller和./application/libraries文件夹中的Admin_Controller .

我想要做的是特定地自动加载Public_Controller和Admin_Controller,所以我在./application/config.php中创建了这个自动加载功能.

function __autoload($class) {

    // Autoload only Public_Controller and Admin_Controller
    if (strpos($class, 'CI_') !== 0) {
        $file = APPPATH . 'libraries/'. $class .'.php';
        if ( file_exists($file) && is_file($file) ) {
            @include_once($file);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为这个问题是我有更多的文件包含在库文件夹中,所以那些也是自动加载的,这不是我想要的.所以我尝试对第一个if语句进行一些小改动,如下所示:

if ( in_array($class, array('Public_Controller, Admin_Controller')) ) // instead of strpos
Run Code Online (Sandbox Code Playgroud)

为了只针对这两个类,但这似乎不起作用.我可能做错了什么想法?

php codeigniter autoload codeigniter-2

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

CodeIgniter项目的第一个HTTP请求的延迟非常高

我和一位朋友刚刚开始参与一个项目,其他人几年前就停止了开发,我们正试图复活它.我们已经解决了大多数与设置相关的问题,但是我们无法弄清楚这是一个非常烦人的问题.

在我们的本地主机中,所有页面都需要很多时间来加载/刷新.我不是指资产,脚本或任何东西,问题是在第一个请求完成之前的延迟.大多数情况下需要15到30秒,这是不可接受的,有时甚至会达到1或2分钟.

例如,这是Chrome开发工具中"网络"标签的屏幕截图.第一行是视图,其他是资产.

疯狂延迟的示例


我们用谷歌搜索了几个小时,尝试了一些不同的东西,但没有一个有效.像这样的一些解决方案指向一些Apache的httpd.conf设置,但我放弃了,因为我使用相同的服务器用于其他项目,这从未发生过(无论如何我试过了,但是没有用).其他人指出PHP版本冲突,所以我尝试将我的MAMP中的PHP从5.4.10更改为5.2.17(该项目需要5.2.3+),但这似乎也不起作用.

除了我的MAMP安装,我们还在带有WAMP(PHP5.5)的Windows机器上测试了它,并且在另一台带有干净MAMP(PHP5.5)的Mac上进行了测试,在这两种环境中都会发生同样的事情.所以,我们现在想知道问题是否可能出现在CodeIgniter本身(这听起来不太可能)或某些项目配置中,但我们对CodeIgniter(也不是PHP专家)都是新手,并且找不到任何东西.

哦,我们也尝试联系原始的开发人员,但是他们说这是两年前,听起来他们不愿意提供帮助.我真的希望他们在开发这个项目的时候没有这个问题,因为在30秒的加载时间内工作它只是疯了.

有人有任何想法或了解我们可以尝试找到问题的更多内容吗?如果需要,我可以发布一些代码.



更新:我刚刚发现这个未解决的问题,其中用户遇到了与Laravel类似的问题,但有时只是.正如我所说,在我的情况下,这种情况总是发生,延迟时间从大约10秒到几分钟.



更新2:正如Wrikken所建议的,我通过xdebug探查器运行它,但我不确定如何解释结果以查看问题所在.我用PHPStorm的"Analyze Xdebug Profiler"工具打开了一个快照,并按照每个调用中使用的时间对其进行了排序.以下是一些截图:

执行统计选项卡 调用树选项卡

并按自己的时间排序:

按自己的时间排序

CashewModel显示一些排队是某种自定义库由以前的开发者,这也是造成我们已经解决了一些问题建.我希望问题不会隐藏在那里,因为我不知道大多数自定义代码是如何工作的.

有任何想法吗?同样,我可以根据需要发布代码.



更新3:深入研究代码,MY_Controller在上面的屏幕截图中,以前的开发人员创建了一些扩展的自定义控制器CI_Controller.我刚刚发现他们将所有腰果代码推送到GitHub,这是MY_Controller文件.

我还会在这里粘贴第467行的所有相关代码(在GitHub的版本中是464),它涉及_remap内部的功能,CashewController并且是探查器说所有时间花费的地方.我将一些评论和名称翻译成英文.

/**
 *
 * Extension of the default controller, adding support for templates
 * 
 * Usage example:
 *
 * class Dummy extends EC_Controller
 * {
 *     public function index()
 *     {
 *         $this->add_section('id_in_template', 'page_name');
 *         $this->render_page(); // Renders the default …
Run Code Online (Sandbox Code Playgroud)

php apache mamp codeigniter codeigniter-2

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

如何从 s3 和其他来自 EC2 的静态/媒体内容(仅)提供服务?

我想从 S3 提供我的静态/媒体内容(现在是图像),但我的 url 应该是现在的样子。例如:

http://example.com/resources/img/me.jpg 是我当前的图像 url 之一,它现在由本机服务器提供(EBS 存储随 EC2 一起提供)。现在我想将这个 me.jpg 文件存储在一个 s3 存储桶中,然后如果有人输入上面的 url,它就会从那里带来。

我知道这可以通过创建一个存储桶名称作为 example.com 和 www.example.com,然后为s3-website-region.amazonaws.com配置 Route 53 CNAME(别名)

但是当我输入http://example.com/blog/cool-stuff-blog时会发生什么?这不适用于静态/媒体内容!它需要执行服务器端代码(Python/PHP)。

但是使用我当前工作域的上述配置会发生什么?它不会尝试从 S3 提供一些内容并失败吗?

我怎样才能完成它?请不要说有一个像 static.example.com 这样的子域,并为所有静态文件请求提供服务。对我来说,这现在是不可接受的。我想使用完全相同的域名。

php amazon-s3 amazon-ec2 amazon-web-services codeigniter-2

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

fsockopen(): php_network_getaddresses: getaddrinfo 失败: 名称或服务未知

我无法将表单内容发送到电子邮件。我收到以下错误:

: Warning
Message: fsockopen(): php_network_getaddresses: getaddrinfo failed:Name or service not known

Filename: libraries/Email.php

Line Number: 1986

Severity: Warning

Message: fsockopen(): unable to connect to ssl://smtp.123mailsetup.com:25   (php_network_getaddresses: getaddrinfo failed: Name or service not known)

Filename: libraries/Email.php

   Line Number: 1986
Run Code Online (Sandbox Code Playgroud)

我的1986年路线是

$this->smtp_timeout);
Run Code Online (Sandbox Code Playgroud)

我的控制器中的部分代码

$config = Array(
'protocol' => 'smtp',
'smtp_host' => 'smtp.xxxx.com',
'smtp_port' => 465,
'smtp_user' => 'xxxxx@xxx.com',
'smtp_pass' => 'xxxxxxxx',
'mailtype'  => 'html', 
'charset'   => 'iso-8859-1'
);
                $this->load->library('email', $config);
                $this->email->from('xxxxx@xxx.com', 'Mailsetup');
                $this->email->to($email); 

                $this->email->subject('Domain transfer');
                $this->email->message( '<html><body>Domain to be transfered        '.$domain.' …
Run Code Online (Sandbox Code Playgroud)

php codeigniter codeigniter-2 codeigniter-3

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

调用 Flysystem,为什么会出现 PHP Fatal error: Class 'League\Flysystem\Adapter\Local' not found?

我尝试运行 Flysystem 的适配器基本示例代码Local,但出现Class 'League\Flysystem\Adapter\Local' not found错误。这是我的过程:

版本检查:

php -v
PHP 5.5.9-1ubuntu4.23 (cli) (built: Feb  8 2018 21:59:47)
Run Code Online (Sandbox Code Playgroud)

安装飞行系统:

composer require league/flysystem
Run Code Online (Sandbox Code Playgroud)

输出显示我是最新的(这是我第二次运行它):

Using version ^1.0 for league/flysystem
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files
Run Code Online (Sandbox Code Playgroud)

现在网络根目录中有一个vendor文件夹。其中./web/vendor/league/flysystem/src/Adapter$有这些文件:

AbstractAdapter.php
AbstractFtpAdapter.php
CanOverwriteFiles.php
Ftpd.php
Ftp.php
Local.php
NullAdapter.php
Polyfill/
SynologyFtp.php
Run Code Online (Sandbox Code Playgroud)

...只是表明它似乎安装正确(?)我在我的 Web 根目录中创建一个测试文件和一个测试目录:

  1. 飞本地.php
  2. 我的文件/

fly-local.php我将他们的文档中的文本粘贴到其中( https://flysystem.thephpleague.com/docs/adapter/local/):

<?php

use League\Flysystem\Filesystem;
use …
Run Code Online (Sandbox Code Playgroud)

php codeigniter-2 flysystem

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