Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at
网上查原因是:UTF-8 无bom格式的时候,转换为utf8 前面会多出个字符,所以造成了提前的输出。
解决方法是:1、 在Linux下打开,去掉后再保存
2、 用写字板打开,把光标放到最前后回车,然后再敲删除,重新回到第一行,这样最前面的那个字符就会去掉
3、 使用UltraEdit编辑器,打开高级----配置----Unicode/utf-8 检测,把自动检测UTF-8文件,自动检测没有BOM的Unicode文件等前面的勾全去掉,然后你再打开那 个文件,就会发觉“锘 ”这个字符出现了,删除就OK了。
但我三种方法都试了下没有发现这个多余的字符,只好在第一行最前面加了ob_start();
当然也可以修改php.ini中的session.auto_start = 0 为 session.auto_start = 1,这样就省略了手工启动session。
补充:ob_start();此函数将打开输出缓冲。当输出缓冲是活跃的时候,没有输出能从脚本送出(除http标头外),相反输出的内容被存储在内部缓冲区中。
内部缓冲区的内容可以用 ob_get_contents() 函数复制到一个字符串变量中。想要输出存储在内部缓冲区中的内容,可以使用 ob_end_flush() 函数。另外, 使用ob_end_clean() 函数会静默丢弃掉缓冲区的内容。
输出缓冲区是可堆叠的,这即意谓着,当有一个ob_start() 是活跃的时, 你可以调用另一个 ob_start() 。只要确保又正确调用了 ob_end_flush() 恰当的次数即可。 如果有多重输出回调函数是活跃的,输出内容会一直按嵌套的顺序依次通过它们而被过滤。
关于php中include和require
当页面执行到require()时,如果require是一个PHP、HTML页面的话,这时就会马上转到去执行该页面了。而include,一般是用于include进来一些inc文件。比如说可以将你的网站的页头和页眉作为一个inc文件,这样在每个PHP文件里面再include进来。include实际只是将你要include的文件嵌入到当前页面当中。而require则是马上去执行你所请求的页面。
incluce在用到时加载 require在一开始就加载
_once后缀表示已加载的不加载
php系统在加载php程序时有一个伪编译过程,可使程序运行速度加快。但incluce的文档仍为解释执行
include的文件中出错了,主程序继续往下执行 require的文件出错了,主程序也停了
所以包含的文件出错对系统影响不大的话(如界面文件)就用include,否则用require
require()函数更多地用在静态元素中,而include()更多地用于动态元素中。
关于PHP IDE的推荐
edit plus | 做很小,很快捷的改动 |
dreamweaver | 做界面处理 |
Zend Studio | php coding |
<a href="javascript:void(0)" onclick=
注意这里的,若是href="#".这种形式会整体刷新页面,href="javascript:void(0)"则不会。后者在Ajax页面中用的较多
关于去掉CI里包含在URL中的index.php
其实很简单,三部搞定。
1、打开apache的配置文件conf/httpd.conf,找到里面的LoadModule rewrite_module modules/mod_rewrite.so,把该行前的#去掉。接着找到
# AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None
把AllowOverride None改为AllowOverride All
2、在CI的根目录下,即在index.php,system的同级目录下,建立文件名为 .htaccess 的文件,内容如下
RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [L]
注意: 最后一行的/index.php/ 要根据你目录的实际情况来定,比如网站根目录是 /ci/index.php 则要写成 /ci/index.php/
其中,RewriteCond $1 !^(index\.php|images|robots\.txt) 上面的代码意思是排除某些目录或文件,使得这些目录不会 rewrite 到 index.php 上,这一般用在图片、js、css 等外部资源上。也就是说非 PHP 代码都要排除出去。比如这里排除了 images 目录和 robots.txt 文件,当然 index.php 也应该被排除。
3、将CI中配置文件(/application/config/config.php)中 $config['index_page'] = 'index.php' 改为 $config['index_page'] = '',就是设为空。
这样就配置完成了,重启apache试一下吧。
我本人在实验这个时屡试屡错,按照这上面没有任何问题,在多次看网页的建议时,看到一条说,他为保险把conf中能搜到的三处 AllowOverride None 全都替换成了 AllowOverride All,我一搜发现我搜到了四处,就全改了,然后打开网页直接403了。仔细一看,文件末尾有一段很早前我自己配置的这样一段代码
Alias /workspace "D:/php" <Directory "D:/php"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory>
这是eclipse的DEBUG环境配置用的,这里的None若改为All,就会403,不改,index.php还是出不了效果。由于现在也不是用eclipse开发了,便删了去。于是就成功了。。。具体上面原因我也不知道,反正就是OK了。还有刚才提到需不需要修改三处的AllowOverride None,其实不用,只要修改第二处就可以了。
jquery 如何得到table得到鼠标所在 行号 列号
$(document).ready(function(){ $(".mytable td").click(function(){ var tdSeq = $(this).parent().find("td").index($(this)[0]); var trSeq = $(this).parent().parent().find("tr").index($(this).parent()[0]); alert("第" + (trSeq + 1) + "行,第" + (tdSeq + 1) + "列"); }); })