PHP 和 MySQL 开发的 8 个技巧
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-05-24
ta" A partial page when more is expected 出现这些情况的大多数原因并不在于脚本的逻辑,而是 HTML 中存在的 bug 或者脚本生成的 HTML 的 bug 。例如缺少类似 </table>, </form>, </frame> 之类的关闭 Tag,页面就不能刷新。解决这个问题的办法就是,查看 HTML 的源代码。 对于复杂的,不能查到原因的页面,可以通过 W3C 的页面校验程序 http://validator.w3.org/ 来分析。 如果没有定义变量,或者变量定义错误也会让程序变得古怪。例如下面的死循环: <?php for($counter=0; $counter<10; $Counter++) myFunction(); ?> 变量 $Counter 在增加,而 $counter 永远小于 10。这类错误一般都能通过设置较高的错误报告级别来找到: <?php error_reporting(E_ALL); for($counter=0; $counter<10; $Counter++) myFunction(); ?> 5. 采用 header() 函数处理单部件查询 在很多 Web 数据库应用中,一些功能往往让用户点击一个连接后,继续停留在当前页面,这样的工作我叫它“单部件查询”。 下面是一个叫做 calling.php 的脚本: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" > <html> <head> <title>Calling page example</title> </head> <body> <a href="action.php">Click here!</a> </body> </html> 当用户点击上面的连接时,就去调用 action.php。下面是 action.php 的源码: <?php // 数据库功能 // 重定向 header("Location: $HTTP_REFERER"); exit; ?> 这里有两个常见的错误需要提醒一下: 调用 header() 函数后要包含一个 exit 语句让脚本停止,否则后续的脚本可能会在头发送前输出。 header() 函数常见的一个错误是: Warning: Cannot add header information - headers already sent... header() 函数只能在 HTML 输出之前被调用,因此你需要检查 php 前面可能存在的空行,空格等等。 6. reload 的问题及其解决 我以前在写 PHP 程序时,经常碰到页面刷新时,数据库多处理一次的情况。 我们来看 addcust.php: <?php $query = "INSERT INTO customer SET surname = $surname, firstname = $firstname"; $connection = mysql_connect("localhost", "fred", "shhh"); mysql_select_db("winestore", $connection); $result = mysql_query($query, $connection); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" > <html> <head> <title>Customer insert</title> </head> <body> I''ve inserted the customer for you. </body> </html> ?> 假设我们用下面的连接使用这个程序: http://www.freelamp.com/addcust.php?surname=Smith&firstname=Fred 如果这个请求只提交一次,OK ,不会有问题,但是如果多次刷新,你就会有多条记录插入。 这个问题可以通过 header() 函数解决:下面是新版本的 addcust.php: <?php $query = "INSERT INTO customer SET surname = $surname, firstname = $firstname"; $connection = mysql_connect("localhost", "fred", "shhh"); mysql_select_db("winestore", $connection); $result = |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 用PHP 4.2书写安全的脚本下一篇: PHP与JavaScript对多项选择的处理
关于PHP 和 MySQL 开发的 8 个技巧的所有评论