Archive for the ‘PHP’ Category

Php圆周取点算法

星期一, 五月 27th, 2013 58 views

本篇的重点其实是圆周取点算法,说是Php只是因为通过Php的进行编码而已,使用其他语言均可。

首先概述一下圆周取点算法的需求:以 O(Xo,Yo) 为圆心,d 为半径画一个圆,从圆心角0度开始,依次显示出在这个圆上直线间距为 t 的所有点的坐标。

如图:

在这个圆 O上所有直线间距为t的点的坐标为 P1、P2…Pn

接下来看算法:

①如上图,通过圆的简单定理可以知道在同一个圆上当两个扇形的弦长即 t 相等时,其圆心角也是相等的,因此本算法可以将 t 转换为圆心角度数再做计算:

SinO` = t / 2r
∠O` = arcsin(SinO`)
∠O = 2∠O`

此时即将弦长 t 转换成了对应的圆心角。

②接下来我们根据圆心角计算出对应的点的坐标,使用公式如下:

Xn = Xo + r * Cos(0°* (n-1))
Yn = Yo + r * Sin(0°* (n-1))

此时Pn(Xn,Yn)即是我们需要求出的圆上的点。
(更多…)

PHP常见BUG修复笔记(长期更新)

星期一, 三月 18th, 2013 29 views

 

1
2
3
4
5
错误提示:Fatal error: Call to undefined function session_register() in ...

错误原因: 版本错误 PHP4.2以上版本不需要用session_register()注册SESSION变量

修复方法: 去掉session_register()  直接用 $_SESSION["string"]=“string" 赋值

 

1
2
3
4
5
错误提示:Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by  in ...

错误原因: 由于在调用Session_Start()之前有输出导致,任何空字符都不被允许

修复方法:  将session_start();.......?>放到文件首,并且<? 前面不能有任何字符。记事本编写后可能会产生空字符,DW下注意去掉BOM即可。

 

1
2
3
4
5
错误现象:session无法跨页传递

错误原因: 除了网上常有的几种原因之外,有一种特别诡异,即编码问题照成上文的错误,虽然是警告,但同时影响了session的使用,如果经过几种尝试,仍旧无法解决,多半是编码错误。

修复方法: 编辑php的配置文件php.ini中的 default_charset = “utf-8″ 即使php支持当前脚本的默认语言

 

1
2
3
4
5
错误提示:Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ...

错误原因:返回结果集中行的数目, 其中result是无效的。原因较多,需要逐一检查,语句,字段名,数据库表结构来确定。

修复方法:逐一排查,确认数据库有此表结构字段名,确定无语法错误,确定编码集统一。

未完待续

BeiTown

2013.03.18

Php页面header跳转的方法及错误矫正

星期五, 十二月 21st, 2012 44 views

因为准备架设双博客,所以把之前的技术博客移动到了网站根目录下的coder子文件夹,在WP后台修改了网站首页地址之后,Blog运行恢复正常。但是之前的一些外链比如 http://www.beitown.com/?p=420 此时无法链接到正确的文章页面。所以准备在根目录的index.php根据来路域名做一个判断及跳转。代码如下:

1
2
3
4
5
6
7
8
<?php
$url = $_SERVER['QUERY_STRING'];
if (stristr($url,"p="))
{
   //echo "url=:" . $url;
   header('Location:/coder/?'.$url);
}
?>

$_SERVER["QUERY_STRING"]表示查询(query)的字符串,浏览器通过http://www.beitown.com/?p=420地址访问index.php时,$_SERVER["QUERY_STRING"]的值为”?”之后的表达式,即p=420
通过stristr函数对url进行包含判断,如果含有表达式”p=”则进入相应的操作。
header函数意为跳转,使用方法参考demo

另外这里有一个错误介绍一下,如果在header前调用了echo会出现如下警告:

Warning: Cannot modify header information – headers already sent by….

解决办法是将echo去掉即可。
此时访问 http://www.beitown.com/?p=420将会跳转到新的文章页面即http://www.beitown.com/coder/?p=420中去。

BeiTown
2012.12.21