纳速健身

标题: ss修改登陆框为横排,教你看懂batch.panel.php文件图文教程 [打印本页]

作者: awagink    时间: 2010-3-7 22:21
标题: ss修改登陆框为横排,教你看懂batch.panel.php文件图文教程
为了将ss的登录框改成横排,找出batch.panel.php看了个遍,现在将官方默认代码(7.0版)详解给大家,希望给吃过苦头的人一些方便:
<?php

/*
        [SupeSite] (C) 2007-2009 Comsenz Inc.
        $Id: batch.panel.php 11626 2009-03-13 02:27:20Z zhanglijun $
*/

include_once('./common.php');
include_once(S_ROOT.'./language/batch.lang.php');   
文字常量定义

$uid = $_SGLOBAL['supe_uid'];
$ucurl = avatar($uid);
$siteurl = S_URL_ALL ;
if(!empty($uid)) {   
登录中
        if($channels['menus']['bbs']) { 论坛聚合                                         此处为论坛
                $bbshtml = ' | <a href="'.$_SC['bbsurl'].'" target="_blank">'.$blang['forum_visit'].'</a>';  
        }                                            
论坛地址
        if($channels['menus']['uchblog'] || $channels['menus']['uchimage']) {    家园聚合
                $uchhtml = ' | <a href="'.$_SC['uchurl'].'" target="_blank">'.$blang['home_visit'].'</a>';
        }                                                
家园地址                                          此处为家园
        $showpost = 0;
        $showposturl = '';   
投稿用变量
        $divhtml = '<div id="contribute_op" style="display:none;"><ul>';    投稿菜单div
        if(!in_array('news', $_SCONFIG['closechannels']) && !empty($_SGLOBAL['group']['managespacenews'])) {
                $divhtml .= '<li><a href="'.$siteurl.'/admincp.php?action=spacenews&op=add" target="_blank">'.$lang['news'].'</a></li>';                                                   
                $showpost++;
                $showposturl = $siteurl.'/admincp.php?action=spacenews&op=add';
        }
        
        include_once(S_ROOT.'./function/model.func.php');
        $midarr = getuserspacemid();     
取得模型数组
        if(!empty($midarr)) {
                foreach($midarr as $tmpkey => $tmpvalue) {               
                        $divhtml .= '<li><a href="'.$siteurl.'/admincp.php?action=modelmanages&mid='.$tmpvalue['mid'].'&op=add" target="_blank">'.$tmpvalue['modelalias'].'</a></li>';                                 
生成投稿,资讯下拉菜单

                        $showpost++;
                        $showposturl = $siteurl.'/admincp.php?action=modelmanages&mid='.$tmpvalue['mid'].'&op=add';
                }                                                                                                                  }
        
        if($showpost == 1) {   
只有一个频道时,不显示下拉菜单
                $showposturl = "document.write('<a href=\"$showposturl\" class=\"contribute_txt\" target=\"_blank\">$lang[pannel_contribution]</a> ');";
        } elseif($showpost > 1) {      
有多个频道时,显示下拉菜单
                $showposturl = "document.write('<a href=\"javascript:contributeop();\" class=\"contribute_txt\">$lang[pannel_contribution]</a> ');";
        }
        
        $divhtml .= '</ul></div>';
        
        print <<<END
        function contributeop() {
                if($('contribute_op').style.display != 'block') {
                        $('contribute_op').style.display = 'block';   
关闭后再打开
                } else {
                        $('contribute_op').style.display = 'none';   
打开时关闭
                }        
        }
        function hidendivop(){   
选择频道投稿后关闭菜单
                $('contribute_op').style.display = 'none';
        }
        document.write('<div id="user_login_position">');
        document.write('<h3>$blang[user_panel]</h3>');
        document.write('<div class="user_info">');
        document.write('<dl>');
        document.write('<dt><a href="$siteurl/space.php?uid=$uid"><img src="$ucurl" alt=""></a></dt>');
        document.write('<dd>');
                                                                    
空间地址                                                
        document.write('$blang[welcome], <a href="$siteurl/space.php?uid=$uid">$_SGLOBAL[supe_username]</a> [<a href="$siteurl/batch.login.php?action=logout">$blang[safe_logout]</a>]<br />');  用户名                                               退出动作                                     退出
        document.write('<a class="tx_blue" href="$siteurl/space.php?uid=$uid">$blang[my_space]</a>');
        document.write('</dd>');                            空间地址                          我的个人主页
        document.write('</dl>');
    document.write('<div class="user_op">');
        $showposturl    投稿                                                                   搜索
        document.write(' <span><a href="$siteurl/batch.search.php">$blang[search]</a>');
        document.write('$bbshtml');   论坛
        document.write('$uchhtml');   家园
        document.write(' | <a href="$siteurl/admincp.php" target="_blank">$blang[management]</a> </span></div>');
        document.write('</div>$divhtml</div>');                                                     管理
END;
} else {    未登录

        $formhash = formhash();
        print <<<END    原样输出到END
        var noseccode = $_SCONFIG[noseccode];    验证码FLG
        document.write('<div id="user_login_position">');             隐藏                        验证码图片
        document.write('<div id="login_authcode_img" style="display:none"><img src="$siteurl/do.php?action=seccode" alt="$lang[verification_code]" id="img_seccode" /></div>');   验证码
        document.write('<h3>$blang[user_login]</h3>');    用户登录
        document.write('<form id="login_box" action="$siteurl/batch.login.php?action=login" method="post">');
        document.write('<input type="hidden" name="formhash" value="$formhash" />');
        document.write('<fieldset><legend>$blang[user_login]</legend>');   用户登录
        document.write('<p><label>$blang[username]:</label> <input type="text"  name="username" class="input_tx" size="23" /></p>');   用户名
        document.write('<p><label>$blang[password]:</label> <input type="password" name="password" class="input_tx" size="23" /></p>');   密码

                                                                                        验证码        
        document.write('<p id="login_authcode_input" style="display:none"><label>$lang[verification_code]:</label> <input type="text" class="input_tx" name="seccode" size="10"; /> <a href="javascript:updateseccode();">$lang[changge_verification_code]</a></p>');   换一张图片
        document.write('<div id="login_showclose" style="display:none"><a href="javascript:hidesec();"> </a></div>'); 关闭验证码输入区域

        document.write('<div class="clearfix">');                                         
        document.write('<input id="cookietime" type="checkbox" value="315360000" name="cookietime" class="input_remember"/>');                                                              记住我:10年
        document.write('<label class="label_remember" for="cookietime">$blang[i_remember]</label>');
        document.write('<input type="submit" name="loginsubmit" class="input_sub" value="$blang[login]" />');登录
        document.write('</div>');                                                                                       

        document.write('<p class="login_ext"><a href="$siteurl/do.php?action=register">$blang[registration]</a> | <a href="$siteurl/do.php?action=lostpasswd">$blang[find_passwords]</a></p>');   注册新用户
        document.write('</fieldset></form></div>');   找回密码
END;
}

