php读取本地php文件源代码输出显示

 更新时间:2016年11月25日 14:59  点击:2554
下在看一个利用fopen,file_get_contents读取本地服务器中.php文件的代码并显示的一些方法总结

如我有两个文件a.php,b.php。

a.php文件中的语句是:

 代码如下 复制代码

<?php
echo “i am a.php”;
?>

现在,我需要在b.php文件显示文件a.php中的源代码,是源代码,如下:

 代码如下 复制代码

<?php
$a_code = file_get_contents(‘a.php’);
echo htmlspecialchars($a_code);//www.111cn.net
?>

重点即在此htmlspecialchars()函数,htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。


再看一实例fopen()函数

 代码如下 复制代码

$file = fopen("a.php","r");

效果与上面也是一样的,当然如果只是要在a.php中显示b.php 我们直接使用inlucde()调用即可

 

 代码如下 复制代码
inlucde('a.php');

即可

如果是想读取远程服务器的.php文件,那么返回的是html内容了,这个不要问为什么否则大家都不写程序了。

在php中header()函数是很大的作用可以发送各种状态代码,也可以实现一些输出下载,下面我们一起来看看一些相关实例吧。

什么是头信息?
这里只作简单解释,详细的自己看http协议。
在 HTTP协议中,服务器端的回答(response)内容包括两部分:头信息(header) 和 体内容,这里的头信息不是HTML中的<head></head>部分,同样,体内容也不是<BODY>< /BODY>。头信息是用户看不见的,里面包含了很多项,包括:服务器信息、日期、内容的长度等。而体内容就是整个HTML,也就是你所能看见的全 部东西。

头信息有什么用呢?
头信息的作用很多,最主要的有下面几个:

1、跳转:当浏览器接受到头信息中的 Location: xxxx 后,就会自动跳转到 xxxx 指向的URL地址,这点有点类似用 js 写跳转。但是这个跳转只有浏览器知道,不管体内容里有没有东西,用户都看不到。

2、指定网页的内容: 同样一个XML文件,如果头信息中指定:Content-type: application/xml 的话,浏览器会将其按照XML文件格式解析。但是,如果头信息中是:Content-type: text/xml 的话,浏览器就会将其看作存文本解析。(浏览器不是按照扩展名解析文件的)

3、附件:不知道大家有没 有注意,有些时候在一些网站下载东西,点下载连接以后,结果浏览器将这个附件当成网页打开了,里面显示的都是乱码,这个问题也和头信息有关。有时候浏览器 根据Content-type 来判断是打开还是保存,这样有时就会判断错误(主要是网站设计者忘记写Content-type)。其实,还有一个可以来指定该内容为附件、需要保存,这 个就是:Content-Disposition: attachment; filename=”xxxxx”

在PHP中如何写?
1、跳转:

 代码如下 复制代码
