我重写URL以包含用户生成的travelblogs的标题.
我这样做是为了URL和SEO的可读性.
http://www.example.com/gallery/280-Gorges_du_Todra/
第一个整数是id,其余的是我们人类(但与请求资源无关).
现在人们可以编写包含任何UTF-8字符的标题,但大多数都不允许在URL中.我的听众通常都是说英语的,但是因为他们旅行,他们喜欢包括像
Aït Ben Haddou
在Linux上使用PHP在URL中显示它的正确方法是什么?
到目前为止,我见过几种解决方案:
只是删除所有不允许的字符,替换空格这有奇怪的结果:
'Aït Ben Haddou' ? /gallery/280-At_Ben_Haddou/
不是真的有用.
只是删除所有不允许的字符,替换空格,离开charcode(stackoverflow.com)最有可能因为使用'正则表达式'
这会产生奇怪的结果:
'tést tést' ? /questions/0000/t233st-t233st
转换为"最接近的等价物"
'Aït Ben Haddou' ? /gallery/280-Ait_Ben_Haddou/
但这对德国人来说是错误的; 例如'ü'应该音译'ue'.
对我来说,作为一个荷兰人,第三个结果"看起来"是最好的.
但我很确定(1)很多人会有不同的看法,(2)在德国的例子中,这是完全错误的.
第3个选项的另一个问题是:如何找到可以转换为7位等效的所有可能字符?
所以问题是:
在您看来,什么是最理想的结果.(在技术限制范围内)
如何从技术上解决它.(用PHP获得所需的结果).
有没有一种有效的方法来检测jpeg文件是否已损坏?
背景信息:
解决方案需要在php脚本
中工作jpeg文件在磁盘上
手动检查是没有选项(用户上传的数据)
我知道imagecreatefromjpeg(string $filename);
可以做到.但这样做很慢.
有人知道更快/更有效的解决方案吗?
我想请你帮我解决存储为闭包表的分层数据结构的问题.
我想用这个结构来存储我的网站菜单.一切正常,但问题是我不知道如何按自定义顺序对确切的子树进行排序.目前,树按照项目添加到数据库的顺序排序.
我的结构基于Bill Karwin关于Closure Tables 的文章以及其他一些帖子.
这是我的MySQL数据库结构,包含一些DEMO数据:
--
-- Table `category`
--
CREATE TABLE IF NOT EXISTS `category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) COLLATE utf8_czech_ci NOT NULL,
`active` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
INSERT INTO `category` (`id`, `name`, `active`) VALUES
(1, 'Cat 1', 1),
(2, 'Cat 2', 1),
(3, 'Cat 1.1', 1),
(4, 'Cat 1.1.1', 1),
(5, 'Cat 2.1', 1),
(6, 'Cat 1.2', 1),
(7, …
Run Code Online (Sandbox Code Playgroud) 我正在尝试确定用于记录自定义文件的功能.
背景
我们有几个PHP进程,它们都以Apaches(mod_php)和Deamons(CLI,forked)运行.我希望能够为每个要写入的进程/任务指定一个日志文件.对于作为Deamons的Apache进程,多个进程将写入同一文件.
选项
PHP提供error_log()
和syslog()
.两者似乎提供或多或少相同的功能.
我的问题
原始问题:
我们的联盟合作伙伴有一个易受SQL注入攻击的网站.
我们意外地注意到了这一点(URL中的拼写错误引发了一个非常有用的错误页面).
现在我们不太了解这个联盟合作伙伴.一周前我们开始与他们做生意.他们自己的技术技能很少; 他们的网站是由第三家"做网站"的公司为他们开发的.
现在很明显我们应该警告他们这个问题.但我们有点担心,如果我们告诉他们这个问题,他们会害怕,不再相信我们(拍摄信使让问题消失).
你有没有遇到过这种情况?你做了什么?
另外一点是:
因为开发网站的公司似乎根本没有进行输入验证/消毒,我们对这家公司没有太大的信心.虽然这不是我们关心的问题,但我们认为我们应该警告我们的联盟合作伙伴,因为他们的系统其他部分可能缺乏安全性和质量.这将使我们与他们的开发人员正面交锋,我们不想让他们参与我们的情况.
我们是否应该通知他们我们的其他问题?或者你建议让它成为现实?
更新:
那么,怎么回事?
我们向他们通报了现有问题,包括背景信息,详细的错误报告,并试图用简单的人类语言解释问题是什么以及为什么它是严重的.
他们感谢我们,将这些信息传递给他们的网站开发人员,后者已修复它.
我们不太确定修复的质量,但我们无能为力,这不是我们的责任.(虽然它确实感觉到我们的责任,但自从我们报告以来更是如此).
然而,这种关系发生了变化.它们不那么开放,之前有更多的保留.我们希望将来会有更好的改变,但是确实报告这个问题会损害这种关系中的信任.
因此,如果您发现自己处于相同的位置,请小心,花些时间来解释问题,并为不太理想的响应做好准备.
使用报告的MIME类型上载某些文件:
image/x-citrix-pjpeg
Run Code Online (Sandbox Code Playgroud)
它们是有效的jpeg文件,我接受它们.
我想知道:为什么MIME类型不同?
格式有什么不同吗?或者这种mimetype是由Citrix的一些灯泡发明的,没有明显的原因?
我有两个表,一个存储用户,另一个存储用户的电子邮件地址.
userId
,)username
etc
emailId
,)userId
email
我想做一个查询,允许我获取最新的电子邮件地址和用户记录.
我基本上是在寻找一个查询
FIRST ORDER BY userEmail.emailId DESC
THEN GROUP BY userEmail.userId
Run Code Online (Sandbox Code Playgroud)
这可以通过以下方式完成:
SELECT
users.userId
, users.username
, (
SELECT
userEmail.email
FROM userEmail
WHERE userEmail.userId = users.userId
ORDER BY userEmail.emailId DESC
LIMIT 1
) AS email
FROM users
ORDER BY users.username;
Run Code Online (Sandbox Code Playgroud)
但是这会为每一行做一个子查询,效率非常低.(在我的程序逻辑中,做两个单独的查询并将它们"加入"在一起会更快.
为我想要的东西写的直观查询将是:
SELECT
users.userId
, users.username
, userEmail.email
FROM users
LEFT JOIN userEmail USING(userId)
GROUP BY users.userId
ORDER BY
userEmail.emailId
, users.username;
Run Code Online (Sandbox Code Playgroud)
但是,这不符合我的意愿.(GROUP BY
在排序之前执行,因此ORDER …
我即将创建一个robots.txt文件.
我正在使用记事本.
我该如何保存文件?UTF8,ANSI还是什么?
还应该是资本R吗?
在文件中,我指定了一个站点地图位置.这应该是资本S吗?
User-agent: *
Sitemap: http://www.domain.se/sitemap.xml
Run Code Online (Sandbox Code Playgroud)
谢谢
在MySQL中获取累积总和的"正确"查询是什么?
我有一个表格,我保存有关文件的信息,一列列表包含文件的大小(以字节为单位).(实际文件保存在某处的磁盘上)
我想得到这样的累积文件大小:
+------------+---------+--------+----------------+
| fileInfoId | groupId | size | cumulativeSize |
+------------+---------+--------+----------------+
| 1 | 1 | 522120 | 522120 |
| 2 | 2 | 316042 | 316042 |
| 4 | 2 | 711084 | 1027126 |
| 5 | 2 | 697002 | 1724128 |
| 6 | 2 | 663425 | 2387553 |
| 7 | 2 | 739553 | 3127106 |
| 8 | 2 | 700938 | 3828044 |
| 9 | …
Run Code Online (Sandbox Code Playgroud) 我想在PHP中使用双向加密来加密我网站上的密码.我遇到了mcrypt库,但它看起来很麻烦.任何人都知道任何其他方法更容易,但又安全吗?我可以访问Zend Framework,因此使用它的解决方案也可以.
我实际上需要双向加密,因为我的客户端想要进入数据库并更改密码或检索它.
php ×4
mysql ×3
jpeg ×2
sql ×2
citrix ×1
corruption ×1
diacritics ×1
encryption ×1
mime-types ×1
passwords ×1
robots.txt ×1
search ×1
security ×1
syslog ×1