小编Wil*_*tin的帖子

为什么内部TABLE部分必须进行THAD TFOOT TBODY验证?

我经常使用THEAD,TBODY和TFOOT元素将我的数据表划分为可以用CSS单独处理的部分.我也明白,总有一个隐含的TBODY标签.

令我困惑的是这些必须进行验证的顺序.该表将验证:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Table Validation Test</title>
</head>
<body>

<table>

<thead>
<tr>
    <th scope="col">Enemies List</th>
</tr>
</thead>

<tfoot>
<tr>
    <td>&copy; Bomb Voyage</td>
</tr>
</tfoot>

<tbody>
<tr>
    <td>Mr. Incredible</td>
    <td>Elastigirl</td>
    <td>Gazer Beam</td>
</tr>
</tbody>

</table>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

但是这个不会:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Table Validation Test</title>
</head>
<body>

<table>

<thead>
<tr>
    <th scope="col">Enemies List</th> …
Run Code Online (Sandbox Code Playgroud)

html validation xhtml w3c-validation

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

什么标准产生了十六进制编码的字符,前面加了"25"?

我正在尝试与ybp.com集成,ybp.com是一家专有软件供应商,负责管理大型图书馆的图书订购工作流程.它一直在向我提供包含编码为额外"25"的字符的URL.喜欢这本书的标题:

VOLATILE KNOWING%253a PARENTS%252c TEACHERS%252c AND THE CENSORED STORY OF ACCOUNTABILITY IN AMERICA%2527S PUBLIC SCHOOLS.
Run Code Online (Sandbox Code Playgroud)

此示例中的编码字符如下:

%253a = %3A = a colon
%252c = %2C = a comma
%2527 = %27 = an apostrophe (non-curly)
Run Code Online (Sandbox Code Playgroud)

我需要将这些编码转换为我的内部应用程序可以识别的格式,而额外的25种方法则会让事情变得更糟.十六进制编码字符的最后两位数字看起来与标准URL编码相同,因此强力方法是将"%25"替换为"%".但我知道这样做是因为当某个实际的%25因某种原因出现时肯定会困扰我.

那么,这个标准是什么?是否有官方算法将这样的值转换为其他编码?

url encoding

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

PDO连接是从命令行工作,但不是通过Apache?

我有一个非常简单的测试脚本:

<?php

$DSN = "mysql:host=db.example.edu;port=3306;dbname=search_data";

try {

    $DB = new PDO($DSN, "username", "super-secret-password!");

} catch (PDOException $e) {

    header('Content-Type: text/plain');
    print "Could not connect to database, rawr. :-(";
    exit;

}


$SQL = "SELECT phrase FROM search ORDER BY RAND() LIMIT 10";

foreach($DB->query($SQL) as $row){

    print $row['phrase']."\n";

}

?>
Run Code Online (Sandbox Code Playgroud)

当我从命令行执行此脚本时,它完美地工作:

$ php test.php
corporal punishment
Stretches
voluntary agencies and the resettlement of refugees
music and learning
Nike Tiger Woods Scandal
Hermeneia
PSYCHINFO
anthony bourdain
Black-White Couples and their Social Worlds
colonization, …
Run Code Online (Sandbox Code Playgroud)

php mysql connection pdo

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

为什么PHP的call_user_func()函数不支持通过引用传递?

为什么函数处理函数不call_user_func()支持通过引用传递参数?

文件说,简洁喜欢的东西"请注意,对于call_user_func()的参数不是按引用传递." 我假设PHP开发人员在这种情况下有某种原因禁用该功能.

他们是否面临技术限制?它是语言设计的选择吗?这是怎么发生的?

编辑:

为了澄清这一点,这里有一个例子.

<?php

function more(&$var){ $var++; }

$count = 0;
print "The count is $count.\n";

more($count);
print "The count is $count.\n";

call_user_func('more', $count);
print "The count is $count.\n";

// Output:
// The count is 0.
// The count is 1.
// The count is 1.
Run Code Online (Sandbox Code Playgroud)

这是正常运作的; call_user_func不会通过引用传递$ count,即使more()将其声明为引用变量.该call_user_func文件清楚地说,这是它应该工作的方式.

我很清楚我可以通过使用获得我需要的效果call_user_func_array('more', array(&$count)).

问题是:为什么call_user_func 设计为这样工作?在路过的参考文档说,"功能定义的本身就足以正确传递引用的论点." call_user_func的行为是一个例外.为什么?

php language-design reference callback

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

我可以通过更换CR来避免CRLF注入攻击吗?

我有一个允许一个文件附件的表单,并生成一个硬编码地址的电子邮件.我想避免恶意用户输入自定义邮件头的可能性(CRLF注入,因为电子邮件头根据RFC以\ r \n结尾,因此被调用).

假设我对每个可能进入$ additional_headers参数的数据运行以下函数:

<?php

function strip_crlf($string){ return str_replace("\r\n", "\n", $string); }

?>
Run Code Online (Sandbox Code Playgroud)

这取代了CRLF对的回车一半.这会充分防止潜在的攻击吗?