/**
* 取得用户后台模型mid
* return array
*/
function getuserspacemid() {
        
        $cachefile = S_ROOT.'./cache/model/model.cache.php';
        $cacheinfo = '';
        if(file_exists($cachefile)) {
                include_once($cachefile);
        }
        if(!empty($cacheinfo) && is_array($cacheinfo)) {
                return $cacheinfo;
        } else {
                include_once(S_ROOT.'./function/cache.func.php');
                return updateuserspacemid();
        }
}

?>


根据这个文件的处理逻辑,我编写出了页面顶部的横排登陆框。见下图:
(, 下载次数: 0)


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

我看懂batch.panel.php之后,并没有修改这个文件的代码。因为用到的其他相关页面比较多。
我就直接把我想要的横排框代码直接嵌到模板文件里面了。
实在没有时间加注释讲解了。直接把代码贴出来给大家参考把。
但愿能对大家有用。


  1.                         <!--{eval $uid = $_SGLOBAL['supe_uid'];}-->
  2.                         <!--{eval $siteurl = S_URL_ALL;}-->
  3.                         <!-- 登录中 -->
  4.                         <!--{if !empty($uid)}-->
  5.                                 <li>您好,<a href="$siteurl/space.php?uid=$uid" target="_blank">$_SGLOBAL[supe_username]</a>!</li>
  6.                                 <li>[<a href="$siteurl/batch.login.php?action=logout">退出</a>]</li>
  7.                                 <li><a href="$siteurl/space.php?uid=$uid&op=sell" target="_blank">个人主页</a></li>
  8.                         <!-- 未登录 -->
  9.                         <!--{else}-->
  10.                                 <!--{eval $formhash = formhash();}-->
  11.                                 <form style="display:inline" id="login_box" action="$siteurl/batch.login.php?action=login" method="post">
  12.                                         <li><input type="hidden" name="formhash" value="$formhash" /></li>
  13.                                         <li><input type="text" name="username" class="input_tx" value="用户名" size="10" style="border:1px solid #999999; font-size:12px;" onfocus="clearObjTxt(this, '用户名')" onblur="fillObjTxt(this, '用户名')" /></li>
  14.                                         <li><input type="password" name="password" class="input_tx" value="~~~~~~" size="10" style="border:1px solid #999999; font-size:11px;" onfocus="clearObjTxt(this, '~~~~~~')" onblur="fillObjTxt(this, '~~~~~~')" /></li>
  15.                                         <li><input type="submit" name="loginsubmit" class="input_sub" value="登录" style="border:1px solid #999999; font-size:11px;" /></li>
  16.                                         <li><a class="style19" href="$siteurl/do.php?action=register" class="style08">注册</a></li>
  17.                                         <li>|</li>
  18.                                         <li><a class="style19" href="$siteurl/do.php?action=lostpasswd" class="style08">找回密码</a></li>
  19.                                 </form>
  20.                         <!--{/if}-->
