PHP初学者头疼问题总结

【1】页面之间无法传递变量 get,post,session在最新的php版本中自动全局变量是关闭的,所以要从上一页面取得提交过来得变量要使用$_GET['foo'],$_POST['foo'],$_SESSION['foo']来得到 
当然也可以修改自动全局变量为开(php.ini改为register_globals = On);考虑到兼容性,还是强迫自己熟悉新的写法比较好。 
【2】Win32下apache2 用get方法传递中文参数会出错 
test.php?a=你好&b=你也好 
传递参数是会导致一个内部错误 
解决办法:"test.php?a=".urlencode(你好)."&b=".urlencode(你也好) 
.............

【3】win32下的session不能正常工作 
php.ini默认的session.save_path = /tmp 
这显然是linux下的配置,win32下php无法读写session文件导致session无法使用 
把它改成一个绝对路径就可以了,例如session.save_path = c:\windows\temp 
【4】显示错误信息 
当php.ini的display_errors = On并且error_reporting = E_ALL时,将显示所有的错误和提示,调试的时候最好打开以便纠错,如果你用以前php写法错误信息多半是关于未定义变量的。变量在赋值以前调用会有提示,解决办法是探测或者屏蔽 
例如显示$foo,可以if(isset($foo)) echo $foo 或者echo @$foo 
【5】Win32下mail()不能发送电子邮件 
在linux下配置好的sendmail可以发送,在win32下需要调用smtp服务器来发送电子邮件 
修改php.ini的SMTP = ip //ip是不带验证功能的smtp服务器(网上很难找到) 
php发送邮件的最好解决方法是用socket直接发送到对方email服务器而不用转发服务器 
【6】初装的mysql如果没有设置密码,应该使用 
update mysql.user set password="yourpassword" where user="root" 
修改密码 
【7】header already sent 
这个错误通常会在你使用HEADER的时候出现,他可能是几种原因:1,你在使用HEADER前PRING或者ECHO了2.你当前文件前面有空行3.你可能INCLUDE了一个文件,该文件尾部有空行或者输出也会出现这种错误。! 
【8】更改php.ini后没有变化 
重新启动web server,比如IIS,Apache等等,然后才会应用最新的设置 
【9】php在2003上面安装(ISAPI的安装方法恳请高手指教) 
PHP4的php4isapi.dll好像和2003有些冲突,只能用CGI模式安装 
步骤一,先www.php.net下在一个安装程序,我是装的是:php-4.2.3-installer.exe,你也可以去找最新的版本,在安装php-4.2.3-installer.exe之前保证你的IIS6.0启动了,并能够访问。 安装好以后,在默认网站-->应用程序配置 
步骤二:点击 web服务扩展 -->新建web服务扩展. 
步骤三: 扩展名-->php,然后添加 
步骤四:找到php.exe的路径添加上去。 
步骤五: 确定就可以了! 
步骤六: 选择php的服务扩展,然后点击允许。 
【10】 
有时候sql语句不起作用,对数据库操作失败 
最简便的调试方法,echo那句sql,看看变量的值能得到不 
【11】include和require的区别 
两者没有太大的区别,如果要包含的文件不存在,include提示notice,然后继续执行下面的语句,require提示致命错误并且退出 
据我测试,win32平台下它们都是先包含后执行,所以被包含文件里最好不要再有include或require语句,这样会造成目录混乱。或许*nux下情况不同,暂时还没测试 
如果一个文件不想被包含多次可以使用include_once或require_once## 读取,写入文档数据 
function r($file_name) { 
$filenum=@fopen($file_name,"r"); 
@flock($filenum,LOCK_SH); 
$file_data=@fread($filenum,filesize($file_name)); 
@fclose($filenum); 
return $file_data; 

function w($file_name,$data,$method="w"){ 
$filenum=@fopen($file_name,$method); 
flock($filenum,LOCK_EX); 
$file_data=fwrite($filenum,$data); 
fclose($filenum); 
return $file_data; 
}

【12】isset()和empty()的区别 
两者都是测试变量用的 
但是isset()是测试变量是否被赋值,而empty()是测试一个已经被赋值的变量是否为空 
如果一个变量没被赋值就引用在php里是被允许的,但会有notice提示 
如果一个变量被赋空值,$foo=""或者$foo=0或者 $foo=false,那么empty($foo)返回真,isset($foo)也返回真,就是说赋空值不会注销一个变量。 
要注销一个变量,可以用 unset($foo)或者$foo=NULL 
【13】mysql查询语句包含有关键字 
php查询mysql的时候,有时候mysql表名或者列名会有关键字 
这时候查询会有错误。例如表名是order,查询时候会出错 
简单的办法是sql语句里表名或者列名加上`[tab键上面]来加以区别 
例如select * from `order` 
【14】通过HTTP协议一次上传多个文件的方法 
有两个思路,是同一个方法的两种实现。具体程序还需自己去设计 
1,在form中设置多个文件输入框,用数组命名他们的名字,如下: 
<form action="" method=post> 
<input type=file name=usefile[]> 
<input type=file name=usefile[]> 
<input type=file name=usefile[]> 
</form> 
这样,在服务器端做以下测试 
echo "<pre>"; 
print_r($_FILES); 
echo "</pre>";

1,在form中设置多个文件输入框,但名字不同,如下: 
<form action="" method=post> 
<input type=file name=usefile_a> 
<input type=file name=usefile_b> 
<input type=file name=usefile_c> 
</form> 
在服务器端做同样测试: 
echo "<pre>"; 
print_r($_FILES); 
echo "</pre>";

(0)

相关推荐

  • 给初学者的30条PHP最佳实践(荒野无灯)

    1,和PHP手册成为好朋友 2,打开Error Reporting Error reporting 在 PHP 开发时是很有帮助的. 你可以在你代码中发现先前你没有发现的错误,因为并不是所有的BUG都会让程序运行不了的.当产品正式使用时,才有必要关掉错误报告,不然顾客看到一堆奇怪的字符不知道那是什么意思. 3,使用IDE IDE (集成开发环境,Integrated Development Environments)对于开发者来说是很有帮助的工具. 荒野在这里推荐netbeans IDE . 4

  • PHP初学者最感迷茫的问题小结

    [1]页面之间无法传递变量 get,post,session在最新的php版本中自动全局变量是关闭的,所以要从上一页面取得提交过来得变量要使用$_GET['foo'],$_POST['foo'],$_SESSION['foo']来得到 当然也可以修改自动全局变量为开(php.ini改为register_globals = On):考虑到兼容性,还是强迫自己熟悉新的写法比较好. [2]Win32下apache2 用get方法传递中文参数会出错 test.php?a=你好&b=你也好 传递参数是会导

  • PHP读书笔记整理_结构语句详解

    PHP结构语句顺序结构 顺序结构就像一条直线,按着顺序一直往下执行.我们编写的代码默认都是按照顺序结构执行的. 条件结构之if-else- 条件结构就像一个岔路口,可以向左走,也可以向右走.比如上洗手间,我们知道我们的性 别,这时候我们需要根据洗手间提供的条件,左边男洗手间,右边女洗手间,或者正好相反,其中性别就是这个条件结构的条件.再比如,现在的分数都流行使用 A.B.C来分级,假设考试成绩是93分,可以将其设置为等级A,考试成绩是87,可以将其设置为等级B,这里分数区间即为条件结构中的条件.

  • PHP初学者常见问题集合 修正版(21问答)

    1,如何连接连两个字符串? 答:在php中连接两个字符串可以直接使用"."操作符号,例如$newStr="Zhang"."san",在java中是使用"+"操作符号,不要混淆. 2,如何计算一个字符串的长度? 答:$str="test";$length=strlen($str);即使用strlen(str)函数. 3,如何按照某个分割符拆分一个字符串? 答:使用explode(delim,str)函数,例如

  • 10个对初学者非常有用的PHP技巧

    本文介绍一些关于改善和优化PHP代码的提示和技巧,供大家参考,具体内容如下 1.不要使用相对路径,要定义一个根路径 这样的代码行很常见: require_once('../../lib/some_class.php'); 这种方法有很多缺点: 1).它首先搜索php包括路径中的指定目录,然后查看当前目录.因此,会检查许多目录. 2).当一个脚本被包含在另一个脚本的不同目录中时,它的基本目录变为包含脚本的目录. 3).另一个问题是,当一个脚本从cron运行时,它可能不会将它的父目录作为工作目录.

  • PHP读书笔记_运算符详解

    什么是运算符 什么是运算符?运算符是告诉PHP做相关运算的标识符号.例如,你需要计算123乘以456等于多少,这时候就需要一个符号,告诉服务器,你需要做乘法运算. PHP中的运算符有哪些?PHP运算符一般分为算术运算符.赋值运算符.比较运算符.三元运算符.逻辑运算符.字符串连接运算符.错误控制运算符. PHP中的算术运算符 算术运算符主要是用于进行算术运算的,例如:加法运算.减法运算.乘法运算.除法运算.在PHP中的常用的算术运算符对应下表: PHP中的赋值运算符 PHP的赋值运算符有两种,分别

  • 适合PHP初学者阅读的4本经典书籍

    如果你学过其他的语言,你会发现PHP其实还算简单的.有人说PHP学习适合看手册,但是依然有很多的经典书可以帮助大家入门和提高.以下4本你就可以好好读读. 1.细说PHP (点击下载,即可阅读) PHP入门的经典,内容详实易懂,全面涵盖了web开发的所需的知识内容.是一本从入门到精通PHP技术的首选教材.国内比较良心的快速入门php书籍 2.Head First: PHP & MySQL(中文版) (点击下载,即可阅读) 有大量的实例.图解,以及形式多样的练习,不会罗列一大堆关键字和规则让你昏昏欲

  • 推荐一本PHP程序猿都应该拜读的书

    PHP这几年口碑很差.关于它的"糟糕设计的汇总"和语法上的矛盾有着大量的讨论,但是主要的抱怨通常是安全.很多PHP站点分分钟被黑掉,甚至一些有经验的.有见识的程序员会说,这门语言本身是不安全的. 我总是对此持反对意见,因为有常识性的原因,有如此多的PHP安全违反现象. PHP应用程序经常被黑掉是由于: PHP应用程序太多了. 它易于学习和编写. 糟糕的PHP也容易编写. 就是这么简单.PHP流行好多年了.PHP越是受欢迎,它被发现的漏洞就越多.这些黑客发现的漏洞很少是PHP处理引擎本身

  • 最令PHP初学者们头痛的十四个问题

    [1]页面之间无法传递变量 get,post,session在最新的PHP版本中自动全局变量是关闭的,所以要从上一页面取得提交过来得变量要使用$_GET['foo'],$_POST['foo'],$_SESSION['foo']来得到.当然也可以修改自动全局变量为开(php.ini改为reGISter_globals = On):考虑到兼容性,还是强迫自己熟悉新的写法比较好.  [2]Win32下apache2 用get方法传递中文参数会出错:  test.php?a=你好&b=你也好  传递参

  • PHP初学者头疼问题总结

    [1]页面之间无法传递变量 get,post,session在最新的php版本中自动全局变量是关闭的,所以要从上一页面取得提交过来得变量要使用$_GET['foo'],$_POST['foo'],$_SESSION['foo']来得到  当然也可以修改自动全局变量为开(php.ini改为register_globals = On):考虑到兼容性,还是强迫自己熟悉新的写法比较好.  [2]Win32下apache2 用get方法传递中文参数会出错  test.php?a=你好&b=你也好  传递参

  • 令PHP初学者头疼十四条问题大总结

    1.页面之间无法传递变量 get,post,session在最新的php版本中自动全局变量是关闭的,所以要从上一页面取得提交过来得变量要使用$_GET['foo'],$_POST['foo'],$_SESSION['foo']来得到.当然也可以修改自动全局变量为开(php.ini改为register_globals = On):考虑到兼容性,还是强迫自己熟悉新的写法比较好. 2.Win32下apache2用get方法传递中文参数会出错 test.php?a=你好&b=你也好 传递参数是会导致一个

  • 详解JavaScript中的this指向问题

    题记 JS中的this指向一直是个让初学者头疼的问题.今天,我们就一起来瞅瞅this倒地是咋回事,详细说说this指向原则,从此不再为了this指向操碎了心. 开篇 首先我们都知道this是Javascript语言的一个关键字. 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.随着函数使用场合的不同,this的值会发生变化.但是有一个总的原则,那就是this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它所在函

  • JavaScript初学者应注意的七个细节详细介绍

    种种语言都有它特别的地方,对于JavaScript来说,使用var就可以声明任意类型的变量,这门脚本语言看起来很简单,然而想要写出优雅的代码却是需要不断积累经验的.本文利列举了JavaScript初学者应该注意的七个细节,与大家分享. (1)简化代码 -------------------------------------------------------------------------------- JavaScript定义对象和数组非常简单,我们想要创建一个对象,一般是这样写的: 复

  • 奉献给JavaScript初学者的编写开发的七个细节

    (1)简化代码 JavaScript定义对象和数组非常简单,我们想要创建一个对象,一般是这样写的: 复制代码 代码如下: var car = new Object(); car.colour = 'red'; car.wheels = 4; car.hubcaps = 'spinning'; car.age = 4; 下面的写法可以达到同样的效果: 复制代码 代码如下: var car = { colour:'red', wheels:4, hubcaps:'spinning', age:4 }

  • JavaScript初学者应注意的七个细节小结

    每种语言都有它特别的地方,对于JavaScript来说,使用var就可以声明任意类型的变量,这门脚本语言看起来很简单,然而想要写出优雅的代码却是需要不断积累经验的.本文利列举了JavaScript初学者应该注意的七个细节,与大家分享. (1)简化代码 JavaScript定义对象和数组非常简单,我们想要创建一个对象,一般是这样写的: 复制代码 代码如下: var car = new Object(); car.colour = 'red'; car.wheels = 4; car.hubcaps

  • 致Python初学者 Anaconda入门使用指南完整版

    打算学习 Python 来做数据分析的你,是不是在开始时就遇到各种麻烦呢? 到底该装 Python2 呢还是 Python3 ? 为什么安装 Python 时总是出错? 怎么安装工具包呢? 为什么提示说在安装这个工具前必须先安装一堆其他不明所以的工具? 相信大多数 Python 的初学者们都曾为环境问题而头疼不已,但你并不孤独,大家都是这么折腾过来的.为了在入门时少走弯路,并且让高涨的积极性不至于太受打击,这里推荐使用 Anaconda 来管理你的安装环境和各种工具包. 本文介绍了Anacond

  • 初学者AngularJS的环境搭建过程

    AngularJS是什么? AngularJS是一个开源Web应用程序框架.它最初是由MISKO Hevery和Adam Abrons于2009年开发.现在是由谷歌维护 AngularJS特性 AngularJS是一个功能强大的基于JavaScript开发框架用于创建富互联网应用(RIA). AngulajJS为开发者提供的选项(使用JavaScript)在一个干净的MVC(模型 - 视图 - 控制器)的方式来编写客户端应用程序. AngularJS写的应用都是跨浏览器兼容.AngularJS使

  • 面向初学者的vsftpd安装指南

    在最新的各大发行版中的安装盘中都有vsFTPd的软件包,您用相应发行版提供的软件包管理工具就能安装上:当然您可以到各大发行版的FTP镜像中找到vsftpd的软件包:当然也能用软件包的管理工具在线安装:vsftpd的软件包本来不大,花不了多长时间,两分钟就够了吧.因为本文是初学者教程,我严重推荐您用发行版提供的软件来安装,不推荐您自己来编译源码包的安装方式: 如果您用的是Fedora 或Redhat 系统,可以用下面的命令在线安装: [root@localhost ~]# yum install

  • 初学者易上手的SSH-struts2 01环境搭建(图文教程)

    首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层Web应用程序. 集成SSH框架的系统从职责上分为四层:表示层.业务逻辑层.数据持久层和域模块层(实体层). Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持.Spring一方面作为一个轻量级的IoC容器,负责查找.定位.创建和管理对象及

随机推荐