php很多方面适合新手.docx

上传人:b****6 文档编号:5919212 上传时间:2023-01-02 格式:DOCX 页数:46 大小:42.93KB
下载 相关 举报
php很多方面适合新手.docx_第1页
第1页 / 共46页
php很多方面适合新手.docx_第2页
第2页 / 共46页
php很多方面适合新手.docx_第3页
第3页 / 共46页
php很多方面适合新手.docx_第4页
第4页 / 共46页
php很多方面适合新手.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

php很多方面适合新手.docx

《php很多方面适合新手.docx》由会员分享,可在线阅读,更多相关《php很多方面适合新手.docx(46页珍藏版)》请在冰豆网上搜索。

php很多方面适合新手.docx

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=你也好

传递参数是会导致一个内部错误

解决办法:

"test.php?

a=".urlencode(你好)."&b=".urlencode(你也好)

.............

【3】win32下的session不能正常工作

php.ini默认的session.save_path=/tmp

这显然是linux下的配置,win32下php无法读写session文件导致session无法使用

把它改成一个绝对路径就可以了,例如session.save_path=c:

windowsemp

【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如果没有设置密码,应该使用

updatemysql.usersetpassword="yourpassword"whereuser="root"

修改密码

【7】headeralreadysent

这个错误通常会在你使用HEADER的时候出现,他可能是几种原因:

1,你在使用HEADER前PRING或者ECHO了2.你当前文件前面有空行3.你可能INCLUDE了一个文件,该文件尾部有空行或者输出也会出现这种错误。

【8】更改php.ini后没有变化

重新启动webserver,比如IIS,Apache等等,然后才会应用最新的设置

【9】php在2003上面安装(ISAPI的安装方法恳请高手指教)

PHP4的php4isapi.dll好像和2003有些冲突,只能用CGI模式安装

步骤一,先下在一个安装程序,我是装的是:

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##读取,写入文档数据

functionr($file_name){

$filenum=@fopen($file_name,"r");

@flock($filenum,LOCK_SH);

$file_data=@fread($filenum,filesize($file_name));

@fclose($filenum);

return$file_data;

}

