标签: codeigniter

PHP框架的中间复杂性,在CodeIgniter和Yii之间?

容易像CI(这意味着强制性好,简单,最新的文档).但也有一些比CI更多的功能.

Yii有很多功能,但它也更复杂(它有点迫使你必须使用它的很多功能).这意味着为您的网络应用添加一些功能需要三倍的时间,因为您必须找出许多新的小功能Yii.

这有点像CI在需要的时候"离开你的方式",Yii妨碍你,如果你不这样做,它会破坏.

CI中缺少的功能在这个新的"中间"PHP框架中很有用:

  • 代码生成(crud).
  • 验证.
  • 访问控制.
  • 布局.
  • 窗口小部件.
  • 易于/自动分页(如yii)
  • 简单的uri参数

Yii给我带来问题的地方:

就像每个小任务都有一些内置功能(这很好),但是,你必须使用内置功能,否则会发生不好的事情.(CI让你不受欢迎,但是做得太多,Yii帮了很多,但有时候太过分了,它迫使你筛选文档,以便你发现这些功能,如果没有它们你就无法完成一项任务,需要花费四倍的时间,在CI或非框架应用程序中).

介于两者之间吗?

(ASP.NET MVC可能是'它',但我不懂语言,所以学习它的努力将比学习Yii php框架更好,所以我正在寻找一个PHP框架)

php codeigniter yii

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

很多平台,相同的核心代码库,最佳策略?

我正在开发一个小型网络应用程序.没有任何高级功能,只是来自数据库的基本查询.

该网站本身允许通过常规方式和Facebook Connect登录,然后它具有一些CRUD功能.

我将为它创建一个"原生"Facebook应用程序,以及一个iPhone应用程序和一个Android应用程序.

我的问题是,维护代码库的最佳方法是什么?

我之前已经创建了一个基本API,允许我添加,编辑和删除数据库记录,然后我在所有平台上使用HTTP POST到API.这使得维护代码库,修复错误,进行更新等非常容易,因为我只需要更新一个地方.各个应用程序本身只有一些皮肤,然后是一些cURL请求.虽然这对于移动应用程序(iPhone和Android)非常有用,但它确实在网站和Facebook应用程序上发出了不必要的http请求.

处理这种情况的最佳方法是什么?我应该创建2个网站(Facebook和普通网站)和API吗?这将使维护更加困难,但更加稳定和快速.只是一个API,这将使其易于维护?

代码库是CodeIgniter中的PHP,MySQL是数据库.

php mysql api facebook codeigniter

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

在写上下文中不能使用方法返回值

以下if条件导致错误:

if( !empty ($this -> session -> userdata( 'user_id') ) )
{
    $user_id = $this -> session -> userdata( 'user_id' );
} 
else 
{ 
    $error = "ID doesn't exist";
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Fatal error: Can't use method return value in write context in (line number)
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

php codeigniter

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

PHP和Codeigniter - 如何检查模型是否存在和/或不抛出错误?

示例#1

bschaeffer's回答这个问题 - 在他的最后一个例子中:

$this->load->model('table');
$data = $this->table->some_func();
$this->load->view('view', $data);
Run Code Online (Sandbox Code Playgroud)

当'table'不存在时你如何处理?


例#2

    try {
        $this->load->model('serve_' . $model_name, 'my_model');
        $this->my_model->my_fcn($prams);

        // Model Exists

    } catch (Exception $e) {
        // Model does NOT Exist
    }
Run Code Online (Sandbox Code Playgroud)

但仍然在运行之后(显然该模型不存在 - 但有时会存在)它失败并出现以下错误:

遇到了错误

无法找到您指定的模型:serve_forms


我通过以下方式调用此函数:

1)获得一些JSON:

"model_1:{"function_name:{"pram_1":"1", "pram_2":"1"}}
Run Code Online (Sandbox Code Playgroud)

2)并将其转换为函数调用:

$ this-> load-> model('serve_'."model_1",'my_model');

3)我打电话给:

$this->my_model->function_name(pram_1=1, pram_2=1);
Run Code Online (Sandbox Code Playgroud)

解

问题在于CodeIgniter的show_error(...)函数显示错误然后exit;...不酷...所以我覆盖:model(...)- > my_model(..)(如果你只是覆盖它你会得到错误)并删除show_error(...)因为某些原因你不能覆盖它 - 对Codeigniter来说很奇怪).然后在my_model(...)它中抛出异常

我的个人意见:调用函数应该return show_error("message");在show_error返回的地方FALSE---或者你可以取出exit; …

php error-handling codeigniter

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

codeigniter如何消毒输入?

我正在构建一个Codeigniter应用程序,我正在努力防止SQL注入.我正在使用Active Record方法构建我的所有查询.我知道Active Record会自动清理输入,但我想知道到底在多大程度上?它只是逃避所有引用,还是做得更多?如何防止混淆的SQL注入或其他更高级的类型?

基本上,我正在寻找CI如何清理数据的深入解释.谁知道?

php sql sql-injection codeigniter

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

我需要介绍MongoDB/NoSQL数据库

我非常重视PHP/mySQL/CodeIgniter,编写sql语句来处理/操作数据.我觉得所有这些都是原始的,我听说过MongoDB,无架构数据库的好东西.

在MySQL中,模式帮助我找出模型的结构.通常,我会绘制一个类图,其基本内容如:id,title,description,date