复制代码

作者: awagink    时间: 2010-3-7 22:26



看看下面这2个文件,为什么第一个是错位的,可是登陆功能正常;而第二个文件登陆框是对的,一登陆却显示来路不正?
  1. <?php

  2. /*
  3.         [SupeSite] (C) 2007-2009 Comsenz Inc.
  4.         $Id: batch.panel.php 11626 2009-03-13 02:27:20Z zhanglijun $
  5. */

  6. include_once('./common.php');
  7. include_once(S_ROOT.'./language/batch.lang.php');

  8. $uid = $_SGLOBAL['supe_uid'];
  9. $ucurl = avatar($uid);
  10. $siteurl = S_URL_ALL;
  11. if(!empty($uid)) {
  12.         if($channels['menus']['bbs']) {
  13.                 $bbshtml = ' | <a href="'.$_SC['bbsurl'].'" target="_blank">'.$blang['forum_visit'].'</a>';
  14.         }
  15.         if($channels['menus']['uchblog'] || $channels['menus']['uchimage']) {
  16.                 $uchhtml = ' | <a href="'.$_SC['uchurl'].'" target="_blank">'.$blang['home_visit'].'</a>';
  17.         }
  18.         $showpost = 0;
  19.         $showposturl = '';
  20.         $divhtml = '<div id="contribute_op" style="display:none;"><ul>';
  21.         if(!in_array('news', $_SCONFIG['closechannels']) && !empty($_SGLOBAL['group']['managespacenews'])) {
  22.                 $divhtml .= '<li><a href="'.$siteurl.'/admincp.php?action=spacenews&op=add" target="_blank">'.$lang['news'].'</a></li>';
  23.                 $showpost++;
  24.                 $showposturl = $siteurl.'/admincp.php?action=spacenews&op=add';
  25.         }
  26.         
  27.         include_once(S_ROOT.'./function/model.func.php');
  28.         $midarr = getuserspacemid();
  29.         if(!empty($midarr)) {
  30.                 foreach($midarr as $tmpkey => $tmpvalue) {               
  31.                         $divhtml .= '<li><a href="'.$siteurl.'/admincp.php?action=modelmanages&mid='.$tmpvalue['mid'].'&op=add" target="_blank">'.$tmpvalue['modelalias'].'</a></li>';
  32.                         $showpost++;
  33.                         $showposturl = $siteurl.'/admincp.php?action=modelmanages&mid='.$tmpvalue['mid'].'&op=add';
  34.                 }
  35.         }
  36.         
  37.         if($showpost == 1) {
  38.                 $showposturl = "document.write('<a href="$showposturl" class="contribute_txt" target="_blank">$lang[pannel_contribution]</a> ');";
  39.         } elseif($showpost > 1) {
  40.                 $showposturl = "document.write('<a href="javascript:contributeop();" class="contribute_txt">$lang[pannel_contribution]</a> ');";
  41.         }
  42.         
  43.         $divhtml .= '</ul></div>';
  44.         
  45.         print <<<END
  46.         function contributeop() {
  47.                 if($('contribute_op').style.display != 'block') {
  48.                         $('contribute_op').style.display = 'block';
  49.                 } else {
  50.                         $('contribute_op').style.display = 'none';
  51.                 }        
  52.         }
  53.         function hidendivop(){
  54.                 $('contribute_op').style.display = 'none';
  55.         }
  56.         document.write('<div id="user_login_position">');
  57.         document.write('<h3>$blang[user_panel]</h3>');
  58.         document.write('<div class="user_info">');
  59.         document.write('<dl>');
  60.         document.write('<dt><a href="$siteurl/space.php?uid=$uid"><img src="$ucurl" alt=""></a></dt>');
  61.         document.write('<dd>');
  62.         document.write('$blang[welcome], <a href="$siteurl/space.php?uid=$uid">$_SGLOBAL[supe_username]</a> [<a href="$siteurl/batch.login.php?action=logout">$blang[safe_logout]</a>]<br />');
  63.         document.write('<a class="tx_blue" href="$siteurl/space.php?uid=$uid">$blang[my_space]</a>');
  64.         document.write('</dd>');
  65.         document.write('</dl>');
  66.     document.write('<div class="user_op">');
  67.         $showposturl
  68.         document.write(' <span><a href="$siteurl/batch.search.php">$blang[search]</a>');
  69.         document.write('$bbshtml');
  70.         document.write('$uchhtml');
  71.         document.write(' | <a href="$siteurl/admincp.php" target="_blank">$blang[management]</a> </span></div>');
  72.         document.write('</div>$divhtml</div>');
  73. END;
  74. } else {

  75.         $formhash = formhash();
  76.         print <<<END
  77.         var noseccode = $_SCONFIG[noseccode];
  78.         document.write('<div id="user_login_position">');
  79.         document.write('<div id="login_authcode_img" style="display:none"><img src="$siteurl/do.php?action=seccode" alt="$lang[verification_code]" id="img_seccode" /></div>');
  80.         document.write('<h3>$blang[user_login]</h3>');
  81.         document.write('<form id="login_box" action="$siteurl/batch.login.php?action=login" method="post">');
  82.         document.write('<input type="hidden" name="formhash" value="$formhash" />');
  83.         document.write('<fieldset><legend>$blang[user_login]</legend>');
  84.         document.write('<p><label>$blang[username]:</label> <input type="text"  name="username" class="input_tx" size="23" /></p>');
  85.         document.write('<p><label>$blang[password]:</label> <input type="password" name="password" class="input_tx" size="23" /></p>');
  86.         document.write('<p id="login_authcode_input" style="display:none"><label>$lang[verification_code]:</label> <input type="text" class="input_tx" name="seccode" size="10"; /> <a href="javascript:updateseccode();">$lang[changge_verification_code]</a></p>');
  87.         document.write('<div id="login_showclose" style="display:none"><a href="javascript:hidesec();"> </a></div>');
  88.         document.write('<div class="clearfix">');
  89.         document.write('<input id="cookietime" type="checkbox" value="315360000" name="cookietime" class="input_remember"/>');
  90.         document.write('<label class="label_remember" for="cookietime">$blang[i_remember]</label>');
  91.         document.write('<input type="submit" name="loginsubmit" class="input_sub" value="$blang[login]" />');
  92.         document.write('</div>');
  93.         document.write('<p class="login_ext"><a href="$siteurl/do.php?action=register">$blang[registration]</a> | <a href="$siteurl/do.php?action=lostpasswd">$blang[find_passwords]</a></p>');
  94.         document.write('</fieldset></form></div>');
  95. END;
  96. }

  97. /**
  98. * 取得用户后台模型mid
  99. * return array
  100. */
  101. function getuserspacemid() {
  102.         
  103.         $cachefile = S_ROOT.'./cache/model/model.cache.php';
  104.         $cacheinfo = '';
  105.         if(file_exists($cachefile)) {
  106.                 include_once($cachefile);
  107.         }
  108.         if(!empty($cacheinfo) && is_array($cacheinfo)) {
  109.                 return $cacheinfo;
  110.         } else {
  111.                 include_once(S_ROOT.'./function/cache.func.php');
  112.                 return updateuserspacemid();
  113.         }
  114. }

  115. ?>
