search
Homephp教程php手册网易,佳人有约登录效果
网易,佳人有约登录效果Jun 13, 2016 am 11:21 AM
andThe essentialFunctionFinishusdismantleEffectshowLog inofNetEasetransparenthide

我们先把上面拆解出来的功能完成!
1。透明层(显示与隐藏)
关键是要同时设置下面这几个样式,才能使主流浏览器上都现实透明的效果。

filter= 'Alpha(Opacity=50)';
MozOpacity ='0.5';
opacity='0.5';


可能很多人都知道,类似这种在透明层上现实东西的效果,多源至于一个称为lightbox的效果。这里我也这样命名:

function Lightbox(id)
{
        this.box = this.createBox();
        this.id  = id||'lightbox_id';
}
Lightbox.prototype=
{
        createBox:function(){
                var box = document.getElementById(this.id)||document.createElement('div');
                box.id = box.id||this.id;
                with(box.style){
                        position='absolute';
                        left='0';
                        top='0';
                        width='100%';
                        height='100%';
                        zIndex='1000';
                        background='#ccc';
                        filter= 'Alpha(Opacity=50)';
                        MozOpacity ='0.5';
                        opacity='0.5';
                        display='none';
                }
                document.body.appendChild(box);
                return box;
        },
        show:function(){
                this.box.style.height= document.documentElement.scrollHeight+'px';
                this.box.style.display = '';
        },
        hide:function(){
                this.box.style.display = 'none';
        }
}


2。表单提交(ajax或iframe)
迅雷上的是用的iframe,我们这里先说iframe
iframe就简单多了,form的target属性设置为某个iframe的name就可以了。设置iframe的onload属性,那么当表单提交完成以后他就会执行相应处理。





如果用ajax的话,代码也很简单。可能大家用的js框架不一样。但绝大多数都大同小异,我相信大家一看就知道是什么意思。
类我就不在这列举了,我只写一下怎么用它。
这其实就是ajax in action这本书上的那个net类。

/*很多人可能会说,为什么没用encodeURIComponent避免乱码?这里不需要使用encodeURIComponent了,在类里面调用过了*/
/**
* 'login.php':登陆验证页[废话]
*  Login.checkLogin:ajax回调函数[废话]
*  loadXMLDoc的参数,表单里要传递的数据[废话]
*/

new Ajax('login.php',Login.checkLogin).loadXMLDoc({
        username:document.getElementById('username').value,
        password:document.getElementById('password').value,
        vcode:document.getElementById('vcode').value
});


3。select的显示与隐藏,以及cookie操作。
既然select不能被div挡住,那就把他干掉吧!

