小编Wes*_*orp的帖子

准备语句保护您的数据库吗?

我知道你们中的一些人可能会关闭这个问题,但我的问题来自你和你的答案.我正在阅读SQL注入的过去两小时的问题和答案以及如何保护您的数据库.我看到的大量网页和教程也是如此.

我发现有一半人声称准备语句可以保护你的数据库,另外50人声称它不是.

另一方面,我读到mysql_real_escape_string完成这项工作,而其他人则认为不是.

我的问题是谁相信?

另外,这是一个适当的准备声明吗?

$stmt = $dbh->prepare("SELECT phpro_user_id, phpro_username, phpro_password FROM phpro_users 
                    WHERE phpro_username = :phpro_username AND phpro_password = :phpro_password");

        /*** bind the parameters ***/
        $stmt->bindParam(':phpro_username', $phpro_username, PDO::PARAM_STR);
        $stmt->bindParam(':phpro_password', $phpro_password, PDO::PARAM_STR, 40);

        /*** execute the prepared statement ***/
        $stmt->execute();
Run Code Online (Sandbox Code Playgroud)

php mysql sql

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

确定调用函数的命名空间

我想知道在调用函数时是否可以确定当前命名空间是什么.我有这个函数声明:

<?php
namespace Site\Action;
function add ($hook, $function) {
    /**
     * determine the namespace this was called from because
     * __NAMESPACE__ is "site\action" :(
     */
     if (is_callable($function))
         call_user_func($function);
}
?>
Run Code Online (Sandbox Code Playgroud)

在另一个文件上:

<?php
namespace Foo;
function bar () {
}
?>
Run Code Online (Sandbox Code Playgroud)

让我们说我把它作为我的程序代码:

<?php
namespace Foo;
Site\Action\add('hookname', 'bar');
?>
Run Code Online (Sandbox Code Playgroud)

假设Bar在这种情况下打算解决,Foo\bar因为那是从它调用的命名空间.

这是一个很长的解释,是否有可能确定Site\Action\add()调用的活动命名空间?

提前致谢.

php oop namespaces

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

PHP ini文件中的MAXIMUM文件上传大小是多少

我已经在php.ini文件中将upload_max_filesize更改为150MB.

http://localhost/info.php显示upload_max_filesize仍显示16MB.

我也重新启动了服务器.

有什么问题?

我无法找到解决方案.

php localhost

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

最好是在将用户输入存储到数据库之前对其进行转义/编码,还是将其存储在数据库中并在检索时将其转义?

我正在使用htmlspecialchars()函数来防止XSS攻击.我怀疑从下面将数据存储在数据库中的更好方法是什么.

方法1:应用htmlspecialchars()函数后存储用户输入值.使用它,用户输入"<script>"将变为"< script>" .

方法2:按原样存储用户输入并htmlspecialchars()在检索数据并在页面上显示时应用方法.

我怀疑的原因是我相信使用方法1会在数据库上产生开销,而使用方法2数据需要在通过php请求时反复转换.所以我不确定哪一个更好.

有关更多信息,我正在使用,htmlspecialchars($val, ENT_QUOTES, "UTF-8")以便转换'和'.

请帮我清除疑惑.如果可能,还提供说明.

谢谢.

php mysql xss htmlspecialchars

5
推荐指数
2
解决办法
2014
查看次数

会话开始/结束时的单元测试问题

我在为简单的会话包装器编写单元测试时遇到问题.

这个类本身有一些基本的功能set,get,exists等.所有这些功能有一个检查assertSessionStart其执行以下操作:

protected static function assertStarted()
{
    if (strlen(session_id()) < 1) {
        throw new Exception("Some text here");
    }
    return;
}
Run Code Online (Sandbox Code Playgroud)

在编写我的单位集时,我有以下setUptearDown方法.我有这些因为我希望每个运行的测试都有一个新的会话环境.

protected function setUp() {
    session_start();
}
protected function tearDown() {
    session_destroy();
}
Run Code Online (Sandbox Code Playgroud)

现在问题,我想要一个测试方法,set当我没有开始会话时尝试使用它.为了做到这一点,我将不得不破坏开始的会话setUp.像这样:

public function testGetWithoutSession() {
        session_destroy();
        $this->setExpectedException('Exception');
        ESL_Session::set('set', 'value');
        session_start();
    }
Run Code Online (Sandbox Code Playgroud)

然而,这会发出警告"试图破坏未初始化的会话".当我把一个echo session_id()权利放在前面时session_destroy- 它告诉我我有一个有效的会话.

有没有人有经验单元测试会话包装?

其他信息:

  1. PHP版本5.3.6
  2. Linux的

php phpunit unit-testing

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

MySQL覆盖auto_increment?

我正在创建一个消息系统(使用PHP),并希望为每条消息分配一个ID号(除了每个具有唯一ID号的实际消息)...但是,如果有人回复消息,那么我希望能够给该消息提供与被回复的消息相同的ID ...当然,我可以按时间显示它们并按顺序显示它们.

那么,如果我给字段一个auto_increment类型是否能够被覆盖?

含义...每条新消息都有自动值,例如1,2,3等,但有人回复2号,所以它的ID也需要2

或者有更好的方法吗?

php mysql

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

CakePHP插件CSS

我在CakePHP中为应用程序安装创建了一个插件.在我的插件文件夹中,我创建了文件夹结构:

/app
    /Plugin
        /Install
            /Controller
                /Component
            /Model
                /Behavior
            /View
                /Helper
                /Install
                /Layouts
                    /Installer.ctp
            /webroot
                /css
                    default.css
Run Code Online (Sandbox Code Playgroud)

现在在我的Installer.ctp中输入该代码:

<?php

    echo $this->Html->css('/Install/default.css');

?>
Run Code Online (Sandbox Code Playgroud)

但CakePHP将URL /cp/Install/default.css返回给我

有关如何使插件从插件文件夹webroot中加载正确文件的任何想法?

plugins cakephp cakephp-2.0

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

致命错误:调用未定义的函数phpinclude()

嘿,我正在使用此代码

<?php
header("Location: ../index.php");
?>
Run Code Online (Sandbox Code Playgroud)

它只是出现了这个错误:

Fatal error: Call to undefined function phpinclude() in /home/nzcraftn/public_html/filenz/upload/index.php on line 1
Run Code Online (Sandbox Code Playgroud)

什么地方出了错?

php header

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

PHPStorm禁用PHP字符串中的html语法突出显示

在PHPStorm 3.0中,PHP字符串如:

$sString = '<div><span class="someClass">test</span></div>';
Run Code Online (Sandbox Code Playgroud)

具有HTML语法/开始和结束括号突出显示.

我想禁用此行为并仅将其显示为字符串.

有人想出我可以改变的地方吗?

ide syntax-highlighting phpstorm

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

使用PHP从JSON数组中检索信息

我有这个公共JSON https://raw.github.com/currencybot/open-exchange-rates/master/latest.json,我需要从中提取数据,现在我尝试过这样的事情:

$input = file_get_contents("https://raw.github.com/currencybot/open-exchange-rates/master/latest.json");

$json = json_decode($input);

echo $json[rates]->EUR;
Run Code Online (Sandbox Code Playgroud)

但我得到一个空白页,任何建议?谢谢 !!STE

php json

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