我有问题将codeignier 2.xx升级到3.xx之前,我找不到任何已完成的答案.所以我想分享一下我是如何解决它的.
在Codeignier官方网站上显示如何将PDO与Mysql连接如下
对于PDO驱动程序,您应该使用$ config ['dsn']设置而不是'hostname'和'database':
$ config ['dsn'] ='mysql:host = localhost; dbname = mydatabase'
https://www.codeigniter.com/user_guide/database/connecting.html
但我仍然无法使它工作,因为它显示错误
PDO子驱动程序无效或不存在
某些网站显示了如何通过将此添加到主机名来解决此问题
$ db ['default'] ['hostname'] ='mysql:host = localhost';
但我仍然有错误
错误号码:3D000/1046
没有选择数据库
我正在尝试创建完整的站点备份,但我想从存档中排除一个文件夹.
我的目录:
/application/
/backups/ >>> I dont want to archive this folder because of nested archiving.
/themes/
/uploads/
.htaccess
index.php
Run Code Online (Sandbox Code Playgroud)
尝试以下代码:
$this->load->library('zip');
$this->zip->read_dir(FCPATH);
$this->zip->archive(FCPATH.'backups/'.date('Y-m-d-His').'.zip');
Run Code Online (Sandbox Code Playgroud) 我目前正在使用codeigniter 3.0.3。我试图使用var_dump(base_url());函数来获取基本URL,
我得到了这个结果
字符串' http:// localhost / '(长度= 17)
但是我需要获取带有端口号的基本URL。我在codeigniter 3.0.2中得到了这样的代码
字符串' http:// localhost:8000 '
如何在Codeigniter 3.0.3中获取带有端口号的基本URL。
我的配置是这样的:
$config['sess_driver'] = 'database'; // select database driver
$config['sess_save_path'] = 'ci_sessions'; // name of the mysql table
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = FALSE;
$config['sess_time_to_update'] = 300;
Run Code Online (Sandbox Code Playgroud)
我的自动加载是这样的:
$autoload['libraries'] = array('database', 'session', 'form_validation', 'functions');
Run Code Online (Sandbox Code Playgroud)
在控制器login.php 中:
$this->session->set_userdata('club', 'chelsea');
Run Code Online (Sandbox Code Playgroud)
在控制器dashboard.php 中:
echo $this->session->userdata('club');
Run Code Online (Sandbox Code Playgroud)
如果不同的控制器,它没有成功调用会话俱乐部
但是,当我在同一个控制器(控制器login.php)中调用 session club 时,它正在工作
我尝试$this->library->load('session');在Dashboard.php. 但这不是成功
有什么解决方案可以解决我的问题?
谢谢
如何在 Codeigniter 中的 PDO 数据库句柄上设置属性 (PDO::ATTR_ERRMODE)?
我的观点是:-
<li class="">
<a class="" href="<?php echo base_url(); ?>Login">
<i class="fa fa-unlock-alt"></i> Login </a>
</li>
Run Code Online (Sandbox Code Playgroud)
我的登录控制器
class Login extends CI_Controller {
public function __construct(){
parent::__construct();
}
public function index()
{
$this->load->view('login');
}
}
Run Code Online (Sandbox Code Playgroud)
当我点击链接时,它说 404 页面未找到。但是当手动编辑链接并写入/index.php/Login时,它工作正常。如何解决这个问题...
使用 Firebase 的实时数据库创建聊天应用程序。
用户类看起来像这样(Firebase 中默认为 JSON)
"users" : {
"-K2ib62mjHh34CAUfig" : {
"lastvisibleat" : "2016-09-30 07:10:40",
"name" : "Peter Parker",
"online" : "1"
},
"--K2ib62mjHh34CAUh18" : {
"lastvisibleat" : "2016-09-30 07:26:17",
"name" : "Riddhi Dixit",
"online" : "1"
}
}
Run Code Online (Sandbox Code Playgroud)
我想从更改状态online: "1",以online : "0"当用户的互联网突然得到了自己的不可用或浏览器崩溃或东西本身是不能办理sess_destroy()笨的方法。
服务器是使用 CodeIgniter 在 PHP 中构建的。
javascript php firebase codeigniter-3 firebase-realtime-database
我正在使用一个api,它处理来自客户端的请求,然后从服务器(使用codeigniter 3开发)中获取响应,并将其转发回客户端。
但是,如果发生任何数据库错误,例如重复的id或null值,则模型类将无法处理该错误以显示正确的错误消息。我已经尝试了try catch块,但尚未成功。这是模型:
public function add() {
try {
$this->db->trans_start(FALSE);
$this->db->insert('users', $preparedData);
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE) {
throw new Exception("Database error:");
return false;
}
return TRUE;
} catch (Exception $e) {
log_message('error: ',$e->getMessage());
return;
}
}
Run Code Online (Sandbox Code Playgroud)
值得一提的是,我已将db_debug设置为FALSE。
任何帮助,将不胜感激。
我有时在使用 CodeIgniter 时遇到以下问题:
错误 - 2019-03-05 19:57:26 --> 严重性:警告 --> session_start():无法解码会话对象。会话已被破坏 /system/libraries/Session/Session.php 143
此错误出现在我的服务器日志中,无法人工复制。
我已经阅读了以下 SO 问题:
我也在 CodeIgniter 论坛上问过,但我没有任何答案。
https://forum.codeigniter.com/thread-72960.html
这是我的会话配置(在application/config/config.php)
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
Run Code Online (Sandbox Code Playgroud)
任何想法可能是该问题的根源和/或从哪里开始?
注意:这不是关于站点地图的工作原理,或者站点地图结构的外观,也不是与 SEO 相关的问题。
我的域mysite.com和mysite.pt是同一站点的 2 种语言版本(EN、PT)。内容通过数据库驱动的 CMS 动态添加/删除。
每个菜单/类别更新都会创建其特定于语言的路由,例如:mysite.com/beach和mysite.pt/praia,其中两者都创建指向同一控制器的路由,例如site_manager/page/beaches.
每个语言版本的代码库是相同的,因此所有语言版本只有一个 /application、/assets 和 /system 文件夹。该语言的具体内容是通过加载<?=$this->lang->line('my_token1')?>
文件系统如下所示:
/public_html
/mysite.com/index.php
/mysite.pt/index.php
/all_sites/application
/all_sites/assets
/all_sites/system
Run Code Online (Sandbox Code Playgroud)
两个站点的路由目录中的 index.php 文件更改系统和应用程序文件夹位置:
$system_path = '/home/my_host/public_html/all_sites/system';
$application_folder = '/home/my_host/public_html/all_sites/application';
Run Code Online (Sandbox Code Playgroud)
此设置工作顺利。但是 CMS 很旧,并且不会在菜单或内容更改时创建更新的站点地图。
所以我想了另一种提供更新的站点/特定语言的方法sitemap.xml:当机器人来扫描站点时,可以即时创建站点地图并为机器人提供最新的sitemap.xml
我通过创建一个控制器方法解决了这个问题,该方法site_manager/sitemap()解析数据库条目并输出一个站点地图echo $this->load->view('sitemap',$data,true);
哪些输出,取决于站点:
<!-- created by mysite.pt, 2020-12-22 -->
<url>
<loc>https:// mysite.pt/</loc>
<lastmod>2020-12-22T20:53:36+00:00</lastmod>
<priority>1.00</priority>
</url>
<url>
<loc>https:// mysite.pt/praias.html</loc>
<lastmod>2020-12-22T19:51:51+00:00</lastmod>
<priority>0.80</priority>
</url>
Run Code Online (Sandbox Code Playgroud)
或者
<!-- created …Run Code Online (Sandbox Code Playgroud) codeigniter-3 ×10
php ×7
codeigniter ×5
mysql ×2
pdo ×2
session ×2
.htaccess ×1
firebase ×1
javascript ×1
xml-sitemap ×1
zip ×1