小编Swi*_*ftD的帖子

Codeigniter $ this-> lang-> line(errors)没有用于tank auth错误消息的段落标记

我想知道是否有人可以帮助我.我目前正在尝试将tank auth集成到我的codeigniter网站中.我正慢慢地到达那里但是遇到了一个小绊脚石,因为当我将错误消息从html视图的一部分显示为javascript警告时,他们仍然会在错误消息周围打印出段落标记.

我认为作为数组/或多维数组传递给我的登录表单的错误消息是由控制器通过以下代码行生成的:

$data['errors'] = array();
foreach ($errors as $k => $v)   $data['errors'][$k] = $this->lang->line($v);
Run Code Online (Sandbox Code Playgroud)

这是我显示错误消息的代码:

if ((isset($errors[$login['name']]))||(isset($errors[$password['name']]))||(form_error($login['name']))||(form_error($password['name']))){
        echo'<script type="text/javascript">alert("';
}
echo form_error($login['name']);
echo isset($errors[$login['name']])?$errors[$login['name']]:'';
echo form_error($password['name']); 
echo isset($errors[$password['name']])?$errors[$password['name']]:'';
if ((isset($errors[$login['name']]))||(isset($errors[$password['name']]))||(form_error($login['name']))||(form_error($password['name']))){
        echo'")</script>';
}
Run Code Online (Sandbox Code Playgroud)

现在我的主要问题是如何删除paragreaph标签和我在codeigniter文档中找到了一个线索:http://codeigniter.com/user_guide/libraries/file_uploading.html这里的 关键部分是它说你可以设置执行此操作的上传脚本错误的分隔符:

$this->upload->display_errors('<p>', '</p>');
Run Code Online (Sandbox Code Playgroud)

但我不知道如何以及在何处将此应用于坦克认证.

我还有第二个问题,我会感谢能够回答的任何人,我对显示错误消息的代码感到有些困惑.例如:

echo form_error($password['name'])
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释一下,它一开始没有$所以它不是一个变量所以它是什么意思,我真正想要的是如何简化我的逻辑来检查错误消息,因为它目前令人难以置信的长时间啰嗦,并且有很多错误消息需要处理.

我很欣赏这里有很多事要处理,但任何帮助/解释都会感激不尽.

php codeigniter tankauth

2
推荐指数
1
解决办法
5262
查看次数

PHP =在字符串的末尾添加0

我有这个功能,它取一个项目的平均用户评级并将其转换为相关的类:

function get_user_rating_class($urate_ave){
    if($urate_ave==='0.0'){
        $user_rating_class='unrated_u';
    }else{
        $round_to = 0.5;
        $rounded = round($urate_ave / $round_to) * $round_to;
        $removedec = str_replace('.','',$rounded);
        if(strlen($removedec)<2){$removedec.'0';}
        $user_rating_class='rating_user_'+$removedec;
    }
    return $user_rating_class;
}
Run Code Online (Sandbox Code Playgroud)

不,当我把一个值,比如说3.0放到函数中时它应该作为rating_user_30出来,而不是它作为rating_user_3出来,所以这一行肯定有问题:

if(strlen($removedec)<2){$removedec.'0';}

我认为这可能是因为它将值$ removedec视为一个数字而不是一个字符串,所以我尝试在它之前添加这一行,但没有改变:

$removedec = strval($removedec);
Run Code Online (Sandbox Code Playgroud)

有人能告诉我这里做错了什么.

php

2
推荐指数
1
解决办法
3353
查看次数

数据库索引 - 它们应该是什么

我的大多数数据库表都有一个明确的唯一索引,通过它可以在90%的时间内完成查找,但我对这一点有点不确定 - 我有一个表跟踪我数据库中项目的用户评级总数,我现在想要添加另一个表,用ip地址列跟踪个人评级,以确保没有人可以评价两次.由于我可以看到这成为一个很大的高使用率表,因此正确优化它非常重要.(MYSQL表)

