我重写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,)usernameetcemailId,)userIdemail我想做一个查询,允许我获取最新的电子邮件地址和用户记录.
我基本上是在寻找一个查询
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