我似乎无法在iPad上捕捉滚动事件.这些都不起作用,我做错了什么?
window.onscroll=myFunction;
document.onscroll=myFunction;
window.attachEvent("scroll",myFunction,false);
document.attachEvent("scroll",myFunction,false);
Run Code Online (Sandbox Code Playgroud)
它们甚至可以在Windows上的Safari 3上运行.具有讽刺意味的是,window.onload=
如果您不介意破坏现有事件,PC上的每个浏览器都会支持.但没有去iPad.
很多PHP程序都要求用户以明文形式(以字符串或常量形式)将mysql密码存储在应用程序根目录的配置文件中,这一直困扰着我.
经过这么多年,有没有更好的方法呢?
到目前为止,我已经提出了两个最小的安全性提升:
使用.htaccess中的规则通过网络使文件无法读取(如果php失败或有安全漏洞需要读取php源代码)
在建立db connect(unset)之后销毁内存中的密码(以防止来自安全漏洞,注入等的字符串转储)
但当然这些都没有解决原来的问题.
感谢您的任何其他想法!
是否有任何捷径可以在javascript中完成相当于PHP的array_flip,还是必须通过暴力循环来完成?
它必须用于几十个阵列,所以即使很小的加速也可能会加起来.
我目前正在开发一个PHP CMF,它最终将在商业上可用,我想使用特征.然而问题是特性是PHP 5.4特性,显然流行的Suhosin安全补丁与PHP 5.4不兼容.
所以我的问题是:在没有Suhosin安全补丁的情况下运行PHP网站是否安全?如果没有,我会让自己和其他人使用我的CMF的漏洞是什么?
注意:我不关心共享托管.预计使用我的CMF的任何人都可以对其Web服务器进行管理控制.
我在PHP中有一个奇怪的内存问题.我认为有些东西只允许一个数组最大为0.25M.看起来脚本在崩溃之前只使用了大约6M.
这是xdebug的输出:
这是它正在调用的功能.sql查询的结果是大约800行文本.
public function getOptions(){
$sql = "select Opt,
Code,
Description
from PCAOptions";
$result = sqlsrv_query($this->conn,$sql);
$arrayResult = array();
echo ini_get('memory_limit'); //this confirms that my memory limit is high enough
while($orderObject = sqlsrv_fetch_object($result,'PCA_Option')){
array_push($arrayResult, $orderObject);
}
return $arrayResult;
}
Run Code Online (Sandbox Code Playgroud) 我似乎无法找到解决方法.
在移动safari中的ios9上,如果webapp使用position:absolute
并且bottom:0
内容区域覆盖整个屏幕,则在landscape mode
safari导航栏中将覆盖内容的底部并且您无法滚动它 - 它不会以纵向阻止.
那么为什么徒步旅行bottom:0
在画像中得到正确而不是风景呢?
是否有任何解决方法,所以我可以实际做这样的事情而不必重复整个表达式或强制UNION或临时表?
SELECT (complex expression) AS variable1,
(complex expression based on variable1) AS variable2
Run Code Online (Sandbox Code Playgroud)
由于mysql的工作方式没有定义variable1并且第2项可用,因此上述概念永远不会起作用.
我要么必须重复变量2的表达式,要么使用UNION或临时表并使用两遍.
是否有一些我不知道的技巧可以更有效地实现这一目标?
(注意我需要知道variable1和variable2的答案,因为它们用于INSERT)
谢谢你的任何想法!
我知道这已被问过数十亿次,但我对于编码的安全性我是超级偏执/强迫症.我正在做一个小项目.会话数据仅包含:
user_id 1
user_name MyUsername
logged_in true
csrf_token 87cc51ee94178df79cccce2aebc45d53
这是我的代码.它是否足够安全,可以在小型CMS上使用?
session_start();
ini_set('session.cookie_httponly', 'On');
ini_set('session.cookie_secure', 'On');
ini_set('session.use_cookies', 'On');
ini_set('session.use_only_cookies', 'On');
$rand = rand(1, 10);
if ($rand != 1 || $rand != 3 || $rand != 5)
session_regenerate_id();
$user_ip = md5($_SERVER['REMOTE_ADDR']);
$user_agent = md5($_SERVER['HTTP_USER_AGENT']);
if (isset($_SESSION['user_ip'], $_SESSION['user_agent'])) {
$session_user_ip = $_SESSION['user_ip'];
$session_user_agent = $_SESSION['user_agent'];
if ($session_user_ip != $user_ip || $session_user_agent != $user_agent) {
unset($_SESSION);
session_destroy();
die('Error');
}
} else {
$_SESSION['user_ip'] = $user_ip;
$_SESSION['user_agent'] = $user_agent;
}
Run Code Online (Sandbox Code Playgroud)
然后调用会话:
$_SESSION['user_id'] = …
Run Code Online (Sandbox Code Playgroud) 出于好奇的好奇心,为什么javascript会接受
var z = z || [];
Run Code Online (Sandbox Code Playgroud)
初始化z(因为z可能最初定义)
但没有var,它会抛出一个错误(在全球空间)
z = z || [];
Run Code Online (Sandbox Code Playgroud)
(如果z先前未定义)
在全球空间中,您不需要使用VAR,但我得到它可能是不好的做法.
在你说这是一个重复的问题之前
注意声明"如果你在全球范围内那么没有区别."
显然,根据我的工作实例,这并非100%正确.
这是一个怪癖还是有合法的逻辑?
在我学会的时候添加答案摘要:
感谢蒂姆(见下文)我误解的关键是没有意识到这一点(javascript的基础)
var z; 如果z已经存在,则绝对没有
这就是这个表达式似乎有两种方式,如果你错误的假设"var z"总是初始化.
从左边开始,"var z"只是确保定义了z,但是如果已经存在,则实际上不会影响任何现有值.然后在右边,如果z已经存在,则使用它,否则,变量刚刚被声明(但是为空),因此它不会被使用但不会引发错误.
这是关于Javascript中这种范围和提升问题的优秀文章:http: //www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting
非常感谢minitech和其他所有贡献者!
在一个简单但非常大的InnoDB表,我对A列的唯一索引,我想在(整数)列A的为了得到(整数)B列的列表
非常简单的查询,我正在翻阅数百万条记录.
SELECT B FROM hugeTable ORDER BY A LIMIT 10000 OFFSET 500000
在非常快的服务器上每次查询需要10秒钟?
Filesort: Yes Filesort_on_disk: Yes Merge_passes: 9
这对我来说没有意义,为什么它不能使用索引A?
说明显示简单,没有可能的键和文件.