我已经使用CodeIgniter编写了一段时间,当我编程或读取其他程序员的代码时,我通常会遇到两种从输入中获取数据的方法.一个是从控制器获取输入,然后作为参数传递给模型,如下所示:
class MyController extends Controller
{
.
.
.
public function login()
{
$username = $this->input->post('username');
$password = $this->input->post('password');
$this->load->model('User');
$this->User->login($username, $password);
}
}
class User extends Model
{
.
.
.
public function login($username, password)
{
....
}
}
Run Code Online (Sandbox Code Playgroud)
另一个是直接从Model访问输入参数,如下所示:
class MyController extends Controller
{
.
.
.
public function login()
{
$this->load->model('User');
$this->User->login();
}
}
class User extends Model
{
.
.
.
public function login()
{
$username = $this->input->post('username');
$password = $this->input->post('password');
}
}
Run Code Online (Sandbox Code Playgroud)
您认为更好的做法是什么?我倾向于第一个,因为它给了模型更多的独立性,但我在示例代码和其他开发人员中看到了第二种方法.不可否认,第二种方法更短,特别是当您接受5-10个输入字段时.
我的jQuery脚本有问题,通过POST方法发送数据.问题是,只要它通过Ajax发送数据,句子中有"&"符号,它会在找到"&"时剪切句子.
请查看下面的图片了解更多信息.

