PHP 编程一些及其细微的细节问题

来源:互联网 发布:视频编辑软件安卓版 编辑:程序博客网 时间:2024/06/07 06:00
直接转的,未经验证。
 
/////////////////
    Windows下,记事本会把“utf-8 编码,无 bom”的文件变成“带bom”,也就是给文件前加三个字节“EF BB BF”。因为好像记事本只能保存“带bom”的 UTF-8 的文件。切记!
    经常会出现在:用记事本修改 PHP 的 config.inc.php 配置文件的时候。这时,因为config.inc.php一般包含在PHP文件的头部,所以 PHP 文件如果涉及 session 或 header() 函数,麻烦就来了。因为 session 或 header()之前不允许有 html 脚本,包括 echo 输出,而“EF BB BF”字符串虽然人眼不可见,但是 PHP 把它们当做 html 字符了。

    /////////////////
    UltraEdit 编辑器,能自动识别编辑的字符串是英文(单字节编码),还是中文(多字节编码)。而且 UltraEdit 编辑器以不定长编码保存文本。
    比如,编辑的文本全部是英文,即使强制保存为 UTF-8,在 Windows 下也会自动保存为普通 DOS 格式的单字节文本文件。这时输入汉字,汉字还是双字节编码。
    只有再次另存为 UTF-8编码,汉字才会变为 UTF-8 的三字节编码。而英文一直都会是单字节编码。这个通过 UE 的二进制编辑形式看的很清楚。

    //////////////////
    <base target="_self" /> 是网页默认的配置,要是改为
    <base target="_blank" />,会直接作用于<a>...</a>,而且会影响链接代码里的 onclick="" 函数。

    //////////////////
    非常奇怪的问题:

    function $F(id)
    {
      return document.getElementById(id);
    }

    $F(id) 是取 input 的 id 值的,在本地apache服务器上可以取 name 或 id 的值。
    但是,代码上传到远程服务器上后,只能取 id 的值。(同一个浏览器!)

    本地服务器和远程服务器有差别??

    //////////////////////////////
    MySQL 的 MyISAM 引擎的数据库,冷恢复后,如果有异常,应该把 MySQL 服务重新启动一下。
    所以,MySQL 的脱机备份、恢复,最好在 MySQL 服务关闭后操作。

    //////////////////////////////
    地址里带参数,特别如果是汉字,需要  ?c=urlencode(...),然后 urldecode($_GET['c'])
    注意:UTF-8编码,在 IIS 下可以,在 Windows+apache下不行??
    还和IE的设置有关:(IE8)高级--发送UTF-8 URL。

    //////////////////////////////
    session[] 在后端用 ajax 调用生成时,如果立即调用session,可能会因为没有被生成:没有产生会话文件,而调用失败。

    //////////////////////////////
    语句 header("Location:xxx.php"); 转向之后,应该还需要执行 exit 语句。
    否则,还会执行到本页尾部(虽然眼睛看不到)。即:
    header("Location:xxx.php");
    exit;

    //////////////////////////////
    同一个网站里,不要让网页重名。否则会因为在浏览器端有缓存,而错乱。 IE 和 chorom 浏览器都出现过该问题。

    //////////////////////////////
    smarty 模版文件不能重名。否则会因为smarty在服务端有缓存,而导致错乱。

    ////////////////////////////////////
    一个连接的 href="javascript:hanshu();"  和 jQuery 的click事件,有时可以同时被触发,但有时只触发一个事件,不稳定。
    所以,不要在一个链接里同时使用 js 函数和 jQuery 点击事件!

    /////////////////////////////////
    <select name="newgroupid">
      <optgroup label="会员用户组">
        <option value="10" selected>新手上路</option>
      </optgroup>
      <optgroup label="自定义用户组">
        <option value="20">QQ游客</option>
      </optgroup>
      <optgroup label="自定义管理组">
        <option value="16">实习版主</option>
        <option value="17">网站编辑</option>
        <option value="19">审核员</option>
      </optgroup><optgroup label="系统用户组"><option value="2">超级版主</option>
      <option value="3">版主</option>
      <option value="4">禁止发言</option>
      <option value="8">等待验证会员</option>
    </optgroup></select>

    /////////////////////////////////////////////////
    MySQL字符串型字段长度和汉字个数:
    UTF8编码的字段,字段长度和保存的汉字个数相同。比如字段长度为6,就能保存6个汉字,而不是3个。