header(“Location: http://www.example.com/”);

2、指定内容:

 代码如下 复制代码
header(‘Content-type: application/pdf’);

3、附件:

 代码如下 复制代码
header(‘Content-type: application/pdf’); // 指定内容格式
header(‘Content-Disposition: attachment; filename=”downloaded.pdf”‘); // 指定内容为附件
readfile(‘original.pdf’); // 打开文件,并输出

最后要提醒大家注意一点,所有头信息都必须在体内容之前,如果一旦有任何输出了的话,header函数写的头信息就没用了。比如,在文件最开头 的<?php 处,如果前面有空格或者有空行,那header函数就没用了(其实可以通过设置:output_buffer来解决,anyway),为什么这样,可以看 看HTTP协议,很简单。

 

 代码如下 复制代码
<?php
//200 正常状态
header('HTTP/1.1 200 OK');
 
// 301 永久重定向,记得在后面要加重定向地址 Location:$url
header('HTTP/1.1 301 Moved Permanently');
 
// 重定向,其实就是302 暂时重定向
header('Location: http://www.111cn.net/');
 
// 设置页面304 没有修改
header('HTTP/1.1 304 Not Modified');
 
// 显示登录框,
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="登录信息"');
echo '显示的信息!';
 
// 403 禁止访问
header('HTTP/1.1 403 Forbidden');
 
// 404 错误
header('HTTP/1.1 404 Not Found');
 
// 500 服务器错误
header('HTTP/1.1 500 Internal Server Error');
 
// 3秒后重定向指定地址(也就是刷新到新页面与 <meta http-equiv="refresh" content="10;http://www.111cn.net/ /> 相同)
header('Refresh: 3; url=http://www.111cn.net/');
echo '10后跳转到http://www.111cn.net';
 
// 重写 X-Powered-By 值
header('X-Powered-By: PHP/5.3.0');
header('X-Powered-By: Brain/0.6b');
 
//设置上下文语言
header('Content-language: en');
 
// 设置页面最后修改时间(多用于防缓存)
$time = time() - 60; //建议使用filetime函数来设置页面缓存时间
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT');
 
// 设置内容长度
header('Content-Length: 39344');
 
// 设置头文件类型,可以用于流文件或者文件下载
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="example.zip"');
header('Content-Transfer-Encoding: binary');
readfile('example.zip');//读取文件到客户端
 
//禁用页面缓存
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Pragma: no-cache');
 
//设置页面头信息
header('Content-Type: text/html; charset=iso-8859-1');
header('Content-Type: text/html; charset=utf-8');
header('Content-Type: text/plain');
header('Content-Type: image/jpeg');
header('Content-Type: application/zip');
header('Content-Type: application/pdf');
header('Content-Type: audio/mpeg');
header('Content-Type: application/x-shockwave-flash');
//.... 至于Content-Type 的值 可以去查查 w3c 的文档库,那里很丰富
?>

例,文件下载

 代码如下 复制代码

header("Content-Type: application/vnd.ms-excel; charset=UTF-8");
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment;filename=".$title .".xls ");
header("Content-Transfer-Encoding: binary ");

php中变量可以不定义的但是我们如果不对错误进行一些处理在使用未定义的变量时会提示Undefined variable错误了,下面我给大家举几个实例。

PHP错误提示“Undefined variable”:变量未定义,如果你在php.ini设置中屏蔽了Notice这个等级的提示那么他就不会显示任何提示了,但是为了程序的严谨性考虑,我们尽量避免任何警告、错误等明显的程序缺陷。

例一:class.Chinese.php中以下代码就会出错“Undefined variable”:

 代码如下 复制代码

for ( $i=0; $i<strlen($hexdata); $i+=2 )
 $bindata.=chr(hexdec(substr($hexdata,$i,2)));

正确的写法应该是:

 代码如下 复制代码

$bindata='';
for ( $i=0; $i<strlen($hexdata); $i+=2 )
 $bindata.=chr(hexdec(substr($hexdata,$i,2)));

例二:以下代码也会出错“Undefined variable”:

 代码如下 复制代码

$sl = "zh-CN";
$tl = "en";
function app_out($c,$gbk){
 $data = app_get_translate($c,$sl,$tl);
 $out = str_replace($c,$data,$c);
 return app_js_out($out,$gbk);
}

正确的写法应该是:

 代码如下 复制代码

$sl = "zh-CN";
$tl = "en";
function app_out($c,$gbk){
 global $sl,$tl; //将此函数体内的这两个变量定义为全局变量,以便使用开头设定的值
 $data = app_get_translate($c,$sl,$tl);
 $out = str_replace($c,$data,$c);
 return app_js_out($out,$gbk);
}


本来php是不需要定义变量的,但是出现这种情况应该怎么办呢?

只要在C:WINDOWS找出php.ini的

  在php.ini中的302行 error_reporting = E_ALL

  修改成

  error_reporting = E_ALL & ~E_NOTICE再重启apache2.2就行了

解决方法:修改php.ini

  将: error_reporting = E_ALL

修改为:error_reporting = E_ALL & ~E_NOTICE

  如果什么错误都不想让显示,直接修改:

  display_errors = Off

  如果你没有php.ini的修改权限,可在php头部加入

  ini_set("error_reporting","E_ALL & ~E_NOTICE");

文件名:一律小写,单词间以下划线分隔,类名:采用首字母大写的驼峰命名方式 类中的方法名:采用首字母小写的驼峰方式命名 类中的私有方法和私有变量:以下划线开头 函数名(变量名):全小写,单词间以下划线分隔

下面具体介绍

Θ 类文件都以.class.php为后缀,使用驼峰法命名,并且首字母大写,例如 Pay.class.php;
Θ 类名和目录_文件名一致。例如:类名Zend_Autoloader的目录是Zend/Autoloader.class.php;
Θ 函数的命名使用小写字母和下划线的方式。例如:get_client_ip;
Θ 方法的命名使用驼峰法,首字母小写或者使用下划线”_”,例如listComment(),_getResource(),通常下划线开头的方法属于私有方法;
Θ 属性的命名使用驼峰法,首字母小写或者使用下划线”_”,如$username,$_instance,通常下划线开头的属性属于私有属性;
Θ 常量以大写字母和下划线”_”命名,如”HOME_URL”;

理解一下消化一下:

1.缩进及行的长度

缩进4个空格,而不是tab(有些编辑器可以配置一个tab代表多个空格,注意是空格);每行保持大约75-85个字符的长度

2.控制结构

这个部分最容易忽略,也是影响代码美感最重要的方面,例子很详细了,受益匪浅。

 代码如下 复制代码

<?php
if ((condition1) || (condition2)) {
    action1;
} elseif ((condition3) && (condition4)) {
    action2;
} else {
    defaultaction;
}
?>
<?php
switch (condition) {
case 1:
    action1;
    break;

case 2:
    action2;
    break;

default:
    defaultaction;
    break;
}
?>

<?php

if (($condition1
    || $condition2)
    && $condition3
    && $condition4
) {
    //code here
}
?>

<?php

$a = $condition1 && $condition2
    ? $foo : $bar;

$b = $condition3 && $condition4
    ? $foo_man_this_is_too_long_what_should_i_do
    : $bar;
?>

3.函数调用

 代码如下 复制代码

<?php
$var = foo($bar, $baz, $quux);
$short         = foo($bar);
$long_variable = foo($baz);
?>

4.类名规范

 代码如下 复制代码

<?php
class Foo_Bar
{

    //... code goes here

}
?>

5.方法名规范(驼峰命名 )

 代码如下 复制代码

<?php
function fooFunction($arg1, $arg2 = '')
{
    if (condition) {
        statement;
    }
    return $val;
}
?>

6.数组定义规范

 

 代码如下 复制代码

<?php

$some_array = array(
    'foo'  => 'bar',
    'spam' => 'ham',
);
?>

7.注释

http://pear.php.net/manual/en/standards.sample.php

http://pear.php.net/manual/en/standards.header.php

8.Including Code

任何时候都应该采用include_once或者require_once

require_once 'foo.php'

文章是一个简单应用实例利用foreach遍历数组,然后给数组增加一些值进去了,方法比较简单,本文章后来介绍了直接使用array_push 来给数组增加值两者本人更喜欢后者一些。

例1

 代码如下 复制代码

foreach($list as &$value){
  
   if(isOnline($value['uid'])){
   $value['sid'] = '1';
  
   }else{
      $value['sid'] = '0';
         }
         $value['likes']='1';
   $sql="SELECT uid,likes,flower  FROM ".DB::table("dmember_member_count")." WHERE uid='".$value['uid']."'";
   $fff = DB::query($sql);
   $ffff = DB::fetch($fff);
   //print_r($ffff);
  
   $value['flower']=$ffff['flower'];
   $value['likes']=$ffff['likes'];
  }

例子 2,array_push() 函数

 代码如下 复制代码

<?php
$a=array("Dog","Cat");
array_push($a,"Horse","Bird");
print_r($a);
?>

输出:

Array ( [0] => Dog [1] => Cat [2] => Horse [3] => Bird )

例子 3
带有字符串键的数组:

 代码如下 复制代码

<?php
$a=array("a"=>"Dog","b"=>"Cat");
array_push($a,"Horse","Bird");
print_r($a);
?>

输出:

Array ( [a] => Dog [b] => Cat [0] => Horse [1] => Bird )

[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • php把读取xml 文档并转换成json数据代码

    在php中解析xml文档用专门的函数domdocument来处理,把json在php中也有相关的处理函数,我们要把数据xml 数据存到一个数据再用json_encode直接换成json数据就OK了。...2016-11-25
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
  • AI源文件转photoshop图像变模糊问题解决教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说下AI源文件转photoshop图像变模糊问题的解决教程,各位想知道具体解决方法的使用者们,那么下面就快来跟着小编...2016-09-14
  • C++万能库头文件在vs中的安装步骤(图文)

    这篇文章主要介绍了C++万能库头文件在vs中的安装步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • ant design中upload组件上传大文件,显示进度条进度的实例

    这篇文章主要介绍了ant design中upload组件上传大文件,显示进度条进度的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-29
  • C#使用StreamWriter写入文件的方法

    这篇文章主要介绍了C#使用StreamWriter写入文件的方法,涉及C#中StreamWriter类操作文件的相关技巧,需要的朋友可以参考下...2020-06-25
  • php实现文件下载实例分享

    举一个案例:复制代码 代码如下:<?phpclass Downfile { function downserver($file_name){$file_path = "./img/".$file_name;//转码,文件名转为gb2312解决中文乱码$file_name = iconv("utf-8","gb2312",$file_name...2014-06-07