程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP調用discuz登陸框實現外部登錄

PHP調用discuz登陸框實現外部登錄

編輯:關於PHP編程

利用php調用discuz登錄框方法有很多種,最常用的就是直接使用iframe方式調用了,還有就是直接在php頁面中調用了,下面小編來給大家總結一些常用的方法。

方法一,直接使用iframe調用一個加了discuz登錄功能的頁面

 代碼如下 復制代碼

 <iframe src="/login.html" style="width:100%; height:32px" scrolling="no" frameborder="0" ></iframe>


login.html代碼

 代碼如下 復制代碼

<!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=gb2312" />
<title> c-gd.com-登錄</title>
<style type="text/css">
<!--
* {
 margin:0;
 padding:0;
}
body {
 font: normal 12px Arial, Helvetica, Sans-Serif, "宋體";
 line-height: 160%;
 text-align:left;
 color: #3a3a3a;
 margin:0;
 padding:0;
}
img {
 border:0;
}
ul, li {
 padding:0;
 margin:0;
 list-style:none;
}
a {
 text-decoration: none;
 color:#3a3a3a;
}
a:hover {
 color: #C00;
}
.banner {
 margin-bottom:1px;
 height:59px;
}
.denglu {
 height:31px;
 border-bottom:1px solid #FFF;
 background:#e7e3e4;
 color:#7b797a;
}
.denglu a {
 color:#7b797a;
 text-decoration:none;
}
.denglu a:hover {
 color:#C00;
 text-decoration:underline;
}
.denglu .box01 {
 margin-left:30px;
 float:left;
 width:224px;
 line-height:30px;
 height:31px;
}
.denglu .box02 {
 width:433px;
 float:left;
 color:#000;
 text-align:right;
}
.denglu .box02 input {
 border:1px #c5c3c3 solid;
 height:20px;
 width:88px;
 background:#FFF;
 line-height:20px;
 margin-top:5px;
}
.denglu .box02 .button {
 background:url(/static/image/common/img01.gif) no-repeat;
 width:50px;
 height:21px;
 border:0;
 color:#4b4b4b;
 margin:0 5px;
 font-size:12px;
 line-height:20px;
}
.denglu .box03 {
 float:right;
 line-height:30px;
 height:31px;
 margin-right:15px;
}
.denglu .box03 .font1 {
 margin-left:20px;
}
.denglu .box03 .font2 {
 margin-left:10px;
 background:url(/static/image/common/icon03.jpg) left center no-repeat;
 padding-left:8px;
 margin-left:40px;
}
-->
</style>
<script type="text/javascript">
function checkform(){
 if(document.getElementById('username').value==''){
  alert('請輸入用戶名');
  return false;
 }
 if(document.getElementById('password').value==''){
  alert('請輸入密碼');
  return false;
 } 
 return true;
}
 
function showDate()
{
var d = new Date(); 
document.write("<div class='date_div'>"+d.getYear()+"年"+(d.getMonth()+1)+"月"+d.getDate()+"日");
switch(d.getDay())
{
 case 0:
  document.write("  星期日");
  break;
 case 1:
  document.write("  星期一");
  break;
 case 2:
  document.write("  星期二");
  break;
 case 3:
  document.write("  星期三");
  break;
 case 4:
  document.write("  星期四");
  break;
 case 5:
  document.write("  星期五");
  break;
 case 6:
  document.write("  星期六");
  break;
}
 document.write("</div>");
}
</script>

</head>
<body>
<div id="header">
  <!--登錄-->
  <div class="denglu">
    <div class="box01">
 <script language="JavaScript" type="text/JavaScript">
