我很想知道其他开发人员如何测试他们的网站.PHP特别适用于我的情况,但这可能跨越多种语言.我已经在一个网站上工作了一年多了,而且我真的想在版本之间自动执行很多回归测试.
这个特定的站点在CodeIgniter中,所以我对我的模型进行了一些测试.我想超越仅测试那些.然而,这是一个问题,即使非MVC开发人员必须解决我的确定.
编辑:我认为满足我的测试需求的功能是能够断言参数在脚本处理结束时具有特定值.在我的情况下,控制器中有很多逻辑,这是我想要测试的主要区域.
CodeIgniter给了我一个Disallowed Key Characters错误.我已经将它缩小到表单字段的name属性:name='prod[50-4121.5]'但我不知道该怎么做.
为了获得唯一值,我使用唯一值.以下是我正在使用的代码
array_unique($results_external);
aasort($results_external,"created_on");
$returns_buy_external[]=array_reverse($results_external, true);
Run Code Online (Sandbox Code Playgroud)
如果我使用这样的代码,下面是我得到的错误
遇到PHP错误严重性:通知
消息:数组到字符串转换
文件名:models/product_model.php
行号:3550
3550行是array_unique($ results_external);
任何人都可以帮助我,为什么会出现这样的错误以及如何解决它?
results_external样本格式如下
Array
(
[0] => Array
(
[id] => 144
[name] => test
[slug] => test
[images] => {"9eebd0f69772dd3bdf8c787864437c85":{"filename":"9eebd0f69772dd3bdf8c787864437c85.png","alt":"TRESemme Smooth and Shine","caption":""}}
[track_stock] => 1
[seo_title] => ttt
[qty] => 0
[product_type] => 0
[price] => 0.00
[saleprice] => 0.00
[external_links] => http://test.com
[external_price] => 285.00
[external_saleprice] => 285.00
[created_on] => 2013-11-08 15:03:24
)
)
Run Code Online (Sandbox Code Playgroud) 如何检查请求是否为AJAX?我正在使用CodeIgniter.我有一个链接,当它单击时,它将打开弹出对话框窗口,这是通过ajax请求控制器名称完成的login_window().
//Here is the controller name:
function login_window(){
// request via ajax
$this->load->view("login_window");
}
Run Code Online (Sandbox Code Playgroud)
//here is the jquery code:
//I am using a jquery plugin FACEBOX
$('a[rel*=dialog]').facebox();
<a href="http://localhost/codeigniter/login_window" rel="dialog">Login</a>
Run Code Online (Sandbox Code Playgroud)
我想检查它是否是一个AJAX请求,如果没有,我会将它们重定向到主页.所以他们无法访问仅适用于ajax请求的页面.
在CodeIgniter中,如何避免sql注入?是否有任何方法在配置文件中设置以避免sql注入?我正在使用此代码来选择值:
$this->db->query("SELECT * FROM tablename WHERE var='$val1'");
Run Code Online (Sandbox Code Playgroud)
这用于插入值:
$this->db->query("INSERT INTO tablename (`var1`,`var2`) VALUES ('$val1','$val2')");
Run Code Online (Sandbox Code Playgroud)
用于从数据库中插入和选择值的另一种方法是CodeIgniter insert()和get()方法.使用CodeIgniter的bulit-in函数时是否有机会进行sql注入
我想在CI中组合AND OR mysql查询.我已经看过这个帖子:http://codeigniter.com/forums/viewthread/92818/.但他们没有在那里提供确切的解决方案.
如何使用严格的CI框架创建以下查询?(我可以在没有括号的情况下轻松创建查询,但它不是同一个查询.)
SELECT * FROM `Persons` WHERE
LastName='Svendson' AND Age="12" AND
(FirstName='Tove' OR FirstName='Ola' OR Gender="M" OR Country="India")
Run Code Online (Sandbox Code Playgroud)
PS:这只是一个示例查询,即使它没有意义也不建议在单个内部编写查询的整个OR部分where().
编辑:基本上我想要执行以下简单查询:
SELECT * FROM `table` WHERE field1='value1' AND (field2='value2' OR field3='value3')
Run Code Online (Sandbox Code Playgroud) 我在PHP脚本中,我想检查请求是否是Ajax请求.(基本上不允许直接脚本访问,而不是Ajax调用.)
所以,我IS_AJAX在主index.php文件中的某个地方定义:
define('IS_AJAX',
isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
Run Code Online (Sandbox Code Playgroud)
然后在我的脚本顶部检查它:
if (!IS_AJAX) exit('No direct script access allowed');
Run Code Online (Sandbox Code Playgroud)
由于我是CodeIgniter的新手,我想知道:
我在我的Codeigniter网站上使用PostgreSQL.我正在使用杂货店crud来添加,编辑和删除操作.在进行编辑或添加时,我想根据内容的ID动态重命名上传的文件.我可以使用杂货crud的callback_after_upload功能来做到这一点.
在添加新内容时,我想要内容的下一个ID.我尝试使用nextval()函数,但序列随之增加.如何在不使用nextval()函数的情况下获取序列的最后一个值?
或者有一种简单的方法可以做到这一点吗?
我一直在寻找并努力工作3天才能使这个工作,但我不能.我想要做的是使用多文件输入表单,然后上传它们.我不能只使用固定数量的文件上传.我在StackOverflow上尝试了很多解决方案,但我找不到工作的解决方案.
这是我的上传控制器
<?php
class Upload extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->helper(array('form', 'url','html'));
}
function index()
{
$this->load->view('pages/uploadform', array('error' => ' ' ));
}
function do_upload()
{
$config['upload_path'] = './Images/';
$config['allowed_types'] = 'gif|jpg|png';
$this->load->library('upload');
foreach($_FILES['userfile'] as $key => $value)
{
if( ! empty($key['name']))
{
$this->upload->initialize($config);
if ( ! $this->upload->do_upload($key))
{
$error['error'] = $this->upload->display_errors();
$this->load->view('pages/uploadform', $error);
}
else
{
$data[$key] = array('upload_data' => $this->upload->data());
$this->load->view('pages/uploadsuccess', $data[$key]);
}
}
}
}
}
?>
Run Code Online (Sandbox Code Playgroud)
我的上传表格是This.
<html>
<head>
<title>Upload Form</title>
</head>
<body>
<?php …Run Code Online (Sandbox Code Playgroud) 可以在CodeIgniter Active Record中使用多个INSERT记录而不使用forach,foreach等?
我目前的代码:
foreach($tags as $tag) {
$tag = trim($tag);
$data = array(
'topic_id' => $topic_id,
'user_id' => $user_id,
'text' => $tag
);
$this->db->insert('topic_tags', $data);
}
Run Code Online (Sandbox Code Playgroud) codeigniter ×10
php ×5
ajax ×2
activerecord ×1
arrays ×1
built-in ×1
file ×1
function ×1
mysql ×1
nextval ×1
postgresql ×1
sequence ×1
unit-testing ×1
upload ×1