我通过jQuery Ajax将数据作为JSON发布到我的服务器上遇到了一个大问题.JSLint说数据没问题,请求的Content-Type设置为application/x-www-form-urlencoded; charset=UTF-8.服务器在PHP 5.2.11上运行,所以我无法使用json_last_error().
我尝试了url_decode,utf8_decode和html_entities_decode,但似乎没有任何效果.
var_dump(json_decode($jdata));返回null,但如果我做了var_dump($jdata)一切看起来没问题.$jdata是帖子数据:$jdata = $this->input->post('requestdata');.
这里从Firebug获取一些示例后期数据:
{
"projectnumber": "345",
"projecdescription": "345",
"articles": [
{
"position": 1,
"article_id": 677,
"online_text": "3 Behälter; Band I-III nach indiv. Stückliste, Sprache: DE - Sprache: de"
},
{
"position": 2,
"article_id": 678,
"online_text": "2 Behälter; Band I-III nach indiv. Stückliste, Sprache: ### - Sprache: en"
}
]
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我现在试过这个:
$string = $this->input->post('requestdata');
var_dump($string);
$json = preg_replace('/,\s*([\]}])/m', '$1', utf8_encode($string));
$json = …Run Code Online (Sandbox Code Playgroud) 我在Codeigniter中开发了一个站点,在我的模型中我有一个这样的函数:
function nationList($limit=null, $start=null) {
if ($this->session->userdata('language')=="it")
$this->db->select('nation.id, nation.name_it as name');
if ($this->session->userdata('language')=="en")
$this->db->select('nation.id, nation.name_en as name');
$this->db->from('nation');
$this->db->order_by("name", "asc");
$this->db->limit($limit, $start);
$query = $this->db->get();
$nation = array();
foreach ($query->result() as $row)
array_push($nation, $row);
return $nation;
}
Run Code Online (Sandbox Code Playgroud)
如果进入我的控制器,我会无限制地调用该函数,并且start不会返回如下结果:
$data["nationlist"] = $this->Nation_model->nationList();
Run Code Online (Sandbox Code Playgroud)
相反,如果我设置限制并开始工作!如果limit和start为null,为什么不返回结果?如果limit和start为null,我不想创建第二个函数或控件.如果在没有控件或第二个函数的情况下限制和启动为null以使代码变得有用并且效率更高,我该如何解决这个问题呢?
我知道这个问题已被提出,我尝试了所有这些但仍然无法从url中删除index.php.这是我的详细信息
Ubuntu 12.10
PHP : 5.4.6
Mod_rewrite in on
CI verson: 2.1
Run Code Online (Sandbox Code Playgroud)
.htacess看起来像:
RewriteEngine On
RewriteBase /projectname
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Run Code Online (Sandbox Code Playgroud)
我也看下面的链接,但没有运气.. 无法从url CI网站删除index.php
如何删除codeigniter路径中的"index.php"
我的"/ etc/apache2/sites-available/default"如下所示:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# …Run Code Online (Sandbox Code Playgroud) 我们正在做一个简单的游戏,其中:
next number of play作为encrypted string 之前他们玩password提供给他们检查游戏数量是正确的.only valid for 1-2 hours和播放次数,验证字符串和加密字符串在此之后再次重新生成要加密的示例字符(QQ9LU在播放前提供给用户的随机验证码):
下一个游戏编号:8 - 验证字符串:QQ9LU
示例加密字符串(在播放前提供给用户):
NXRykKOv3B6kuu4Ke3svp7HH3enNiqIZrJSXJiF54QkHHjtXgqpUXxyuP7YUNICeFLg ==
示例密码(播放后提供):
请注意,这是为每次加密随机生成的
FA00RDjA77hlOzcOzH6kuGcc29CyM7Hw
我们使用CodeIgniter 2.2.2加密类来加密/解密字符串
加密方法信息:
$this->encrypt->encode($msg, $pass);每次随机传递MCRYPT_RIJNDAEL_256MCRYPT_MODE_CBC我能相信用户在1-2小时内无法破解加密的字符串(并在获取密码之前知道播放的次数)(除了运气好)
将随机验证码Verify String: T3YH4放在哪里好或坏?是影响安全吗?(这是为了验证解密结果是否成功,我们也添加了它,因为每个字符串中唯一的变量是一个数字,例如只有数字8变为7,所以我们想要在字符串中添加更多变量字符以便可能有一个安全性更好)
任何其他建议表示赞赏
我在运行我的应用程序时收到此错误:
PHP str_replace():不推荐将 null 传递给类型为 array|string 的参数 #3 ($subject)
我正在使用 CodeIgniter 版本:V4.1.8 PHP 版本:8.1.2,完整错误输出如下:
{"data":[
["omron","<span class=\"label label-success\">Active<\/span>",
"<button type=\"button\" class=\"btn btn-default\" onclick=\"editBrand(4)\" data-toggle=\"modal\" data-target=\"#editBrandModal\"><i class=\"fa fa-pencil\"><\/i><\/button> <button type=\"button\" class=\"btn btn-default\" onclick=\"removeBrand(4)\" data-toggle=\"modal\" data-target=\"#removeBrandModal\"><i class=\"fa fa-trash\"><\/i><\/button>\n\t\t\t\t"]
]
}
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
<h4>A PHP Error was encountered</h4>
<p>Severity: 8192</p>
<p>Message: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated</p>
<p>Filename: core/Output.php</p>
<p>Line Number: 457</p>
<p>Backtrace:</p>
Run Code Online (Sandbox Code Playgroud)
更新:代码
if ($this->parse_exec_vars === TRUE)
{
$memory = round(memory_get_usage() …Run Code Online (Sandbox Code Playgroud) 我想通过电子邮件收到错误日志.例如,如果出现Warning-level错误消息,我想收到有关它的电子邮件.
如何在CodeIgniter中使用它?
我正在为家庭护理公司开发一个PHP应用程序.他们每周安排x个护理人员参加x个服务用户(客户)的住宿.每个服务用户都有一个"访问时间"的集合"时间表",其中包括时段加上访问持续时间(以分钟为单位).
例如,服务用户可以具有以下计划.
AM Lunch Tea Late Night Respite
Mon 30m - 30m 60m - -
Tue 30m - - 60m - -
Wed 20m 25m 30m 60m 120m -
Thu - - 30m - - -
Fri 30m 25m - - - -
Sat - - - - - -
Sun 20m 25m - - - -
Run Code Online (Sandbox Code Playgroud)
这些期间当前以以下格式存储在数据库中:
Table: Service_user_schedules
id service_user_id day period duration
Run Code Online (Sandbox Code Playgroud)
护理人员每周都会填写一份表格,列出他们可以工作的时间.然后将此数据输入系统并以下列格式存储在数据库中:
Table: Carer_available_shifts
id carer_id day period
Run Code Online (Sandbox Code Playgroud)
现在问题是,我需要创建一个控制器来获取这些数据,并根据他们提供的可用性自动将护理者分配给服务用户.这需要是可编辑的,以便在没有人可用于特定护理者的情况下,用户可以选择一个不可用的,并且它们仍将被添加到数据库中.
目前,我有一堆乱七八糟的循环,函数和回声来检查护理人员是否可用于特定服务用户并使其可编辑.
有没有人之前执行过这种任务,如果有的话,你找到了一种简单的方法来完成它.我宁愿让它面向对象,所以我可以重用相同的泛型类,但此刻,我完全失去了!
编辑:我现在已经为这个问题增加了一笔赏金.我目前正在研究遗传算法(我从来没有听说过,更不用说了!)作为基于一些答案的这个问题的解决方案.我想知道你们是否有人使用其他方法来解决这类问题,或者你们是否使用过遗传算法,你能否就如何将它们应用于这一特定问题提供一般性的解释.
我认为这个障碍在许多"人员配备"类型的应用程序中相当普遍,并且对网上任何地方的讨论很少感到惊讶!
UPDATE
对于这个特定的项目,我想我最终可能会使用Tak所描述的数据库方法,但如果我有更多的开发时间,将来可能转换为使用GA.
我现在对于将赏金奖励给谁感到有点失落.duedl0r在他(或她)的回答中付出了很多努力.它让我对遗传算法的世界有了深刻的了解 …
我正在尝试使用Codeigniter和APC制作进度条.
这是我的表格:
<form method="post" action="" id="upload_file" enctype="multipart/form-data" target="result_frame">
<input type="hidden" value="<?php echo uniqid(); ?>" id="progress_key" name="APC_UPLOAD_PROGRESS" />
<p><label for="userfile">Séléctionnez un fichier</label><br />
<input type="file" name="userfile" id="userfile" size="20" />
<button class="btn btn-primary" type="submit" name="submit" id="submit" value="Submit"><span class="icon-upload"></span> Valider</button></p>
Run Code Online (Sandbox Code Playgroud)
当用户点击提交按钮时,它会触发上传过程.这是我的"检查进度"功能:
function checkProgress() {
$.ajax({
type: "POST",
url: "/fbe_upload/index.php/fbeupload/upload_progress",
async: true,
dataType: "json",
data: {
session_unid: $('#progress_key').val()
},
//Success
success: function(data) {
//Progress
liveProgress = data.progress;
//Progress bar
$('#progressBar-' + idRow).attr("class", "progress progress-striped active");
$('#progressBar-' + idRow + " div.bar").css("width", parseInt(liveProgress) + "%"); …Run Code Online (Sandbox Code Playgroud) codeigniter ×10
php ×8
jquery ×2
.htaccess ×1
ajax ×1
apc ×1
coding-style ×1
date ×1
email ×1
encryption ×1
javascript ×1
json ×1
mod-rewrite ×1
progress-bar ×1
scheduling ×1
sql ×1
time ×1
upload ×1