小编Kok*_*kos的帖子

是否需要从数据库中转义用户输入?

所以我知道MySQL注入并在将它放入我的数据库之前总是转义我的所有用户输入.但是我想知道,想象一个用户试图提交一个查询注入,我逃避它.如果我稍后从数据库中获取此值并在查询中使用它,该怎么办?我必须再次逃脱吗?

所以:( sql::escape()包含我的转义功能)

$userinput = "'); DROP `table` --";
mysql_query("INSERT INTO `table` 
             (`foo`,`bar`) 
             VALUES 
             ('foobar','".sql::escape($userinput)."')");

// insert php/mysql to fetch `table`.`bar` into $output here

mysql_query("INSERT INTO `table2` 
            (`foo`,`bar`) 
            VALUES
            ('foobar','".$output."')");
Run Code Online (Sandbox Code Playgroud)

MySQL会自动转义它们的输出还是类似的东西,还是应该在第二个查询中转义?

这是一个测试用例,但这在我的程序中以其他方式发生,我想知道这样的情况下安全性有多紧.

编辑

我的逃生功能

static function escape($string){

    if(get_magic_quotes_gpc()) 
        $string = stripslashes($string); 

    return mysql_real_escape_string($string);

}
Run Code Online (Sandbox Code Playgroud)

php mysql user-input sql-injection escaping

15
推荐指数
2
解决办法
6306
查看次数

在PHP中的变量中存储内联HTML

我很想知道,主要是因为我认为我已经在某个地方看过它,如果可以将HTML存储在一个变量中,如下所示(我知道这没有意义,只是为了澄清我的问题):

<? $var = ' ?>
text goes here
<? '; ?>
Run Code Online (Sandbox Code Playgroud)

然后$var就会平等text goes here

html php variables

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

无法打开流:没有这样的文件或目录,是的!

我有一个问题需要一些文件,PHP告诉我这些文件不存在,但当我扫描目录它告诉我它确实存在.

我已经将文件简化为require功能,但它仍然无法正常工作.

这是我的设置:

root/
    test.php
    test/
        test2.php
        sub/
            test3.php
Run Code Online (Sandbox Code Playgroud)

test.php的

echo    'test';
require 'test/sub/test3.php';
Run Code Online (Sandbox Code Playgroud)

test/test2.php(由于某种原因未包含的文件)

echo    'test2';
Run Code Online (Sandbox Code Playgroud)

测试/分/ test3.php

echo    'test3';
/* 
because we are still on test.php, the include path is the root
that means the following would work:
require 'test/test2.php';
however I don't know this path in this file. (it's dynamic)
I thought this would work:
*/
set_include_path(dirname(__FILE__));
require '../test2.php';
Run Code Online (Sandbox Code Playgroud)

编辑

好的,当我改变这个:

set_include_path(dirname(__FILE__));
require '../test2.php';
Run Code Online (Sandbox Code Playgroud)

set_include_path(dirname(__FILE__)."/../"));
require 'test2.php';
Run Code Online (Sandbox Code Playgroud)

有用.wtf php?


现在这是我的输出:

testtest3
Warning: require(../test2.php) …
Run Code Online (Sandbox Code Playgroud)

php require

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

使用一个函数将ASCII和UTF-8转换为非特殊字符

因此,我正在构建一个使用已经设置的数据库源的网站,并且已经被客户端用于所有其他网站已有一段时间了.

他们通过外部程序填充这个数据库,我无法改变我获取数据的方式.

现在我有以下问题,有时候我会得到UTF-8字符串,有时候是ASCII字符串(我希望我的这些条款正确,有时它们对我来说仍然有点模糊).

所以我可以得到这个:Sc&eacute;nic或者Scénic.

现在的问题是,我必须将其转换为非特殊字符(因此它会成为Scenic).

我不认为有一个转换ée(如果有告诉)的功能所以我可能需要为包含所有源和目的地的数组创建一个数组,但更大的问题是转换&eacute;到它时é不会破坏é那个功能.

或者我应该只创建一个包含所有内容 的数组
(例如:array('é'=>'e','&eacute;'=>'e');等等

我知道怎么去&eacute;é,这样做utf8_encode(html_entity_decode('&eacute;')),但是将é通过此相同的函数将返回é.

也许我接近这个错误的方式,但在那种情况下,我很想知道我应该如何接近它.

php ascii utf-8 special-characters

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

Google Closure 编译器错误地删除了函数调用

我正在开发一个 HTML5 游戏,在高级模式下使用 Phaser 和 Google Closure 编译器来打包游戏。

我遇到了一个问题,似乎我无法销毁精灵。检查编译器的输出后,我注意到它不断删除我的销毁函数调用。

我的代码很简单,我已经测试了以下内容:

sprite.destroy();Phaser.Component.Destroy.prototype.destroy.call(sprite);

这两行都只是从我的代码库中删除。这并不是因为它是无法访问的代码,如果我将console.log语句放在相同的范围内,它们就会保留在那里。

所以原来的代码是这样的:

if (typeof this.sprite != 'undefined'){
    console.log('destroy sprite');
    this.sprite.destroy();
    Phaser.Component.Destroy.prototype.destroy.call(this.sprite);
    console.log('sprite destroyed');
}
Run Code Online (Sandbox Code Playgroud)

它被编译为:

"undefined"!=typeof this.sprite&&(console.log("destroy sprite"),console.log("sprite destroyed"))
Run Code Online (Sandbox Code Playgroud)

我不明白为什么代码被删除,Phaser 设置为外部,并且我没有使用任何其他方法或 Phaser 类遇到此问题。

顺便说一下,简单地调用eval('this.sprite.destroy();');就可以了。这证明该函数确实存在。然而,这是一个非常糟糕的解决方案,并且只有在编译器在这种情况下没有替换时才有效sprite

更新

我已经能够用很少的代码可靠地重现该问题,请参阅下面的答案。但我还不知道为什么会发生这种情况。

更新2

感谢 Hacketo,我们发现出现此问题是因为缺少正确的 Phaser 外部文件。专门针对此问题创建一个文件可以修复它,但是如果没有完整的文件,总会有可能出现更多问题。

对于这个特定问题,添加以下文件作为 extern 修复了它:http ://pastebin.com/nXA0fiZr

javascript google-closure-compiler typescript phaser-framework

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

jQuery/JS插件为新用户创建网站介绍/展示

我想为新客户创建网站介绍.

是否有任何插件/框架突出显示网站的某些区域并显示这些区域的文本?我在大约一年前看到这样的插件与演示但无法找到它.

我更喜欢独立或基于jQuery.

谢谢

javascript jquery highlighting

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

修剪连续的重复字符

所以我通过执行以下操作为我的页面创建URL:

$uri = strtolower($info->name);
$uri = str_replace('&','and',$uri);

$uri = $info->id."-".preg_replace('/[^a-zA-Z0-9]/','-',$uri);
Run Code Online (Sandbox Code Playgroud)

基本上我做的一切小写,改变&and和更改所有特殊字符的-.我唯一的问题,如果现在比如$info->namethis is - a string它会显示为this-is---a-string.

我希望这可以成为this-is-a-string没有做类似的事情str_replace('---','-',$input);

我想我需要一个正则表达式,但我对那些很可怕,所以我想知道是否有人可以帮助我.

php regex

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

三排流体滚动中心CSS布局

我目前正在为我正在开发的应用程序构建HTML和CSS.

此应用程序有一个固定的高度标题,一个固定的高度页脚和一个应该占据其余空间的中间区域.

问题是我希望页眉和页脚在整个时间内保持固定,而内容如果变得太大则会滚动.

我已经能够将页眉和页脚固定到位的情况下滚动内容,但这会使用push div使得滚动条在标题后面消失,另一个选项使它在页脚后面消失..我有一个很难让div在超过最大尺寸时滚动而不给它100%的高度.

这是我到目前为止:

http://jsfiddle.net/7gmpu/

纯CSS可以实现吗?或者我每次调整大小时都必须使用javascript计算窗口高度?

我的"解决方案"是否接近?

html css

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

查看 AWS CloudWatch 中的实例数量/正确配置实例扩展

我目前正在开发一个使用 AWS 进行(除其他外)负载平衡的高流量网站。我们正在配置负载平衡器,因此我们有足够的实例运行以保持站点正常运行,但不会太多导致我们亏损。

我们现在解决这个问题的方法是密切关注 CloudWatch 中的 CPU 利用率并相应地更改我们的配置。

但我们遇到的一个问题是,我们似乎无法弄清楚如何让 CloudWatch 绘制正在运行的实例数量的图表,以便我们可以将其抵消到 CPU 使用率。我们只能看到当前有多少实例处于活动状态,因此我们最终不得不多次检查,而不仅仅是回顾过去几小时/几天/几周的统计数据。

理想情况下,我希望查看每个 Elastic Beanstalk 应用程序的实例数量图表。

我对 AWS 及其所有组件还很陌生,所以我可能以完全错误的方式看待这个问题,所以如果有人对如何正确配置实例扩展有任何其他建议和/或资源,我会喜欢听说它。

amazon-web-services amazon-cloudwatch amazon-elastic-beanstalk

4
推荐指数
2
解决办法
2273
查看次数

使用php正则表达式解析块

我正在尝试用PHP写一个(我认为)非常简单的RegEx,但它不起作用.基本上我有一个像这样定义的块:

%%%%blockname%%%%
stuff goes here
%%%%/blockname%%%%
Run Code Online (Sandbox Code Playgroud)

我对RegEx并不擅长,但这是我试过的:

preg_match_all('/^%%%%(.*?)%%%%(.*?)%%%%\/(.*?)%%%%$/i',$input,$matches);
Run Code Online (Sandbox Code Playgroud)

它返回一个包含4个空条目的数组.

我想它除了实际工作之外还需要某种指针用于第三场比赛,因为它应该等于第一场比赛?

请赐教:)

php regex block

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