functionw($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中设置多个文件输入框,用数组命名他们的名字,如下:

这样,在服务器端做以下测试

echo"

";

print_r($_FILES);

echo"

";

1,在form中设置多个文件输入框,但名字不同,如下:

在服务器端做同样测试:

echo"

";

print_r($_FILES);

echo"

";

PHP_登录_注册_用户_模块_PHP用户登录注册模块实现

    简介摘要:

PHP用户登录模块实现项目包含的功能脚本:

login.php//登录reg.php//注册用户user_add.php//注册校验脚本user_login_check.php//登录校验脚本image.php//验证码图片生成脚本流程:

设计数据库:

包含用户uid,用户名,密码,昵

PHP用户[yonghu]登录[denglu]模块[mokuai]实现

项目[xiangmu]包含的功能脚本[jiaoben]:

login.php//登录[denglu]

reg.php//注册[zhuce]用户[yonghu]

user_add.php//注册[zhuce]校验[xiaoyan]脚本[jiaoben]

user_login_check.php//登录[denglu]校验[xiaoyan]脚本[jiaoben]

image.php//验证[yanzheng]码图片生成脚本[jiaoben]

流程:

设计数据[shuju]库[shujuku]:

包含用户[yonghu]uid,用户[yonghu]名[yonghuming],密码[mima],昵称,性别,邮箱,注册[zhuce]时间

sql语句[yuju]如下

createtableusers(uidbigint(20)notnullauto_incrementprimarykeyuniquekey,usernamevarchar(100)defaultnull,userpasswordvarchar(100)defaultnull,nicknamevarchar(100)defaultnull,sextinyint

(1)default0,emailvarchar(100)defaultnull,regtimetimestamp(14)default0);

注册[zhuce]模块[mokuai]:

reg.php填写注册[zhuce]信息[xinxi],通过js脚本[jiaoben]判断所填写信息[xinxi]是否合法

如果合法,那么提交[tijiao]表单,通过user_add.php进行用户[yonghu]的注册[zhuce]

user_add.php脚本[jiaoben]实现的功能如下:

判断输入[shuru]的信息[xinxi]是否合法,这个js可以实现,但是为了浏览[liulan]器[liulanqi]兼容这里用php再实现一遍js的功能

如果合法并且以前没有注册[zhuce]过,那么可以注册[zhuce],否则提示[tishi]错误[cuowu]信息[xinxi]

登录[denglu]模块[mokuai]:

login.php填写登录[denglu]信息[xinxi],js判断输入[shuru]信息[xinxi]是否合法

如果合法提交[tijiao]表单,通过user_login_check.php登录[denglu]

user_login_check.php实现功能如下:

判断输入[shuru]信息[xinxi]是否合法,与js功能相同

如果合法并且用户[yonghu]名[yonghuming]密码[mima]都对的话保存session变量[bianliang],允许用户[yonghu]登录[denglu]

验证[yanzheng]码模块[mokuai]:

防止恶意注册[zhuce]生成验证[yanzheng]码,生成的是png格式的5位数字[shuzi]验证[yanzheng]码

需要用到session变量[bianliang],服务器[fuwuqi]需要安装[anzhuang]gd库

具体注意事项:

1、javaScript脚本[jiaoben]

  

  functionIsDigit(cCheck)

  {

  return(('0'<=cCheck)&&(cCheck<='9'));

  }

  functionIsAlpha(cCheck)

  {

  return((('a'<=cCheck)&&(cCheck<='z'))||(('A'<=cCheck)&&(cCheck<='Z')));

  }

  functionIsValid()

  {

  varstruserName=reg.UserName.value;

  for(nIndex=0;nIndex

  {

  cCheck=struserName.charAt(nIndex);

  if(!

(IsDigit(cCheck)||IsAlpha(cCheck)))

  {

  returnfalse;

  }

  }

  returntrue;

  }

  functionchkEmail(str)

  {

  returnstr.search(/[\w\-]{1,}@[\w\-]{1,}\.[\w\-]{1,}/)==0?

true:

false;

  }

  functiondocheck()///////////////Thisplacehasaveryimportantproblem.MFcan'tdoaswoexpect!

  {

  if(reg.UserName.value=="")

  {

  alert("请填写用户[yonghu]名[yonghuming]");

  returnfalse;

  }

  elseif(!

IsValid())

  {

  alert("用户[yonghu]名[yonghuming]只能使用数字[shuzi]和字母");

  returnfalse;

  }

  elseif(reg.UserPassword.value=="")

  {

  alert("请填写密码[mima]");

  returnfalse;

  }

  elseif(reg.UserPassword.value!

=reg.CUserPassword.value)

  {

  alert("两次密码[mima]输入[shuru]不一样");

  returnfalse;

  }

  elseif(reg.NickName.value=="")

  {

  alert("请填写昵称");

  returnfalse;

  }

  elseif(reg.Email.value=="")

  {

  alert("请填写邮箱地址[dizhi]");

  returnfalse;

  }

  elseif(!

chkEmail(reg.Email.value))

  {

  alert("请填写有效[youxiao]的邮箱地址[dizhi]!

");

  returnfalse;

  }

  elsereturntrue;

  }

  

响应[xiangying]js脚本[jiaoben]的方法[fangfa]:

在提交[tijiao]表单时候响应[xiangying](有的浏览[liulan]器[liulanqi]在docheck()返回错误[cuowu]的时候任然继续提交[tijiao]表单,这就是为什么要在表单处理脚本[jiaoben]里任然继续使用php进行输入[shuru]信息[xinxi]再次验证[yanzheng]的原因)

登陆时候可以只验证[yanzheng]用户[yonghu]名[yonghuming]和密码[mima]

2、数据[shuju]库[shujuku]连接[lianjie][shujukulianjie]

$strSql="";

$database_username="root";

$database_password="ssklzs";

$database_name="userlog";

$s_UserName=$_POST["UserName"];

$s_UserPassword=$_POST["UserPassword"];

$strSql="select*fromuserswhereusernamelike'".$s_UserName."'anduserpasswordlike'".$s_UserPassword."'";

//$strSql="insertintousers(username,userpassword,nickname,sex,email,regtime)values('".$s_UserName."','".$s_UserPassword."','".$s_NickName."','".$s_Sex."','".$s_Email."',now())";//now()当前系统[xitong]时间

//连接[lianjie]数据[shuju]库[shujuku]

$link=mysql_connect("localhost",$database_username,$database_password)ordie("CouldnotconnectMySQL:

".mysql_error());

mysql_select_db($database_name,$link)ordie("Cannotuseuserlog:

".mysql_error());

$result=mysql_query($strSql);

//sql执行[zhihang]完毕

if($row=mysql_fetch_object($result)){···}

else{···}

3、session变量[bianliang]设置[shezhi]

session是不同php脚本[jiaoben]间参数[canshu]进行传递的通道[tongdao]

session变量[bianliang]大致需要两个,一个用来保存验证[yanzheng]码,一个用来记录登录[denglu]的用户[yonghu]

一般情况[qingkuang]下php.ini文件[wenjian]的session.auto_start=0表示session没有自动开启,所以在使用session时候需要将此数值设为1

注意session变量[bianliang]的初始化[chushihua]和注销[zhuxiao]

4、返回按钮

echo("")

 

PHP&MySQL初级教程

制做插件前如果还不会PHP和MySQL就先看一看吧~

1.PHP简介

PHP是一种易于学习和使用的服务器端脚本语言。

只需要很少的编程知识你就能使用PHP建立一个真正交互的WEB站点。

本教程并不想让你完全了解这种语言,只是能使你尽快加入开发动态web站点的行列。

我假定你有一些HTML(或者HTML编辑器)的基本知识和一些编程思想。

PHP是能让你生成动态网页的工具之一。

PHP网页文件被当作一般HTML网页文件来处理并且在编辑时你可以用编辑HTML的常规方法编写PHP。

PHP代表:

超文本预处理器(PHP:

HypertextPreprocessor)。

PHP是完全免费的,不用花钱,你可以从PHP官方站点()自由下载。

PHP遵守GNU公共许可(GPL),在这一许可下诞生了许多流行的软件诸如Linux和Emacs。

你可以不受限制的获得源码,甚至可以从中加进你自己需要的特色。

PHP在大多数Unix平台,GUN/Linux和微软Windows平台上均可以运行。

怎样在Windows环境的PC机器或Unix机器上安装PHP的资料可以在PHP官方站点上找到。

安装过程很简单。

1.1历史

三年前,RasmusLerdorf为了创建他的在线简历而创造了"个人主页工具"(PersonalHomePageTools)。

这是一种非常简单的语言。

其后越来越多的人们注意到了这种语言并对其扩展提出了各种建议。

在许多人的无私奉献下以及这种语言本身的源代码自由性质,它演变成为一种特点丰富的语言,而且现在还在成长中。

PHP虽然很容易学习,但是速度上比mod_perl(植入web服务器的perl模块)慢。

AndyGutmans和ZeevSuraki是Zend的主要作者。

可以去Zend站点()了解更多。

PHP的应用在个人性质的web工程中增长显著。

根据Netcraft在1999年10月的报告,有931122个域和321128个IP地址利用PHP技术。

1.2PHP的先进之处

应用PHP有许多好处。

当然已知的不利之处在于PHP由于是开放源码项目,没有什么商业支持,并且由此而带来的执行速度缓慢(直到PHP4之前)。

但是PHP的邮件列表很是有用而且除非你正在运行像Yahoo!

或者A这样的极受欢迎的站点,你不会感觉出PHP的速度与其他的有什么不同。

最起码我就没有感觉出来!

好了,让我们来看看PHP有那些优点:

-学习过程

我个人更喜欢PHP的非常简单的学习过程。

与Java和Perl不同,你不必把头埋进100多页的文档中努力学习才可以写出一个象样的程序。

只要了解一些基本的语法和语言特色,你就可以开始你的PHP编码之旅了。

之后你在编码过程中如果遇到了什么麻烦,还可以再去翻阅相关文档。

PHP的语法与C,Perl,ASP或者JSP。

对于那些对上述之一的语言较熟悉的人来说,PHP太简单了。

相反的,如果你对PHP了解较多,那么你对于其他几种语言的学习都很简单了。

你只需要30分钟就可以将PHP的核心语言特点全部掌握,你可能已经非常了解HTML,甚至你已经知道怎样用编辑设计软件或者手工来制作好看的WEB站点。

由于PHP代码能够无障碍的添加进你的站点,在你设计和维护站点的同时,你可以很轻松的加入PHP使得你的站点更加具有动态特性。

-数据库连接

PHP可以编译成具有与许多数据库相连接的函数。

PHP与MySQL是现在绝佳的组合。

你还可以自己编写外围的函数取间接存取数据库。

通过这样的途径当你更换使用的数据库时,可以轻松的更改编码以适应这样的变化。

PHPLIB就是最常用的可以提供一般事务需要的一系列基库。

-可扩展性

就像前面说的那样,PHP已经进入了一个高速发展的时期。

对于一个非程序员来说为PHP扩展附加功能可能会比较难,但是对于一个PHP程序员来说并不困难。

-面向对象编程

PHP提供了类和对象。

基于web的编程工作非常需要面向对象编程能力。

PHP支持构造器、提取类等。

-可伸缩性

传统上网页的交互作用是通过CGI来实现的。

CGI程序的伸缩性不很理想,因为它为每一个谠诵械腃GI程序开一个独立进程。

解决方法就是将经常用来编写

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1