我的表单验证规则有问题(在单独的配置文件中).复选框会出现这种情况.
为了组织我的验证规则,我创建了一个名为的库文件validation_rules.这个库包含我的所有自定义回调等valid_date.为了能够调用这些规则,我加载库,然后使用以下配置:
array(
'field' => 'terms',
'label' => 'lang:reg_lbl_terms',
'rules' => array(array('terms_accepted', array($ci->validation_rules, 'terms_accepted')))
),
Run Code Online (Sandbox Code Playgroud)
$ciCodeIgniter($this)的引用在哪里.
现在这适用于大多数类型的输入,但它不适用于留空的复选框,可能因为它们没有发布.
但是,当我放弃我的库并简单地将回调添加到控制器时,一切都可以正常使用以下配置:
array(
'field' => 'terms',
'label' => 'lang:reg_lbl_terms',
'rules' => array('callback_terms_accepted')
),
Run Code Online (Sandbox Code Playgroud)
此外,当我required在rules数组(或字符串)中的任何位置添加规则时,required规则会被调用(由于未选中复选框,因此返回false),但完全忽略所有其他规则.
这一定是CodeIgniter中的错误吗?有人有解决方案或解决方法吗?当然这是一个选择,但我真的不喜欢它.
相关文档:http://www.codeigniter.com/user_guide/libraries/form_validation.html
编辑: Checkbox PHP/HTML:
<?php
$data = array(
'name' => 'terms',
'value' => 'true'
);
echo form_checkbox($data);
// Results in: <input type="checkbox" name="terms" value="true">
// No set_value() is used.
?>
Run Code Online (Sandbox Code Playgroud) 我在数字海洋nginx和php 7上运行codeigniter3.03.当我尝试发送电子邮件时,我收到此错误:
码:
严重性:警告消息:fsockopen():无法连接到ssl://smtp.googlemail.com:465(连接超时)文件名:libraries/Email.php行号:1986
我的电子邮件设置是
$config['useragent'] = 'CodeIgniter';
$config['protocol'] = 'smtp';
//$config['mailpath'] = '/usr/sbin/sendmail';
$config['smtp_host'] = 'ssl://smtp.googlemail.com';
$config['smtp_user'] = 'xxxxxx@gmail.com';
$config['smtp_pass'] = 'xxxxxxxxxxxx';
$config['smtp_port'] = 465;
$config['smtp_timeout'] = 5;
$config['wordwrap'] = TRUE;
$config['wrapchars'] = 76;
$config['mailtype'] = 'html';
$config['charset'] = 'utf-8';
$config['validate'] = FALSE;
$config['priority'] = 3;
$config['crlf'] = "\r\n";
$config['newline'] = "\r\n";
$config['bcc_batch_mode'] = FALSE;
$config['bcc_batch_size'] = 200;
Run Code Online (Sandbox Code Playgroud)
这个版本在php 5.x下的同一配置中运行完美.
在php.ini我有
extension=php_openssl.dll
Run Code Online (Sandbox Code Playgroud)
启用.
我无法得到任何暗示,为什么这不应该在php7中工作.任何人都可以给我一个提示要检查的内容或者这个错误的原因是什么.
我需要获取所有会话数据并对它们采取一些操作,有没有任何可能的方法来获取它们,我发现如何在php中解决它,但codeigniter使用它自己的自定义会话库.
本机的PHP
$_SESSION
我怎么能在codeigniter中做到这一点
我正在尝试使用Codeigniter 3.0添加第三方扩展来创建HMVC应用程序
但是,当我加入MY_Loader和MY_Router文件到核心文件和文件夹MX Third_party文件夹,它会产生一个致命的错误:
致命错误:在第300行的C:\ xampp\htdocs\codeigniter\application\third_party\MX\Loader.php中调用未定义的方法MY_Loader :: _ ci_object_to_array().
当我删除它们时,应用程序运行正常.是否有运行应用程序所需的其他设置?
我有这个数组
Array
(
[0] => stdClass Object
(
[TransactionNo] => OPM-EC-K-LFMCD2-21.4
[StokOpnameTransNo] => OPM-EC-K-LFMCD2-21
[ItemCode] => BBG150400005
[ItemName] => BIG BAG
[OriginalPrice] => 289900.00
[Price] => 289900.00
[QtyBegining] => 0
[QtyIn] => 4
[QtySales] => 0
[QtyMutasi] => 0
[QtyStock] => 4
[QtyOpname] => 0
[QtyAdjust] => -4
[TotalAdjust] => -1159600.00
[rak] =>
[line] =>
[TransDate] => 2017-03-31 10:46:00.000
[CustomerCode] => K-LFMCD2
[CreatedBy] => 1208496.
[Remark] => re
[Remark2] => re
[SOTerakhir] =>
[TglSoTerakhir] =>
)
[1] => stdClass Object …Run Code Online (Sandbox Code Playgroud) 我正在尝试验证文件上传以进行图像上传,但它没有像其他字段那样获得验证.我正在使用Form_Validation.php流程进行验证.
图片上传阵列:
array(
'field'=>'image',
'label' => 'Image',
'rules' => 'required'
)
Run Code Online (Sandbox Code Playgroud)
当我尝试上传图片时,它没有响应,就像它是必需的等等.我也想验证它.jpg等"和如何设置文件值在不正确的文件上,而不是.jpg我们尝试上传.pdf"像我们设置的值输入字段set_value('field name')等
我检查了很多问题,并尝试使用调用方法,但无法修复它.
更新:
请通过代码示例提供详细答案.请在示例中使用form_validation.php方式,并提供回调示例代码,以便我可以相应地阅读/学习和修改它.
更新2:
public function Task()
{
if ($this->form_validation->run('Sub_Admin/task') == FALSE) {
$this->data['Task'] = $this->bm->get_usr();
$data['title'] = "Add New Task";
$this->load->view('Subadmin/header',$data);
$this->load->view('Subadmin/nav');
$this->load->view('Subadmin/sidebar');
$this->load->view('Subadmin/task', $this->data);
$this->load->view('Subadmin/footer');
}
else
{
$config['upload_path'] = './taskimages/'; //The path where the image will be save
$config['allowed_types'] = 'gif|jpg|png'; //Images extensions accepted
$config['max_size'] ='10048'; //The max size of the image in kb's …Run Code Online (Sandbox Code Playgroud) 是否可以让两个用户数据具有不同的超时/到期时间?假设第一个数据"param_1"在1天内到期,"param_2"在一个月内到期.如何使用CI会话库执行此操作.可能是这样的东西
$this->session->set_userdata('param_1', 86400); // seconds in a day
$this->session->set_userdata('param_2', 2592000); // seconds in a month
Run Code Online (Sandbox Code Playgroud) 我在子域上有一个CodeIgniter项目。现在,当我访问sub.example.com它时,它会加载login page并成功登录,它会重定向到仪表板。登录并建立会话后,访问sub.example.com/login/将自动重定向到dashboard page。现在这是我的问题。成功登录后,访问sub.example.com不会重定向到任何地方,只需加载登录页面即可。但是访问sub.example.com/index.php确实将我重定向到仪表板页面。
由于某种原因,我的索引方法被调用或正常工作。
这是我的代码。
.htaccess
IndexIgnore *
php_value date.timezone Asia/Kolkata
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
## Remove www from URL
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^(.*)$ https://sub.example.com/$1 [R=301,L]
## Redirect to HTTPS
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^sub.example.com$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Run Code Online (Sandbox Code Playgroud)
config.php
if ($_SERVER['REMOTE_ADDR'] == "127.0.0.1") {
$config['base_url'] = "http://" . $_SERVER['SERVER_NAME'];
} else {
$config['base_url'] = "https://" …Run Code Online (Sandbox Code Playgroud) 注销后,我尝试重定向到主页。我尝试了几种方法,但没有重定向。
class User extends BaseController
{
public function __construct()
{
helper('url');
}
Run Code Online (Sandbox Code Playgroud)
用于注销功能。我用了三种方式
redirect('/');
Run Code Online (Sandbox Code Playgroud)
或者
header("Location:".base_url());
Run Code Online (Sandbox Code Playgroud)
或者
route_to('/');
Run Code Online (Sandbox Code Playgroud) 我必须将基于 codeigniter 3 的 CRM 从 PHP 版本 7.4 迁移到版本 8.*。但当我探索 codeigniter 3 与 php 8 的兼容性时,我发现很少有答案说它不兼容。
但这个答案已经很旧了(大约 1 到 2 年)。两个参考是: Codeigniter 论坛 codeigniter github
所以,作为参考是旧的。Codeigniter 3 目前支持 php 版本 8 吗?
codeigniter-3 ×10
php ×9
codeigniter ×4
validation ×2
.htaccess ×1
arrays ×1
file-upload ×1
nginx ×1
php-8 ×1
session ×1