php

PHP语法容易忽略的问题小结

星期四, 十一月 1st, 2012 | linux, php | 没有评论

之前收藏的一个php常见的问题小结,挺不错的,在此摘录下.

1.PHP变量区分大小写,定义的函数、类名以及系统内置的函数和关键字不区分大写。

2.PHP结束标记“?>”前的那条语句的分号可省略,但不推荐。

3.注释:

      <? echo $a; #print $a ?><h1>something</h1>
     遇到php结束符号则#注释自动终结
 
     类似的:/*注释也是遇到php结束符号则注释自动终结
 
   上面的语法合法,但不推荐使用。
 
     /*ddddddd /*ffffff */  dddd */ 
    这样的注释嵌套导致出错,因为PHP视图执行“ffffff”。

4.类名stdClass被保留

5.define函数定义常量,常量引用时不加$

6.函数名和关键字不区分大小写

7.浮点数的值仅仅是数的近似表示,尽量避免假定浮点数是完全精确的,利用“==”比较浮点数时,通常将其移动若干位小数位置后比较。

     if( int($a * 1000) == int($b * 1000)).....//后移三位小数点并转换为整形后比较

8.

     $path='c:\\windows';echo  $path;打印:"c:\\windows"

9.资源(或称为句柄)实际上是整数,使用资源的好处是它会自动完成内存的管理,但最后一个对资源的引用销毁时,常见该资源的扩展被调用来为该资源释放所有内存,关闭所有连接等。函数中容易发现自动清空资源的好处,将资源指派给一个局部变量,当函数调用结束时,变量的值自动被php回收。例如:

             function   func1(){
 
                   $res = database_connect();database_query($res);
 
                   //退出函数时连接自动关闭
 
             }

尽管可用上面的方法,还是推荐显式的销毁资源。

10.可变变量(即变量的变量)

        $foo = 'abc';
        $$foo = 'xyz';//$abc的值 "xyz"

11.php中的变量引用:就是如何创建变量的别名。(用C中的指针理解要容易些)

         $a = & $b;    //$a和$b正向相同的内存区域。其一改变另一也改变,销毁其一不影响另一。
 
        函数利用引用可以传递参数(避免赋值大的字符串或数组)。例如:
 
       function  &ret_ref(){
                $var="php";//$var是大树组或者的字符串时效率比较高
                return $var;
       }
       $v = & ret_ref();

12.php中的局部变量只存在与函数中,循环、分支和块中的变量不是局部变量。函数为定义的变量为全局变量,函数内要访问全局变量必须声明为global,然后再使用(也可以使用笨方法,就是全局数组$GLOBALS)。

13.php使用“引用计数”和“写时复制”技术。

› Continue reading

Tags: ,

游戏服务端C/C++与脚本语言(php,Lua,Squirrel)共服务

星期五, 八月 31st, 2012 | webgame, 游戏开发 | 一条评论

前两年一直用java做页游的服务端编程,也没有想过对应的语言混合编程,毕竟java可以一种搞定,效率上也还不错.
现在就职的技术老大以前是做客户端游戏出身的,c/c++功力比较牛,技术上就采用 c + Squirrel(一种类似Lua的脚本),刚好在网上看到有人提出为什么要脚本加C,简要回答记录下.

实际上只要底层通信和数据层做好对应的框架后(c封装并提供接口),游戏开发的关键还主要在 对策划功能的理解和实现,即功能实现的设计方案,主要业务逻辑的处理,偶尔也要呼唤底层c的支持而已. 个人的一点认识.

提问:
游戏服务端程序使用PHP与C交互实现与客户端通信,C负责实现处理聊天频道、地图、组队什么的,为什么要这么设计?使用PHP直接与客户端交互不行吗,或者只使用C。各负责什么模块,在这些方面有什么优势?

