php图片上传类,支持加水印,生成略缩图
代码如下 | 复制代码 |
<?php private $img_size; //取得图片的长宽 switch($imginfo[2]) switch($this->watertype) switch ($imginfo[2]) |
php制作记住密码自动登录的解决思路,其实也就是对session,cookies的操作
//检查用户是否登录
代码如下 | 复制代码 |
function checklogin(){ if(empty($_SESSION['user_info'])){ //检查一下session是不是为空 if(empty($_COOKIE['username']) || empty($_COOKIE['password'])){ //如果session为空,并且用户没有选择记录登录状 header("location:login.php?req_url=".$_SERVER['REQUEST_URI']); //转到登录页面,记录请求的url,登录后跳转过去,用户体验好。 }else{ //用户选择了记住登录状态 $user = getUserInfo($_COOKIE['username'],$_COOKIE['password']); //去取用户的个人资料 if(empty($user)){ //用户名密码不对没到取到信息,转到登录页面 header("location:login.php?req_url=".$_SERVER['REQUEST_URI']); }else{ $_SESSION['user_info'] = $user; //用户名和密码对了,把用户的个人资料放到session里面 } } } } |
二,用户提交登录信息
代码如下 | 复制代码 |
username = trim($_POST['username']); $password = md5(trim($_POST['password'])); $validatecode = $_POST['validateCode']; $ref_url = $_GET['req_url']; $remember = $_POST['remember']; $err_msg = ''; if($validatecode!=$_SESSION['checksum']){ $err_msg = "验证码不正确"; }elseif($username=='' || $password==''){ $err_msg = "用户名和密码都不能为空"; }else{ $row = getUserInfo($username,$password); if(empty($row)){ $err_msg = "用户名和密码都不正确"; }else{ $_SESSION['user_info'] = $row; if(!empty($remember)){ //如果用户选择了,记录登录状态就把用户名和加了密的密码放到cookie里面 setcookie("username", $username, time()+3600*24*365); setcookie("password", $password, time()+3600*24*365); } if(strpos($ref_url,"login.php") === false){ header("location:".$ref_url); }else{ header("location:main_user.php"); } } } |
三,当用户点退出时,清出记录登录状态
//退出登录
代码如下 | 复制代码 |
function logout(){ unset($_SESSION['user_info']); if(!empty($_COOKIE['username']) || !empty($_COOKIE['password'])){ setcookie("username", null, time()-3600*24*365); setcookie("password", null, time()-3600*24*365); } } |
代码如下 | 复制代码 |
getImg($url, $filename); |
在程序中如果加一大堆判断的确是一个很大的麻烦!例如这样:
代码如下 | 复制代码 |
if($fun=’a’){echo ”哎呀!”;} elesif(){} …… else{echo “嗯!”;}; |
真的很麻烦并且造成程序后期阅读和修改时候的巨大麻烦!
这时候我们可以把每一个要执行的代码段,用函数来实现。
然后可以用一个更加NB的方法来实现这些功能。
并且因为每一个函数实现一个功能,我们维护起来就简单多了。
进入正题,看看PHP动态调用函数到底有什么作用:
在PHP中是可以动态调用函数的,像这样$fun(),PHP解析器可以根据变量$fun的值来调用对用的函数,例如$fun=’a’,解析器看到的将是a();这样的形式,从而调用函数a。具体代码如下:
代码如下 | 复制代码 |
<?php //程序来源:PHP iask http://www.111cn.net //controller.php (isset($_GET['fun'])&&$_GET['fun']!='')?$fun=$_GET['fun']:$fun='def'; controller($fun); function controller($fun){ if(function_exists($fun)) $fun(); else echo "函数{$fun}未定义"; } function def(){ echo "由于用户没有传递参数,调用了缺省的函数def()"; } function a(){ echo "函数a被调用!"; } function b(){ echo "函数b被调用!"; } ?> |
实例
代码如下 | 复制代码 |
<?php <?php |
在前台页面我们可以用不同的链接来实现不同的功能,例如我们有这样一个链接
http://localhost/controller.php?fun=a
当请求到达controller.php的时候,PHP程序将会自动的执行函数a()。
问题的重点:
在于我们在这个程序的页面首先调用了controller()函数。这个函数首先判断参数中定义的函数名称($fun的值)是否被定义,如果定义了就调用这个函数。
如果在$_GET参数中fun没有定义:http://localhost/controller.php
就调用一个缺省的函数def();
这样的代码是不是简洁很对呢?你可以把这些代码拷贝回去,自己看看效果——我肯定的告诉你,这些代码运行时正常的!
然而我也很不幸的告诉你:其实这段看起来整齐的代码有一个巨大的安全隐患在里面,很大,很大的安全隐患!具体是啥,留到明天10点钟准时上线的《关于PHP动态调用函数的安全问题》再说吧,你肯定不会把这一段代码立马用到服务器上吧?
另外经过测试证实,这个方法不但可以动态调用函数,并且也可以动态实例化对象,像这样:$obj = new $obj();
代码如下 | 复制代码 |
<?php class B $a = new A(); |
总结:静态、动态调用都指类、对象对其方法的调用,动态指的是创建(new)了对象,然后用对象变量去调用方法;静态则是没有创建对象,直接用类名去调用。至于另一个对象那就很简单了,不同的类创建不同的对象,比如class A;class B ,$a = new A();$b = new B();$a and $b 相对之间就是另一个对象了。
今天用CPAN安装Term::ReadLine,报了个这样的错误
Going to read /root/.cpan/sources/modules/03modlist.data.gz
Can't locate object method "data" via package "CPAN::Modulelist" (perhaps you forgot to load "CPAN::Modulelist"?) at (eval 31) line 1.
at /usr/lib/perl5/5.8.5/CPAN.pm line 3406
CPAN::Index::rd_modlist('CPAN::Index', '/root/.cpan/sources/modules/03modlist.data.gz') called at /usr/lib/perl5/5.8.5/CPAN.pm line 3129
CPAN::Index::reload('CPAN::Index') called at /usr/lib/perl5/5.8.5/CPAN.pm line 675
CPAN::exists('CPAN=HASH(0x9c79658)', 'CPAN::Module', 'Term::ReadLine') called at /usr/lib/perl5/5.8.5/CPAN.pm line 1842
CPAN::Shell::expandany('CPAN::Shell', 'Term::ReadLine') called at /usr/lib/perl5/5.8.5/CPAN.pm line 2078
CPAN::Shell::rematein('CPAN::Shell', 'install', 'Term::ReadLine') called at /usr/lib/perl5/5.8.5/CPAN.pm line 2165
CPAN::Shell::install('CPAN::Shell', 'Term::ReadLine') called at /usr/lib/perl5/5.8.5/CPAN.pm line 201 eval {...} called at /usr/lib/perl5/5.8.5/CPAN.pm line 201 CPAN::shell() called at -e line 1
google结果有人是这样解决的
rm -rf ~/.cpan
删除后在perl -MCPAN -e shell中执行reload index
然后执行install Bundle::CPAN
最后执行reload CPAN即可正常通过命令行install MODULES
我按照这个做,结果reload index执行都报错,继续google,发现应该是Config.pm的问题,重新配置
cpan> o conf urllist unshift http://www.perl.com/CPAN/
cpan> o conf commit
然后再执行上面的reload index之后的步骤就OK了。
相关文章
- 本文介绍两种使用 php 生成二维码的方法。 (1)利用google生成二维码的开放接口,代码如下: /** * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】 * @param strin...2015-10-21
- 这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
- 这篇文章主要介绍了C#生成随机数功能,涉及C#数学运算与字符串操作相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- PHP代码如下:复制代码 代码如下:if (isset($_FILES["Filedata"]) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0) { $upload_file = $_FILES['Filedata']; $fil...2013-10-04
- 下面小编就为大家带来一篇jQuery为动态生成的select元素添加事件的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-09-01
- 经常制作开发不同的网站的后台,写过很多种不同的后台导航写法。 最终积累了这种最写法,算是最好的吧...2013-09-29
- 关于生成唯一数字ID的问题,是不是需要使用rand生成一个随机数,然后去数据库查询是否有这个数呢?感觉这样的话有点费时间,有没有其他方法呢?当然不是,其实有两种方法可以解决。 1. 如果你只用php而不用数据库的话,那时间戳+随...2015-11-24
- 本案例非通用,仅作笔记以备用 修改后的结果是 百度编辑器里上传的图片路径为/d/file/upload1...2014-07-03
- js生成随机数主要用到了内置的Math对象的random()方法。用法如:Math.random()。它返回的是一个 0 ~ 1 之间的随机数。有了这么一个方法,那生成任意随机数就好理解了。比如实际中我们可能会有如下的需要: (1)生成一个 0 - 1...2015-10-21
- 这篇文章主要介绍了Java实现将图片上传到webapp路径下 路径获取方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-11-12
- 验证码是一个现在WEB2.0中常见的一个功能了,像注册、登录又或者是留言页面,都需要注册码来验证当前操作者的合法性,我们会看到有些网站没有验证码,但那是更高级的验证了,...2016-11-25
- 复制代码 代码如下:function getTagStyle(){ $minFontSize=8; //最小字体大小,可根据需要自行更改 $maxFontSize=18; //最大字体大小,可根据需要自行更改 return 'font-size:'.($minFontSize+lcg_value()*(abs($maxFo...2013-10-04
- 解决办法:$str=”QB”.str_pad(($maxid[0]["max(id)"]+1),5,”0″,STR_PAD_LEFT ); 其中$maxid[0]["max(id)"]+1) 是利用max函数从数据库中找也ID最大的一个值, ID为主键,不会重复。 str_pad() 函数把字符串填充为指...2013-10-04
- 下面小编就为大家带来一篇JS生成某个范围的随机数【四种情况详解】。小编觉得挺不错的,现在分享给大家,也给大家做个参考,一起跟随小编过来看看吧...2016-04-22
- 这篇文章主要介绍了C#生成Word文档代码示例,本文直接给出代码实例,需要的朋友可以参考下...2020-06-25
- 本文主要介绍了Vue组件文档生成工具库的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-11
- 这篇文章主要介绍了PHP简单实现生成txt文件到指定目录的方法,简单对比分析了PHP中fwrite及file_put_contents等函数的使用方法,需要的朋友可以参考下...2016-04-28
- upload.php复制代码 代码如下:<?phpif(isset($_FILES["myfile"])){$ret = array();$uploadDir = 'images'.DIRECTORY_SEPARATOR.date("Ymd").DIRECTORY_SEPARATOR;$dir = dirname(__FILE__).DIRECTORY_SEPARATOR.$upl...2014-06-07
- 这篇文章主要介绍了史上最简洁C# 生成条形码图片思路及示例分享,需要的朋友可以参考下...2020-06-25
- $doc = new domdocument('1.0'); // we want a nice output $doc->formatoutput = true; 代码如下 复制代码 $root = $doc->createelement('bo...2016-11-25