该表将包含以下字段:

rating_id(始终 - 唯一),item_id(始终 - 不唯一),user_id(可选 - 不唯一),ip_address(始终 - 不唯一),rating_value(始终 - 不唯一),has_review(bool)

现在我设想90%的查询是这样的:

当用户评价某些内容时 - 选择item_id = x和ip_address = y,(如果rows = 0)插入评级

在用户帐户页面中 - 选择ip_address = x或username = y的位置

现在搜索到的字段都不是唯一的,我仍然可以将它们用作索引(例如项目_id和ip_address),我可以有两个索引并且这仍然会提高非索引表的性能吗?

sql optimization database-design

1
推荐指数
1
解决办法
67
查看次数

Laravel 4 - 如何关闭时间戳以更新整个集合

我正在尝试对雄辩的集合进行大规模更新.

所以我有我的查询,看起来有点像这样:

\Responder::with('details')
      ->where('job_number', $project->job_number)
      ->where('batch_id', ((int) $batch_id) - 1)
      ->where('updated_at', '<=', $target_time)
      ->whereHas('transactions', function($q) {
            $q->where('status', 'success');
      }, '<', 1)
      ->whereHas('details', function($q) {
            $q->where('email', '<>', '');
      });
Run Code Online (Sandbox Code Playgroud)

这个查询对象存储为$ query(因为我正在重新使用它 - 我不想切换我正在进行查询的原因相同),然后我对集合执行更新,例如

$query->update(array('batch_id' => $batch_id));
Run Code Online (Sandbox Code Playgroud)

除非更新所有'updated_at'时间戳,否则这种方法很有效.现在我喜欢时间戳,它们在其他地方广泛使用,所以我不能一起关闭它们但我想我可以暂时禁用它们但我尝试了以下内容:

$query->timestamps = false;
$query->update(array('email_drop_off_index' => $batch_id));
Run Code Online (Sandbox Code Playgroud)

我可以确认这不起作用,有没有办法做到这一点?

任何帮助非常感谢

php laravel eloquent laravel-4

1
推荐指数
1
解决办法
483
查看次数

将字节数组的 golang 字符串格式转换回原始字节数组

所以我从一个消息作为一个字符串开始,把它变成一个字节数组并打印出来,我现在已经丢失了原始字符串但是有字节数组的字符串输出。我要我的绳子回来。(不要问我为什么这样做或如何...我真的没有,这只是为了说明目的)。

本质上,我缺少的一点是将字节数组的打印表示转换回字节数组的便捷方法。

请参阅下面的示例以更好地解释我正在尝试做的事情(完整的“otherWay”功能):

去游乐场

package main

import (
    "fmt"
)

func main() {
    // started with originalString and lost it
    originalString := "I'm a string I am!"

    // I have the output of 'oneWay()' in my clipboard, so could paste into code
    golangStringFormatOfByteArray := oneWay(originalString)
    fmt.Println("String as bytes:", golangStringFormatOfByteArray )

    // get original string back
    returnString := otherWay(golangStringFormatOfByteArray )
    fmt.Println("Original String:", returnString )

}

func oneWay(theString string) string {

    theStringAsBytes := []byte(theString)
    golangStringFormatOfByteArray := fmt.Sprintf("%v", theStringAsBytes)

    return golangStringFormatOfByteArray 
}

func …
Run Code Online (Sandbox Code Playgroud)

go

1
推荐指数
1
解决办法
1万
查看次数

解释并删除 docker exec 响应开始时无用的字节

我正在运行 docker api 函数:

func (cli *Client) ContainerExecAttach(ctx context.Context, execID string, config types.ExecConfig) (types.HijackedResponse, error)

当我使用内置的 bufio 阅读器阅读响应时:

line, _, err := resp.Reader.ReadLine()
Run Code Online (Sandbox Code Playgroud)

