标签: codeigniter

使用php在数组中存储对象

我有一个从数据库中提取行的函数,content-> id和content->类型用于动态调用已加载模型中的amethod来获取和格式化对象详细信息.返回对象后,它将添加到数组中.一切都很好,除了当我来使用数组虽然它有正确数量的项目,它们都包含相同的对象,即使我知道它们返回不同.我完全失去了这个,任何帮助/想法都会很棒!

代码如下:

foreach($query->result() as $content)
{
    $item = $this->{'mod_'.$content->type}->get($content->id);
    print_r($item);
    $items[] = $item;
}
print_r($items);
Run Code Online (Sandbox Code Playgroud)

而print_r语句产生了这个:

stdClass Object
(
    [id] => 30
    [type] => page
)

stdClass Object
(
    [id] => 29
    [type] => page
)

Array
(
    [0] => stdClass Object
        (
            [id] => 29
            [type] => page
        )

    [1] => stdClass Object
        (
           [id] => 29
           [type] => page
        )

)
Run Code Online (Sandbox Code Playgroud)

php arrays codeigniter object

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

Codeigniter检查复选框值

我正在使用CodeIgniter,我有一个带有复选框的表单,允许用户检查并删除他们上传的照片.
在我的控制器中,我if(isset($checked) == 1)用来检查用户是否要删除照片.
$photo_to_table将设置为空并传递给$this->tank_auth->update_user()执行数据库更新,并将照片字段设置为在表中为空.否则,它将保持相同的照片.

但是在我的代码中,无论我是否检查,当我点击UPDATE按钮时,它会不断删除照片,我想知道它为什么会发生?

有人可以通过我的代码并给出建议吗?

控制器:

$user_id = $this->session->userdata('user_id');
$profile = $this->users->get_profile_by_id($user_id);