复制代码

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


  1. <?php

  2. /*
  3.         [SupeSite] (C) 2007-2009 Comsenz Inc.
  4.         $Id: [b][color=#ff0000]batch.panel.php[/color][/b] 10898 2008-12-31 02:58:50Z zhaofei $
  5. */

  6. include_once('./common.php');
  7. include_once(S_ROOT.'./language/batch.lang.php');

  8. getcookie();

  9. $uid = $_SGLOBAL['supe_uid'];
  10. if(!empty($uid)) {
  11.         if($channels['menus']['bbs']) {
  12.                 $bbshtml = '| <a href="'.$_SC['bbsurl'].'" target="_blank">'.$blang['forum_visit'].'</a>';
  13.         }
  14.         if($channels['menus']['uchblog'] || $channels['menus']['uchimage']) {
  15.                 $uchhtml = '| <a href="'.$_SC['uchurl'].'" target="_blank">UCHome</a>';
  16.         }
  17.         print <<<END
  18.         document.write('<div class="login_ext">');
  19.         document.write('<p>$blang[welcome],<a href="$siteurl/space.php?uid=$uid">$_SGLOBAL[supe_username]</a> [<a href="$siteurl/batch.login.php?action=logout">$blang[safe_logout]</a>]');
  20.         document.write('<a href="$siteurl/space.php?uid=$uid" target="_blank">$blang[my_space]</a> | <a href="$siteurl/batch.search.php">$blang[more_serach]</a>');
  21.         document.write('$bbshtml');
  22.         document.write('$uchhtml');
  23.         document.write('| <a href="$siteurl/admincp.php" target="_blank">$blang[management]</a>');
  24.         document.write('</div>');
  25. END;
  26. } else {
  27.         $siteurl = S_URL_ALL;
  28.         print <<<END
  29.         document.write('<form action="$siteurl/batch.login.php?action=login" method="post">');
  30.         document.write('<label>$blang[username]:</label> <input type="text"  name="username" class="input_tx" size="18" />');
  31.         document.write('<label>$blang[password]:</label> <input type="password" name="password" class="input_tx" size="18" />');
  32.         document.write('<input id="cookietime" type="checkbox" value="315360000" name="cookietime" class="input_remember"/>');
  33.         document.write('<label class="label_remember" for="cookietime">$blang[i_remember]</label>');
  34.         document.write('<input type="submit" name="loginsubmit" class="input_sub" value="$blang[login]" />');
  35.         document.write('</form>');
  36.         document.write('<div class="login_ext">');
  37.         document.write('<p><a href="$siteurl/do.php?action=register">$blang[registration]</a>| <a href="$siteurl/do.php?action=lostpasswd">$blang[find_passwords]</a></p>');
  38.         document.write('</div>');
  39. END;
  40. }



  41. ?>
复制代码


-----------------------------------------------------------------------
先回答你第二个文件的问题。
未登录时(即,} else {里的代码),向$siteurl/batch.login.php?action=login提交数据的时候必须要有隐藏项目 formhash


  1. <input type="hidden" name="formhash" value="$formhash" />
复制代码


它是通过之前几行的formhash();函数得到的
  1. $formhash = formhash();
复制代码

楼上是因为缺少了这两句话,所以才报来路不明的错误。
ss,向系统提交数据时formhash是很重要的一个参数,不要丢掉。
请你再仔细对比一下代码。就知道了。:)
作者: 大王子    时间: 2010-3-10 15:45
ss  是什么概念啊?~~~~~~~~~~




欢迎光临 纳速健身 (https://nasue.com/) Powered by Discuz! X3.4