我在表中有一行我不想改变(永远).
是否可以将MySQL行设置为READ-ONLY,以便无法以任何方式更新?如果是这样,怎么样?
如果没有,是否可以在该行的一列中设置永久值,以便不能更改?如果是这样,怎么样?
谢谢.
我有以下JOIN查询:
SELECT
table1.*,
table2.*
FROM
Table1 AS table1
LEFT JOIN
Table2 AS table2
USING
(col1)
LEFT JOIN
Table3 as table3
USING
(col1)
WHERE
3963.191 *
ACOS(
(SIN(PI() * $usersLatitude / 180) * SIN(PI() * table3.latitude / 180))
+
(COS(PI() * $usersLatitude / 180) * COS(PI() * table3.latitude / 180) * COS(PI() * table3.longitude / 180 - PI() * 37.1092162 / 180))
) <= 10
AND
table1.col1 != '1'
AND
table1.col2 LIKE 'A'
AND
(table1.col3 LIKE 'X' OR table1.col3 LIKE 'X-Y') …
Run Code Online (Sandbox Code Playgroud) 我有以下网址: $url = 'http://mysite.com/?p=welcome&x=1&y=2';
我需要解码它以便header("Location: $url");
实际工作.
但是,使用urldecode($url)
不起作用,因为它没有解码&
- > &
因此浏览器被重定向到http://mysite.com/?p=welcome&x=1&y=2
失败.
我需要它来解码,使它看起来像: http://mysite.com/?p=welcome&x=1&y=2
我怎么做?
我想在我现有的一个LAMP网站上添加一个非常简单的博客功能.它将与用户现有的个人资料相关联,他们可以在博客中为每个帖子输入标题和正文,日期将在提交时自动设置.他们可以随时编辑和删除任何博客文章和标题.博客将显示从最近到最旧,可能是20个帖子到一个页面,并在其上方有适当的分页.其他用户可以在每个帖子上留下评论,博客所有者可以将其删除,但不能预先评论.基本上就是这样.就像我说的,非常简单.
我应该如何为此构建MySQL表?
我假设因为会有博客文章和评论,我需要一个单独的表格,这是正确的吗?但是,我需要在每个表中使用哪些列,我应该使用哪些数据结构,以及如何将两个表链接在一起(例如,任何外键)?
我找不到任何类似这样的教程,我想要做的是真正为我的用户提供最简单的博客版本.没有标签,没有审核,没有图像,没有花哨的格式等等.只是一个简单的日记型,纯文本博客,其他用户评论.
如何配置子目录的.htaccess,以便它完全忽略任何父目录的.htaccess?
不只是任何重写规则,而是一切.
我多年来一直file_get_contents
用来抓住网站的内容.
最近,他们更新了他们的URL HTTPS
并file_get_contents
停止了工作.
我已经阅读过以前的问题并尝试过标记的解决方案,但没有任何效果.
例如,我试过这个,它返回以下内容:
openssl: yes http wrapper: yes https wrapper: yes wrappers: array ( 0 => 'https', 1 => 'ftps', 2 => 'compress.zlib', 3 => 'compress.bzip2', 4 => 'php', 5 => 'file', 6 => 'data', 7 => 'http', 8 => 'ftp', 9 => 'zip', )
Run Code Online (Sandbox Code Playgroud)
于是我尝试这个解决方案有file_get_contents
,但没有成功.
然后,我尝试这种解决方案具有cURL
完全忽略加密,无济于事
无论我尝试哪种解决方案,都不会返回任何内容.
我还没有加入extension=php_openssl.dll
,并allow_url_include = On
以PHP.ini
按照 …
我看到一个建议,即轮数的数量应该($currentYear - 2000)
考虑到摩尔定律,因此2013年将是13
轮次,因此2^13
总迭代次数.当然,你需要考虑你自己的硬件,以确保它不会花太长时间(我看到1 second
建议用"检查密码/哈希"的"安全",并且在我当前的硬件上有13个回合落在那个标记上).
对于社交网络类型的网站来说这听起来合理吗?或者,我是否会通过使用将自己设置为非常慢的密码检查($currentYear - 2000)
?
另外,你如何处理从一年到下一年的轮数改变?不会改变轮数改变哈希值,因此不允许你在2014年检查哈希,因为支票将使用额外一轮?您是否必须每年重新计算每一个哈希值,或者它将如何正常工作?
好的,我终于理解了bcrypt,它是如何工作的,以及如何将它存储在数据库中,所以我几乎要好好去.现在的问题是选择使用哪种bcrypt实现与PHP 5.3
.
我疯狂地看着所有不同的解决方案,我不确定哪一个是最推荐和最安全的,所以我再次转向你们.
以下是我发现的:
1)https://gist.github.com/marcoarment/1053158
2)http://www.openwall.com/phpass/
4)......别的什么?
这些可以互换,还是产生不同的哈希?我想认为,既然它们都是"bcrypt",他们会产生相同的结果,但我不知道(我测试1)
及2)
以上,他们似乎是可互换的,因为所生产的散列1)
上确认2)
).
那么PHP的推荐解决方案是5.3
什么?
这是我到目前为止提出的最好的方法,我想知道是否有更好的方法(我确定有!)用于存储和获取数百万用户图像:
为了保持目录大小不变并避免对数据库进行任何其他调用,我使用的嵌套目录是根据用户的唯一ID计算的,如下所示:
$firstDir = './images';
$secondDir = floor($userID / 100000);
$thirdDir = floor(substr($id, -5, 5) / 100);
$fourthDir = $userID;
$imgLocation = "$firstDir/$secondDir/$thirdDir/$fourthDir/1.jpg";
Run Code Online (Sandbox Code Playgroud)
用户ID($userID
)的范围从1到数百万.
因此,如果我有用户ID 7654321
,那么该用户的第一张照片将存储在:
./images/76/543/7654321/1.jpg
Run Code Online (Sandbox Code Playgroud)
对于用户ID 654321
:
./images/6/543/654321/1.jpg
Run Code Online (Sandbox Code Playgroud)
对于用户ID 54321
,它将是:
./images/0/543/54321/1.jpg
Run Code Online (Sandbox Code Playgroud)
对于用户ID 4321
,它将是:
./images/0/43/4321/1.jpg
Run Code Online (Sandbox Code Playgroud)
对于用户ID 321
,它将是:
./images/0/3/321/1.jpg
Run Code Online (Sandbox Code Playgroud)
对于用户ID 21
,它将是:
./images/0/0/21/1.jpg
Run Code Online (Sandbox Code Playgroud)
对于用户ID 1
,它将是:
./images/0/0/1/1.jpg
Run Code Online (Sandbox Code Playgroud)
这确保了最多100,000,000个用户,我将永远不会拥有超过1,000个子目录的目录,因此它似乎可以保持干净和高效.
我使用以下"哈希"方法对此方法进行基准测试,该方法使用PHP中可用的最快哈希方法(crc32).此"哈希"方法将第二个目录计算为用户ID哈希值中的前3个字符,将第三个目录计算为下一个3个字符,以便随机分布文件,但如下所示:
$hash = crc32($userID);
$firstDir = './images';
$secondDir = substr($hash,0,3);
$thirdDir = substr($hash,3,3);
$fourthDir = $userID;
$imgLocation = "$firstDir/$secondDir/$thirdDir/$fourthDir/1.jpg";
Run Code Online (Sandbox Code Playgroud)
但是,这种"哈希"方法比我前面描述的方法慢,所以它没有用.
然后,我进一步发现了一个更快的方法来计算我的原始示例(floor(substr($userID, -5, 5) / …
所以这个是一个严肃的头脑,它比乍一看更难以解决.
我有一个经营小企业的客户.他们是夫妻团队,使用Gmail和Gmelius插件来运营他们的业务.丈夫和妻子都通过Gmail 使用相同的电子邮件帐户.丈夫负责销售,妻子在销售完成后为客户组织服务.他们为所有这些使用相同的电子邮件地址,他们回答所有电子邮件作为妻子(甚至是丈夫写的销售人员),以保持一切简单.
丈夫希望能够搜索Gmail只需要回复的所有电子邮件(预售),这样他就可以解决那些没有看到妻子必须回复的任何电子邮件(售后)的问题. .妻子希望能够对她只需要照顾的电子邮件做同样的事情.
这是我试图为他们解决这个问题.因为他们使用基于对话的Gmelius,所以当丈夫将其传递给妻子时,Gmail中的对话必须保持不变(例如,在客户关闭后).所以这是一个重要的约束.我尝试过的第一个,最明显和"直观"的解决方案是简单地使用标签,当他们的网站服务器进行新的查询时,Gmail过滤器会添加丈夫未从会话中删除的"丈夫"标签直到客户关闭,其想法是丈夫可以通过简单搜索来解决他所有的电子邮件,in:inbox label:Husband
妻子可以通过简单搜索来解决所有电子邮件in:inbox -label:Husband
.
很简单吧? 错误! 这不起作用,因为Gmail会为每条消息分配标签,而不是按会话分配标签.因此,当第一个查询从服务器进入时,会自动添加"丈夫"标签进行过滤,这只是第一个实际获得"丈夫"标签的消息.夫妻在同一会话客户之间的所有后续消息并没有实际拥有的"丈夫"标签(即使谈话还是误导显示了"顶部丈夫标签),因此,当丈夫搜索"在:收件箱标签:丈夫",原始查询中有"丈夫"标签的客户的新电子邮件回复没有显示在他的搜索下.我花了很多时间和大量的毛发来解决这个问题!
然后我考虑改变主题,丈夫的电子邮件最后有"[询问]",当他把它传递给妻子时,他只是将主题的那部分改为"[Booked]"并且他们每次搜索对于有"询问"(丈夫)或"已预订"(妻子)的受试者,但这并不能解决他们的问题,因为改变主题会产生新的对话,所以妻子失去了丈夫在原版中创造的所有Gmelius笔记售前谈话.所以改变主题似乎已经出局了.
接下来,我尝试使用星星而不是标签(黄色星号电子邮件用于丈夫,未加星标的电子邮件用于妻子),希望星星适用于每个对话(与标签不同).但是,不幸的是,试验和错误证明每个消息也添加了星号.所以明星似乎也出局了.
最后,这种解决每条消息标签问题的方法是不可行的,因为必须在售前客户每次回复时不断进行.
因此,我陷入困境,不能为我的生活找出如何设置他们的Gmail,他们可以每个人(书签)搜索他们每个人负责的所有电子邮件(丈夫的预售) ,妻子的售后,没有混合或交叉)考虑:
当然,必须有一种方法可以在上述限制范围内解决这个问题,但我的头发已经不多了!
我怎么解决这个问题?
...
更新到CLARIFY
如果来自服务器的新电子邮件查询被Gmail过滤器分配了"丈夫"标签(过滤器:如果来自服务器的新电子邮件,则分配"丈夫"标签),但后续回复来自丈夫和同一对话中的客户服务器没有被分配任何标签,因为他们的电子邮件地址没有过滤器,并且无法根据标签创建过滤器,因此搜索时该对话中的新回复不会显示,in:inbox label:Husband
因为来自客户的新回复不会尽管由于第一条消息(来自服务器的电子邮件查询)具有"丈夫"标签而在显示"丈夫"标签的对话中分配了"丈夫"标签.因此,考虑到所有这一切,如何自动解决这个问题,以便丈夫(和妻子)可以看到他所有的新电子邮件,只有他的新电子邮件, …