if(!empty($_FILES['photo']['name'])) 
{
    //image upload process
}
else
{
    $checked = $this->input->post('remove');
    if(isset($checked) == 1)
        {
            $photo_to_table = '';
            // here will do remove process to delete file in directory
        }
    else
    {
        $photo_to_table = $profile->photo;
    }
}

    if($this->form_validation->run()) { // validation ok
    if(!is_null($data = $this->tank_auth->update_user(
        $this->form_validation->set_value('name'),
        $this->form_validation->set_value('country'),
        $this->form_validation->set_value('website'),
        $photo_to_table
        ))) 
    { 
        // success
        $this->session->set_flashdata('msg', 'Profile has been updated');
        redirect(current_url()); …
Run Code Online (Sandbox Code Playgroud)

php checkbox codeigniter

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

将用户密码从salted SHA1升级到bcrypt

我被聘请在新的PHP 5.3服务器上使用Laravel 4重建一个在CodeIgniter 1.7.3(在PHP 4.2服务器上)上构建的活跃应用程序.

该系统有大约500个用户,其密码使用salted SHA-1哈希进行加密.我想使用bcrypt来提高应用程序的安全性以及与Laravel 4的身份验证系统集成.

您如何建议迁移这些用户密码?

php sha1 codeigniter bcrypt laravel

6
推荐指数
2
解决办法
1928
查看次数

使用PhpBrowser的代码似乎不遵循重定向

这是我第一次设置测试套件,所以我可能会犯一些愚蠢的错误.

我只是设置Codeception来为CodeIgniter项目编写一些测试.我有一些简单的测试工作(耶!)但我现在正在编写验收测试以确保我的登录表单有效.填写表单并单击提交工作正常,但是当我尝试在提交后检查页面时,似乎没有遵循重定向.

  • 页面内容为空(节点列表为空,日志文件为0字节)
  • 页面的URL是我提交的页面,而不是我应该重定向到的页面.

重定向是301标头重定向.编辑:FALSE关闭我使用的auth库执行"重新加载"标头重定向.使用真正的301修复了问题.

我假设应该遵循重定向.我需要设置/配置以使301重定向工作吗?

码:

我的验收测试:

<?php
$I = new WebGuy($scenario);
$I->wantTo('Login');
$I->amOnPage('/');
$I->fillField('identity', 'manager@example.com');
$I->fillField('password', 'password');
$I->click('submit');
$I->see('Logged In Successfully');
Run Code Online (Sandbox Code Playgroud)

我在调试模式下运行测试时的输出.在InvalidArgumentException被抛出错误,因为它看起来在页面的DOM是空的:

Codeception PHP Testing Framework v1.7.1
Powered by PHPUnit 3.7.27 by Sebastian Bergmann.

Acceptance Tests (1) -----------------------
Trying to login (LoginCept.php)
Scenario:
* I am on page "/"
* I fill field "identity","manager@example.com"
* I fill field "password","password"
* I click "submit"
* I see "Logged In Successfully"
 ERROR

---------------------------------------------


Time: 3.96 seconds, …
Run Code Online (Sandbox Code Playgroud)

php redirect codeigniter codeception

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

CodeIgniter - 如果尚未加载库,则加载库

我想要做的是加载库,如果它们尚未加载(CI的库,或者是自定义的库)在网站的许多不同点上.所以我想对此进行检查.

我已经在Loader库上搜索并找到了is_loaded()函数,所以我可以这样做:

if ($this->load->is_loaded('form_validation') === false) {
    $this->load->library('form_validation');            
}
Run Code Online (Sandbox Code Playgroud)

这个奇怪的事情(启用了探查器)是内存上升,这让我想知道这是不是正确的方式.

php codeigniter libraries codeigniter-classloader

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

使用Codeigniter搜索表单

我想在Codeigniter中创建一个搜索表单.我想给用户4个不同的搜索选项.对于结果,我想要一个表,显示我正在搜索的表中的所有11列.这是我到目前为止的代码.

控制器:

public function index(){
    $this->searchTest();
}
public function searchTest(){
    $this->load->model('reg_model');

$search_term = array(
    'firstName' => $this->input->post('firstName'),
    'lastName' => $this->input->post('lastName'),
    'street' => $this->input->post('street'),
    'dob' => $this->input->post('dob'));


    $data['query'] = $this->reg_model->test($search_term);


    $this->load->view("reg_header");
    $this->load->view("reg_nav");
    $this->load->view("reg_search_form", $data);
    $this->load->view("reg_search", $data); 
Run Code Online (Sandbox Code Playgroud)

模型:

public function test($search_term='default'){



   $this->db->select('*');
   $this->db->from('voterinfo');
   $this->db->like('firstName', $search_term);
   $this->db->or_like('lastName', $search_term);
   $this->db->or_like('street', $search_term);
   $this->db->or_like('dob', $search_term);
   $query = $this->db->get();


   return $query->result_array();
Run Code Online (Sandbox Code Playgroud)

}

视图:

<?php $this->load->library('table'); foreach ($query as $row){ echo $this->table->generate($row); }?>
Run Code Online (Sandbox Code Playgroud)

php forms search codeigniter

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

Twitter Oauth状态/在codeigniter中显示返回错误

我正在使用这个库在我的项目中实现twitter Oauth,并且如果在这种情况下它是相关的,则使用codeigniter.

我试图根据推文ID获取推文,但它返回一个错误:

{"errors":[{"message":"Sorry, that page does not exist","code":34}]}
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的代码:

public function gettweetbyid() {
    $this->config->load('twitter');
    $consumer = $this->config->item('twitter_consumer_token');
    $consumer_secret = $this->config->item('twitter_consumer_secret');
    $access_token = $this->config->item('twitter_access_token');
    $access_token_secret = $this->config->item('twitter_access_secret');
    $connection = $this->twitteroauth->create($consumer, $consumer_secret, $access_token, $access_token_secret);
    $content = $connection->get('account/verify_credentials');
    $data = array(
        'id' => $this->input->get('id')
    );
    $tweets = $this->twitteroauth->get('statuses/show', $data);

    echo json_encode($tweets);
}
Run Code Online (Sandbox Code Playgroud)

我知道一切都是正确的,因为我也使用插件来获取基于主题标签的推文,这根本不是问题.

我得到的URl看起来与他们的文档url非常相似:

https://api.twitter.com/1.1/statuses/show.json?id=408541017676460000&....
Run Code Online (Sandbox Code Playgroud)

我现在正在看这一整天,我的时间已经不多了......

任何帮助,将不胜感激!

编辑:另外,有什么方法在Twitter上我可以检查ID是否确实存在?虽然我不认为这是问题所在,我想知道以备将来参考

php twitter codeigniter oauth

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

PHP Codeigniter; 防止表格重新提交

我正在我的CodeIgniter项目中创建一个搜索页面.在提交时,表单调用控制器函数,通过模型函数获取数据,并将生成的数组传递给视图

问题是,当我刷新结果页面时,表单重新提交,因为$ _POST数据仍然存在于请求标头中.如何避免重新提交确认消息

以下是我的表单的代码:

<!--form--> 
<form id="find" action="<?php echo base_url()?>search/find" method="post">
    <input type="text" name="search_key" class="tb4" id="search_key" placeholder="Search here"/>
    <input type="button" value="search"/>
</form>
Run Code Online (Sandbox Code Playgroud)

以下是我的控制器的代码:

 /*
     * function for fetching search results
     * @param void
     * @return void
     */
    public function find()
    {   
        $data['search_result']=$this->search_model->search($this->input->post('search_key'));
        $this->load->view('template/header');
        $this->load->view('pages/search_result',$data);
        $this->load->view('template/footer');
    }
Run Code Online (Sandbox Code Playgroud)

请帮助我.我不能使用重定向而不是加载视图,因为我必须将结果数组$ data传递给视图.

php forms redirect codeigniter

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

INSERT Batch,如果在codeigniter中重复键更新

有没有办法在批量插入查询中执行,如果密钥已经存在,请在codeigniter中更新该行?我已经阅读了文档,发现只有insert_batch和update_batch.但是如何在活动记录中使用重复键更新行?如果在batch_insert中无法插入或更新一行,会发生什么?所有插入失败或只有那一行?

mysql database bulkinsert codeigniter batch-updates

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

Codeigniter使用dbforge创建ENUM字段

我创建了一个ENUM字段,这是我的代码:

$field['test'] = array(
  'type' => 'ENUM',
  'constraint' => array('a','b','c'),
  'default'=> "a"
);
$this->dbforge->add_field($field);
$this->dbforge->create_table('demo'); 
Run Code Online (Sandbox Code Playgroud)

我收到一条消息:

错误号码:1064

您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便在'Array'附近使用正确的语法DEFAULT'a'NOTE NULL)DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci'在第2行

CREATE TABLE ci_demo(testENUM(Array)DEFAULT'a'NOT NULL)DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

请帮帮我,非常感谢你.

php mysql enums codeigniter dbforge

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