php switch 问题
您好y'all我是比较新的PHP的,请原谅我的愚蠢。
我目前正在与开关,我是想知道如何 - 如果可能的话在所有 - 添加到同一页上第二个变量。例如
我希望能到我的浏览器类型是:
php?scs=blah">www.mysite.com/index.php?scs=blah
并获得了我的网站的某些部分。同样地,我想类型:
www.mysite.com/index.php?atp=blah
并获得不同的部分。
我已经设定了两个变量,但问题是我有一个默认设置的第一个变量,需要熬夜。开关代码如下
$scs = $_GET['scs'];
@include('pt1.php');
switch($scs){
default:
@include('vm9.php');
break;
case vstr:
@include('vst/v1.php');
break;}$atp = $_GET['atp'];
switch($atp)
{ case credits: @include('atp/credits.php'); break;}
function doSomething(x)
{
if(x === "someString")
{ $("#item").css("background-color","blue");
$("div.items").slideUp("fast");
$("input[checkbox]:checked").hide();
}
}
php 自动加载函数 __autoload()
PHP在魔术函数__autoload()方法出现以前,如果你要在一个程序文件中实例化100个对象,那么你必须用include或者require包含进来100个类文件,或者你把这100个类定义在同一个类文件中——相信这个文件一定会非常大。
但是__autoload()方法出来了,以后就不必为此大伤脑筋了,这个类会在你实例化对象之前自动加载制定的文件。
下边我们通过一个例子来看一下,具体的使用方法,并在稍后说明使用PHP魔术函数__autoload应该注意些什么。
class ClassA{
public function __construct(){
echo "ClassA load success!";
}
}
//定义一个类ClassA,文件名为ClassA.php
class ClassA{
public function __construct(){
echo "ClassA load success!";
}
}
class ClassB extends ClassA {
public function __construct(){
//parent::__construct();
echo "ClassB load success!";
}
}
//定义一个类ClassB,文件名为ClassB.php,ClassB继承ClassA
class ClassB extends ClassA {
public function __construct(){
//parent::__construct();
echo "ClassB load success!";
}
}
定义两个测试用的类之后,我们来编写一个含有__autoload()方法的PHP运行程序文件如下:
function __autoload($classname){
$classpath="./".$classname.'.php';
if(file_exists($classpath)){
require_once($classpath);
}
else{
echo 'class file'.$classpath.'not found!';
}
}
$newobj = new ClassA();
$newobj = new ClassB();
这个文件的运行是一点问题都没有的,可见autoload是多么的好用啊,呵呵……
但是不得不提醒你一下几个方面是必须要注意的。
1、如果类存在继承关系(例如:ClassB extends ClassA),并且ClassA不在ClassB所在目录
利用__autoload魔术函数实例化ClassB的时候就会受到一个致命错误:
Fatal error: Class ‘Classd’ not found in ……ClassB.php on line 2,
解决方法:把所有存在extends关系的类放在同一个文件目录下,或者在实例化一个继承类的时候在文件中手工包含被继承的类;
2、另外一个需要注意的是,类名和类的文件名必须一致,才能更方便的使用魔术函数__autoload;
其他需要注意的事情:
3、在CLI模式下运行PHP脚本的话这个方法无效;
4、如果你的类名称和用户的输入有关——或者依赖于用户的输入,一定要注意检查输入的文件名,例如:.././这样的文件名是非常危险的。
或者你还对:PHP魔术函数__call()感兴趣!
php 文件上传代码,限制jpg文件
<?php
/* 图片上传类 www.lost63.com原创代码 仅限JPG格式图片 */
class uploadFile
{
var $inputName; //input名称
var $fileName; //文件命名
var $fileProperty; //文件属性
var $fileSize=2097152; //文件大小限制,2M
var $filePath="upload/"; //文件存储路径
function uploadFile($inputName){
$this->inputName=$inputName;
$this->getName(); //取得新的名称
$this->fileSave();
}
//随机名称
private function getName(){
$this->fileName=date("YmdHms").rand(0,9).$this->getProperty();
}
//文件属性,返回后辍名
private function getProperty(){
if($_FILES[$this->inputName]["type"]=="image/pjpeg"||$_FILES[$this->inputName]["type"]=="image/jpeg"){
return ".jpg";
}else{
exit("文件格式不对");
}
}
//文件存储
private function fileSave(){
if($_FILES[$this->inputName]["size"]>$this->fileSize){
exit("文件太大,最大限制为".$this->fileSize."字节");
}
if(!file_exists($this->filePath)){
mkdir($this->filePath); //如果文件存储目录不存在,则建立;
}
move_uploaded_file($_FILES[$this->inputName]["tmp_name"],
$this->filePath.$this->fileName);
}
}
if($_GET['action']=="fileSave"){
$f=new uploadFile("file");
echo '<input name="textfield" type="text" size="30" value="'.$f->filePath.$f->fileName.'" /> 上传成功! <a href="'.$f->filePath.$f->fileName.'">浏览</a>';
}else{
echo '<form action="?action=fileSave" method="post" enctype="multipart/form-data" name="form1" id="form1">
<input type="file" name="file" size="30" />
<input type="submit" name="Submit" value="提交" />
</form>';
}
?>
php 加水印 等比例缩放程序
function watermark($desImg,$waterImg,$positon=1,$saveas=false,$alpha=30)
011 {
012 //获取目图片的基本信息
013 $temp=pathinfo($desImg);
014 $name=$temp["basename"];//<SPAN class=t_tag onclick=tagshow(event) href="tag.php?name=%CE%C4%BC%FE">文件</SPAN>名
015 $path=$temp["dirname"];//文件所在的文件夹
016 $extension=$temp["extension"];//文件扩展名
017 if($saveas)
018 {
019 //需要另存为
020 $name=rtrim($name,".$extension")."_2.";//重新命名
021 $savepath=$path."/".$name.$extension;
022 }
023 else
024 {
025 //不需要另存为则覆盖原图
026 $savepath=$path."/".$name;
027 }
028 $info=getImageInfo($desImg);//获取目标图片的信息
029 $info2=getImageInfo($waterImg);//获取水印图片的信息
030
031 $desImg=create($desImg);//从原图创建
032 $waterImg=create($waterImg);//从水印图片创建
033 //位置1:顶部居左
034 if($positon==1)
035 {
036 $x=0;
037 $y=0;
038 }
039 //位置2:顶部居右
040 if($positon==2)
041 {
042 $x=$info[0]-$info2[0];
043 $y=0;
044 }
045 //位置3:居中
046 if($positon==3)
047 {
048 $x=($info[0]-$info2[0])/2;
049 $y=($info[1]-$info2[1])/2;
050 }
051 //位置4:底部居左
052 if($positon==4)
053 {
054 $x=0;
055 $y=$info[1]-$info2[1];
056 }
057 //位置5:底部居右
058 if($positon==5)
059 {
060 $x=$info[0]-$info2[0];
061 $y=$info[1]-$info2[1];
062 }
063 imagecopymerge($desImg,$waterImg,$x,$y,0,0,$info2[0],$info2[1],$alpha);
064 imagejpeg($desImg,$savepath);
065 imagedestroy($desImg);
066 imagedestroy($waterImg);
067 return $savepath;
068 }
069 /**
070 * 获取图片的信息,width,height,image/type
071 * @param string $src 图片路径
072 * @return <SPAN class=t_tag onclick=tagshow(event) href="tag.php?name=%CA%FD%D7%E9">数组</SPAN>
073 * **/
074 function getImageInfo($src)
075 {
076 return getimagesize($src);
077 }
078 /**
079 * 创建图片,返回资源类型
080 * @param string $src 图片路径
081 * @return resource $im 返回资源类型
082 * **/
083 function create($src)
084 {
085 $info=getImageInfo($src);
086 switch ($info[2])
087 {
088 case 1:
089 $im=imagecreatefromgif($src);
090 break;
091 case 2:
092 $im=imagecreatefromjpeg($src);
093 break;
094 case 3:
095 $im=imagecreatefrompng($src);
096 break;
097 }
098 return $im;
099 }
100 /**
101 * 缩略图主函数
102 * @param string $src 图片路径
103 * @param int $w 缩略图宽度
104 * @param int $h 缩略图高度
105 * @return mixed 返回缩略图路径
106 * **/
107
108 function resize($src,$w,$h)
109 {
110 $temp=pathinfo($src);
111 $name=$temp["basename"];//文件名
112 $dir=$temp["dirname"];//文件所在的文件夹
113 $extension=$temp["extension"];//文件扩展名
114 $savepath="{$dir}/{$name}.thumb.jpg";//缩略图保存路径,新的文件名为*.thumb.jpg
115
116 //获取图片的基本信息
117 $info=getImageInfo($src);
118 $width=$info[0];//获取图片宽度
119 $height=$info[1];//获取图片高度
120 $per1=round($width/$height,2);//计算原图长宽比
121 $per2=round($w/$h,2);//计算缩略图长宽比
122
123 //计算缩放比例
124 if($per1>$per2||$per1==$per2)
125 {
126 //原图长宽比大于或者等于缩略图长宽比,则按照宽度优先
127 $per=$w/$width;
128 }
129 if($per1<$per2)
130 {
131 //原图长宽比小于缩略图长宽比,则按照高度优先
132 $per=$h/$height;
133 }
134 $temp_w=intval($width*$per);//计算原图缩放后的宽度
135 $temp_h=intval($height*$per);//计算原图缩放后的高度
136 $temp_img=imagecreatetruecolor($temp_w,$temp_h);//创建画布
137 $im=create($src);
138 imagecopyresampled($temp_img,$im,0,0,0,0,$temp_w,$temp_h,$width,$height);
139 if($per1>$per2)
140 {
141 imagejpeg($temp_img,$savepath);
142 return addBg($savepath,$w,$h,"w");
143 //宽度优先,在缩放之后高度不足的情况下补上背景
144 }
145 if($per1==$per2)
146 {
147 imagejpeg($temp_img,$savepath);
148 return $savepath;
149 //等比缩放
150 }
151 if($per1<$per2)
152 {
153 imagejpeg($temp_img,$savepath);
154
155 return addBg($savepath,$w,$h,"h");
156 //高度优先,在缩放之后宽度不足的情况下补上背景
157 }
158 }
159 /**
160 * 添加背景
161 * @param string $src 图片路径
162 * @param int $w 背景图像宽度
163 * @param int $h 背景图像高度
164 * @param String $first 决定图像最终位置的,w 宽度优先 h 高度优先 wh:等比
165 * @return 返回加上背景的图片
166 * **/
167 function addBg($src,$w,$h,$fisrt="w")
168 {
169 $bg=imagecreatetruecolor($w,$h);
170 $white = imagecolorallocate($bg,255,255,255);
171 imagefill($bg,0,0,$white);//填充背景
172
173 //获取目标图片信息
174 $info=getImageInfo($src);
175 $width=$info[0];//目标图片宽度
176 $height=$info[1];//目标图片高度
177 $img=create($src);
178 if($fisrt=="wh")
179 {
180 //等比缩放
181 return $src;
182 }
183 else
184 {
185 if($fisrt=="w")
186 {
187 $x=0;
188 $y=($h-$height)/2;//垂直居中
189 }
190 if($fisrt=="h")
191 {
192 $x=($w-$width)/2;//水平居中
193 $y=0;
194 }
195 imagecopymerge($bg,$img,$x,$y,0,0,$width,$height,100);
196 imagejpeg($bg,$src);
197 imagedestroy($bg);
198 imagedestroy($img);
199 return $src;
200 }
201
202 }
$_SERVER['PHP_SELF']:当前正在执行脚本的文件名,与document root相关。
$_SERVER['argv']:传递给该脚本的参数。
$_SERVER['argc']:包含传递给程序的命令行参数的个数(如果运行在命令行模式)。
$_SERVER['GATEWAY_INTERFACE']:服务器使用的CGI规范的版本,例如:“CGI/1.1”。
$_SERVER['SERVER_NAME']:当前运行脚本所在服务器主机的名称。
$_SERVER['SERVER_SOFTWARE']:服务器标识的字串,在响应请求时的头部中给出。
$_SERVER['SERVER_PROTOCOL']:请求页面时通信协议的名称和版本,例如:“HTTP/1.0”。
$_SERVER['REQUEST_METHOD']:访问页面时的请求方法,例如:“GET”、“HEAD”、“POST”、“PUT”。
$_SERVER['QUERY_STRING']:查询(query)的字符串。
$_SERVER['DOCUMENT_ROOT']:当前运行脚本所在的文档根目录,在服务器配置文件中定义。
$_SERVER['HTTP_ACCEPT']:当前请求的Accept: 头部的内容。
$_SERVER['HTTP_ACCEPT_CHARSET']:当前请求的Accept-Charset: 头部的内容,例如:“iso-8859-1,*,utf-8”。
$_SERVER['HTTP_ACCEPT_ENCODING']:当前请求的Accept-Encoding: 头部的内容,例如:“gzip”。
$_SERVER['HTTP_ACCEPT_LANGUAGE']:当前请求的Accept-Language: 头部的内容,例如:“en”。
$_SERVER['HTTP_CONNECTION']:当前请求的Connection: 头部的内容,例如:“Keep-Alive”。
$_SERVER['HTTP_HOST']:当前请求的Host: 头部的内容。
$_SERVER['HTTP_REFERER']:链接到当前页面的前一页面的URL地址。
$_SERVER['HTTP_USER_AGENT']:当前请求的User_Agent: 头部的内容。
$_SERVER['REMOTE_ADDR']:正在浏览当前页面用户的IP地址。
$_SERVER['REMOTE_HOST']:正在浏览当前页面用户的主机名。
$_SERVER['REMOTE_PORT']:用户连接到服务器时所使用的端口。
$_SERVER['SCRIPT_FILENAME']:当前执行脚本的绝对路径名。
$_SERVER['SERVER_ADMIN']:管理员信息。
$_SERVER['SERVER_PORT']:服务器所使用的端口。
$_SERVER['SERVER_SIGNATURE']:包含服务器版本和虚拟主机名的字符串。
$_SERVER['PATH_TRANSLATED']:当前脚本所在文件系统(不是文档根目录)的基本路径。
$_SERVER['SCRIPT_NAME']:包含当前脚本的路径,这在页面需要指向自己时非常有用。
$_SERVER['REQUEST_URI']:访问此页面所需的URI,例如:“/index.html”。
$_SERVER['PHP_AUTH_USER']:当PHP运行在Apache模块方式下,并且正在使用HTTP认证功能,这个变量便是用户输入的用户名。
$_SERVER['PHP_AUTH_PW']:当PHP运行在Apache模块方式下,并且正在使用HTTP认证功能,这个变量便是用户输入的密码。
$_SERVER['AUTH_TYPE']:当PHP运行在Apache模块方式下,并且正在使用HTTP认证功能,这个变量便是认证的类型。
相关文章
- VPN可以虚拟出一个专用网络,让远处的计算机和你相当于处在同一个局域网中,而中间的数据也可以实现加密传输,用处很大,特别是在一些大公司,分公司处在不同的区域。...2016-01-27
解决执行maven命令时提示Process terminated的问题
这篇文章主要介绍了解决执行maven命令时提示Process terminated的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-25- 我们在作图的时候需要用到“素描”滤镜,但是点开滤镜选项就是找不到。该怎么快速找到“素描”滤镜呢?请往下看。 1、点开滤镜选项时,发现没有素描这一项。2、别急,我...2017-01-22
- 一般来说为了达到隐藏自身 IP,我们都会选择一些 CDN 服务,目前用的最多的免费 CDN 是 Cloudflare。但是正常情况下 Cloudflare 是不能自己选择IP,有时候分配给我们的 IP 可能表现不佳,也只能将就着用。但是我们都希望可以用上 CF 比较快的 IP。那么自选IP,就显得很必要了。...2022-09-23
php 中file_get_contents超时问题的解决方法
file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25- 这篇文章主要介绍了Mybatis Plus select 实现只查询部分字段的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-01
- 这篇文章主要介绍了MySQL性能监控软件Nagios的安装及配置教程,这里以CentOS操作系统为环境进行演示,需要的朋友可以参考下...2015-12-14
- 本篇文章主要分享了通过window.navigator来判断浏览器及其版本信息的实例代码。具有一定的参考价值,下面跟着小编一起来看下吧...2017-01-23
php file_get_contents 设置代理抓取页面示例
file_get_contents函数在php中可以直接打开本地文件也可以直接抓取远程服务器文件,如果简单的采集我们可以使用file_get_contents直接来操作,如果有防采集我们可能需要...2016-11-25- 这篇文章主要介绍了解决Mybatis 大数据量的批量insert问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-09
- 这篇文章主要介绍了mybatis-plus 表名添加前缀的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-26
iOS APP h5快捷程序 .mobileconfig的生成
1.从APP Store 下载Apple Configurator 2从一个管理点管理所有iOS设备应用程序,文档和配置文件。想要确保您的所有家庭成员在其每台iOS设备上都有类似的应用和文档,管理日益增...2021-12-23- 这篇文章主要介绍了Redis连接池配置及初始化实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-29
- 这篇文章主要介绍了详解如何清理redis集群的所有数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-18
- 这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
- 这篇文章主要介绍了mybatis-plus 返回部分字段的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-02
- 这篇文章主要介绍了mybatis的Configuration详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-04
- 这篇文章主要介绍了js如何实现浏览器打印功能,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-15
pandas pd.read_csv()函数中parse_dates()参数的用法说明
这篇文章主要介绍了pandas pd.read_csv()函数中parse_dates()参数的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-05- PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02