源码

<?php/***QRCode+LogoGeneratorQR图片中间加logo,QR是根据google开放api生成的,其实啥都没有**http://labs.nticompassinc.com*///ini_set("auto_detect_line_endings",true);$data=isset($_GET['data'])?$_GET['data']:'http://weixin.qq.com/r/8bxsY6LEqpzVh7MAn_nV';$size=isset($_GET['size'])?$_GET['size']:'200x200';$logo=isset($_GET['logo'])?$_GET['logo']:'./logo.jpg';//中间那logo图//GetQRCodeimagefromGoogleChartAPI//http://code.google.com/apis/chart/infographics/docs/qr_codes.html//https://chart.googleapis.com/chart?cht=qr&chld=H|1&chs='.$size.'&chl='.urlencode($data));$png="http://chart.googleapis.com/chart?chs=150x150&cht=qr&chl=Hello+world&chld=L|1&choe=UTF-8";$QR=imagecreatefrompng($png);//Warning:imagecreatefrompng()[function.imagecreatefrompng]:Unabletofindthewrapper"https"-didyouforgettoenableitwhenyouconfiguredPHP?=//$QR=imagecreatefrompng('./chart.png');//外面那QR图if($logo!==FALSE){$logo=imagecreatefromstring(file_get_contents($logo));$QR_width=imagesx($QR);$QR_height=imagesy($QR);$logo_width=imagesx($logo);$logo_height=imagesy($logo);//ScalelogotofitintheQRCode$logo_qr_width=$QR_width/5;$scale=$logo_width/$logo_qr_width;$logo_qr_height=$logo_height/$scale;$from_width=($QR_width-$logo_qr_width)/2;//echo$from_width;exit;imagecopyresampled($QR,$logo,$from_width,$from_width,0,0,$logo_qr_width,$logo_qr_height,$logo_width,$logo_height);}header('Content-type:image/png');imagepng($QR);imagedestroy($QR);?>转:http://www.2cto.com/kf/201212/178527.html

2013-4-2 5481 0
软件

示例一:<?php//说明:获取完整URLfunctioncurPageURL(){$pageURL='http';if($_SERVER["HTTPS"]=="on"){$pageURL.="s";}$pageURL.="://";if($_SERVER["SERVER_PORT"]!="80"){$pageURL.=$_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];}else{$pageURL.=$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];}return$pageURL;}?>定义该函数之后就可以直接调用了:<?phpechocurPageURL();?>上面的函数可以获取当前页面完整的URL,即你在浏览器地址栏看到的内容。但是,有时候我们不想要URL中的参数(?号后面的内容),如:http://www.hack001.com/hello.html?u=123,只想获取http://www.hack001.com/hello.html,你可以将以上函数做以下更改:示例二:<?php//说明:获取无参数URLfunctioncurPageURL(){$pageURL='http';if($_SERVER["HTTPS"]=="on"){$pageURL.="s";}$pageURL.="://";$this_page=$_SERVER["REQUEST_URI"];//只取?前面的内容if(strpos($this_page,"?")!==false)$this_page=reset(explode("?",$this_page));if($_SERVER["SERVER_PORT"]!="80"){$pageURL.=$_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$this_page;}else{$pageURL.=$_SERVER["SERVER_NAME"].$this_page;}return$pageURL;}?>当然也可以采用$_SERVER['PHP_SELF'](该变量不返回URL中的参数),<?php//说明:获取无参数URLfunctioncurPageURL(){$pageURL='http';if($_SERVER["HTTPS"]=="on"){$pageURL.="s";}$pageURL.="://";if($_SERVER["SERVER_PORT"]!="80"){$pageURL.=$_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER['PHP_SELF'];}else{$pageURL.=$_SERVER["SERVER_NAME"].$_SERVER['PHP_SELF'];}return$pageURL;}?>另外,$_SERVER['REQUEST_URI']和$_SERVER['REQUEST_URL']是有稍微区别的:$_SERVER["REQUEST_URI"]返回完整的路径(/directory/file.ext?query=string)$_SERVER['REQUEST_URL']只返回文件路径,不包括参数,(/directory/file.ext),和$_SERVER['PHP_SELF']差不多,只不过在有些服务器上$_SERVER['REQUEST_URL']不可用!注意:URL使用rewrite规则的时候,$_SERVER['PHP_SELF']和$_SERVER["REQUEST_URL"]可能不会返回你想要的东西最后提醒一点,$_SERVER["REQUEST_URI"]只有apache才支持,想要一个获取$_SERVER['REQUEST_URI']值的通用解决方案,可以使用以下方案:<?php//说明:获取_SERVER['REQUEST_URI']值的通用解决方案//来源:drupal-5.1bootstrap.inc//整理:http://www.codebit.cn/pub/html/php_mysql/tip/other/request_urifunctionrequest_uri(){if(isset($_SERVER['REQUEST_URI'])){$uri=$_SERVER['REQUEST_URI'];}else{if(isset($_SERVER['argv'])){$uri=$_SERVER['PHP_SELF'].'?'.$_SERVER['argv'][0];}else{$uri=$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];}}return$uri;}?>

