我有一个网站,正在升级到 CodeIgniter 3 的当前开发版本。我已按照升级说明将所有类文件重命名为大写(例如 application/controllers/Home.php)
对于正常使用控制器的小写 URL,例如:
使用 Home.php 控制器。
当 url 首字母小写时,不会自动调用大写文件名。(404 错误)。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
Run Code Online (Sandbox Code Playgroud)
非常感谢任何帮助。
我已将其范围缩小到_validate_request核心路由器中的功能。如果我注释掉对该函数的调用,它就会起作用_set_request。
如果我将函数的名称更改_validate_request为_validate_request2并使用新名称调用它,则它可以正常工作。这个函数名是保留字吗?
我无法将表单内容发送到电子邮件。我收到以下错误:
: 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) 我正在使用 Codeigniter 3 构建一个应用程序,但用户不断被随机注销。我认为这可能是使用 AJAX 的问题,因为我读过这有点错误,但它只是在浏览等时随机发生,而不是任何特定时间,因为它可能会在几分钟内反复发生或持续一段时间.
我正在使用 ion_auth 插件进行身份验证等。
我的会话存储在数据库中,这是从 CI 导入的配置:
//$config['sess_driver'] = 'files';
$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
//$config['sess_save_path'] = '/home/slight/system/cache/';
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
Run Code Online (Sandbox Code Playgroud)
我怎么能调试呢?是什么原因造成的?我可以检查什么?
我试图将变量值从库函数传递给控制器,然后查看以获取输出。
为此,我的库代码:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/**
* @description : Library to access MyOperator Public API
*/
Class My_Operator extends Admin_controller{
protected $developers_url = 'https://developers.myoperator.co/';
protected $token = 'XXXXXXXXX';
function __construct() {
}
public function run() {
# request for Logs
$url = $this->developers_url . 'search';
$fields = array("token" => $this->token);
$result = $this->_post_api($fields, $url);
$this->log("result");
$this->log($result);
}
private function _post_api(Array $fields, $url) {
try {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, …Run Code Online (Sandbox Code Playgroud) 如何在同一页面中使用数据表,我使用模板数据表,但是在创建新的一个数据表时不起作用。
这是我的代码
CSS:
<link href="<?php echo base_url();?>/assets/plugins/datatables/jquery.dataTables.min.css" rel="stylesheet" type="text/css"/>
<link href="<?php echo base_url();?>/assets/plugins/datatables/buttons.bootstrap.min.css" rel="stylesheet" type="text/css"/>
<link href="<?php echo base_url();?>/assets/plugins/datatables/responsive.bootstrap.min.css" rel="stylesheet" type="text/css"/>
<link href="<?php echo base_url();?>/assets/plugins/datatables/scroller.bootstrap.min.css" rel="stylesheet" type="text/css"/>
Run Code Online (Sandbox Code Playgroud)
JavaScript:
<!-- Datatable js -->
<script src="<?php echo base_url();?>/assets/plugins/datatables/jquery.dataTables.min.js"></script>
<script src="<?php echo base_url();?>/assets/plugins/datatables/dataTables.bootstrap.js"></script>
<script src="<?php echo base_url();?>/assets/plugins/datatables/dataTables.buttons.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
代码:不,当我用此数据表创建一个新功能时,所有功能均不起作用。
echo "<table id='datatable-buttons' class='table display2 table-striped table-bordered'>";
echo "<thead>";
echo "<tr>";
echo "<th>No.</th>";
echo "<th>Itemset</th>";
echo "<th>Jumlah</th>";
echo"</tr>";
echo "</thead>";
echo "<tbody>";
foreach ($item_array as $ia_key => $ia_value)
{
//$theitems = explode('|',$ia_key);
for($x = 0; …Run Code Online (Sandbox Code Playgroud) 我有这个迁移:
public function up(){
$this->dbforge->add_field([
'id'=>['type'=>'int', 'unique'=>true, 'unsigned'=>true,'auto_increment'=>true],
'email'=>['type'=>'varchar', 'constraint'=>200, 'null'=>true],
'password'=>['type'=>'varchar', 'constraint'=>250],
'created_at'=>['type'=>'datetime', 'default' => 'CURRENT_TIMESTAMP'],
]);
$this->dbforge->add_key('id', TRUE);
$this->dbforge->create_table('users', TRUE);
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试设置created_at带有默认值列的表- 当前日期时间。我正在使用'default' => 'CURRENT_TIMESTAMP',但出现此错误:
'created_at' 的默认值无效 .... NOT NULL,
created_atdatetime NOT NULL DEFAULT 'CURRENT_TIMESTAMP',
我使用CodeIgniter 3带MySQL。
我正在按照此操作使用单个查询更新多个表,但这在我的情况下不起作用。
我的查询如下:
$this->db->set('tbl1.col1', $val1);
$this->db->where('tbl1.col2', $val2);
$this->db->where('tbl1.col3', $val3);
$this->db->set('tbl2.col1', $val1);
$this->db->where('tbl2.col2', $val2);
$this->db->where('tbl2.col3', $val3);
$this->db->update('table1 as tbl1, table2 as tbl2');
Run Code Online (Sandbox Code Playgroud)
我收到的错误是:
Table 'database.table1 as tbl1, table2' doesn't exist
Run Code Online (Sandbox Code Playgroud)
这可能不适用于新版本的 codeigniter。
我正在使用CI-3.1.6和PHP-5.6.12
有没有其他方法可以在 codeigniter3 中使用单个查询更新多个表?
经过一个月的尝试解决这个问题,并尝试了相关问题中的各种答案,我决定自己问这个问题。
这个问题发生在我们最近购买的新服务器上,相同的代码在本地主机和最后一台服务器上运行良好。但这可能与代码有关。
会话已正确创建并设置了令牌,var_dump 显示了这一点。但是当用户尝试登录时,重定向到访问功能后,没有设置 Session 令牌,因此不会发生登录。
即使在同一页面上,如果刷新,__ci_last_regenerate(获取上次重新生成 Session 的时间)是当前时间,并在每次刷新后更改。
在 var/lib/php/session 中,每次刷新后都会创建两个不同的文件,不知道为什么。这里的图片:
19 秒的那个有正确的数据(时间和令牌),最后一个只有时间。
此外,我们最近向站点添加了一个新的子域,因此我们在同一台服务器中有两个不同的子域。
这是会话配置:
$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)
还尝试了 DB 驱动程序,它在表上生成了 2(或有时 3 行)。配置是:
$config['sess_driver']= 'database';
$config['sess_cookie_name']= 'ci_session';
$config['sess_expiration']= 0;
$config['sess_save_path']= 'ci_sessions';
$config['sess_match_ip']= FALSE;
$config['sess_time_to_update']= 300;
$config['sess_regenerate_destroy']= FALSE;
$config['sess_use_database']= TRUE;
$config['sess_expire_on_close']= TRUE;
$config['sess_table_name']= 'ci_sessions';
Run Code Online (Sandbox Code Playgroud)
数据库的输出是它的列(id、ip、timestamp、data):
数据始终相同,在一种情况下最后一次重新生成包含时间和令牌,而在另一种情况下仅最后一次重新生成(每次刷新 2 行)。
PHP 是 7.2.7 。CodeIgniter 是 3.1.5。
如果需要,将提供所需的任何其他代码或服务器信息。
编辑 4/9: 根据一些用户的要求,还添加了这些 cookie 数据。
$config['cookie_domain'] …Run Code Online (Sandbox Code Playgroud) $(document).ready(function () {
//@naresh action dynamic childs
var next = 0;
$("#add-more").click(function (e) {
e.preventDefault();
var addto = "#field" + next;
var addRemove = "#field" + (next);
next = next + 1;
var newIn = ' <div id="field' + next + '" name="field' + next + '"><!-- Text input--> <div class="form-group"> <div class="col-6"> <label for="vat" ></label><input type="text" placeholder="Check In Date" id="datepicker-12" name="PeriodFrom[]" class=" datepicker_recurring_start" value=""></div><div class="col-6"><label for="street" ></label><input type="text" name="PeriodTo[]" placeholder="Check Out Date" class=" datepicker_recurring_start" value=""></div></div><div class="form-group"><div class="col-6"><label for="vat" ></label><input …Run Code Online (Sandbox Code Playgroud)我有 2 个表,我希望其中一些列在另一个表从用户那里获取数据时自动更新。
这是我的场景:用户注册及其详细信息进入“用户”表。注册用户现在可以发帖了。当他发帖时,他的帖子会进入“帖子”表。
现在我想在用户发帖时显示用户的“用户名”。
因此,结论是我希望表“users”中的列“username”自动与表“posts”中的列“username”同步。这样,一旦用户发了帖子,就会看到特定用户发了帖子。
这是我将如何实现它
<?php foreach ($posts as $post) : ?>
<div class="row">
<div class="col-md-3">
<img class="post-thumb img-fluid" src="<?php echo site_url();
?>assets/images/posts/<?php echo $post['post_image']; ?>">
</div>
<div class="col-md-9">
<h3><?php echo $post['title'];?></h3>
<small class="post-date">Posted on: <?php echo
$post['created_at']; ?>
in <strong><?php echo $post['category_name']?></strong> by
<strong><?php echo $post['username']?></strong></small><br>
<?php echo word_limiter($post['body'], 50); ?>
<br><br>
<p><a class="btn btn-info" href="<?php echo
site_url('/posts/'.$post['slug']);?>"
>Read More</a></p>
</div>
</div>
<?php endforeach; ?>
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的一个功能,但当我发帖时它不会更新我的“帖子”表列“用户名”。
public function get_posts($slug = FALSE){
if ($slug === FALSE){
$this->db->order_by('posts.id', 'DESC'); …Run Code Online (Sandbox Code Playgroud) codeigniter-3 ×10
php ×8
codeigniter ×6
javascript ×2
session ×2
api ×1
css3 ×1
ion-auth ×1
jquery ×1
json ×1
mysql ×1
sql ×1