让我感到震惊的是,MongoDB看起来非常简单,很难掌握从哪里开始.从我听到/读到的,它没有架构.我怎么知道它会返回什么类型?

如何构建模型,如何在不同的"表"之间添加关系?

添加关系和映射数据的标准方法是什么?我试过玩它,但不确定我在做什么是正确的方法.

我曾尝试阅读手册等,但找不到一篇好文章帮助我从mySQL过渡到MongoDB.

无论如何,我可以看到模型与mySQL和MongoDB的比较?简单的事情,如CRUD.

我该如何开始,从哪里开始?

php mysql codeigniter mongodb nosql

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

codeigniter + HMVC交叉模块调用控制器 - >方法

我正在拔掉所有的头发......一直在搜索每一个帖子,如果有人能指出我一个有效的例子,我将不胜感激.

收录到doc:https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc 我可以调用另一个模块 - >控制器使用

modules::run('module/controller/method', $params);
modules::load('module/controller/method', $params);
or
$this->load->module('module/controller');
$this->controller->method();
Run Code Online (Sandbox Code Playgroud)

问题:永远不会调用"method()".每次只调用控制器的构造函数.

目标是将自包含的MVC构建为模块并由其他控制器使用.但无论我做什么,它只调用构造函数,方法不调用.几个星期前我开始使用HMVC,我是否遗漏了文档中的某些内容,或者它是不是以这种方式使用?
这是设置:

modules
  |--ztest1
  |   |--controller/c1.php
  |--ztest2
      |--controller/c2.php

class C1 extends MX_Controller {
  function __construct() {
    parent::__construct();
  }
  function index () {
    Modules::run('ztest2/c2/testc2/');
    //Modules::load('ztest2/c2/testc2/');
    //$this->load->module('ztest2/c2/testc2/');
    //$this->c2->testc2();
  }
}

class C2 extends MX_Controller {
  function __construct() {
    parent::__construct();
    echo __FILE__." // ".__CLASS__."/".__FUNCTION__.PHP_EOL;
  }
  function testc2(){
    echo __FILE__." // ".__CLASS__."/".__FUNCTION__.PHP_EOL;
  }
}

output:
/app/modules/ztest2/controllers/c2.php // C2/__construct
Run Code Online (Sandbox Code Playgroud)

附加说明:脚本没有错误或警告.它只是静静地调用构造函数.

php codeigniter hmvc

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

Codeigniter - 获取上传的文件名

如何将上传的文件名保存在变量中(我是CI新手)?

我正在使用此代码进行测试:

我真的很感谢你对这些家伙的帮助.

这是我正在使用的代码(由于stackoverflow的限制,我一遍又一遍地输入这个代码):

<?php

class Gallery_model extends CI_Model {

    var $gallery_path;
    var $videos_path;
    var $thumbnail;
    var $video_name;

    function Gallery_model() {

        parent::__construct();

        $this->gallery_path = realpath(APPPATH . '../images');
        $this->videos_path = realpath(APPPATH . '../videos');
        $this->videos_path_tnumb = realpath(APPPATH . '../videos/thumb');

        $this->thumbnail = 'C://xampp//htdocs//upload//videos//thumb';
        $this->video_name = 'C://xampp//htdocs//upload//videos//79825_00_01_SC03_intro.mov';
    }

    function do_upload() {

        $config = array(
//            'allowed_types' => 'jpg|jpeg|png|gif',
//            'upload_path' => $this->gallery_path,
//            'max_size' => 10000

            'allowed_types' => 'avi|mp4|flw|mov',
            'upload_path' => $this->videos_path
        );

        $this->load->library('upload', $config);
        $field_name = "some_field_name";
        if ($this->upload->do_upload()) {
            $this->getThumbImage($_POST['userfile']);
        }
    } …
Run Code Online (Sandbox Code Playgroud)

php codeigniter

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

用于REST服务的Codeigniter auth密钥

我正在使用Phil Sturgeon Rest Server编写一个简单的RESTful服务.我想通过使用此库提供的API密钥来保护我的方法.

不幸的是,这并没有很好的记录,我有点迷失.

我想验证用户(电子邮件/密码),然后生成一个auth密钥以发送每个其他请求.但似乎我已经需要auth密钥来生成一个...创建一个虚拟密钥似乎不太安全.对不起,如果这是一个愚蠢的问题,但最佳做法是什么?

rest codeigniter restful-authentication

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

codeigniter应用程序的Web Config文件

我正在遭受一个web配置文件,它不会重写我的codeigniter应用程序的url.这是web配置文件.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
    <rewrite>
        <rules>
            <rule name="Clean URL" stopProcessing="true">
                <match url=".*" />
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                </conditions>
                <action type="Rewrite" url="index.php?{R:1}" appendQueryString="true" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

这是我的网站:http: //gandhitomodi.com

我无法得到这种网址 http://gandhitomodi.com/controller/method/

例如

http://gandhitomodi.com/welcome/index/

请帮我解决这个问题.

****编辑*****

这是route.php

$route['default_controller']="welcome/index";
$route['sendmail']="welcome/send";
Run Code Online (Sandbox Code Playgroud)

这是我更改的config.php设置.

$config['base_url']="http://gandhitomodi.com/";
$config['index_page']='';
$config['url_protocal']='PATH_INFO';`
Run Code Online (Sandbox Code Playgroud)

php iis codeigniter web-config

11
推荐指数
2
解决办法
2572
查看次数