var Select={
        show:function(){
                var selects=document.getElementsByTagName('select');
                for(var m=0;m        },
        hide:function(){
                var selects=document.getElementsByTagName('select');
                for(var m=0;m        }
}


还要准备一套cookie函数
网络最大的好处:对于某些问题,你只需知道该干什么就可以了,至于具体该怎么做已经有人帮你做好了。
下面我就随便在论坛里搜了一下,就找到了一个
http://www.phpchina.com/bbs/view ... a=page=1&sid=4jSn3r

var Cookie=
{
        check:function(){
                 //判断cookie是否开启
                 var cookieEnabled=(navigator.cookieEnabled)? true : false;
                 //如果浏览器不是ie4+或ns6+
                 if (typeof navigator.cookieEnabled=="undefined" && !cookieEnabled){
                  document.cookie="testcookie";
                  cookieEnabled=(document.cookie=="testcookie")? true : falsedocument.cookie="";
                 }
                
                 //如果没有开启
                 if(cookieEnabled){
                  return true;
                 }else{
                  return false;
                 }
        },
        add:function(name,value,expireHours){
                 var cookieString=name+"="+escape(value);
                 //判断是否设置过期时间
                 if(expireHours>0){
                  var date=new Date();
                  date.setTime(date.getTime+expireHours*3600*1000);
                  cookieString=cookieString+"; expire="+date.toGMTString();
                 }
                 document.cookie=cookieString;
        },
        get:function(name){
                 var strCookie=document.cookie;
                 var arrCookie=strCookie.split("; ");
                 for(var m=0;m                     var arr=arrCookie[m].split("=");
                     if(arr[0]==name){
                           return unescape(arr[1]);
                     }
                 }
                 return false;
        },
        del:function(name){
                 var date=new Date();
                 date.setTime(date.getTime()-10000);
                 document.cookie=name+"=; expire="+date.toGMTString();
        }

}


4。前面提到的回调函数以及后台的两个页面
最后再说一下前面提到的回调函数Login.checkLogin。登陆后你需要做什么,写在Login.loginSuccess里就行了,最后为了方便使用稍有改变。

/*这里没有检验是否支持cookie,在login弹出的时候检测了.不支持cookie的话,登陆窗口都弹不出来。*/
var Login=
{
        statu: 0,
         /*这就是里登陆成功的话,需要做的处理。通常是把整个页面登陆前后不同的地方处理一下。你可以重载一下*/
        loginSuccess:function(){
                document.getElementById('login_result').innerHTML=Cookie.get('username')+'已经登陆';
                alert('登陆成功了!');
        },
         /*这就是里登陆失败的话,需要做的处理。通常是把整个页面登陆前后不同的地方处理一下。你可以重载一下*/
        loginOutSuccess:function(){
                document.getElementById('login_result').innerHTML=Cookie.get('username')+'刚成功退出';
                alert('退出成功!');
        },
        checkLogin:function(){
                if(Login.statu==1&&Cookie.get('loginStatu')==1){
                        new LoginDialog('login_box').hide();
                        Login.loginSuccess();
                }else if(Login.statu==2&&Cookie.get('loginStatu')==0){
                        Login.statu=0;
                        Login.loginOutSuccess();
                }else if(Login.statu==1){
                        alert('请检查你的用户名,密码以及验证码!');
                }
        },
        getVcode:function(){
        document.getElementById('verify_code').src='vcode.php?cachetime='+new Date().getTime();
        },
        loginOut:function(){
                Login.statu=2;
                document.getElementById('login_submit_iframe').contentWindow.location='loginout.php';
        }
}


后台的代码我就不细说了,各自系统有各自的区别。我这里把测试用的代码贴出来,并说一下这些文件该做什么,你只要保证的你页面有这些作用就行了。


/**
* header里设置的字符编码格式要和你前台的一致,否则当出现双字节字符的时候就会出现乱码.
* 其他的都可以用setCookie的方式,写在cookie里传到前台。
* 其中标志登陆成功的 'loginStatu'必须设为1,其他的就看你的登陆是怎么处理的了
*/
header('content-type:text/html; charset=utf-8');
session_start();
$username = 'phpchina';
$password = 'phpchina';
if($username==$_POST['username']&&$password==$_POST['password']&&$_SESSION['vcode']==$_POST['vcode']){
        setcookie('username','phpchina');
        setcookie('loginStatu','1');
}?>

 

/*验证码程序就不用说了吧!我这里是测试用的,所以就随便截了个时间做验证码*/
session_start();
$_SESSION['vcode'] = substr(time(),-4);
$im = imagecreatetruecolor(40, 20);
$bg = imagecolorallocate($im, 225, 225, 225);
$textcolor = imagecolorallocate($im, 0, 0, 0);
imagefill($im,1,1,$bg);
imagestring($im, 5, 0, 0, $_SESSION['vcode'], $textcolor);
header("Content-type:image/jpeg");
imagejpeg($im);
?>

最后看看LoginDialog类理解全过程:

function LoginDialog(formid)
{
    this.dialog = document.getElementById(formid||'login_box');
    this.overDiv = this.overDiv ||new Lightbox();
}
LoginDialog.prototype =
{
    show:function(){
        if(!Cookie.check()){alert('你的浏览器不支持cookie,无法正常登陆');return}
        else if(Cookie.get('loginStatu')==1){alert('你已经登陆!');return}
        Login.statu=1;
        this.overDiv.show();
        Select.hide();
        Login.getVcode();
        this.dialog.style.display='';
    },
    hide:function(){
        Login.statu=0;
        this.overDiv.hide();
        Select.show()
        this.dialog.style.display='none';
    }
}


主要是看show()
hide()只是还原操作

//当不支持cookie的时候提示错误,并退出
if(!Cookie.check()){alert('你的浏览器不支持cookie,无法正常登陆');return}

//当支持cookie而cookie.loginstatu的值为1时,说明已经登陆。就不用重复登陆了。
else if(Cookie.get('loginStatu')==1){alert('你已经登陆!');return}

//设置Login.statu=1;表示当前正在做登陆操作
Login.statu=1;

//透明背景层显示
this.overDiv.show();

//隐藏select
Select.hide();

//刷新验证码
Login.getVcode();

//显示登陆窗口
this.dialog.style.display='';
在完成以上这些步骤以后,就是分为iframe还是ajax两种方式提交表单了。
而提交完表单后:
如果是iframe形式提交,iframe的onload事件会调用Login.checkLogin(),当check成功时,他会对应调用Login.loginSuccess()和Login.loginOutSuccess()
而ajax则是把Login.checkLogin做为回调函数来激活。
因此,登陆成功后具体做什么由 Login.loginSuccess()和Login.loginOutSuccess()决定。使用的时候,重载一下它们就可以了。


Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
网易邮箱和网易邮箱大师的区别是什么网易邮箱和网易邮箱大师的区别是什么Oct 18, 2022 am 11:09 AM

区别:1、网易邮箱是网易公司推出的一个网络邮箱,而网易邮箱大师是网易推出的全平台邮箱客户端;2、网易邮箱的上线时间为2003年9月,网易邮箱大师的上线时间为20014年7月15日;3、网易邮箱只支持自家网易系邮箱,而网易邮箱大师支持网易邮箱、QQ邮箱、Gmail、139邮箱、Hotmail、新浪邮箱等;4、网易邮箱手机客户端只有安卓版,而邮箱大师在全平台都是自己的手机客户端。

游戏版Sora?逆水寒手游发布AI影片生成工具,支持打字输入游戏版Sora?逆水寒手游发布AI影片生成工具,支持打字输入Feb 26, 2024 pm 08:55 PM

近日,逆水寒手游官方发布了全新的AI影片生成工具,玩家通过该工具“打打字就能出大片”。根据官方介绍,功能基于逆水寒游戏本体实现,由AI高度参与。不需要任何设备、演员、特效,只需要打字输入任意角色形象、动作、台词,就可以通过AI在游戏内实时生成相应内容,拍摄成片。同时,支持玩家对细节进行调整,包括角色的服装、妆造、发型、性格、声音等。该功能还支持上传图片/视频,通过AI进行动捕,在游戏内实时生成“游戏内没有”的动作与表情。官方表示,该功能和Sora有相同的愿景,即“让创作空间无穷无尽,让创作门槛接

腾讯光子H工作室在杭州招人 计划做3A开放世界RPG腾讯光子H工作室在杭州招人 计划做3A开放世界RPGFeb 05, 2024 pm 01:45 PM

近期,腾讯互娱招聘公布了一则招聘信息,表明光子H工作室正致力于研发一款内容丰富、3A级别的开放世界RPG项目。此次热招岗位涵盖了UE5工程师、后台、关卡设计、动作场景设计、角色建模、特效及发行等多个领域,而这些岗位的目标工作地点位于网易总部所在地的杭州。

探索金庸笔下江湖之谜:网易《射雕》最新游戏实录视频曝光探索金庸笔下江湖之谜:网易《射雕》最新游戏实录视频曝光Jan 14, 2024 pm 09:54 PM

网易《射雕》近日发布了“三端漫游”测试最新游戏实录视频,视频中展现了不少之前测试中没出现过的动画与场景,对于这究竟是一款怎样的游戏有了更多展示。一起来看看吧。以下为官方原文:三端漫游测试即将开启,项目组感受到了各位少侠对于《射雕》世界的强烈好奇。不开新服不滚服的「世界一服」、150年的原著故事,金庸群侠,南宋风雅,十二时辰同步现实……如此之多的元素组合起来,究竟是怎样一个江湖?为了迎接各位少侠的到来,项目组加班加点,迫不及待地呈现出最新的游戏内容精彩实录,期待各位少侠同享奇妙江湖!三部曲150年

网易否认大规模裁员传闻,称为正常业务调整和人员流动网易否认大规模裁员传闻,称为正常业务调整和人员流动Jan 20, 2024 am 09:12 AM

本站1月19日消息,据财联社报道,针对网传“网易1月开启大规模裁员”等消息,网易内部人士回应:消息不实,系公司正常业务调整和人员流动,公司层面仍在持续招聘优质人才。网易透露,为推动业务良性发展,近期进行了内部资源整合,以加强传媒业务的发展。未来,网易传媒将继续加大对内容赛道的投入,同时探索新技术如AIGC和元宇宙的应用,为内容创作提供更多的技术支持。据界面新闻“电厂”今日稍早报道,网易从12月开始进行了多个业务的裁员,重灾区是网易传媒,游戏部门也有所涉及。本站从报道中获悉,网易传媒的大规模裁员主

春节即将到来,谁将成为“鹅猪大战”的胜利者?春节即将到来,谁将成为“鹅猪大战”的胜利者?Jan 26, 2024 am 08:15 AM

一个月以来,派对游戏这片"战场"硝烟滚滚,腾讯、网易两家大厂打得不可开交。12月15日,"鹅厂新太子"《元梦之星》上线,腾讯宣布首期生态激励投入14亿元,更邀请超600名明星达人做宣传推广,首日买量素材投下了2.7万组,而网易作为守擂方不甘示弱,《蛋仔派对》单日素材投放更是超24万组。从这一个月攻防战的结果来看,《元梦之星》作为新游略有优势。点点数据显示,iOS端流水方面,12月15日至1月15日期间《元梦之星》总收入为1.38亿元,数据在新游中一骑绝尘,而《蛋仔派对》同期总收入约为1.1亿元。

2024年的二次元游戏市场:血战未结束,高手尚存2024年的二次元游戏市场:血战未结束,高手尚存Jan 19, 2024 pm 12:24 PM

哈喽大家好,我是X博士。随着时间来到2024,去年的二次元游戏市场大乱斗,终于也谢幕了。老X我看了下,去年有上线后扑街的,有没上线就扑街的,还有更早上线在去年扑街的。总之就是前赴后继,血流成河,惨绝人寰。但即便是尸横遍野,2024年又已经有十几款二游蓄势待发,在奔赴战场了。比如开年首款二游,又延续传统,上演了上线炸服事件,愣是维护了一整天。让人感慨,原来还有高手。而过几天(1月12号)登场的《白荆回廊》,更是用一线品质,让今年的二游大战迅速升温,直接进入白热化的拼刺刀阶段。那么,去年的二游们究竟

网易武侠RPG大作《射雕》公测正式定档328网易武侠RPG大作《射雕》公测正式定档328Feb 22, 2024 pm 06:22 PM

春节的炮竹声犹在耳畔,农历新年伊始,《射雕》项目组官宣:公测正式定档3月28日!目前,《射雕》的核心开发工作已经完成,已到了最后淬炼锋芒的收尾优化阶段。3月28日,等诸位共赴江湖之约!——《射雕》:五个方面,让武侠真正自由——随着《射雕》的开发逐渐深入,项目组说:他们“做最顶级金庸游戏”的目标依然不变,同时另一个念头也逐渐浮现在他们的脑海之中——【他们要让武侠真正自由!】市场普遍存在的滚服模式,的确能在短期内刺激消费、带来换区重开的新鲜感。然而长期看来却是饮鸩止渴,削

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)