2013-4-2 3386 0
计算机语言

ignore_user_abort();函数搭配set_time_limit(0);和sleep($interval);即可实现以上自动更新。先给出一个基本的范式,其中有个人的测试程序:<?phpignore_user_abort();//函数设置与客户机断开是否会终止脚本的执行set_time_limit(0);//来设置一个脚本的执行时间为无限长$interval=30;do{$fp=fopen('text3.txt','a');fwrite($fp,'test');fclose($fp);sleep($interval);//函数延迟代码执行若干秒}while(true);?>首先运行该程序,然后关闭该页面,程序仍然运行中,test会每隔30秒的填补到text3.txt文件。最后根据php手册简单介绍一些相关的知识:1.连接处理:在PHP内部,系统维护着连接状态,其状态有三种可能的情况:0–NORMAL(正常)1–ABORTED(异常退出)2–TIMEOUT(超时)当PHP脚本正常地运行NORMAL状态时,连接为有效。当远程客户端中断连接时,ABORTED状态的标记将会被打开。远程客户端连接的中断通常是由用户点击STOP按钮导致的。当连接时间超过PHP的时限时,TIMEOUT状态的标记将被打开。可以决定脚本是否需要在客户端中断连接时退出。有时候让脚本完整地运行会带来很多方便,即使没有远程浏览器接受脚本的输出。默认的情况是当远程客户端连接中断时脚本将会退出。该处理过程可由php.ini的ignore_user_abort或由Apache.conf设置中对应的”php_valueignore_user_abort”以及ignore_user_abort()函数来控制。如果没有告诉PHP忽略用户的中断,脚本将会被中断,除非通过register_shutdown_function()设置了关闭触发函数。通过该关闭触发函数,当远程用户点击STOP按钮后,脚本再次尝试输出数据时,PHP将会检测到连接已被中断,并调用关闭触发函数。脚本也有可能被内置的脚本计时器中断。默认的超时限制为30秒。这个值可以通过设置php.ini的max_execution_time或Apache.conf设置中对应的”php_valuemax_execution_time”参数或者set_time_limit()函数来更改。当计数器超时的时候,脚本将会类似于以上连接中断的情况退出,先前被注册过的关闭触发函数也将在这时被执行。在该关闭触发函数中,可以通过调用connection_status()函数来检查超时是否导致关闭触发函数被调用。如果超时导致了关闭触发函数的调用,该函数将返回2。需要注意的一点是ABORTED和TIMEOUT状态可以同时有效。这在告诉PHP忽略用户的退出操作时是可能的。PHP将仍然注意用户已经中断了连接但脚本仍然在运行的情况。如果到了运行的时间限制,脚本将被退出,设置过的关闭触发函数也将被执行。在这时会发现函数connection_status()返回3。转:http://hi.baidu.com/helly/item/f14b871d5c88e60fb98a1aaa经过测试,用以上代码,就算把本身php文件删除,还是会继续执行,除非把php-cgi的进程结束,才不能继续执行了,太神奇了。又是一段邪恶的代码,哎。。还有,此代码是一死循环,切勿直接运用到程序中。