简要回答:
1.个人认为从语言特性,开发成本,以及项目组人员构成等方面考虑,这么设计应该是可以理解的。
C言语开发的工具运行效率高,但开发难度大,而像游戏中的聊天、地图、组队等功能其实各游戏之间的差别不会特别大,有经验的开发人员可以很容易的将别的游戏类似功能组件移植过来使用。
php言语开发的功能运行效率稍差,但开发成本要低得多,调整灵活,用php来处理一下业务逻辑是非常适合的。
另外像我们公司的游戏的一些对外接口,如跟平台之间的交互接口,我们平台部这边也一般是建议他们使用php来进行开发的。
对于做架构,我个人认为言语并不是最重要的,系统的瓶颈往往也不是因为某种语言,可以根据不同的需要使用不同的语言来进行灵活处理。
› Continue reading

Tags: , , , , , ,

php连接非默认端口(1433,3306)的连接函数参数写法.

星期五, 五月 25th, 2012 | php | 没有评论

使用php连接sqlserver 数据库,修改了端口非1433了:

更改了默认的1433端口号,则IP地址后面加端口号,用,号隔开,不是:号,如
$linkId = mssql_connect(‘IP地址,端口号’,’用户名’,’密码’);
值得注意的是mysql_connect使用的是:号
记忆下,在手册上也没有写清楚,真是麻烦.

Tags: ,

php判断常用上传文件类型,自动获取文件扩展名

星期四, 三月 29th, 2012 | php | 没有评论

在用php进行文件上传的时候总要判断文件的扩展名名等进行是否允许操作,经测试记录比较常用的文件类型,
记录如下,如有不全,希望能补正修改,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
switch    ($_FILES['userupfile']['type'])   
   {     
   case    "image/jpeg":     
   $fileextname    =    "jpg";     
   break;  
    case    "image/pjpeg":     
   $fileextname    =    "jpg";     
   break;    
   case    "image/gif":     
   $fileextname    =    "gif";     
   break;     
   case    "image/png":     
   $fileextname    =    "png";     
   break; 
   case    "image/x-png":     
   $fileextname    =    "png";     
   break; 
    case    "image/bmp":     
   $fileextname    =    "bmp";     
   break;    
   case    "application/x-shockwave-flash":     
   $fileextname    =    "swf";     
   break;     
   case    "text/plain":     
   $fileextname    =    "txt";     
   break;     
   case    "application/msword":     
   $fileextname    =    "doc";     
   break;     
   case    "application/x-zip-compressed":     
   $fileextname    =    "zip";     
   break; 
   case    "application/vnd.ms-excel":     
   $fileextname    =    "xls";     
   break; 
   case    "application/vnd.openxmlformats-officedocument.wordprocessingml.document":     
   $fileextname    =    "docx";     
   break; 
   case    "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":     
   $fileextname    =    "xlsx";     
   break; 
   case    "application/pdf":     
   $fileextname    =    "pdf";     
   break;   
 
   }

Tags: , , ,

apache的window配置PHP说明

星期二, 一月 24th, 2012 | php | 没有评论

可以都使用最新的版本,此处要注意的就是php的版本为vc6和thread safe,具体可以参看php的说明在左边的注释.
Apache 2.2.21 — www.apache.com
PHP 5.2.17 — www.php.net
MySQL — www.mysql.com
Zend Optimizer — www.zend.com
phpMyAdmin — www.phpmyadmin.net
严重注意:在进行下列操作前,Windows XP应无安装IIS、PHP、APACHE、MYSQL、ZEND。
≡ Apache 2.2.21的安装 ≡
打开我的电脑,进入D盘,在其下新建一个文件夹,名为 local 。
到其官方站点下载 httpd-2.2.21-win32-x86-openssl-0.9.8r.msi 并执行。
按3 次Next按钮,安装程序要求输入你的Network Domain(网络域名)、Server Domain(服务器域名)和网站管理员的E-mail,有的话就如实填写,本说明介绍的是本地自建测试环境,所以随便一下,前两个填 localhost ,邮件写自己的即可。
进入Next后,默认的安装路径是”C:\Program Files\Apache Software Foundation\Apache2.2\”,修改路径,改为前面所述的”D:\local\Apache2″。
然后一路下去,直到安装结束;此时,打开D盘下的local文件夹,可以看到有一个名为Apache2的文件夹。
打开IE,然后在地址栏输入:”http://localhost” 或者 “http://127.0.0.1” 可以看到Apache安装完成的成功页面;以后网页的存在位置就在 “D:\local\Apache2\htdocs” 目录。