通常我会用空字符串替换\ r \n.但是这种特殊形式允许一个附件,这意味着消息体实际上最终通过$ additional_headers参数传递,因为PHP没有用于构建多部分MIME编码电子邮件的本机函数(我知道).

如果有人关心,这是我邮寄附件的功能:

<?php
function mail_attachment($to, $from, $from_name, $subject, $message, $file = false, $filename = false, $filetype = false){

    // Remove CRLF sequences from everything that might go into a header
    $from = strip_crlf($from);
    $from_name = strip_crlf($from_name);
    $message = strip_crlf($message);
    if($filename){ $filename = strip_crlf($filename); }
    if($filetype){ $filetype = strip_crlf($filetype); }

    // $to and $subject escaping handled natively by mail();
    // $file …
Run Code Online (Sandbox Code Playgroud)

php security email sanitization newline

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

如何在浏览器中一致滚动到DIV的子元素?

我在这里有一个测试用例:

http://www.libsys.und.edu/dev/scroll-test.html

它有一个包含很长链接列表的DIV.我想将DIV滚动到给定的链接.在我的测试用例中,通过按下JSTOR按钮完成,将按钮推进到JSTOR链接.在实际生产样本中,将基于键盘输入选择链接.因此,例如,按"B"将其推进到第一个"B"链接,即生物学文摘.

我的测试用例中的预期结果是:我单击JSTOR,它滚动,因此JSTOR位于DIV的顶部.这可能涉及向下或向上滚动,具体取决于DIV已经滚动了多远.

实际结果取决于DIV是否已经滚动.

如果DIV根本没有滚动,那么它在所有浏览器中都能正常工作.

如果DIV已经滚动(甚至一点点),结果如下:

  1. Firefox向下滚动并将JSTOR放在DIV 的底部.
  2. Chrome向下滚动并将JSTOR放在DIV 的底部.(但见下文)
  3. Safari向下滚动并将JSTOR放在DIV 的底部.(但见下文)
  4. Chrome向下滚动并将JSTOR放在DIV 的底部.
  5. Opera向下滚动并将JSTOR放在DIV 的顶部.

此外,在某些我无法令人满意地识别的情况下,Chrome和Safari都会向下滚动并将JSTOR链接垂直居中放置在DIV 的中间.

Opera是唯一能够始终如一地实现我期望的浏览器.Firefox和IE以不同的方式做到这一点,但至少以不同的方式做到这一点,并且他们的行为相互匹配; 我不知道Chrome和Safari的行为是什么.

那么 - 是否有某种方式可以滚动DIV,使得目标链接总是在浏览器中相对于其父级位于相同的位置?我甚至不关心它是否在顶部,真的,尽管这对我来说最有意义.只要我能以一致的方式让它以同样的方式工作,我会很高兴.

对于长期记录,这是我的CSS和JS; HTML只是一个很长的DIV内部链接列表,ID为"box".我试图制作一个JS Fiddle,但它死在我身上 - 我认为它不喜欢HTML源代码的长度.

CSS:

#box {
    width: 300px;
    height: 200px;
    overflow: auto;
    position: relative;
}

#box ul {
    margin: 0;
    padding: 0;
    list-style: none;
}
Run Code Online (Sandbox Code Playgroud)

JS:

// I'm running scrollTop() and position().top through Math.floor() because
// Firefox likes …
Run Code Online (Sandbox Code Playgroud)

javascript jquery scroll

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

请解释这个简单的javascript面试问题背后的基本原理

考虑这个程序:

(function(x){
  delete x;
  return x;
})(1);
Run Code Online (Sandbox Code Playgroud)

什么是输出?

它碰巧是,1而不是undefined我所期望的.我认为x纯粹是在函数范围内,并且在函数内部删除它应该使它在外部无法访问.

有人可以对此有所了解吗?

javascript

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

如何包含缺少一半联接的记录?

假设我有这样的查询:

SELECT 
    s.staffID as staffID, 
    CONCAT_WS(", ", lname, fname) AS name, 
    GROUP_CONCAT(unit SEPARATOR ", ") AS units 
FROM 
    staff s, 
    units u, 
    staff_units r 
WHERE 
    s.staffID = r.staffID 
    AND u.unitID = r.unitID 
GROUP BY s.staffID 
ORDER BY lname
Run Code Online (Sandbox Code Playgroud)

这得到一个这样的列表:

Alice    Accounting
Bob      Systems
Charlie  Customer Services, Administration
Run Code Online (Sandbox Code Playgroud)

好的,到目前为止.现在假设我删除了staff_units记录Alice作为Accounting成员的条目.然后,运行此查询将生成一个列表,从中排除Alice,即使她仍然存在于staff表中:

Bob      Systems
Charlie  Customer Services, Administration
Run Code Online (Sandbox Code Playgroud)

我可以调整这个SQL,以便它继续返回Alice,结果显示她未分配给一个单元吗?

我当然可以运行一个查询来获取人员列表,并为每个人员查询另一个查询以获取当前分配.但这意味着要运行n + 1个查询来构建列表,其中n是人员数量,这只是让我错了.

mysql sql

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