小编fed*_*o-t的帖子

根据PHP中的W3C规范化Unicode

W3C验证器中验证我的网站的HTML代码时,我收到以下警告:

Line 157, Column 220: Text run is not in Unicode Normalization Form C.

…i??????????v??????????e???????????-????????????m??????????i??????????n????????…
Run Code Online (Sandbox Code Playgroud)

我正在PHP 5.3.x中开发它,所以我可以使用Normalizer类.

因此,为了解决这个问题,我应该Normalizer::normalize($output)在显示用户做出的任何输入时使用(例如注释),还是应该Normalizer::normalize($input)在将其存储到数据库之前用于任何用户输入?

tl; dr:我应该在将用户输入存储在数据库中之前还是仅在显示时使用Unicode规范化

php unicode web-standards normalization unicode-normalization

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

如何正确使用AES_ENCRYPT?

我正在尝试使用AES加密(MySQL中的AES_ENCRYPT)来获取用户密码,但我想出了一堆不同的问题.

这是我用于将新用户存储到数据库中的SQL查询:

INSERT INTO user VALUES (
    '15',
    'John',
    'Doe',
    '123 Fake St.',
    AES_ENCRYPT('mypassword', 'mysalt'),
    'mysalt'
)
Run Code Online (Sandbox Code Playgroud)

盐在实际情况下是随机字符串.

它工作正常.我的意思是,我能够检索原始密码.在此示例中,AES_DECRYPT(user.password, 'mysalt') WHERE user.id = 15检索mypassword.但我可能会忽略一些事情.

  • 保存盐和密码是否安全?除了安全通过默默无闻的事情.

  • 存储哈希密码的最佳格式是什么?我正在使用
    VARBINARY,但存储的字符串看起来像8?p?????_?Z?\.

  • 最后,密码需要多长时间,盐应该多长时间?

谢谢

mysql security aes collation

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

在存储之前加密用户的IP地址

我正在使用PHPMySQL,我想将用户的IP地址存储到数据库中以进行比较(例如,每个IP只允许一个标志到一个线程).可以通过以下方式进行吗?

在PHP中检索它:

$ipAddress = md5($_SERVER["REMOTE_ADDR"]);
Run Code Online (Sandbox Code Playgroud)

然后将其保存到数据库中VARCHAR(32).

如果我不得不更全面地使用IP,我认为这不是正确的方法,但如果只是为了确保相同的IP没有做两次,那么可以使用md5加密简化事情(将IPv4IPv6地址统一为一个)?

php mysql ip ipv4 ipv6

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

isset的简写和!空

愚蠢的问题,我知道,但如果我不知道变量$var是否设置,我应该使用

isset($var) && !empty($var)
Run Code Online (Sandbox Code Playgroud)

检查它是否有任何价值,或者是

!empty($var)足够?如果$var在第二种情况下为null,是否会出现问题?

php variables null

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

URL中的CSS选择器

当你有这样的网址时www.example.com/#signup,浏览器所做的只是将它的视图集中在带有id的HTML元素上signup,是吗?

如果它以这种方式聚焦,是否可以改变元素的CSS样式?

例如,假设我有一个带有id的div元素,signup那么如果我输入www.example.com,div的背景是白色的,如果我输入www.example.com/#signup它是黄色的.像"强调"注册表格一样.这是可能吗?

html css url css-selectors

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

关于HTML条件注释

我试图显示跨度,A如果浏览器是IE 6或更低,或者B如果浏览器大于IE 6或不是IE ,则显示跨度.

<!--[if lte IE 6]><!--><span>You're using IE 6 or lower.</span><!--<![endif]-->
<!--[if (!IE)|(gt IE 6)]><!--><span>You're using IE 7 or greater or another browser.</span><!--<![endif]-->?
Run Code Online (Sandbox Code Playgroud)

这在我拥有的每个Internet Explorer版本中都能很好地工作,但在Chrome和Firefox中都会显示两个版本.我猜他们不认识这种条件,因为它们是微软特有的.

有没有一种方法可以不重复使用JavaScript?

html browser internet-explorer conditional-comments internet-explorer-6

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

PDOException没被捕获?

我在PHP中收到以下错误:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'localhost' (10061)' in C:\xampp\htdocs\project\Service\Database.class.php:26 Stack trace: #0 C:\xampp\htdocs\project\Service\Database.class.php(26): PDO->__construct('mysql:host=loca...', 'root', '', Array) #1 C:\xampp\htdocs\project\Service\Database.class.php(54): Service\Database::initialize() #2 C:\xampp\htdocs\project\index.php(15): Service\Database::getHandler() #3 {main} thrown in C:\xampp\htdocs\project\Service\Database.class.php on line 26
Run Code Online (Sandbox Code Playgroud)

错误本身不是问题,我故意终止Windows中的MySQL服务,看看发生了什么(我正在使用XAMPP).问题是我无法捕获PDO对象抛出的异常,我不知道为什么.

try {
    $host       = "localhost";
    $dbname     = "project";
    $userName   = "root";
    $password   = "";
    $charset    = "utf8";
    $dsn        = "mysql:host=$host;dbname=$dbname;charset=$charset";

    $driverOptions = array(
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES $charset" …
Run Code Online (Sandbox Code Playgroud)

php pdo exception-handling exception try-catch

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

禁止使用IPv4和IPv6

如果我想要一个禁令IP用户在我的网站上,有没有可能通过既要做到这一点IPv4,并IPv6?有些浏览器默认使用IPv4地址,而有些浏览器有可能使用IPv6地址.因此,如果我通过他们当前的IP禁止某人,他们只需要使用另一个导航器来绕过禁令.

tl; dr:是否可以将IPv4地址翻译成IPv6类似的东西来"统一"它们?

我正在使用PHP作为服务器端技术.

php ip ipv4 ipv6

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

如何用PHP中的浮点除?

我需要确定给定的数字x是否可以yPHP中分解,是y浮点数,特别是0.05.

但是当我这样做的时候,

if ($number % 0.05 === 0) {
    // Continue
}
Run Code Online (Sandbox Code Playgroud)

我收到以下PHP警告:

被零除

我该怎么做才能解决这个问题?谢谢!

php

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

HTML代码标签无法执行

如何使代码标记不作为实际的HTML标记执行,只显示在页面上.它不能使用&lt;&gt;功能.例如,该网站如何在代码框内执行此操作?

该框如何不执行页面上的代码?例如.<img src="example.png" />不会显示.

我怎样才能做到这一点?有点像WordPress的短代码API而不是WordPress的短代码API?

html tags

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