计算机语言

一、echoecho()实际上不是一个函数,是php语句,因此您无需对其使用括号。不过,如果您希望向echo()传递一个以上的参数,那么使用括号会发生解析错误。而且echo是返回void的,并不返回值,所以不能使用它来赋值。例子:<?php$a=echo("xshell");//错误!不能用来赋值echo"xshell";//xshellecho("xshell");//xshellecho("xshell","net");//发生错误,有括号不能传递多个参数echo"xshell","net","is","web";//不用括号的时候可以用逗号隔开多个值,会输出xshellnetiswebecho"xshellisgoodweb.";//不管是否换行,最终显示都是为一行xshellisgoodweb.echo"$fistnamenet";//如果$firstname="xshell",则会输出xshellnet.echo'$firstnamenet';//由于使用单引号,所以不会输出$firstname的值,而是输出$firstnamenet?>二、printprint()和echo()用法一样,但是echo速度会比print快一点点。实际上它也不是一个函数,因此您无需对其使用括号。不过,如果您希望向print()传递一个以上的参数,那么使用括号会发生解析错误。注意print总是返回1的,这个和echo不一样,也就是可以使用print来赋值,不过没有实际意义。例子:<?php$a=print("xshell");//这个是允许的echo$a;//$a的值是1?>三、print_r函数print_r函数打印关于变量的易于理解的信息。语法:mixedprint_r(mixed$expression[,boolreturn])如果变量是string,integerorfloat,将会直接输出其值,如果变量是一个数组,则会输出一个格式化后的数组,便于阅读,也就是有key和value对应的那种格式。对于object对象类同。print_r有两个参数,第一个是变量,第二个可设为true,如果设为true,则会返回字符串,否则返回布尔值TRUE。例子:<?php$a="xshell";$c=print_r($a);echo$c;//$c的值是TRUE$c=print_r($a,ture);echo$c;//$c的值是字符串xshell?>四、printf函数printf函数返回一个格式化后的字符串。语法:printf(format,arg1,arg2,arg++)参数format是转换的格式,以百分比符号(“%”)开始到转换字符结束。下面是可能的format值:*%%–返回百分比符号*%b–二进制数*%c–依照ASCII值的字符*%d–带符号十进制数*%e–可续计数法(比如1.5e+3)*%u–无符号十进制数*%f–浮点数(localsettingsaware)*%F–浮点数(notlocalsettingsaware)*%o–八进制数*%s–字符串*%x–十六进制数(小写字母)*%X–十六进制数(大写字母)arg1,arg2,arg++等参数将插入到主字符串中的百分号(%)符号处。该函数是逐步执行的,在第一个%符号中,插入arg1,在第二个%符号处,插入arg2,依此类推。如果%符号多于arg参数,则您必须使用占位符。占位符被插入%符号之后,由数字和“\$”组成。可使用数字指定显示的参数,详情请看例子。例子:<?phpprintf("Mynameis%s%s。","xshell","net");//Mynameisxshellnet。printf("Mynameis%1\$s%1\$s","xshell","net");//在s前添加1\$或2\$.....表示后面的参数显示的位置,此行输出MynameisRickyRicky因为只显示第一个参数两次。printf("Mynameis%2\$s%1\$s","xshell","net");//Mynameisnetxshell?>五、sprintf函数此函数使用方法和printf一样,唯一不同的就是该函数把格式化的字符串写写入一个变量中,而不是输出来。例子:<?phpsprintf("Mynameis%1\$s%1\$s","xshell","net");//你会发现没有任何东西输出的。$out=sprintf("Mynameis%1\$s%2\$s","xshell","net");echo$out;//输出Mynameisxshellnet?>六、var_dump函数功能:输出变量的内容、类型或字符串的内容、类型、长度。常用来调试。<?php$a=100;var_dump($a);//int(100)$a=100.356;var_dump($a);//float(100.356)?>转:http://www.2cto.com/kf/201208/147096.html

2013-3-30 5668 0