showDate();
</script>    </div>
         <form method="post" action="/bbs/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes" onsubmit="return checkform();">
     <div class="box02">
     用戶名:<input type="text" name="username" id="username" />
         密碼:<input type="password" name="password" id="password"  />
             <input type="hidden" name="quickforward" value="yes" />
               <input type="hidden" name="handlekey" value="ls" />
               <input type="hidden" name="iflogin" value="plus.php?mod=iframelogin" />
      <span>
      <input name="input" type="submit"  class="button" value="登錄" style="cursor:pointer" />
      </span>
      <span>
      <input name="input" type="button"  class="button" value="注冊" style="cursor:pointer" onclick="window.open('/bbs/member.php?mod=register')"/>
      </span>
      </div>
      </form>
   
    <div class="box03">
    <span class="font2"><a onclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.bKjia.c0m');" href="javascript:;">設為首頁</a></span>
    <span class="font1"><a href="/" target="_parent">中文</a> | <a href="#"  target="_parent">English</a></span>
   
    </div>
 
   
  </div>
</div>
</body>
</html>

方法二,利用php方式調用了

在自定義的PHP頁面裡加入discuz登陸框。PHP如何調用discuz登陸框。

 代碼如下 復制代碼 <?php
 error_reporting(0);
 require 'source/class/class_core.php';
 $discuz = & discuz_core::instance();
 $discuz->init();
if (empty($_G['uid'])) {
?>
 
<form target="_blank" action="member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes" method="post" name="form2" onSubmit="return check()">
 <span>用戶名:<input name="username" type="text" id="textfield2" size="13" tabindex="1" value="請輸入用戶名" onFocus="this.value='';" onBlur="if(this.value==''){this.value='請輸入用戶名';}">
 密碼:<input name="password" type="password" id="password" size="12">
 <input type="submit" name="button2" id="button2" value="登錄" onClick="setTimeout('window.location.reload()', 2000)">
 <a href="member.php?mod=register" target="_blank">注冊</a>
 <a href="member.php?mod=logging&action=login&viewlostpw" target="_blank">找回密碼</a>
 <input type="hidden" name="referer" value="/" /></span>
</form>
 
<?php } else { ?>
 
<div>
尊敬的<a href="home.php?mod=space&uid=<?php echo $_G['uid']; ?>&do=profile" target="_blank"><? echo $_G['username']; ?></a>,歡迎您光臨!&nbsp&nbsp|&nbsp<a href="home.php?mod=space&do=thread&view=me" target="_blank">我的帖子</a>&nbsp|&nbsp <a href="home.php" target="_blank">個人中心</a>&nbsp|&nbsp <a href="member.php?mod=logging&action=logout&formhash=<? echo FORMHASH;?>" target="_blank" onClick="setTimeout('window.location.reload()', 2000)">退出登陸</a>
</div>
 
<?php }?>


方法三:discuz登陸框是ajax調用的,一開始在firebug下看到了調用了接口:

 代碼如下 復制代碼 /member.php  ?mod=logging&action=login&infloat=yes&handlekey=login&inajax=1&ajaxtarget=fwin_content_login

 
這返回的是一個xml的內容,其中就一個結點root,裡面會根據本地的cookies判斷是否登錄了論壇,如果沒有登陸

裡面的內容就是一段form登陸表單。如果登陸了裡面就是一段登陸後的信息。然後將ajax請求中的css保存到本

地。能夠實現登陸框調用。登陸框中有一個hidden的input name=‘reffer’ 這裡面的value值是來路鏈接.不過要是

論壇程序裡的。比如將這個連接換成h/home.php?mod=spacecp&ac=blog這樣登陸完後會

自動跳轉到發博客的頁面。可以實現一鍵發帖功能。

代碼如下:

 代碼如下 復制代碼

<?php 
$login = file_get_contents("/member.php? 
mod=logging&action=login&infloat=yes&handlekey=login&inajax=1&ajaxtarget=fwin_content_login"); 
require_once('SofeeXmlParser.php');//xml解析類 博客裡搜索xml有相關介紹 
$xml = new SofeeXmlParser(); 
$xml->parseString($login); 
$tree = $xml->getTree(); 
$login = str_replace("member.php","h/member.php",$tree["root"]["value"]); 
$login = str_replace("h/./","h/home.php? 
mod=spacecp&ac=blog",$login);//跳轉到發帖頁面 
$login = preg_replace('/<h3 class="flb">(.*)</h3>/i','',$login); 
var_dump($login); 
exit(); 
$login = iconv('utf-8','gbk',$login); 
   
echo $login; 
?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved