bootstrap激活tooltip
bootstrap官方帮助说:
出于性能方面的考虑,工具提示和弹框组件的data属性api是选择性加入的,也就是说你必须自己初始化他们。
初始化 在需要使用tooltip的元素里加上:
onMouseOver="$(this).tooltip('show')"
不然光靠进入js还是没办法的。然后设置上data-toggle="tooltip"
,设置好title
属性,就OK了
bootstrap官方帮助说:
出于性能方面的考虑,工具提示和弹框组件的data属性api是选择性加入的,也就是说你必须自己初始化他们。
初始化 在需要使用tooltip的元素里加上:
onMouseOver="$(this).tooltip('show')"
不然光靠进入js还是没办法的。然后设置上data-toggle="tooltip"
,设置好title
属性,就OK了
Cookie和Session是实现用户登录的最关键的道具,目前主要用的貌似还是Session,但大部分时候Session还是靠Cookie来传值的。
设置Cookie:
setcookie('username', 'skyao', time()+60*60*60+24*7);
文件管理系统懒得写完了=A=,反正差不多一个意思。
思路和上一个版本的connect
然后执行差不多,不过安全性更高。
首先我们连接数据库:
$dbh = new PDO('mysql:dbname=filesystem;host=localhost', 'root', '');
PHP文件基本操作函数有:unlink()
删除文件rename()
重命名文件或目录copy()
复制文件
另外还有文件夹操作mkdir()
建立文件夹rmdir()
删除空文件夹(非空会报错)
比如rename()
手册上会这么写:bool rename ( string $oldname , string $newname [, resource $context ] )
嗯 我个人觉得有点坑,其实与其说name
不如说带上路径的文件/目录名好了,它不仅是要name,还要route啊!!
die()
其实也就是exit()
,可以输出内容并且结束脚本,否则PHP还是会继续向下运行,除非是致命错误:
这样我们就不需要再设变量然后嵌套if来达成如果这里报错了。
写成die('错误')
,那么就会在运行到这行结束脚本并且输出错误
if (strpos($route, '..') !== FALSE || strpos($route, 'upload') === FALSE) {
echo '路径非法';
//$problem = TRUE;
die();
}
比如这个 本来想用$problem嵌套之后判断在运行之后的代码,但用了die()之后就直接搞定了,如果是有报错的部分,也可以与@
配合使用(@
能忽略报错提示)
如果要限制输出1行 怎么办?其实用LIMIT
就能搞定了
用法大概酱紫:
SELECT * FROM table LIMIT 1
那么如果要偏移,也就是取第三行呢:(offset是第一个参数,limit是第二个)
SELECT * FROM table LIMIT 2, 1
当然还找到了一个更酷的用法:
//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:
SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.
通过limit和offset的连用就能实现分页功能了
不扩展的阅读:http://www.phpweblog.net/peiyinjin/archive/2008/04/15/3199.html
这是我初期的一大问题,两个表之间怎么建立关联,实际上,有个东西叫做JOIN,然后还有INNER JOIN,RIGHT JOIN,LEFT JOIN
我基本上用的都是LEFT JOIN,那么RIGHT JOIN大家懂得=A=其他我也没用过
不同的参考:
JOIN: 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
关于这点的详细阅读:http://php.net/manual/zh/language.types.array.php
自 5.4 起可以使用短数组定义语法,用[]
替代array()
。
我们必须在意的地方是:从5.4开始,不注意就死了,因为现在主流虚拟主机用的还是5.3之类的,版本不够新,导致所有的数组定义方式都得改成老版,这神坑害我把整个项目的array都重写了=A=,虽然短数组定义比起array()
好,但是兼容性问题也不可以忽略,尤其是=A=当你买不起VPS或者这货要给好多人用的时候。
在M-Show时用bootstrap想把copyright的部分放在导航右下,一直习惯用margin
,padding
,导致忽略了另一个东西,那就是left
,right
,top
,bottom
,这四个货直接决定位置啊……设成absolute以后就能直接定位了=A=当然,因为本身用padding
和margin
的关系还要清零才能达到最右的效果=A=
所以效果就在上面的链接,相关代码:
#copyright {
position: absolute;
bottom: 3%;
padding: 0px;
margin: 0px;
text-align: right;
right: 10%;
}
其实这是一个很二的故事OTZ
我当时在想,用htmlspecialchars()
可以把一些字符转义,这样就避免了很多问题,可是这样<br/>
不是也被转了吗=A=
结果其实只是htmlspecialchars()
放在nl2br()
前面=A=
nl2br()
其实就是把\n
变成<br/>
来换行,我觉得这两货是非常有爱的CP
htmlspecialchars()
扩展阅读:http://www.w3school.com.cn/php/func_string_htmlspecialchars.aspnl2br()
扩展阅读:http://www.w3school.com.cn/php/func_string_nl2br.asp