针对多用户实现头像上传功能PHP代码 适用于登陆页面制作

一个网站,其实说白了就是某几个特定功能的组合,而更换用户头像就在这些功能之中。今天就来做个测试,针对不同的用户,实现头像上传功能。

--------------------------------------------------------------------------------

成品图

思路
 •针对不同的用户上传头像,我们要为每一个已登录的用户创建一个文件夹,文件夹的名称以当前用户的用户名为准。

•用户上传成功后,跳转到用户登录成功后的页面,并刷新用户头像。

登陆页面

表单制作

<form role="form" action="./forindex.php"> <div class="form-group"> <label for="name">用户名</label> <input type="text" class="form-control" id="username" name="username" placeholder="请输入名称"> </div> <div class="form-group"> <label for="inputfile">文件输入</label> <input type="password" id="inputfile" name="password"> <p class="help-block">这里是块级帮助文本的实例。</p> </div> <div class="form-group"> <label>请输入验证码</label> <input type="text" id="checkcode" name="checkcode" /> <img id="imagecheckcode" src="./store.php?r=<?php echo rand();?>" /><a href="javascript:void(0);" onclick="change()" >看不清</a> </div> <script> function change(){ document.getElementById("imagecheckcode").src = "./store.php?r="+ Math.random(); } </script> <button type="submit" class="btn btn-default">提交</button> </form>

验证码制作

<?php session_start();// 必须在php的最开始部分声明,来开启session // 使用gd的imagecreatetruecolor();创建一张背景图 $image = imagecreatetruecolor(100,40); // 生成填充色 $bgcolor = imagecolorallocate($image,255,255,255); // 将填充色填充到背景图上 imagefill($image,0,0,$bgcolor); //////// 生成随机4位字母以及数字混合的验证码 $checkcode=''; for($i=0;$i<4;$i++){ $fontsize = rand(6,8); $fontcolor = imagecolorallocate($image,rand(0,255),rand(0,255),rand(0,255)); // 为了避免用户难于辨认,去掉了某些有歧义的字母和数字 $rawstr = 'abcdefghjkmnopqrstuvwxyz23456789'; $fontcontent = substr($rawstr,rand(0,strlen($rawstr)),1); // 拼接即将诞生的验证码 $checkcode.=$fontcontent; // 避免生成的图片重叠 $x += 20; $y = rand(10,20); imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor); } // 保存到session变量中 $_SESSION['checkcode']=$checkcode; // 生成一些干扰的点,这里是200个 for($i=0;$i<200;$i++){ $pointcolor = imagecolorallocate($image,rand(50,255),rand(50,255),rand(50,255)); imagesetpixel($image,rand(0,100),rand(0,30),$pointcolor); } // 生成一些干扰线 这里是4个 for($i=0;$i<4;$i++){ // 设置为浅色的线,防止喧宾夺主 $linecolor = imagecolorallocate($image,rand(50,255),rand(50,255),rand(50,255)); imageline($image,rand(0,99),rand(0,29),rand(0,99),rand(0,29),$linecolor); } header('content-type:image/png'); imagepng($image); // 释放资源,销毁执行对象 imagedestroy($image);

JavaScript刷新验证码

<a href="javascript:void(0);" onclick="change()" >看不清</a> <script> function change(){ document.getElementById("imagecheckcode").src = "./store.php?r="+ Math.random(); } </script>

验证页面

由于本次试验最核心的是对用户头像的更换,所以用户名我们暂且不管,以Root为准。

验证逻辑

