PHP问题,请老师解释这里为什么php输出xml的是A?

1398人阅读
1、中函数前面的@是什么意思?
答:@的作用是忽略调用该函数时产生的错误信息。
2、为什么出现&.EXE: cannot determine local host name.&?
答:由于Windows版本的Apache默认情况下不指定ServerName,所以运行时会出错。 解决的办法是修改Apache安装目录下的conf目录下的httpd.conf: - 搜索ServerName - 去掉前面的#号 - 把ServerName后面的值换成你自己的设置,如localhost之类的 - 保存,重新启动Apache
3、在Windows NT/9x,为什么会出现&Can't connect to
server on 'localhost' &10061&&?
答:MySQL虽然小巧,但毕竟不同于一般的文件,而是一个应用服务器,所以在使用客户程序如mysql之前,必须启动MySQL服务器。是在MySQL的bin目录下运行(哪个文件存在就运行哪个): mysqld.exe 或 mysqld-shareware.exe
4、关于PHP与Sybase数据库的连接与使用
很高兴看到大家在使用Sybase,在使用本站php_sybct.dll模块时,不少网友遇到问题, 现将网友们的问题解释如下:
1.注意你的PHP版本,我只使用PHP官方源代码(http://php.net)编译PHP.而且,在PHP4里,我发现 每一个版本都稍有区别(主要与ZEND有关),因此PHP4的模块严格区分PHP版本,PHP4RC1的模块不 可能在PHP4.0.0中使用.有网友使用公司的PHP编译版,我不能保证你一定能使用本 模块. 2.正确配置你的PHP,保证你的机器在系统可遍历的路径里只有一个php.ini,并配置正确,建议的 做法: 将php_sybct.dll拷至php4所在目录,如c:/php4,修改php.ini(一般位于Windows目录或 WinNT目录)中extension_dir=c:/php4 增加 extension=php_sybct.dll 注意=号两边不要有空 格;运行php_info();,查看PHP输出信息,若找到sybase_ct信息,证明模块加载成功.否则,就是 你的PHP版本与本模块不匹配.其实最简单办法是看有没有什么 'X-Powered By...' 信息,若有, 则模块肯定与PHP版本不匹配! 3.正确安装并配置好Sybase Client端,PHP连接Sybase数据库不是凭空的,它需要Sybase Client DLL的支持.使用SQLEDIT为Web数据库增加一个数据服务(当然,这不是必须的,你可以使用现有 的数据服务)SybWeb,正确填写配置参数后,存盘退出. 使用SybasePing工具,确保SybWeb服务能 ing通Sybase Server. 4.编写PHP代码,连接数据库,使用sybase_pconnect(&SybWeb&,&sa&,&sapass&);//sapass为sa用 户的连接密码.Sybase会提示诸如&changed database to master...&等信息,若想屏蔽这些信 息,可在函数前加'@',sybase_select_db(&Your DataBase Name&)函数前也应加'@'. 5.其它问题: *关于非法操作 其一可能与本机有关,如Sybase Client安装不正确,或Win9x系统有问题.你可以移植到WinNT 试试; 其二可能与Sybase Client版本有关,我使用SybaseCT Version 11.0.2编译的本模块,后来有网 友提供了Version 11.9.2,我将在PHP4.0.1(含)以后的版本中使用.就像MSSQL有65与70一 样,Sybase也会有版本区分.此模块我发给过不少国外的网友,他们使用都很正常.我想是因 为老外不像国人那么时髦,什么都用最新的缘故. *关于或UNIX下Sybase的连接 我没有使用两种系统下的Sybase,因此无法测试,但国内外都有网友使用本模块成功的建立了与 Sybase for Lunix的连接.我想都是基于TCP/IP的,并不奇怪.不过,应注意,此时的SybWeb服务应 基于TCP/IP(NLWNSCK)而不是命名管道(NLMSNMP). *关于Sybase SQL Any Where 有网友使用本模块连接 Sybase SQL Any Where,这是Sybase的一种小型化的基于桌面的数据库 系统,可能无法使用本模块.
我使用Win98+Apache1.3.12+Sybase system 11(Client)+PHP4.0.0作开发; 数据库为 WinNT4+Sybase system11; Web Server为Apache1.3.12(运行于WinNT)+PHP4.0.0,暂时与数据库 Server 同机; 使用一直正常. (由Sunny Wang提供)
5、为什么在WINDOWS下使用PHP4的SESSION功能老是报路径出错?
答:这个可能是PHP4.0在WINDOWS下的一个BUG,希望能在以后的版本里得到彻底解决。目前的解决办法是把保存SESSION的路径设为当前路径(只有这样,才不会包错)。
方法是修改php.ini,把 ession.save_path 的值设为 ./
6、如何在WIN2K下把MYSQL安装成自动的服务?
答:MYSQL在WINDOWS NT 4下很容易被安装成自动启动的服务,但WINDOWS 2000下却要出错?为什么呢?经过查找终于发现了问题所在: 执行mysqld-shareware --install后,将在WINDOWS的服务里增加一项,但这项的执行文件却是mysqld.exe,而不是mysqld- shareware.exe,所以,我的解决办法是把mysqld-shareware.exe复制为mysqld.exe。再启动WINDOWS 2000,一切OK!
7、运行PHP4出现X-Powered-By和Content-type: text/html问题的解决
答:这两条信息本来是HTTP协议头的一部分,也就是说它们是不应该出现在浏览器里的,但为何却出现了呢?
原因是在PHP输出这两条信息之前已经有过浏览器不认识(不是HTTP协议头)的内容,最大的可能就是PHP本身出错,比如调用某个DLL时。
解决的办法是在DOS提示符下运行: C:/PHP/PHP.EXE (注意要换成你自己的PHP目录) 看看是否有什么不正常的信息,然后看情况休整错误即可。
8、如何从Linux下访问Microsoft SQL Server?
答:Bill Gates肯定不会提供Linux下的MS SQL驱动程序,那么如何从Linux下访问MS SQL呢?请看:
确认能够通过TCP/IP PING通MS SQL服务器的那台机器
确认MS SQL上建立了基于TCP/IP的连接方式,默认情况下是命名管道的
对于MS SQL 6.5及更低版本,用Sybase CT库就足够了;对于MS SQL 7及以上版本,要用到TDS。要得到Sybase CT库,有两个办法:到这里下载SYBASE ASE 11.0.3(几十M),或到这里下载SYBASE CT库(几M)。至于TDS,可以到其官方站点去下载。
设置指向MS SQL服务器的interface文件,这里有个例子: -------------------------------------- t master tcp ether 192.168.0.1 1443 query tcp ether 192.168.0.1 1443 -------------------------------------- 其中1443是MS SQL服务器的默认端口号
以SYBASE的用户登陆到Linux,测试和MS SQL之间的连接: isql -U -P -S 如: isql -Uhunte -Pmypass -Snt 看能够执行一些查询。
参考PHP/TDS的编译指南,把所需的库编译进PHP: ./configure --with-sybase=/path/to/sybase
###################################################################################
###################################################################################
###################################################################################
1、关于PHP重定向 方法一:header(&Location: index.php&); 方法二:echo &&script&window.location =/&$PHP_SELF/&;&/script&&; 方法三:echo &&META HTTP-EQUIV=&Refresh& CONTENT=&0; URL=index.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:/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服务器(网上很难找到) Chinaz_com
php发送邮件的最好解决方法是用socket直接发送到对方email服务器而不用转发服务器
【6】初装的mysql如果没有设置密码,应该使用
update mysql.user set password=&yourpassword& where user=&root& Www~Chinaz~com
修改密码 中.国.站长站
【7】header already sent 字串4
这个错误通常在你使用HEADER的时候出现,他可能是几种原因:1,你在使用HEADER前PRING或者ECHO了2.你当前文件前面有空行3.你可能INCLUDE了一个文件,该文件尾部有空行或者输出也会出现这种错误。
【8】更改php.ini后没有变化
重新启动web server,比如IIS,Apache等等,然后才会应用最新的设置
【9】php在2003上面安装
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的服务扩展,然后点击允许。
有时候sql语句不起作用,对数据库操作失败
最简便的调试方法,echo那句sql,看看变量的值能得到不
【11】include和require的区别
两者没有太大的区别,如果要包含的文件不存在,include提示notice,然后继续执行下面的语句,require提示致命错误并且退出 Chinaz~com
据我测试,win32平台下它们都是先包含后执行,所以被包含文件里最好不要再有include或require语句,这样会造成目录混乱。或许*nux下情况不同,暂时还没测试 [中国站长站]
如果一个文件不想被包含多次可以使用include_once或require_once## 读取,写入文档数据 中国.站长站 以下为引用的内容:function r($file_name) { &); @flock($filenum,LOCK_SH); )); @fclose($filenum); return $file_ } function w($file_name,$data,$method=&w&){ ); flock($filenum,LOCK_EX); $file_data=fwrite($filenum,$data); fclose($filenum); return $file_ }
【12】isset()和empty()的区别 站.长.站
两者都是测试变量用的 中国站长.站
但是isset()是测试变量是否被赋值,而empty()是测试一个已经被赋值的变量是否为空
如果一个变量没被赋值就引用在php里是被允许的,但会有notice提示
如果一个变量被赋空值,$foo=&&或者$foo=0或者 $foo=false,那么empty($foo)返回真,isset($foo)也返回真,就是说赋空值不会注销一个变量。 Chinaz~com
要注销一个变量,可以用 unset($foo)或者$foo=NULL 站.长.站
【13】mysql查询语句包含有关键字
php查询mysql的时候,有时候mysql表名或者列名会有关键字 Chinaz_com
这时候查询会有错误。例如表名是order,查询时候会出错 Chinaz^com
简单的办法是sql语句里表名或者列名加上`[tab键上面]来加以区别
例如select * from `order` Chinaz~com
【14】通过HTTP协议一次上传多个文件的方法
有两个思路,是同一个方法的两种实现。具体程序还需自己去设计
在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&&;
在form中设置多个文件输入框,但名字不同,如下: Chinaz^com 以下为引用的内容:&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&&; Www~Chinaz~com
###############################################################################
LAMP 架构的网站,我以前注重的多是安装/配置方面的,讲述开发的相对较少,因为自己从事开发也少。本文的原文当然也来自:
Published on The O'Reilly Network (/) /pub/a/onlamp//webdb.html
看了以后,颇有启发,以前开发中遇到的一些问题,迎刃而解。所以翻译出来和大家共享。
1. PHP 中数组的使用 在操作时,使用关联数组(associatively-indexed arrays)十分有帮助,下面我们看一个基本的数字格式的数组遍历:
$temp[0] = &richmond&; $temp[1] = &tigers&; $temp[2] = &premiers&;
for($x=0;$x { echo $temp[$x]; echo & &; } ?&
然而另外一种更加节省代码的方式是:
$temp = array(&richmond&, &tigers&, &premiers&); foreach ($temp as $element) echo &$element &; ?&
foreach 还能输出文字下标:
$temp = array(&club& =& &richmond&, &nickname& =&&tigers&, &aim& =& &premiers&);
foreach ($temp as $key =& $value) echo &$key : $value &; ?& PHP 手册中描述了大约 50 个用于处理数组的函数。
2. 在 PHP 字符串中加入变量
这个很简单的:
$temp = &hello& echo &$temp world&; ?&
但是需要说明的是,尽管下面的例子没有错误: $temp = array(&one& =& 1, &two& =& 2); // 输出:: The first element is 1 echo &The first element is $temp[one].&; ?&
但是如果后面那个 echo 语句没有双引号引起来的话,就要报错,因此建议使用花括号:
$temp = array(&one& =& 1, &two& =& 2); echo &The first element is {$temp[&one&]}.&; ?&
3. 采用关联数组存取查询结果 看下面的例子:
$connection = mysql_connect(&localhost&, &albert&, &shhh&); mysql_select_db(&winestore&, $connection);
$result = mysql_query(&SELECT cust_id, surname, firstname FROM customer&, $connection);
while ($row = mysql_fetch_array($result)) { echo &ID:/t{$row[&cust_id&]}/n&; echo &Surname/t{$row[&surname&]}/n&; echo &First name:/t{$row[&firstname&]}/n/n&; } ?&
函数 mysql_fetch_array() 把查询结果的一行放入数组,可以同时用两种方式引用,例如 cust_id 可以同时用下面两种方式:$row[&cust_id&] 或者$row[0] 。显然,前者的可读性要比后者好多了。
在多表连查中,如果两个列名字一样,最好用别名分开:
SELECT winery.name AS wname, region.name AS rname, FROM winery, region WHERE winery.region_id = region.region_
列名的引用为:$row[&wname&] 和 $row[&rname&]。
在指定表名和列名的情况下,只引用列名:
SELECT winery.region_id FROM winery
列名的引用为: $row[&region_id&]。
聚集函数的引用就是引用名:
SELECT count(*) FROM
列名的引用为: $row[&count(*)&]。
4. 注意常见的 PHP bug
常见的 PHP 纠错问题是:
No page rendered by the Web browser when much more is expected A pop-up dialog stating that the &Document Contains No Data& A partial page when more is expected
出现这些情况的大多数原因并不在于脚本的逻辑,而是 HTML 中存在的 bug 或者脚本生成的 HTML 的 bug 。例如缺少类似 , , 之类的关闭 Tag,页面就不能刷新。解决这个问题的办法就是,查看 HTML 的源代码。
对于复杂的,不能查到原因的页面,可以通过 W3C 的页面校验程序 http://validator.w3.org/ 来分析。
如果没有定义变量,或者变量定义错误也会让程序变得古怪。例如下面的死循环:
for($counter=0; $counter&10; $Counter++) myFunction(); ?&
变量 $Counter 在增加,而 $counter 永远小于 10。这类错误一般都能通过设置较高的错误报告级别来找到:
error_reporting(E_ALL);
for($counter=0; $counter&10; $Counter++) myFunction(); ?&
5. 采用 header() 函数处理单部件查询
在很多 Web 应用中,一些功能往往让用户点击一个连接后,继续停留在当前页面,这样的工作我叫它&单部件查询&。
下面是一个叫做 calling.php 的脚本:
&-//W3C//DTD HTML 4.0 Transitional//EN& &http://www.w3.org/TR/html4/loose.dtd& &
当用户点击上面的连接时,就去调用 action.php。下面是 action.php 的源码:
// 重定向 header(&Location: $HTTP_REFERER&);
这里有两个常见的错误需要提醒一下: 调用 header() 函数后要包含一个 exit 语句让脚本停止,否则后续的脚本可能会在头发送前输出。
header() 函数常见的一个错误是:
Warning: Cannot add header information - headers already sent...
header() 函数只能在 HTML 输出之前被调用,因此你需要检查 php 前面可能存在的空行,空格等等。
6. reload 的问题及其解决 我以前在写 PHP 程序时,经常碰到页面刷新时,多处理一次的情况。 我们来看 addcust.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); ?&
&-//W3C//DTD HTML 4.0 Transitional//EN& &http://www.w3.org/TR/html4/loose.dtd& &
I've inserted the customer for you. ?& 假设我们用下面的连接使用这个程序:
/addcust.php?surname=Smith&firstname=Fred
如果这个请求只提交一次,OK ,不会有问题,但是如果多次刷新,你就会有多条记录插入。 这个问题可以通过 header() 函数解决:下面是新版本的 addcust.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); header(&Location: cust_receipt.php&); ?& 这个脚本把浏览器重定向到一个新的页面:cust_receipt.php:
&-//W3C//DTD HTML 4.0 Transitional//EN& &http://www.w3.org/TR/html4/loose.dtd& &
I've inserted the customer for you.
这样,原来的页面继续刷新也没有副作用了。
7. 巧用锁机制来提高应用性能 如果我们要紧急运行一个报表,那么,我们可以对表加写锁,防治别人读写,来提高对这个表的处理速度。
8. 用 mysql_unbuffered_query() 开发快速的脚本 这个函数能用来替换 mysql_query() 函数,主要的区别就是 mysql_unbuffered_query() 执行完查询后马上返回,不需要等待或者对加锁。
但是返回的行数不能用mysql_num_rows() 函数来检查,因为输出的结果集大小未知。
##################################################################
1:为什么我得不到变量
我在一网页向另一网页POST数据name,为什么输出$name时却得不到任何值?
在PHP4.2以后的版本中register_global默认为off若想取得从另一页面提交的变量:
方法一:在PHP.ini中找到register_global,并把它设置为on.方法二:在接收网页最前面放上这个extract($_POST);extract($_GET);(注意extract($_SESSION)前必须要有Session_Start()).方法三:一个一个读取变量$a=$_GET[&a&];$b=$_POST[&b&]等,这种方法虽然麻烦,但比较安全.
2:调试你的程序
在运行时必须知道某个变量为何值。我是这样做的,建立一文件debug.php,其内容如下:
PHP代码:--------------------------------------------------------------------------------
&?PHPOb_Start();Session_Start();Echo &&pre&&;
Echo &本页得到的_GET变量有:&;Print_R($_GET);
Echo &本页得到的_POST变量有:&;Print_R($_POST);
Echo &本页得到的_COOKIE变量有:&;Print_R($_COOKIE);
Echo &本页得到的_SESSION变量有:&;Print_R($_SESSION);Echo &&/pre&&;?&
--------------------------------------------------------------------------------
然后在php.ini中设置:include_path = &c:/php&,并将debug.php放在此文件夹,以后就可以在每个网页里包含此文件,查看得到的变量名和值.
3:如何使用session
凡是与session有关的,之前必须调用函数session_start();
为session付值很简单,如:
PHP代码:--------------------------------------------------------------------------------
&?phpSession_start();$Name = &这是一个Session例子&;Session_Register(&Name&);//注意,不要写成:Session_Register(&$Name&);Echo $_SESSION[&Name&];//之后$_SESSION[&Name&]为&这是一个Session例子&?&
--------------------------------------------------------------------------------
在php4.2之后,可以为session直接付值:
PHP代码:--------------------------------------------------------------------------------
&?PHPSession_Start();$_SESSION[&name&]=&value&;?&
--------------------------------------------------------------------------------
取消session可以这样:
PHP代码:--------------------------------------------------------------------------------
&?phpsession_start();session_unset();session_destroy();?&
--------------------------------------------------------------------------------
取消某个session变量在php4.2以上还有BUG.
1:在调用Session_Start()之前不能有任何输出.例如下面是错误的.==========================================1行2行 &?PHP3行 Session_Start();//之前在第一行已经有输出4行 .....5行 ?&==========================================
凡是出现&........headers already sent..........&,就是Session_Start()之前向浏览器输出信息.去掉输出就正常,(COOKIE也会出现这种错误,错误原因一样)
如果你的Session_Start()放在循环语句里,并且很难确定之前哪里向浏览器输出信息,可以用下面这种方法:1行 &?PHP Ob_Start(); ?&........这里是你的程序......
2:这是什么错误
Warning: session_start(): open(/tmp/sess_7d190aa36b4c5ec13a5cf, O_RDWR) failed:....因为你没有指定session文件的存放路径.
解决方法:(1)在c盘建立文件夹tmp(2)打开php.ini,找到session.save_path,修改为session.save_path= &c:/tmp&
4:为什么我向另一网页传送变量时,只得到前半部分,以空格开头的则全部丢失
PHP代码:--------------------------------------------------------------------------------
&?php$Var=&hello php&;//修改为$Var=&&&&& hello php&;试试得到什么结果$post= &receive.php?Name=&.$Vheader(&location:$post&);?&
--------------------------------------------------------------------------------
receive.php的内容:
PHP代码:--------------------------------------------------------------------------------
&?PHPEcho &&pre&&;Echo&& $_GET[&Name&];Echo &&/pre&&;?&
--------------------------------------------------------------------------------
正确的方法是:
PHP代码:--------------------------------------------------------------------------------
&?php$Var=&hello php&;$post= &receive.php?Name=&.urlencode($Var);header(&location:$post&);?&
--------------------------------------------------------------------------------
在接收页面你不需要使用Urldecode(),变量会自动编码.
5:如何截取指定长度汉字而不会出现以&?&&结尾,超出部分以&...&代替
一般来说,要截取的变量来自Mysql,首先要保证那个字段长度要足够长,一般为char(200),可以保持100个汉字,包括标点.
PHP代码:--------------------------------------------------------------------------------
&?PHP$str=&这个字符好长呀,^_^&;$Short_Str=showShort($str,4);//截取前面4个汉字,结果为:这个字符...Echo&& &$Short_Str&;Function csubstr($str,$start,$len) { $strlen=strlen($str); $clen=0; for($i=0;$i&$$i++,$clen++) { if ($clen&=$start+$len)
if(ord(substr($str,$i,1))&0xa0) { if ($clen&=$start) $tmpstr.=substr($str,$i,2); $i++; } else { if ($clen&=$start) $tmpstr.=substr($str,$i,1); } }
return $ } Function showShort($str,$len) { $tempstr = csubstr($str,0,$len); if ($str&&$tempstr) $tempstr .= &...&; //要以什么结尾,修改这里就可以.
return $ }
--------------------------------------------------------------------------------
6:规范你的SQL语句
在表格,字段前面加上&`&,这样就不会因为误用关键字而出现错误,当然我并不推荐你使用关键字.
例如$Sql=&INSERT INTO `xltxlm` (`author`, `title`, `id`, `content`, `date`) VALUES ('xltxlm', 'use`', 1, 'criterion your sql string ', ' 00:00:00')&
&`&怎么输入? 在TAB键上面.
7:如何使Html/PHP格式的字符串不被解释,而是照原样显示
PHP代码:--------------------------------------------------------------------------------
&?PHP$str=&&h1&PHP&/h1&&;Echo &被解释过的: &.$str.&&br&经过处理的:&;Echo&& htmlentities(nl2br($str));?&
--------------------------------------------------------------------------------
8:怎么在函数里取得函数外的变量值
PHP代码:--------------------------------------------------------------------------------
&?PHP$a=&PHP&;foo();Function foo(){& global $a;//删除这里看看是什么结果& Echo &$a&;}?&
--------------------------------------------------------------------------------
9:我怎么知道系统默认支持什么函数
PHP代码:--------------------------------------------------------------------------------
&?php $arr = get_defined_functions(); Function php() {}echo&& &&pre&&; Echo&& &这里显示系统所支持的所有函数,和自定以函数php/n&;print_r($arr); echo&& &&/pre&&; ?& --------------------------------------------------------------------------------
10:如何比较两个日期相差几天
PHP代码:--------------------------------------------------------------------------------
&?PHP$Date_1=&&;//也可以是:$Date_1=& 23:29:14&;$Date_2=&&;$Date_List_1=explode(&-&,$Date_1);$Date_List_2=explode(&-&,$Date_2);$d1=mktime(0,0,0,$Date_List_1[1],$Date_List_1[2],$Date_List_1[0]);$d2=mktime(0,0,0,$Date_List_2[1],$Date_List_2[2],$Date_List_2[0]);$Days=round(($d1-$d2)/3600/24);Echo&& &偶已经奋斗了 $Days 天^_^&;?&
--------------------------------------------------------------------------------
11:为什么我升级PHP后,原来的程序出现满屏的 Notice: Undefined variable:
这是警告的意思,由于变量未定义引起的.打开php.ini,找到最下面的error_reporting,修改为error_reporting = E_ALL & ~E_NOTICE
对于Parse error错误error_reporting(0)无法关闭.如果你想关闭任何错误提示,打开php.ini,找到display_errors,设置为display_errors = Off.以后任何错误都不会提示.
那什么是error_reporting?
12:我想在每个文件最前,最后面都加上一文件.但一个一个添加很麻烦
1:打开php.ini文件设置 include_path= &c:&
2:写两个文件 auto_prepend_file.php 和 auto_append_file.php 保存在c盘,他们将自动依附在每个php文件的头部和尾部.
3:在php.ini中找到:Automatically add files before or after any PHP document.auto_prepend_file = auto_prepend_file.依附在头部auto_append_file = auto_append_file.依附在尾部
以后你每个php文件就相当于
PHP代码:--------------------------------------------------------------------------------
&?php Include &auto_prepend_file.php& ;
.......//这里是你的程序
Include &auto_append_file.php&;?&
--------------------------------------------------------------------------------
13:如何利用PHP上传文件
PHP代码:--------------------------------------------------------------------------------
&html&&head&&title&上载文件表单&/title&&/head& &body& &form enctype=&multipart/form-data& action=&& method=&post&& 请选择文件: &br&&input name=&upload_file& type=&file&&&br&&input type=&submit& value=&上传文件&& &/form& &/body&&/html&
&?$upload_file=$_FILES['upload_file']['tmp_name'];$upload_file_name=$_FILES['upload_file']['name'];
if($upload_file){$file_size_max = ;// 1M限制文件上传最大容量(bytes)$store_dir = &d:/&;// 上传文件的储存位置$accept_overwrite = 1;//是否允许覆盖相同文件// 检查文件大小if ($upload_file_size & $file_size_max) {echo &对不起,你的文件容量大于规定&;}
// 检查读写文件if (file_exists($store_dir . $upload_file_name) && !$accept_overwrite) {Echo&& &存在相同文件名的文件&;}
//复制文件到指定目录if (!move_uploaded_file($upload_file,$store_dir.$upload_file_name)) {echo &复制文件失败&;}
Echo&& &&p&你上传了文件:&;echo& $_FILES['upload_file']['name'];echo &&br&&;//客户端机器文件的原名称。
Echo&& &文件的 MIME 类型为:&;echo $_FILES['upload_file']['type'];//文件的 MIME 类型,需要浏览器提供该信息的支持,例如&image/gif&。 echo &&br&&;
Echo&& &上传文件大小:&;echo $_FILES['upload_file']['size'];//已上传文件的大小,单位为字节。 echo &&br&&;
Echo&& &文件上传后被临时储存为:&;echo $_FILES['upload_file']['tmp_name'];//文件被上传后在服务端储存的临时文件名。 echo &&br&&;
$Erroe=$_FILES['upload_file']['error'];switch($Erroe){&&&&&&& case 0:&&&&&&&&&&& Echo&& &上传成功&;&&&&&&& case 1:&&&&&&&&&&& Echo&& &上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值.&;&&&&&&& case 2:&&&&&&&&&&& Echo&& &上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。&;&&&&&&&&&& case 3:&&&&&&&&&&& Echo&& &文件只有部分被上传&;&&&&&&& case 4:&&&&&&&&&&& Echo&& &没有文件被上传&;}?&
--------------------------------------------------------------------------------
14:如何配置GD库
下面是我的配置过程1:用dos命令(也可以手动操作,拷贝dlls文件夹里所有dll文件到system32目录下) copy c:/php/dlls/*.dll c:/windows/system32/ 2:打开php.ini设置extension_dir = &c:/php/extensions/&;3:extension=php_gd2.把extension前面的逗号去掉,如果没有php_gd2.dll,php_gd.dll也一样,保证确实存在这一文件c:/php/extensions/php_gd2.dll4:运行下面程序进行测试
PHP代码:--------------------------------------------------------------------------------
&?phpOb_end_flush();//注意,在此之前不能向浏览器输出任何信息,要注意是否设置了 auto_prepend_file.header (&Content-type: image/png&);$im = @imagecreate (200, 100)&&& or die (&无法创建图像&);$background_color = imagecolorallocate ($im, 0,0, 0);$text_color = imagecolorallocate ($im, 230, 140, 150);imagestring ($im, 3, 30, 50,& &A Simple Text String&, $text_color);imagepng ($im);?&
--------------------------------------------------------------------------------
点击这里查看结果
15:什么是UBB代码
UBB代码是HTML的一个变种,是Ultimate Bulletin Board (国外一个BBS程序,国内也有不少地方使用这个程序)采用的一种特殊的TAG.即使禁止使用 HTML,你也可以用 UBBCode? 来实现.也许你更希望使用 UBBCode? 而不是 HTML, 即使论坛允许使用 HTML, 因为使用起来代码较少也更安全.
Q3boy的UBB里面付有例子,可以直接运行测试
16:我想修改MySQL的用户,密码
首先要声明一点,大部分情况下,修改MySQL是需要有mysql里的root权限的, 所以一般用户无法更改密码,除非请求管理员.
方法一   使用phpmyadmin,这是最简单的了,修改mysql库的user表,   不过别忘了使用PASSWORD函数。
方法二   使用mysqladmin,这是前面声明的一个特例。   mysqladmin -u root -p password mypasswd   输入这个命令后,需要输入root的原密码,然后root的密码将改为mypasswd。   把命令里的root改为你的用户名,你就可以改你自己的密码了。   当然如果你的mysqladmin连接不上mysql server,或者你没有办法执行mysqladmin,   那么这种方法就是无效的。   而且mysqladmin无法把密码清空。
下面的方法都在mysql提示符下使用,且必须有mysql的root权限:   方法三   mysql& INSERT INTO mysql.user (Host,User,Password)   VALUES('%','jeffrey',PASSWORD('biscuit'));   mysql& FLUSH PRIVILEGES   确切地说这是在增加一个用户,用户名为jeffrey,密码为biscuit。   在《mysql中文参考手册》里有这个例子,所以我也就写出来了。   注意要使用PASSWORD函数,然后还要使用FLUSH PRIVILEGES。
方法四   和方法三一样,只是使用了REPLACE语句   mysql& REPLACE INTO mysql.user (Host,User,Password)   VALUES('%','jeffrey',PASSWORD('biscuit'));   mysql& FLUSH PRIVILEGES
方法五   使用SET PASSWORD语句,   mysql& SET PASSWORD FOR & = PASSWORD('biscuit');   你也必须使用PASSWORD()函数,   但是不需要使用FLUSH PRIVILEGES。
方法六   使用GRANT ... IDENTIFIED BY语句   mysql& GRANT USAGE ON *.* TO & IDENTIFIED BY 'biscuit';   这里PASSWORD()函数是不必要的,也不需要使用FLUSH PRIVILEGES。
注意: PASSWORD() [不是]以在Unix口令加密的同样方法施行口令加密。
17:我想知道他是通过哪个网站连接到本页
PHP代码:--------------------------------------------------------------------------------
&?php//必须通过超级连接进入才有输出Echo $_SERVER['HTTP_REFERER'];?&
--------------------------------------------------------------------------------
18:数据放入数据库和取出来显示在页面需要注意什么
入库时$str=addslashes($str);$sql=&insert into `tab` (`content`) values('$str')&;出库时$str=stripslashes($str);显示时$str=htmlspecialchars(nl2br($str)) ;
19:如何读取当前地址栏信息
PHP代码:--------------------------------------------------------------------------------
&?php $s=&]}&; $se=''; foreach ($_GET as $key =& $value) {&&&& $se.=$key.&=&.$value.&&&;&&&& }&& $se=Preg_Replace(&/(.*)&$/&,&$1&,$se); $se?$se=&?&.$se:&&;echo&& $s.&?$se&; ?& --------------------------------------------------------------------------------
20:我点击后退按钮,为什么之前填写的东西不见
这是因为你使用了session.解决办法:
PHP代码:--------------------------------------------------------------------------------
&?php session_cache_limiter('private, must-revalidate');session_start(); .....................?&
--------------------------------------------------------------------------------
21:怎么在图片里显示IP地址
PHP代码:--------------------------------------------------------------------------------
&?& Header(&Content-type: image/png&);& $img = ImageCreate(180,50);& $ip = $_SERVER['REMOTE_ADDR'];& ImageColorTransparent($img,$bgcolor);& $bgColor = ImageColorAllocate($img, 0x2c,0x6D,0xAF); // 背景颜色& $shadow = ImageColorAllocate($img, 250,0,0);&&& // 阴影颜色& $textColor = ImageColorAllocate($img, oxff,oxff,oxff);&&&&&& // 字体颜色& ImageTTFText($img,10,0,78,30,$shadow,&d:/windows/fonts/Tahoma.ttf&,$ip); //显示背景& ImageTTFText($img,10,0,25,28,$textColor,&d:/windows/fonts/Tahoma.ttf&,&your ip is&.$ip); // 显示IP& ImagePng($img);& imagecreatefrompng($img);& ImageDestroy($img);?&
--------------------------------------------------------------------------------
22:如何取得用户的真实IP
PHP代码:--------------------------------------------------------------------------------
&? function iptype1 () { if (getenv(&HTTP_CLIENT_IP&)) { && return getenv(&HTTP_CLIENT_IP&); } else { && return &none&; } } function iptype2 () { if (getenv(&HTTP_X_FORWARDED_FOR&)) { && return getenv(&HTTP_X_FORWARDED_FOR&); } else { && return &none&; } } function iptype3 () { if (getenv(&REMOTE_ADDR&)) { && return getenv(&REMOTE_ADDR&); } else { && return &none&; } } function ip() { $ip1 = iptype1(); & $ip2 = iptype2(); $ip3 = iptype3(); if (isset($ip1) && $ip1 != &none& && $ip1 != &unknown&) { && return $ip1; } elseif (isset($ip2) && $ip2 != &none& && $ip2 != &unknown&) { && return $ip2; } elseif (isset($ip3) && $ip3 != &none& && $ip3 != &unknown&) { && return $ip3; }&& & else { & return &none&; } }
Echo ip(); ?& --------------------------------------------------------------------------------
23:如何从数据库读取三天内的所有记录
首先表格里要有一个DATETIME字段记录时间,格式为' 16:50:00'
SELECT * FROM `xltxlm` WHERE TO_DAYS(NOW()) - TO_DAYS(`date`) &= 3;
24:如何远程链接Mysql数据库
在增加用户的mysql表里有一个host字段,修改为&%&,或者指定允许连接的ip地址,这样,你就可以远程调用了。
$link=mysql_connect(&192.168.1.80:3306&,&root&,&&);
25:正则到底怎么用
点击这里正则表达式中的特殊字符
26:用Apache后,主页出现乱码
方法一: AddDefaultCharset ISO-8859-1 改为 AddDefaultCharset off
方法二: AddDefaultCharset GB2312========================================================tip:大家贴代码时GB2312会被解释成??????
改成这样就不会[color=#000000]GB[/color]2312
10:如何比较两个日期相差几天,(更简单的算法)
PHP代码:--------------------------------------------------------------------------------
&?PHP$Date_1=&&;//也可以是:$Date_1=& 23:29:14&;$Date_2=&&;$d1=strtotime($Date_1);$d2=strtotime($Date_2);$Days=round(($d1-$d2)/3600/24);Echo&& &偶已经奋斗了 $Days 天^_^&;?&
--------------------------------------------------------------------------------
27:为什么单引号,双引号在接受页面变成(/'/&)
解决方法:方法一:在php.ini中设置:magic_quotes_gpc = Off方法二: $str=stripcslashes($str)
28:怎么让程序一直运行下去,而不是超过30秒就停止
set_time_limit(60)//最长运行时间一分钟set_time_limit(0)//运行到程序自己结束,或手动停止
29:计算当前在线人数
例子一:用文本实现
PHP代码:--------------------------------------------------------------------------------
&?php //首先你要有读写文件的权限//本程序可以直接运行,第一次报错,以后就可以& $online_log = &count.dat&; //保存人数的文件,& $timeout = 30;//30秒内没动作者,认为掉线 & $entries = file($online_log);
& $temp = array(); & & for ($i=0;$i&count($entries);$i++) { && $entry = explode(&,&,trim($entries[$i])); && if (($entry[0] != getenv('REMOTE_ADDR')) && ($entry[1] & time())) { &&& array_push($temp,$entry[0].&,&.$entry[1].&/n&); //取出其他浏览者的信息,并去掉超时者,保存进$temp&& } & }
&& array_push($temp,getenv('REMOTE_ADDR').&,&.(time() + ($timeout)).&/n&); //更新浏览者的时间& $users_online = count($temp); //计算在线人数
& $entries = implode(&&,$temp); & //写入文件& $fp = fopen($online_log,&w&); && flock($fp,LOCK_EX); //flock() 不能在NFS以及其他的一些网络文件系统中正常工作&& fputs($fp,$entries); && flock($fp,LOCK_UN); && fclose($fp);
&& echo &当前有&.$users_online.&人在线&;
?& --------------------------------------------------------------------------------
例子二:用数据库实现在线用户
30:什么是模板,怎么用
这里有几篇关于模板的文章
我用的是phplib模板下面是其中几个函数的使用
$T-&Set_File(&随便定义&,&模板文件.tpl&);
$T-&Set_Block(&在set_file中定义的&,&&!-- 来自模板 --&&,&随便定义&);
$T-&Parse(&在Set_Block中定义的&,&&!-- 来自模板 --&&,true);
$T-&Parse(&随便输出结果&,&在Set_File中定义的&);
设置循环格式为:
&!--(多于一个空格) BEGIN $handle(多于一个空格)--&
如何将模板生成静态网页
PHP代码:--------------------------------------------------------------------------------
&?php//这里使用phplib模板&&& ............&&& ............&&& $tpl-&parse(&output&,&html&);&&& $output = $tpl-&get(&output&);// $output 为整个网页内容
&&& function wfile($file,$content,$mode='w') {&&& $oldmask = umask(0);&&& $fp = fopen($file, $mode);&&& if (!$fp)&&& fwrite($fp,$content);&&& fclose($fp);&&& umask($oldmask);&&&}&& // 写到文件里&&& Wfile($FILE,$output);&&& header(&location:$FILE&);//重定向到生成的网页}?& --------------------------------------------------------------------------------
phplib下载地址 smarty下载地址
31:怎么用php解释字符
比如:输入2+2*(1+2),自动输出8可以用eval函数
PHP代码:--------------------------------------------------------------------------------
&form method=post action=&&&&input type=&text& name=&str&&&input type=&submit&&&/form&&?php$str=$_POST['str'];eval(&/$o=$&);Echo&& &$o&;?&
--------------------------------------------------------------------------------
另外,用此函数必须特别小心!!如果有人输入format: d:会是什么结果?
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:16148次
排名:千里之外
原创:13篇
(1)(10)(6)

我要回帖

更多关于 php循环输出数组 的文章

 

随机推荐