在对前一个问题的评论中,有人说下面的sql语句打开了我的sql注入:
select
ss.*,
se.name as engine,
ss.last_run_at + interval ss.refresh_frequency day as next_run_at,
se.logo_name
from
searches ss join search_engines se on ss.engine_id = se.id
where
ss.user_id='.$user_id.'
group by ss.id
order by ss.project_id, ss.domain, ss.keywords
Run Code Online (Sandbox Code Playgroud)
假设$userid变量被正确转义,这是如何使我容易受到攻击的,我该怎么做才能解决它?
我正在使用从我的数据库中提取的数据数组为我自动生成表的表类.
型号:
function get_reports_by_user_id($userid)
{
return $this->db->get_where('ss2_report',array('userid' => $userid))->result_array();
}
Run Code Online (Sandbox Code Playgroud)
控制器:
function index()
{
echo $this->table->generate($this->mymodel->get_reports_by_user_id('1234'));
}
Run Code Online (Sandbox Code Playgroud)
当我使用它时,控制器最终将移动到视图.这会生成表格,但我想添加一个字段的链接.例如,id允许我链接到该报告的id的数据页面的列.我知道我可以手工输出老式的表格.然后我可以添加我想要的任何链接,但我希望能够尽可能多地使用自动生成.必须有一种方法来做一些像连接表格单元格那样常见的事情.有没有人有任何想法?
编辑:
用户Java PHP主要就在下面.这是使它工作的代码:
function get_reports_by_user_id($userid)
{
$rows = $this->db->get_where('ss2_report',array('userid' => $userid))->result_array();
foreach ($rows as $count => $row)
{
$rows[$count]['id'] = anchor('report/'.$row['id'],$row['id']);
}
return $rows;
}
Run Code Online (Sandbox Code Playgroud)
我只需要用锚文本版本替换原始数组中的值.
我需要修改以下MySQL语句以包含来自第三个表的信息......但我很糟糕.
select
ss.*,
se.name as engine,
ss.last_run_at + interval ss.refresh_frequency day as next_run_at,
se.logo_name
from
searches ss join search_engines se on ss.engine_id = se.id
where
ss.user_id='.$user_id.'
group by ss.id
order by ss.project_id, ss.domain, ss.keywords
Run Code Online (Sandbox Code Playgroud)
我还需要包括检索projects.project_name通过匹配searches.project_id来projects.id.
在第一次单击时,它按预期工作:
目前很好.
在第二次点击,...
在第三次点击,...
因此,当内容应该再次隐藏时,除了第二次单击之外,一切正常.
这是jQuery:
-
$('.open_user_urls').live('click', function() {
$('#user_urls').slideDown('slow');
$(this).addClass('close_user_urls');
$(this).removeClass('open_user_urls');
$(this).html('Close Search History');
return false;
});
$('.close_user_urls').live('click', function() {
$('#user_urls').slideUp('slow');
$(this).addClass('open_user_urls');
$(this).removeClass('close_user_urls');
$(this).html('Show Search History');
return false;
});
Run Code Online (Sandbox Code Playgroud)
这是它所采用的HTML:
<h3 class='open_user_urls'>Show Search History</h3>
<div id='user_urls'>
// an OL tag with content
</div>
Run Code Online (Sandbox Code Playgroud)
唯一适用的CSS:
#user_urls { display: none; }
Run Code Online (Sandbox Code Playgroud)
编辑 - 我用下面的答案中提供的功能等效代码替换了我的jquery代码,但问题仍然存在.所以原因必须在别处.我记得这个代码最初工作,但后来停止了.我很难过.是时候把一切都剥掉了......
编辑2 - 由于bug必须在别处,我接受我的jquery的代码改进作为答案.谢谢.
编辑3 - 找到问题的根源.
在#user_urls div中,我有一系列带有以下css的OL:
.url_list {float: left; width: 285px; list-style-position: outside; margin-left: 25px;} …Run Code Online (Sandbox Code Playgroud) 我无法提出查询,找到所有购买了PROD1和PROD2的客户.
这是一个伪查询,看起来像我想做的事情:(显然这不起作用)
SELECT COUNT(DISTINCT userid)
FROM TRANSACTIONS
WHERE product_id = 'prod1'
AND product_id = 'prod2'
Run Code Online (Sandbox Code Playgroud)
因此,基本上我正在尝试计算transactions表中包含product_id' prod1'和' prod2' 的事务的不同用户ID的数量.每个事务都存储在transactions表中的一行中.
我有一个"链接",点击后会显示满满的内容.单击后,"打开"按钮将变为具有关闭功能的"关闭"按钮.
这是jQuery:
$(document).ready(function(){
$('.open_user_urls').click(function() {
$('#user_urls').slideDown('slow');
$('.open_user_urls').addClass('close_user_urls');
$('.open_user_urls').removeClass('open_user_urls');
$('.close_user_urls').html('Close Search History');
return false;
}
);
$('.close_user_urls').click(function() {
$('#user_urls').slideUp('slow');
$('.close_user_urls').addClass('open_user_urls');
$('.close_user_urls').removeClass('close_user_urls');
$('.open_user_urls').html('Show Search History');
return false;
}
);
});
Run Code Online (Sandbox Code Playgroud)
它在第一次点击时按预期工作.显示div,html内容更改为新文本,并在链接上更改类.
但再次点击关闭它什么也没做.如果我将.close__user_urls单击功能粘贴到Firebug控制台,运行它,然后单击,它会按预期关闭.
有任何想法吗?
我正试图在页面的左上角放置一个div,我想让它留在那里,无论浏览器窗口大小调整或页面滚动.
如何使用纯CSS(如果可能)或使用jQuery执行此操作?
我有一个视频片段持续时间列表,我需要加起来才能获得总持续时间.
这个系列是这样的:
...等等
我需要加上分钟和秒来获得总视频时长.
这是我接受的答案的修改功能:
function getTotalDuration ($durations) {
$total = 0;
foreach ($durations as $duration) {
$duration = explode(':',$duration);
$total += $duration[0] * 60;
$total += $duration[1];
}
$mins = floor($total / 60);
$secs = str_pad ( $total % 60, '2', '0', STR_PAD_LEFT);
return $mins.':'.$secs;
}
Run Code Online (Sandbox Code Playgroud)
只是确保输出看起来正确.
在我的页面上,我有一个下拉选择框,默认值为(空).当用户选择条目时,将显示该条目类型的相应表单.
几个问题..
.change()事件,因此不会显示表单框.他们必须选择不同的<option>,然后点击回到他们原来的选择,让他们的论坛回来.这是代码:
<script type="text/javascript">
$(document).ready(function(){
$('#select_type').change(function () {
$('fieldset').css('display','none'); # hide all the forms on the page
var selectval = $('#select_type').val();
if (selectval == 'instance')
{
$('#instance').toggle();
}
if (selectval == 'mob')
{
$('#mob').toggle();
}
if (selectval == 'dailyquest')
{
$('#dailyquest').toggle();
}
if (selectval == 'repeatablequest')
{
$('#repeatablequest').toggle();
}
if (selectval == 'zonequest')
{
$('#zonequest').toggle();
}
if (selectval == 'reward')
{
$('#reward').toggle();
}
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
帮助JS的大师!
此查询选择特定日期范围内的所有唯一访问者会话:
select distinct(accessid) from accesslog where date > '2009-09-01'
Run Code Online (Sandbox Code Playgroud)
我有以下字段的索引:
这是解释的样子:
mysql> explain select distinct(accessid) from accesslog where date > '2009-09-01';
+----+-------------+-----------+-------+----------------------+------+---------+------+-------+------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-----------+-------+----------------------+------+---------+------+-------+------------------------------+
| 1 | SIMPLE | accesslog | range | date,dateurl,dateaff | date | 3 | NULL | 64623 | Using where; Using temporary |
+----+-------------+-----------+-------+----------------------+------+---------+------+-------+------------------------------+
mysql> explain select distinct(accessid) from accesslog;
+----+-------------+-----------+-------+---------------+----------+---------+------+---------+-------------+
| …Run Code Online (Sandbox Code Playgroud) jquery ×4
mysql ×4
html ×2
javascript ×2
anchor ×1
codeigniter ×1
css ×1
css-position ×1
distinct ×1
forms ×1
html-select ×1
indexing ×1
join ×1
math ×1
optimization ×1
php ×1
security ×1
sql ×1
time ×1