我没有收到错误,但如果我尝试将字节转换为字符串,应用程序就会崩溃 - 有问题的应用程序是一个 Windows 服务,我认为正因为如此,我正在努力从中找出错误。

我现在已经设法使用(日志到事件查看器)查看输出:

logger.Infof("res: %q", line)
Run Code Online (Sandbox Code Playgroud)

其输出是:

res: "\x01\x00\x00\x00\x00\x00\x00X{\"更新\":false,\"扫描\":false,\"进度\":0,\"发现\":false, \“已注册\”:假}”

现在,我期待着 json,但时髦的前缀是最不受欢迎的,知道这些字节是什么以及它们为什么在那里吗?我希望这能为我的下一个问题提供信息;删除它们或首先不接收它们的最干净的方法是什么?

我目前正在将字节修剪固定长度,但我认为我需要做一些更复杂的事情。我正在考虑保留这些字节:\x01 \x00但不确定我是否应该期待其他字节

go

1
推荐指数
1
解决办法
563
查看次数

除了SQL注入,我应该在网站中注意哪些其他安全漏洞?

我通常使用codeigniter框架,它提供了一些防止sql注入的帮助,例如xss clean表单输入数据.

我有一个基本的想法,sql注入是什么以及如何阻止它发生,但我的一个朋友有一个非常基本的网站,其中唯一的用户输入是电子邮件脚本的cgi表单 - 网站的部分被一些成人取代内容.

所以我很好奇有人能够控制这样一个基本网站,以及在构建自己的网站时我应该注意哪些漏洞?

html css php security codeigniter

0
推荐指数
1
解决办法
189
查看次数

Laravel - 帮助急切加载辅助关系(我目前运行了364个SQL查询)

我在Laravel 4中建立一个站点的管理员端,并且正在努力使一切都在雄辩中发挥作用.我正在尝试构建一个具有多个关系的对象.这似乎工作正常,直到我尝试加载次要关系.

这是我对YourDetail模型的调用:

$applicants = YourDetail::with(array('User', 'Application', 'SecondaryEds', 'SecondaryEds.SecondaryTypes', 'SecondaryEds.SecondaryGrades', 'FurtherEds', 'FurtherEds.FurtherTypes', 'FurtherEds.FurtherGrades', 'UniEds', 'UniEds.UniClassifications', 'UniEds.UniQualifications', 'WorkExperiences', 'WhyYou', 'StartDate', 'Referer'))->whereIn('user_id', $applicants);
Run Code Online (Sandbox Code Playgroud)

我的所有关系都在各种模型中定义,并且直接使用时工作正常.我遇到的问题是次要关系,例如

FurtherEds.FurtherTypes,FurtherEds.FurtherGrades,UniEds.UniClassifications,UniEds.UniQualifications,

等等

现在当我运行查询时,我得到了我所期望的 - 大约20个表示各种模型的选择查询,生成的选择查询带来了'FurtherEds.FurtherGrades'模型,例如如下所示:

select * from `further_grades` where `further_grades`.`deleted_at` is null and `further_grades`.`id` in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好...

当我尝试通过集合对象访问这些模型时出现问题;

所以我要说我现在循环遍历我的集合,将每个对象传递给一个如下所示的视图:

foreach($applicants as $applicant){
    View::make('ApplicantView', compact('applicant'));
}
Run Code Online (Sandbox Code Playgroud)

然后在我的视图中,我尝试遍历FurtherEds并回显出FurtherGrades模型的属性:

ApplicantView.blade.php

@foreach($applicant->FurtherEds as $fe)
    {{ $fe->FurtherGrades->name }}
@endforeach
Run Code Online (Sandbox Code Playgroud)

这将为每个申请人创建一个新的SQL查询,尽管我尝试过急切加载,例如

select * from `further_grades` where `further_grades`.`deleted_at` is null and `further_grades`.`id` = …
Run Code Online (Sandbox Code Playgroud)

php sql laravel eloquent laravel-4

0
推荐指数
1
解决办法
2485
查看次数