<?php session_start(); header("Content-Type:text/html;charset=utf-8"); $username = $_REQUEST['username']; $password = $_REQUEST['password']; if(strtolower($_REQUEST['checkcode']==$_SESSION['checkcode'])){ if(!is_dir($username)){ mkdir($username); } echo "恭喜您,登陆成功!"."<br />3秒后将自动跳转到个人主页!"; $_SESSION['username'] = $username; header("refresh:3;url=./personalpage.php"); }else{ echo "对不起,登陆失败了!"; header("refresh:3;url=./index.php"); //echo "<script>window.location.href='./index.php'</script>"; }

页面跳转

在PHP中,要先实现页面的跳转,有很多方式。本文使用了增加header信息的方式,下面介绍几个关于页面跳转的小实例。

header函数

< ?php //重定向浏览器 header("Location: http://blog.csdn.net/marksinoberg"); //确保重定向后,后续代码不会被执行 exit; ?>

注意:Location和:之间不能有空格

Meta标签

<   meta   http-equiv = "refresh"  content = "1;url=http://blog.csdn.net/marksinoberg" >

注意: content可以控制在几秒之内完成跳转。

JavaScript

< ?php $ url = "http://bbs.lampbrother.net" ; echo " < script language = 'javascript' type = 'text/javascript' > "; echo " window.location.href = '$url' "; echo " < /script > "; ?>

注意: 使用JavaScript方式,代码放置的位置可以随意,只要是符合语法要求即可。

上传页面

个人主页

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title><?php session_start(); echo $_SESSION['username']."的个人主页"; ?></title> <style> img { width:128px; height:auto; } </style> </head> <body> <div> <img id="userphoto" src="./root/lover.png" /><br /> <form action="./uploadphoto.php" method="post" enctype="multipart/form-data"> <input type="file" name="photo" /> <input type="submit" onclick="uploadphoto()" value="上传新头像"/> </form> <script> function uploadphoto(){ document.getElementById("userphoto").src = "./root/<?php echo $_SESSION['username'];?>.png" } window.onload = function(){ uploadphoto(); } </script> </div> </body> </html>

上传核心

上传的核心还是一个表单,我们把要进行上传的图片上传到服务器,然后php使用move_uploaded_file来实现文件的迁移,实现上传。

<?php session_start(); header("Content-Type:text/html;charset=utf-8"); // 附件的存储位置、附件的名字 $path = "./root/"; $username = $_SESSION['username']; // 拼接成该文件在服务器上的名称 $server_name = $path.$username.".png"; if($_FILES['photo']['error']>0) { die("出错了!".$_FILES['photo']['error']); } if(move_uploaded_file($_FILES['photo']['tmp_name'],$server_name)){ //echo "<BR>"."Upload Success!"; echo "恭喜您,上传成功!"."<br />3秒后将自动跳转到个人主页!"; header("refresh:3;url=./personalpage.php"); }else{ //echo "<BR>"."Upload Failed!".$_FILES['photo']['error']; echo "对不起,上传头像失败了!"; header("refresh:2;url=./index.php"); } ?>

最终结果

登陆页面

验证结果

个人主页

最新头像

总结

回顾一下,本次试验的收获。
 •session的开启必须在php文件的开头session_start()
 •php可以实现的页面跳转的方式
 •上传文件
 •验证码制作与使用
 •JavaScript:void(0);的使用核心

大致的内容就是这么多,虽然没有增加美化效果,但是麻雀虽小,五脏也算是俱全了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-09-22 12:33:16

针对多用户实现头像上传功能PHP代码 适用于登陆页面制作的相关文章

【SSH项目实战】国税协同平台-5.头像上传功能

之前我们完成了用户管理的增删改查功能,来回顾一下我们获取用户列表时的过程: 记得用户添加的时候没有上传头像,下面我们来完成添加用户时,头像上传的功能. 我们上传头像有以下步骤: 1.获取头像(file,contentType,filename) 2.保存头像 2.1.保存头像到指定的文件目录中 2.2.设置用户头像路径 下面是详细实现: 在用户管理的添加.编辑页面中,可以上传用户的头像:页面中对头像字段引用type=file的文本域. <input type="file" nam

html5-请问,JSP网页中如何实现头像上传的功能。实现效果:一般现在网站可以上传头像,可以旋转和剪裁,预览。

问题描述 请问,JSP网页中如何实现头像上传的功能.实现效果:一般现在网站可以上传头像,可以旋转和剪裁,预览. jsp网页实现头像上传功能.实现效果,可以剪切,旋转,预览.网站用的SpringMVC框架.现在html5或者jar包,有实现的吗?求一个示例,谢谢~ 解决方案 如何实现网站应用中的头像剪裁和上传

PHP 针对多用户 实现头像更换

成品图 思路 登陆页面 表单制作 验证码制作 JavaScript刷新验证码 验证页面 验证逻辑 页面跳转 header函数 Meta标签 JavaScript 上传页面 个人主页 上传核心 最终结果 登陆页面 验证结果 个人主页 最新头像 总结 一个网站,其实说白了就是某几个特定功能的组合,而更换用户头像就在这些功能之中.今天就来做个测试,针对不同的用户,实现头像上传功能. 成品图 思路 针对不同的用户上传头像,我们要为每一个已登录的用户创建一个文件夹,文件夹的名称以当前用户的用户名为准. 用

用jquery插件的图片剪切上传功能

   为了使用户能自定义个人头像,需要提供一个对上传图片的截图功能,当前很多网站特别是SNS类网站都提供这样的功能,非常实用.主要实现的形式有两种,一种是flash截图,另一种就是javascript截图,两种方法各有秋千,关于Flash截图可以参考一下UcHome程序中头像上传功能,但这不是我要讨论的话题,我这里主要是如何实现javascript截图,利用jQuery的imgAreaSelect插件,轻松实现自定义头像[avatar]javascript截图功能 首先,利用的是jquery上传

刚刚做了个文件上传功能,拿来分享一下!(MVC架构及传统架构通用)

文件上传无论在软件还是在网站上都十分常见,我今天再把它拿出来,讲一下,主要讲一下它的设计思想和实现技术,为了它的通用性,我把它做在了WEB.Service项目里,即它是针对服务器的,它的结构是关联UI(WEB)层与Service层(BLL)的桥梁. 结构 上传基类: 上传文件的接口规范:     接口的实现: UI层调用WEB.Service层的上传功能:(附代码) public class FileUploadController : Controller { WEB.Services.IFi

PHP中Ckeditor+Ckfinder配置图片上传功能

第一:安装配置CKEditor 在扩展CKfinder实现图片上传之前,我们先把最基本的CKeditor编辑器安装一下. 1.  将下载的ckeditor_3.4.2.zip解压,复制目录下的ckeditor文件夹至所需目录,如/admin/. 第一:安装配置CKEditor ,可改/admin/ckeditor/ckeditor.js来配置编辑器,如字体.背景色.语言 .界面高宽.编辑器按钮分布等  代码如下 复制代码 config.language = 'en'; config.skin =

[Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能实例代码_javascript技巧

很久没有更新博客了,再不写点东西都烂了. 这次更新一个小内容,是两个插件的组合使用,实现头像上传功能. 业务需求: 头像上传功能,要对上传的文件进行剪切,且保证头像到服务器时必须是正方形的. 优化<input type="file">的显示样式,基础的样式实在太难看了. 上传的头像需要进行质量压缩跟大小裁剪,以减缓浏览器的压力. 成果预览: 使用到的技术插件 Jcrop:用于前端"裁剪"图片 bootstrap-fileinput:用于前端优化上传控件样

flash + php头像上传预览裁剪组件1.8发布了

  安装及部署: 1. 上传到 apache,iis,tomcat 服务器,通过域名访问 index.html v1.8 1.优化摄像头拍照不清晰(目前支持高清) v1.7  1.优化三张预览图片失真 2.优化加载默认图片,图片上传体验 v1.6   1.修改默认图片小于300px,图片拉伸bug v1.5    1.修复图片像素超过2880上传失败bug 2.修复旋转,裁剪框超出bug v1.3 1.新增加上传成功,遮罩提醒 2.新增图片上传大小不限制 v1.2  1.解决ie,火狐兼容bug

迅雷极速版更新可关闭上传功能

  不得不说,迅雷极速版,是迅雷有史以来最具良心的下载神器. 安装界面已经很简洁 迅雷极速版的亮点在于,用户无需开会员就能享受无广告无弹窗的价值10元每月迅雷会员服务. 无需开通付费会员就能享受无广告无弹窗的特权 关闭上传,才是迅雷VIP会员想要的功能. 关闭上传终于来了 好吧,现在开始跟曾经高高在上的迅雷VIP尊享版Say GoodBye了. 跟迅雷VIP尊享版Say Goodbye吧 写在最后 小编最后还有一个疑问,迅雷VIP的关闭上传功能是向曾经开通过迅雷白金会员的用户开放的,就算目前不是