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


Posted in PHP onAugust 17, 2016

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

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

成品图

针对多用户实现头像上传功能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");
}
?>

最终结果

登陆页面

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

验证结果

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

个人主页

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

最新头像

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

总结

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

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

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

PHP 相关文章推荐
PHP中用正则表达式清除字符串的空白
Jan 17 PHP
php函数指定默认值方法的小例子
Dec 04 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
Jun 19 PHP
discuz目录文件资料汇总
Dec 30 PHP
Thinkphp中的curd应用实用要点
Jan 04 PHP
php获取twitter最新消息的方法
Apr 14 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
Mar 09 PHP
php getcwd与dirname(__FILE__)区别详解
Sep 24 PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
Nov 23 PHP
PHP解决中文乱码
Apr 28 PHP
YII分模块加载路由的实现方法
Oct 01 PHP
PHP使用SOAP调用API操作示例
Dec 25 PHP
总结PHP中数值计算的注意事项
Aug 14 #PHP
示例详解Laravel的注册重构
Aug 14 #PHP
PHP实现路由映射到指定控制器
Aug 13 #PHP
Yii2.0中的COOKIE和SESSION用法
Aug 12 #PHP
PHP Oauth授权和本地加密实现方法
Aug 12 #PHP
PHP 读取大文件并显示的简单实例(推荐)
Aug 12 #PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
Aug 12 #PHP
You might like
一个多文件上传的例子(原创)
2006/10/09 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
2016/03/21 PHP
浅谈Laravel模板实体转义带来的坑
2019/10/22 PHP
js实现两个值相加alert出来精确到指定位
2013/09/25 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
JS替换字符串中空格方法
2015/04/17 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
2016/02/06 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
2016/03/06 Javascript
jquery通过name属性取值的简单实现方法
2016/06/20 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
2016/07/01 Javascript
jquery实现界面无刷新加载登陆注册
2016/07/30 Javascript
移动端js图片查看器
2016/11/17 Javascript
jQuery实现CheckBox全选、全不选功能
2017/01/11 Javascript
JQuery实现table中tr上移下移的示例(超简单)
2018/01/08 jQuery
微信小程序实现评论功能
2018/11/28 Javascript
js字符串类型String常用操作实例总结
2019/07/05 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
使用Python的Tornado框架实现一个一对一聊天的程序
2015/04/25 Python
python访问mysql数据库的实现方法(2则示例)
2016/01/06 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
itchat接口使用示例
2017/10/23 Python
使用python模拟高斯分布例子
2019/12/09 Python
django框架F&amp;Q 聚合与分组操作示例
2019/12/12 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
2020/03/30 Python
Python自定义聚合函数merge与transform区别详解
2020/05/26 Python
python exit出错原因整理
2020/08/31 Python
澳大利亚领先的在线美容商城:Adore Beauty
2017/04/14 全球购物
中班开学寄语
2014/04/04 职场文书
幼儿园亲子活动总结
2014/04/26 职场文书
体育活动总结范文
2014/05/04 职场文书
美丽心灵观后感
2015/06/01 职场文书
辞职离别感言
2015/08/04 职场文书
2016年学习雷锋精神广播稿
2015/12/17 职场文书
美元符号 $
2022/02/17 杂记