≡ PHP 5.2.17 (VC6 x86 Thread Safe )的安装 ≡
› Continue reading

Tags: , , ,

PHP获取上传文件后缀名的方法(函数)系统自带

星期二, 十二月 27th, 2011 | linux, php | 没有评论

php上传文件重命名时要获取文件的后缀名,网上PHP获取上传文件或图片后缀名的方式五花八门,很多都是把上传文件名称分解成数组再获取后缀名的,麻烦不说而且容易有漏洞。
其实PHP获取上传文件的后缀名可以用pathinfo这个函数。

比如获取上传的图片后缀名称的简单代码实例:

$imgname = $_FILES[“file”][“name”]; //获取上传的文件名称
$filetype = pathinfo($imgname, PATHINFO_EXTENSION);//获取后缀
$newname = date(“Ymdhis”).”.”.$filetype; //构建新名称
其实遇到问题多查查php手册就行了,http://www.w3school.com.cn/php/index.asp

Tags: ,

sqlite在php中使用和安全防护问题

星期四, 六月 9th, 2011 | linux, php | 没有评论

sqlite在php5.X的版本中默认得到了支持,在linux平台下,默认编译安装会被启用,在windows平台下要打开php.ini中的几项:
[sqlite]
sqlite.assoc_case = 0

extension=php_pdo.dll
extension=php_pdo_sqlite.dll
extension=php_sqlite.dll

启用sqlite;
关于安全方面这里将的不是数据接口加密的事情,是简单不让用户访问到数据文件的方法:
1.命名为#号开头,复杂不容易被用户猜到的数据文件(不是很安全)
2.放置应用不能被访问的地方(这个可以的,放在apache或者tomcat和nginx的非发布目录下)
3.针对php的建立一个#i5a6.php的库(库名随意,带.php即可)在其中建立 › Continue reading

Tags: , , ,

PHP教程之PHP服务器变量$_SERVER

星期二, 一月 4th, 2011 | php | 没有评论

服务器变量 $_SERVER 详解:

1、$_SERVER[‘PHP_SELF’] — 获取当前正在执行脚本的文件名

2、$_SERVER[‘SERVER_PROTOCOL’] — 请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。

3、$_SERVER[‘REQUEST_TIME’] — 请求开始时的时间戳。从 PHP 5.1.0 起有效。和time函数效果一样。
› Continue reading

Tags: ,

php教程之set_magic_quotes_runtime()函数的作用

星期二, 一月 4th, 2011 | disucz, pagemaker, php | 没有评论

set_magic_quotes_runtime(0);

可以修改php.ini中 magic_quotes_runtime boolean的设置

当你的数据中有一些
\


这样的字符要写入到数据库里面,又想不被过滤掉的时候,它就很有用,会在这些字符前加上\
› Continue reading

Tags: ,

linux下Apache、php、mysql默认安装路径—编译者的回看

星期一, 十月 11th, 2010 | linux, php | 9 Comments

自己一直是编译安装,安装目录分配的很清楚,今天看到一个朋友的,发现自己不认识了,看了下是默认安装的,
对默认安装的目录结构不熟悉,网上找了下,有朋友列的很清楚,自己摘录,留着自己用也方便~

apache:
如果采用RPM包安装,安装路径应在 /etc/httpd目录下
apache配置文件:/etc/httpd/conf/httpd.conf
Apache模块路径:/usr/sbin/apachectl
web目录:/var/www/html
如果采用源代码安装,一般默认安装在/usr/local/apache2目录下

php:
如果采用RPM包安装,安装路径应在 /etc/目录下
php的配置文件:/etc/php.ini
如果采用源代码安装,一般默认安装在/usr/local/lib目录下
php配置文件: /usr/local/lib/php.ini
或/usr/local/php/etc/php.ini

mysql:
如果采用RPM包安装,安装路径应在/usr/share/mysql目录下
mysqldump文件位置:/usr/bin/mysqldump
mysqli配置文件:
/etc/my.cnf或/usr/share/mysql/my.cnf
mysql数据目录在/var/lib/mysql目录下
如果采用源代码安装,一般默认安装在/usr/local/mysql目录下

Tags: , , , ,

Search

文章分类

Links

Meta