小编use*_*841的帖子

单独的php文件作为模板 - 安全隐患?

我正在寻找用于php的模板系统,我开始相信纯PHP代码似乎是我想要使用的解决方案.

我是唯一的开发人员,所以没有设计师需要一个神经紧张的竞技场工作.像smarty这样的模板引擎似乎遭受了"内部平台效应".如果我坚持使用良好实践(预先计算的值,仅使用foreach),我认为这将有效.

我的目标是为每个页面共享的html字符串提供单个源.我的想法是,通过include访问的单独的php文件是实现这一目标的好方法.

但是,我担心这可能会给网站带来安全隐患 - 我现在想不出任何具体内容,但是有人可以猜出模板的名称并直接请求它,也许会暴露他们需要的东西'看.(我想我可以检查它本身是否是请求.)我有预感这可能是坏事,所以我不想继续这样做,创造我担心会发生的事情,然后扔掉那个工作.

如果单独的文件不是最好的主意,我还应该使用什么来基本上存储整个网站的字符串?包含中的字符串常量,我可以在sprintf()中使用?一个从页面特定的html部分的参数返回html字符串的函数?

php security templates

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

在php中组织技术和面向用户的错误消息

我在为两个交互类组织我的错误消息时遇到了一些麻烦.一个对象的状态是'error-ish',出现问题,或意外发生,但情况仍然可以挽救.我不想使用异常,1.因为它们只有一个字符串用于消息,而且2.因为我想在错误之后访问该对象.至少,我想使用它的一些get()方法在异常后构造一个有用的错误消息!

最终我有两条想要传达的信息:一个是我自己作为编码员,一个出错了.该字符串将包含文件,行,函数/方法,参数和结果的技术详细信息.显然,我不想向用户显示这个,所以我想向用户显示另一个错误消息字符串("找不到那个电子邮件地址"的东西).

因此我想到了构建一个错误消息数组,它可以使用来自异常的错误代码或状态代码作为各种消息的密钥.(虽然如果我这样做,我在哪里存储消息数组?)另一个选择可能是创建一个错误状态对象.

是否有类似"错误模式"的东西,类似于设计模式?

php error-handling exception

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

什么叫`返回-1 || 退出-1`是什么意思?

我对以下bash行感到困惑,由其他人写的:

return -1 || exit -1
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我理解||构造意味着如果第一部分(在这种情况下return -1)失败(即返回非零代码),则执行第二部分(exit -1).同样奇怪的是,这个语句不是任何函数的一部分,而是在脚本的主体中.

我感谢有人向我解释这一点.

bash

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

empty()不是有效的回调?

我想在php中使用数组映射中的empty().我收到的错误是它不是一个有效的回调.

$ cat test.php
<?

$arrays = array(
   'arrEmpty' => array(
        '','',''
    ),
);

foreach ( $arrays as $key => $array ) {

        echo $key . "\n";
        echo array_reduce( $array, "empty" );
        var_dump( array_map("empty", $array) );
        echo "\n\n";

}
Run Code Online (Sandbox Code Playgroud)
$ php test.php
arrEmpty

Warning: array_reduce(): The second argument, 'empty', should be a valid callback in /var/www/authentication_class/test.php on line 12

Warning: array_map(): The first argument, 'empty', should be either NULL or a valid callback in /var/www/authentication_class/test.php on line 13
NULL
Run Code Online (Sandbox Code Playgroud)

这不应该工作吗? …

php callback array-map

3
推荐指数
2
解决办法
2247
查看次数

在记录集中没有出现的字段上选择DISTINCT?

我想做一个SELECT DISTINCT guid, ...,但我不想guid出现在记录集中.我该怎么做呢?

sql database-agnostic

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

在git中显示每个分支的最新提交

有没有办法在git中显示每个分支的最新提交?

我在git中有一个代码库,我已经设置了一段时间.它有几个分支用于不同的功能.我需要进入并更新/解决一些代码然而我选择将它们命名为太一般,现在我无法分辨我最后一个工作,甚至哪个具有我的功能.

理想情况下,我希望在每个分支中看到最后一次提交,以便概述我上次遗留的内容.有命令这样做吗?我只需要看看我上次工作的地方.我想避免切换到每个分支并查看其日志.

git

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

子目录在.gitignore白名单中被忽略

我正在为我的Linux主目录创建一个git存储库.除了我白名单的文件/目录之外,我想忽略大多数事情.我有这个:

# Ignore everything
*
# But not these files...
!.gitignore
!*/scripts/*
# the above line doesn't work, so this is a test:
!./scripts/*
Run Code Online (Sandbox Code Playgroud)

但它忽略了我添加到scripts/子目录中的文件.我一直在添加东西-f,这是次优的.

这个问题的答案,Git不会取消忽略目录,对我不起作用.

Git版本2.1.4.

git

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

工匠错误不显示行号

我正在为我的Laravel 5.1应用程序编写一个控制台命令.在开发过程中,我在某个地方遇到了错误.当工匠报告错误时,它不会给我行号或文件; 我刚刚在红色背景中突出显示的shell中出现错误:

  [ErrorException]
  Undefined variable: answerer
Run Code Online (Sandbox Code Playgroud)

如何让工匠向我显示有关错误发生位置的更多信息,特别是行号和文件?

artisan laravel-5.1

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

无法将参数添加到自定义命令

我正在使用laravel 5.1。在debian bash shell中。我创建了一个名为Survey:complete的自定义控制台命令。我已经使用了一段时间,现在我想为要生成的调查数量添加一个可选参数。

但是,我已按照文档进行操作,但无法成功添加参数。我同样更改了签名:

protected $signature = 'survey:complete {--number=}';
Run Code Online (Sandbox Code Playgroud)

并试图引用该论点

public function handle() { 
    for( $i = 0; $i < $this->argument('number'); $i++ ) { 
Run Code Online (Sandbox Code Playgroud)

但是我得到这个错误:

$> php artisan survey:complete --number=1
[InvalidArgumentException]
The "number" argument does not exist.
Run Code Online (Sandbox Code Playgroud)

我print_r()的参数数组,我得到这个:

$ php artisan survey:complete --number=1
Array(
    [command] => survey:complete
)
[InvalidArgumentException]
The "number" argument does not exist.
Run Code Online (Sandbox Code Playgroud)

如何将参数添加到命令中?

laravel-5 laravel-5.1

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

$ _SERVER未使用命令行-r选项设置?

当我尝试从命令行php打印$ _SERVER变量时,它认为没有设置$ _SERVER.

$ php -r "print_r($_SERVER);"
Warning: print_r() expects at least 1 parameter, 0 given in Command line code on line 1
Run Code Online (Sandbox Code Playgroud)

但是,当它在文件中时,从命令行运行它会设置它

$ cat test.php
<?
print_r($_SERVER);

$ php test.php
Array
(
    [TERM] => xterm
    [SHELL] => /bin/bash
    [SSH_CLIENT] => 192.168.1.101 49319 22
    [SSH_TTY] => /dev/pts/0
...
Run Code Online (Sandbox Code Playgroud)

为什么?

php command-line

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