我知道你们中的一些人可能会关闭这个问题,但我的问题来自你和你的答案.我正在阅读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
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.ini文件中将upload_max_filesize更改为150MB.
但 http://localhost/info.php显示upload_max_filesize仍显示16MB.
我也重新启动了服务器.
有什么问题?
我无法找到解决方案.
我正在使用htmlspecialchars()函数来防止XSS攻击.我怀疑从下面将数据存储在数据库中的更好方法是什么.
方法1:应用htmlspecialchars()函数后存储用户输入值.使用它,用户输入"<script>"将变为"< script>" .
方法2:按原样存储用户输入并htmlspecialchars()在检索数据并在页面上显示时应用方法.
我怀疑的原因是我相信使用方法1会在数据库上产生开销,而使用方法2数据需要在通过php请求时反复转换.所以我不确定哪一个更好.
有关更多信息,我正在使用,htmlspecialchars($val, ENT_QUOTES, "UTF-8")以便转换'和'.
请帮我清除疑惑.如果可能,还提供说明.
谢谢.
我在为简单的会话包装器编写单元测试时遇到问题.
这个类本身有一些基本的功能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)
在编写我的单位集时,我有以下setUp和tearDown方法.我有这些因为我希望每个运行的测试都有一个新的会话环境.
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- 它告诉我我有一个有效的会话.
有没有人有经验单元测试会话包装?
其他信息:
我正在创建一个消息系统(使用PHP),并希望为每条消息分配一个ID号(除了每个具有唯一ID号的实际消息)...但是,如果有人回复消息,那么我希望能够给该消息提供与被回复的消息相同的ID ...当然,我可以按时间显示它们并按顺序显示它们.
那么,如果我给字段一个auto_increment类型是否能够被覆盖?
含义...每条新消息都有自动值,例如1,2,3等,但有人回复2号,所以它的ID也需要2
或者有更好的方法吗?
我在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中加载正确文件的任何想法?
嘿,我正在使用此代码
<?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)
什么地方出了错?
在PHPStorm 3.0中,PHP字符串如:
$sString = '<div><span class="someClass">test</span></div>';
Run Code Online (Sandbox Code Playgroud)
具有HTML语法/开始和结束括号突出显示.
我想禁用此行为并仅将其显示为字符串.
有人想出我可以改变的地方吗?
我有这个公共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