使用php,使用 PHP

使用 PHP推荐查看本文HTML版本

本节汇集了你在写 PHP 脚本时可能碰到的大多数普通错误。

1. 我想写一个可以处理任何表单来的数据的通用 PHP 脚本。我怎么知道哪个 POST 方法变量可用呢?

2. 我需要在所有的单引号(')前加一个反斜线(\),使它们变成(\'),我如何能够通过正则表达式来实现?我同样希望能够将(")转换成(\"),将(\)转换成(\\)。

3. 我所有的(")和(')都被变成了(\")和(\'),我如何才能去掉这些不必要的反斜线?它们为什么及如何出现?

4. 当我这样做时,输出显示的次序是错的: <?php

function myfunc($argument)

{

6. 我得到消息“Warning: Cannot send session cookie - headers already sent...”或者“Cannot add header information - headers already sent...”。

7. 我需要直接访问请求报头中的信息,怎么能办到?

8. 当我用 IIS 进行 HTTP 认证时得到“No Input file specified”消息。

9. 我的 PHP 脚本在 IE 和 Lynx 下能工作,但是在 Netscape 中有的输出丢失了。当我用“查看源文件”时可以在 IE 中看到内容,但是 Netscape 中不能。

10. 我怎样混合使用 XML 和 PHP?它不认我的 <?xml 标记!

11. 怎样用 FrontPage 或者其它非要把我的代码移来移去的 HTML 编辑器来编辑 PHP?

12. 哪里可以找到所有可用的 PHP 预定义变量的完整列表?

13. 我试着在用户自定义函数中访问一个标准的 CGI 变量(例如 $DOCUMENT_ROOT 或 $HTTP_REFERER),但是找不到,哪里出了错?

1. 我想写一个可以处理任何表单来的数据的通用 PHP 脚本。我怎么知道哪个 POST 方法变量可用呢?

PHP 提供很多“预定义变量”,例如超级全局变量 $_POST。您可以遍历 $_POST 变量,因为它是一个和所有通过 POST 方法传递数据相联系的数组。例如,我们可以用 foreach 简单的遍历它,检查 empty() 值,以及将它们输出。 <?php

$empty = $post = array();

foreach ($_POST as $varname => $varvalue) {

if (empty($varvalue)) {

$empty[$varname] = $varvalue;

} else {

$post[$varname] = $varvalue;

}

}

print "

";

if (empty($empty)) {

print "None of the POSTed values are empty, posted:\n";

var_dump($post);

} else {

print "We have " . count($empty) . " empty values\n";

print "Posted:\n"; var_dump($post);

print "Empty:\n";  var_dump($empty);

exit;

}

?>

Superglobals:可用性说明: 自 PHP 4.1.0 开始,可以使用超级全局数组例如 $_GET,$_POST 和 $_SERVER 等等。更多信息请阅读手册中的 superglobals

2. 我需要在所有的单引号(')前加一个反斜线(\),使它们变成(\'),我如何能够通过正则表达式来实现?我同样希望能够将(")转换成(\"),将(\)转换成(\\)。

函数 addslashes() 能够实现这种操作。请参阅函数 mysql_escape_string()。另外,您还可以用函数 stripslashes() 来去掉反斜线。

设置选项注意:magic_quotes_gpc: PHP 的设置选项 magic_quotes_gpc 的默认值为 on。这相当于自动对所有的 GET、POST、COOKIE 数据使用 addslashes() 函数。您可以使用 stripslashes() 函数来去掉它们。

3. 我所有的(")和(')都被变成了(\")和(\'),我如何才能去掉这些不必要的反斜线?它们为什么及如何出现?

PHP 函数 stripslashes() 能够从字符串中去掉所有的反斜线。这些反斜线出现最有可能的原因是 PHP 设置项 magic_quotes_gpc 被开启。

设置选项注意:magic_quotes_gpc: PHP 的设置选项 magic_quotes_gpc 的默认值为 on。这相当于自动对所有的 GET、POST、COOKIE 数据使用 addslashes() 函数。您可以使用 stripslashes() 函数来去掉它们。

4. 当我这样做时,输出显示的次序是错的: <?php

function myfunc($argument)

{

echo $argument + 10;

}

$variable = 10;

echo "myfunc($variable) = " . myfunc($variable);

?>

这是怎么回事?

要在一个表达式中(例如在上面的例子中和其它字符串连接)使用函数的结果,你需要 return() 这个值,而不是 echo() 它。

5. 下面代码怎么没有分成两行显示?

在 PHP 中,一段代码的结束标记要么是“?>”要么是“?>\n”(\n 表示换行)。因此在上面的例子中,输出的句子将显示在同一行中,因为 PHP 忽略了代码结束标记后面的换行。这意味着如果要输出一个换行符,你需要在每段 PHP 代码的结束标记后面多加一个换行。

PHP 为什么这么做呢?因为在格式化正常的 HTML 时,这样通常会更容易。假如输出了换行而你不需要这个换行时,你就不得不用一个非常长的行来达到这样的效果,或者让产生的 HTML 页面的源文件的格式很难读。

6. 我得到消息“Warning: Cannot send session cookie - headers already sent...”或者“Cannot add header information - headers already sent...”。

函数 header(),setcookie() 和 session 函数需要在输出流中增加头信息。但是头信息只能在其它任何输出内容之前发送。在使用这些函数前不能有任何(如 HTML)的输出。函数 headers_sent() 能够检查您的脚本是否已经发送了头信息。请参阅“输出控制函数”。

7. 我需要直接访问请求报头中的信息,怎么能办到?

如果你以 Apache 的模块方式运行 PHP,那么函数 getallheaders() 可以做这件事。因此下面的代码可以显示所有的请求报头: <?php

$headers = getallheaders();

foreach ($headers as $name => $content) {

echo "headers[$name] = $content
\n";

}

?>

请参阅函数 apache_lookup_uri()、apache_response_headers() 和 fsockopen()。

8. 当我用 IIS 进行 HTTP 认证时得到“No Input file specified”消息。

IIS 的安全模型这里有毛病。这是所有 IIS 下运行的 CGI 程序所共有的问题。一个解决办法是建立一个纯 HTML 文件(不经过 PHP 解析)作为要进入认证目录的登录页面,然后用 META 标记来重定向到 PHP 页面,或者用一个连接到 PHP 页面。然后 PHP 就可以正确识别认证信息了。如果是用 ISAPI 模块,那没有这个问题。其它 NT 下的 web 服务器不受此影响。更多信息见:http://support.microsoft.com/support/kb/articles/q160/4/22.asp及“HTTP 认证”的有关章节。

9. 我的 PHP 脚本在 IE 和 Lynx 下能工作,但是在 Netscape 中有的输出丢失了。当我用“查看源文件”时可以在 IE 中看到内容,但是 Netscape 中不能。

Netscape 在关于 html 标记(例如 table)上比 IE 更严格。用一个 html 验证器,例如 validator.w3.org 来验证你的 html 输出可能会有帮助。例如漏了 可能会导致这样的结果。

同样,IE 和 Lynx 都忽略了 HTML 流中的任何 NULs(\0),Netscape 就不。最好的检查方法是编译 PHP 的命令行模式版本(也称为 CGI 版本)并从命令行运行你的脚本。在 *nix 中,用管道传递到 od -c 并查看任何 \0 字符。如果在 Windows 下你需要能够查看二进制文件格式的编辑器或程序。当 Netscape 碰到 NUL 时就不会输出之后该行的任何内容而 IE 和 Lynx 都会。

10. 我怎样混合使用 XML 和 PHP?它不认我的 <?xml 标记!

要能够在 PHP 代码中直接嵌入 <?xml ,您需要将将 PHP 设置项 short_open_tags 设置为 0 以关闭短标记格式。您无法通过函数 ini_set() 来更改这项设置。不管 short_open_tags 是开或者关,您都可以用类似于 <?php echo '<?xml'; ?> 的方法达到目的。该项设置的默认值为开。

11. 怎样用 FrontPage 或者其它非要把我的代码移来移去的 HTML 编辑器来编辑 PHP?

最简单的方法是让 PHP 代码也能使用 ASP 标记。这可以让你用 ASP 风格的 代码定界符。一些流行的 HTML 编辑器在处理此格式上更加智能化一些(目前如此)。要使用 ASP 风格的标记,你需要在 php.ini 中打开 asp_tags,或者用相应的 Apache 配置选项。

12. 哪里可以找到所有可用的 PHP 预定义变量的完整列表?

请阅读手册“预定义变量”的有关章节,该部分的文档已经包含了一部分可以用于你的脚本的预定义变量的列表。可用变量的完整列表(及更多信息)可以通过调用 phpinfo() 函数来查阅。请务必阅读手册“PHP 外部变量”一节,这部分文档描述了外部变量的概要,如从来自 HTML 表单、Cookie 和 URL 的变量。

13. 我试着在用户自定义函数中访问一个标准的 CGI 变量(例如 $DOCUMENT_ROOT 或 $HTTP_REFERER),但是找不到,哪里出了错?

首先非常重要的一点是 PHP 设置项 register_globals 同样会对服务器端和环境变量产生影响。当 register_globals = off (从 PHP 4.2.0 开始其默认值为 off),变量 $DOCUMENT_ROOT 将不会存在,而只有 $_SERVER['DOCUMENT_ROOT']。如果 register_globals = on 则变量 $DOCUMENT_ROOT 和 $GLOBALS['DOCUMENT_ROOT'] 将同时存在。

如果您确认 register_globals = on 但不知道为什么 $DOCUMENT_ROOT 在函数内部不可用,这是因为它和其它的变量一样需要在函数中执行 global $DOCUMENT_ROOT。请参阅手册中“变量范围”的有关章节。我们建议您在 register_globals = off 的情况下进行编码。

Superglobals:可用性说明: 自 PHP 4.1.0 开始,可以使用超级全局数组例如 $_GET,$_POST 和 $_SERVER 等等。更多信息请阅读手册中的 superglobals

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563775.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机电脑自适应导航源码php,自适应各终端懒人网址导航源码 v2.0

自适应各终端懒人网址导航源码。V2.0版本是在原1.8版本的基础上修复和增加了些功能。推荐直接使用新版本&#xff0c;舍弃旧版本&#xff0c;后期会继续不定期更新。测试环境&#xff1a;宝塔Nginx -Tengine2.2.3的php5.5mysql先导入数据库文件db/db.sql再修改config.php数据库…

php如何生成本地文档,php如何生成word文件

php生成word文件的方法&#xff1a;需求&#xff1a;甲方爸爸说“我有一个word文件&#xff0c;里面是关于用户信息的表格&#xff0c;你帮我把系统里面所有用户数据都按照这个文件导出来给我“&#xff1b;我当时就不乐意了&#xff0c;啪的一拍桌子站起来&#xff0c;愤愤的回…

php 写一个大富翁游戏,C++大富翁代码 现在要设计一个类似“大富翁”的游戏:有一条由20个格子组成的 联合开发网 - pudn.com...

C大富翁代码所属分类&#xff1a;Windows编程开发工具&#xff1a;C/C文件大小&#xff1a;349KB下载次数&#xff1a;6上传日期&#xff1a;2018-05-15 21:11:38上 传 者&#xff1a;红黑二叉树说明&#xff1a; 现在要设计一个类似“大富翁”的游戏&#xff1a;有一条由20个…

yii 引用php文件,Yii中引出php文件及插件

Yii中引入php文件及插件作者&#xff1a;zccst一、设置环境变量(在PHP)echo get_include_path(); //获取当前所有环境变量。即该项目中那些代码已被引用。set_include_path(.. PATH_SEPARATOR . Yii::app()->basePath./lib/PHPExcel . PATH_SEPARATOR . get_include_p…

形态学图像分割matlab算法,图像分割和形态学处理与MATLAB实现

《图像分割和形态学处理与MATLAB实现》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《图像分割和形态学处理与MATLAB实现(13页珍藏版)》请在人人文库网上搜索。1、实验 图像分割和形态学处理一、实验目的1、 掌握图像分割的基本方法。2、 掌握形态学处理的基本方法。…

php 显示状态,php-fpm status状态配置显示

系统为ubuntu,在usr/etc/sites-enabled/中编辑nginx配置文件server_name demo.com;location ~^/status$ {#auth_basic "status page";#fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;include fastcgi_params;fastcgi_pass unix:/var/…

matlab 动态目录调用程序集,C#中如何动态添加程序集查找目录

C#中如何动态添加程序集查找目录情况如下&#xff1a;现有三个程序集Main.exe, One.dll, Two.dll。其中One.dll引用了Two.dll&#xff0c; 并且One.dll与Two.dll部署在一起, 而Main.exe单独部署。在One.dll中有using Two;namespace One{public SomeType{public void DoSomethin…

matlab 红黑强度图片,matlab图形锐化程序

满意答案gveial5852013.10.31采纳率&#xff1a;50% 等级&#xff1a;12已帮助&#xff1a;11498人help imreadhelp fspecial imfilt帮助稳定中有较多的示例fspecial 函数功能&#xff1a;产生预定义滤波器格式&#xff1a;Hfspecial(type)Hfspecial(gaussian,n,sigma) 高斯…

php chr 乱码,php chr() ord()中文截取乱码问题解决方法_PHP教程

复制代码 代码如下:/* 另一种方法&#xff0c;使用ord()函数&#xff1a; 适用于 gb2312 编码:*/$str "怎么将新闻的很长的标题只显示前面一些字&#xff0c;后面用.....来代替&#xff1f;";function gb2312_substr($str, $limit) {$restr ;for($i0;$i< $limit-…

matlab int8 函数,未定义与 'uint8' 类型的输入参数相对应的函数 'fitnessty'

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼程序如下&#xff1a;clear allclcticpopsize15;lanti10;maxgen50;cross_rate0.4;mutation_rate0.1;a00.7;zpopsize5;bestf0;nf0;number0;Iimread(C:\Users\Yu\Pictures\feiji.jpg);if numel(I)>2Irgb2gray(I);end[m,n]size(I);…

php_os用法,golang中os包用法

os包中实现了平台无关的接口&#xff0c;设计向Unix风格&#xff0c;但是错误处理是go风格&#xff0c;当os包使用时&#xff0c;如果失败之后返回错误类型而不是错误数量&#xff0e;os包中函数设计方式和Unix类似&#xff0c;下面来看一下&#xff0e;func Chdir(dir string)…

python n个人围成一圈,Python练习代码实例69-有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的...

Python 练习实例69题目&#xff1a;有n个人围成一圈&#xff0c;顺序排号。从第一个人开始报数(从1到3报数)&#xff0c;凡报到3的人退出圈子&#xff0c;问最后留下的是原来第几号的那位。程序分析&#xff1a;无。程序源代码&#xff1a;#!/usr/bin/python# -*- coding: UTF-…

php基础学哪些,榆林学习php需要哪些基础(PHP是什么)

榆林学习php需要哪些基础&#xff0c;想多学一门知识&#xff0c;陕西PHP培训对我们都是大有裨益的&#xff0c;紧接着就去了解下php代码运行方式有哪些&#xff0c;php常用框架有哪些&#xff0c;php为啥遭到它行鄙视&#xff0c;PHP是什么&#xff0c;php的性质有哪些&#x…

.deploy 文件 php,关于php:Heroku deploy自动删除服务器文件?

我是HEROKU APPS的新手。在我的heroku应用程序中&#xff0c;我遇到了问题。 那就是我正在使用php脚本将数据保存在服务器上。范例&#xff1a;$file "example.txt";$data "Something...";file_put_contents($file,$data);?>此PHP脚本成功运行并完美保…

php打印中文前一天时间,【多选题】用PHP打印出前一天的时间格式是2012-4-2 12:28:21( ) A. date(\Y-m-d H:i:s\, strtotime(\-1 day\...

【多选题】用PHP打印出前一天的时间格式是2012-4-2 12:28:21( )A. date(\"Y-m-d H:i:s\", strtotime(\"-1 day\",time())) B. date更多相关问题不计饱和时&#xff0c;电枢反应电势可以写成负的电抗压降形式。()某矩形见面简支梁&#xff0c;混凝土强度等级…

oracle11g memory_target,Oracle11g启动报:ORA-00845: MEMORY_TARGET not supported on this system

SQL> startupORA-00845: MEMORY_TARGET not supported on this systemoraclesles11:/oracle/product/11.2.4/dbs> df -h /dev/shmFilesystem Size Used Avail Use% Mounted ontmpfs 1.5G 72K 1.5G 1% /dev/shm--memory_target 大于 /dev/shmoracles…

oracle 11gr2 asm安装,OEL6.1下oracle 11gr2 ASM安装

oracle 11gr2下asm与以往不同&#xff0c;是使用grid安装包来完成安装与配置&#xff0c;在11.2.0.3的安装包中&#xff0c;使用第三个安装包&#xff0c;解压以后进行以下配置&#xff1a;1. Asm相关用户及组配置/usr/sbin/groupadd -g 502 oper/usr/sbin/groupadd -g 600 asm…

oracle11g中用asmlib配置磁盘组,ASM学习笔记_配置ASMLIB磁盘组

ASM学习笔记_配置ASMLIB磁盘组目录1 ASMLIB Introduction2 虚拟机添加一个共享磁盘(块设备)3 下载,安装ASMLIB4 配置,使用ASMLib 磁盘组#######################################################################1 ASMLIB Introduction######################################…

oracle 12配置安全与更新,Oracle 12c 数据库安全核心技术讨论

Oracle AdvancedSecurity新功能 >Oracle Data RedactionOracle Data Redaction对应用户权限的实时访问控制根据用户的权限以及客户端信息&#xff0c;Redaction实时数据修正应用代码代表在不必要的数据库中完成列访问的控制根据客服中心以及技术支持的职责不同&#xff0c;对…

oracle11gR版本GI中新增,Oracle11g新特性MemberKillEscalation简介

从oracle 11gR1 开始&#xff0c;Member Kill Escalation的出现成功的解决了前面提到的情况。当实例eviction在指定的时间内(默认20秒)不能首先我们介绍一下历史。在Oracle 9i/10g 中&#xff0c;如果一个数据库实例需要驱逐(evict, alert 文件中会出现ora-29740错误)另一个实例…