Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

Passport 通行证 整合

[复制链接]
hirel 发表于 2006-7-21 12:43:50 | 显示全部楼层
强悍!顶起!
回复

使用道具 举报

lutalu 发表于 2006-8-13 09:06:02 | 显示全部楼层

关于 forward 的问题 谢谢

我有一个关于 forward 的问题 谢谢
--------------------------------------------------------------------------------------------------------
                $passport_key="123456789";
                               
                 $member = array
                (
                        'time'                    => time(),
                        'username'                => $myrow["memberName"],
                        'password'                => $myrow["memberPassword"],
                        'email'                   => $myrow["memberEmail"]
                );
                               
                $auth = passport_encrypt(passport_encode($member), $passport_key);
                setcookie("auth",$auth,($_POST["Cookie"]? time()+(int)$_POST["Cookie"] :0));
                                                                               
        $forward=$_GET['forward'];

                $forward=($forward=="")?xxxxxxxx;  <----------------我的问题所在--------                               

        --------------以下略过--------       

        我是将 discuz5.0 整合进自己的一个站,现在只剩下这个问题了
     
     我自己的站的一些需要 login 才能看的page 是用 include login.php 的方式来处理会员检查
   <?
   include ("../login.php");
---------

若我不加入 login passport 程式码 在 login.php 中, 通过 login.php 的检查后可直接进入要看的页面

但若整合 login passport 程式码后,如何 forward 到原来想去的页面..

谢谢大家..
回复

使用道具 举报

lutalu 发表于 2006-8-16 04:33:59 | 显示全部楼层

关于 login passport forward --上一个帖子说明不足, 贴上完整的提问

上一个帖子说明不足, 贴上完整的提问
谢谢

假设 http://mysite.xxxxx.com 是我的网站, 而
         http://forum.xxxxx.com 是我的 discuz forum, 而我的设计是用
         register.php 作为注册页, logout.php 登出页, login.php 为登陆页,
        register.php 和 logout.php 目前己整合成功, 现在的问题是

         --> 因为 我自己的站的一些需要 login 才能看的 page 是用 include login.php 的方式来处理会员检查

例子-->
访客点击我的网站中的 hiperlink 想看: iwanttosee.php

<?
include ("../login.php"); //处理会员检查

--------------
?>

若我不加入 login passport 程式码 在 login.php 中, 通过 login.php 的检查后可直接进入要看的页面,

但若整合 login passport 程式码后, 通过 login.php 的检查后 都会 forward 到 http://mysite.xxxxx.com/index.php , 而不是原本想看的 iwanttosee.php

请问要如何修改才能 forward 到原来想去的页面.--> iwanttosee.php


以下是我的 login.php 完整的代码, 请看 --问题所在的 CODE--

<?
//
while ( list( $key, $val ) = each( $_SERVER ) ) $$key = $val ;

session_start(); // start session.

include("db_conn.php");    // 这个是资料库连结的设定
include ("discuz_md5.php"); // 这个是 discuz passport Passport 加密函数

if(!isset($memberName) | !isset($memberPassword)) {
// escape from php mode.
?>

<style type="text/css">
<!--
.style3 {color: #333333}
.style10 {color: #0000FF; font-size: 12px; }
.style12 {color: #FF0000}
-->
</style>
<form action="<?=$PHP_SELF?><?if($QUERY_STRING){ echo"?". $QUERY_STRING;}?>" method="POST">
<table width="501" border="0" align="center">
  <tr bgcolor="cc9900">
    <td colspan="2" class="style11"><span class="style4">请登入!! </span>!! Please Log In! </td>
    </tr>
  <tr bgcolor="cccc99" class="style3">
    <td width="248"><div align="left">username:
      <input type="text" name="memberName">
    </div></td>
    <td width="243"><div align="left">password:
        <input type="password" name="memberPassword">
        </div></td>
  </tr>
  <tr bgcolor="#CCCCCC">
    <td colspan="2"><div align="left">
      <input name="submit" type="submit" class="style10" value="ログイン">
    </div>      <div align="left"></div></td>
    </tr>
</table>
<tr>
  <th>
</th>
  </tr><tr><th> </th>
  <th>
  </th>
</tr>
<tr>
  <th colspan="2" align="right">
</form>
  </th>
</tr>
</body>
</html>

<?
exit();
}

// If all is well so far.
session_register("memberName");
session_register("memberPassword");

$sql = db_query("SELECT * FROM member WHERE memberName = '$memberName'");
$myrow = db_fetch_array($sql);
$num = db_num_rows($sql);

$memberPassword_md5=md5($memberPassword);

if($num != "0" & $memberPassword_md5 == $myrow["memberPassword"]  ) {
$valid_user = 1;
}
else {
$valid_user = 0;
}


session_register('memberID'); //register memberID as session variables.
$memberID=$myrow['memberID'];


// ==========login passport 程式码==========================================

                $passport_key="rena888talu888";
                               
                 $member = array
                (
                        'time'                    => time(),
                        'username'                => $myrow["memberName"],
                        'password'                => $myrow["memberPassword"],
                        'email'                   => $myrow["memberEmail"]
                );


                               
                $auth = passport_encrypt(passport_encode($member), $passport_key);
                setcookie("auth",$auth,($_POST["Cookie"]? time()+(int)$_POST["Cookie"] :0));
                               
              
                               
             $forward=$_GET['forward']; // 我这里 GET 才能用

       //--------------问题所在的 CODE---START-----------------------------------
       //下面这行程式码就是我的问题所在, 如果依下面的code, 通过 login.php 的检查后
         // 都会 forward 到 http://mysite.xxxxx.com/index.php , 而不是原本想看的 page




         if($forward=="")$forward="http://mysite.xxxxx.com/index.php";  

       //----------------问题所在的 CODE---END---------------------------------
             
                                                                      
                $verify = md5('login'.$auth.$forward.$passport_key);
                $auth=rawurlencode($auth);
                $forward=rawurlencode($forward);
                header("Location: http://forum.xxxxx.com/api/passp ... &verify=$verify");            

// =============login passport 程式码========================================

//----------------------------------------------------------------------
if (!($valid_user))
{
session_unset();   // Unset session variables.
session_destroy(); // End Session we created earlier.
// escape from php mode.
?>


<form action="<?=$PHP_SELF?><?if($QUERY_STRING){ echo"?". $QUERY_STRING;}?>" method="POST">
<p align="center">Incorrect login information, please try again. You must login to access this site.</p>
<table align="center" border="0">
<tr>
  <th>
Username:
  </th>
  <th>
<input type="text" name="memberName">
  </th>
</tr>
<tr>
  <th>
Password:
  </th>
  <th>
<input type="password" name="memberPassword">
  </th>
</tr>
<tr>
  <th colspan="2" align="right">
<input type="submit" value="Login">
</form>
  </th>
</tr>


<?
exit();
}
?>
回复

使用道具 举报

 楼主| huozhe3136 发表于 2006-8-17 21:51:57 | 显示全部楼层
<?
//
while ( list( $key, $val ) = each( $_SERVER ) ) $$key = $val ;

session_start(); // start session.

include("db_conn.php");    // 这个是资料库连结的设定
include ("discuz_md5.php"); // 这个是 discuz passport Passport 加密函数

if(!isset($memberName) | !isset($memberPassword)) {
// escape from php mode.
?>

<style type="text/css">
<!--
.style3 {color: #333333}
.style10 {color: #0000FF; font-size: 12px; }
.style12 {color: #FF0000}
-->
</style>
<form action="<?=$PHP_SELF?><?if($QUERY_STRING){ echo"?". $QUERY_STRING;}?>" method="POST">
<table width="501" border="0" align="center">
  <tr bgcolor="cc9900">
    <td colspan="2" class="style11"><span class="style4">请登入!! </span>!! Please Log In! </td>
    </tr>
  <tr bgcolor="cccc99" class="style3">
    <td width="248"><div align="left">username:
      <input type="text" name="memberName">
    </div></td>
    <td width="243"><div align="left">password:
        <input type="password" name="memberPassword">
        </div></td>
  </tr>
  <tr bgcolor="#CCCCCC">
    <td colspan="2"><div align="left">
      <input name="submit" type="submit" class="style10" value="ログイン">
    </div>      <div align="left"></div></td>
    </tr>
</table>
<tr>
  <th>
</th>
  </tr><tr><th> </th>
  <th>
  </th>
</tr>
<tr>
  <th colspan="2" align="right">
</form>
  </th>
</tr>
</body>
</html>

<?
exit();
}

// If all is well so far.
session_register("memberName");
session_register("memberPassword");

$sql = db_query("SELECT * FROM member WHERE memberName = '$memberName'");
$myrow = db_fetch_array($sql);
$num = db_num_rows($sql);

$memberPassword_md5=md5($memberPassword);

if($num != "0" & $memberPassword_md5 == $myrow["memberPassword"]  ) {
$valid_user = 1;
}
else {
$valid_user = 0;
}


session_register('memberID'); //register memberID as session variables.
$memberID=$myrow['memberID'];


// ==========login passport 程式码==========================================
//这里加入判断,如果是表单登陆则传送数据到discuz
if(isset($_POST['submit']) && $valid_user){
        $passport_key="rena888talu888";
        $member = array
        (
                        'time'                    => time(),
                        'username'                => $myrow["memberName"],
                        'password'                => $myrow["memberPassword"],
                        'email'                   => $myrow["memberEmail"]
        );
        $auth = passport_encrypt(passport_encode($member), $passport_key);
        setcookie("auth",$auth,($_POST["Cookie"]? time()+(int)$_POST["Cookie"] :0));
        $forward=$_GET['forward']; // 我这里 GET 才能用
        if($forward=="")$forward="http://mysite.xxxxx.com/index.php";
        $verify = md5('login'.$auth.$forward.$passport_key);
        $auth=rawurlencode($auth);
        $forward=rawurlencode($forward);
        header("Location: http://forum.xxxxx.com/api/passp ... &verify=$verify");
}

//----------------------------------------------------------------------
if (!($valid_user))
{
session_unset();   // Unset session variables.
session_destroy(); // End Session we created earlier.
// escape from php mode.
?>


<form action="<?=$PHP_SELF?><?if($QUERY_STRING){ echo"?". $QUERY_STRING;}?>" method="POST">
<p align="center">Incorrect login information, please try again. You must login to access this site.</p>
<table align="center" border="0">
<tr>
  <th>
Username:
  </th>
  <th>
<input type="text" name="memberName">
  </th>
</tr>
<tr>
  <th>
Password:
  </th>
  <th>
<input type="password" name="memberPassword">
  </th>
</tr>
<tr>
  <th colspan="2" align="right">
<input type="submit" value="Login">
</form>
  </th>
</tr>


<?
exit();
}
?>
回复

使用道具 举报

ztbbs 发表于 2006-8-18 21:30:00 | 显示全部楼层
非常想要整合!!!!!!!!!!!!!!1

但是我的PHP168文件和LZ提供比较的原文件似乎不一样


比如说登陆文件我的才有89行而LZ提供比较的原文件是111行.

是不是不能整合?

昨天满怀信心的整合了.以失败告终!!!!

登陆和退出都有问题..................

还好备份了网站数据.不然就无聊之极了...........!!!

我用的就是Windows空间.

      http://www.wokw.cn

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

 楼主| huozhe3136 发表于 2006-8-19 10:23:09 | 显示全部楼层
你测试一下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

lutalu 发表于 2006-8-21 04:29:34 | 显示全部楼层

回复 #94 huozhe3136 的帖子

谢谢您的回应..

在您修改的 login passport 程式码 中, 主要是用了这一行

if($forward=="")$forward="http://mysite.xxxxxx.com.tw/index.php";

现在若我在未登陆的状态, 想进入有 include ("../login.php"); 的页面 (如 iwanttosee.php) 时,
key 入 username ,passowrd 后,还是会跳到 http://mysite.xxxxxx.com.tw/index.php ,

但只要是登陆后,到任何有 login.php 检查的页面都可正常进入,不会跳到 http://mysite.xxxxxx.com.tw/index.php , 而且到 discuz forum 也同步登入了..

谢谢您的帮助, 现在就只差在以未登入状态 -> 登入状态 的第一次不会直接跳到要去的页面,之后
要到那一个页面都正常了, 我很好奇是这二者有何不同, 登入后 $forward=$_GET['forward']; 的值就不是空
值了吗?

再一次谢谢您的帮忙...
回复

使用道具 举报

 楼主| huozhe3136 发表于 2006-8-21 11:01:37 | 显示全部楼层

回复 #97 lutalu 的帖子

仍有问题的话最好给个测试地址

<?
//
while ( list( $key, $val ) = each( $_SERVER ) ) $$key = $val ;

session_start(); // start session.

include("db_conn.php");    // 这个是资料库连结的设定
include ("discuz_md5.php"); // 这个是 discuz passport Passport 加密函数

if(!isset($memberName) | !isset($memberPassword)) {
// escape from php mode.
?>

<style type="text/css">
<!--
.style3 {color: #333333}
.style10 {color: #0000FF; font-size: 12px; }
.style12 {color: #FF0000}
-->
</style>
<form action="<?=$PHP_SELF?><?if($QUERY_STRING){ echo"?". $QUERY_STRING;}?>" method="POST">
<table width="501" border="0" align="center">
  <tr bgcolor="cc9900">
    <td colspan="2" class="style11"><span class="style4">请登入!! </span>!! Please Log In! </td>
    </tr>
  <tr bgcolor="cccc99" class="style3">
    <td width="248"><div align="left">username:
      <input type="text" name="memberName">
    </div></td>
    <td width="243"><div align="left">password:
        <input type="password" name="memberPassword">
                <input type="hidden" name="forward" value="<?=$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']?>">
        </div></td>
  </tr>
  <tr bgcolor="#CCCCCC">
    <td colspan="2"><div align="left">
      <input name="submit" type="submit" class="style10" value="ログイン">
    </div>      <div align="left"></div></td>
    </tr>
</table>
<tr>
  <th>
</th>
  </tr><tr><th> </th>
  <th>
  </th>
</tr>
<tr>
  <th colspan="2" align="right">
</form>
  </th>
</tr>
</body>
</html>

<?
exit();
}

// If all is well so far.
session_register("memberName");
session_register("memberPassword");

$sql = db_query("SELECT * FROM member WHERE memberName = '$memberName'");
$myrow = db_fetch_array($sql);
$num = db_num_rows($sql);

$memberPassword_md5=md5($memberPassword);

if($num != "0" & $memberPassword_md5 == $myrow["memberPassword"]  ) {
$valid_user = 1;
}
else {
$valid_user = 0;
}


session_register('memberID'); //register memberID as session variables.
$memberID=$myrow['memberID'];


// ==========login passport 程式码==========================================
//这里加入判断,如果是表单登陆则传送数据到discuz
if(isset($_POST['submit']) && $valid_user){
        $passport_key="rena888talu888";
        $member = array
        (
                        'time'                    => time(),
                        'username'                => $myrow["memberName"],
                        'password'                => $myrow["memberPassword"],
                        'email'                   => $myrow["memberEmail"]
        );
        $auth = passport_encrypt(passport_encode($member), $passport_key);
        setcookie("auth",$auth,($_POST["Cookie"]? time()+(int)$_POST["Cookie"] :0));
        $forward=$_POST['forward'] ? $_POST['forward'] : $_GET['forward']; // 我这里 GET 才能用
        if($forward=="")$forward="http://mysite.xxxxx.com/index.php";
        else $forward="http://".$forward;
        $verify = md5('login'.$auth.$forward.$passport_key);
        $auth=rawurlencode($auth);
        $forward=rawurlencode($forward);
        header("Location: http://forum.xxxxx.com/api/passp ... &verify=$verify");
}

//----------------------------------------------------------------------
if (!($valid_user))
{
session_unset();   // Unset session variables.
session_destroy(); // End Session we created earlier.
// escape from php mode.
?>


<form action="<?=$PHP_SELF?><?if($QUERY_STRING){ echo"?". $QUERY_STRING;}?>" method="POST">
<p align="center">Incorrect login information, please try again. You must login to access this site.</p>
<table align="center" border="0">
<tr>
  <th>
Username:
  </th>
  <th>
<input type="text" name="memberName">
<input type="hidden" name="forward" value="<?=$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']?>">
  </th>
</tr>
<tr>
  <th>
Password:
  </th>
  <th>
<input type="password" name="memberPassword">
  </th>
</tr>
<tr>
  <th colspan="2" align="right">
<input type="submit" value="Login">
</form>
  </th>
</tr>


<?
exit();
}
?>

[ 本帖最后由 huozhe3136 于 2006-8-21 11:22 编辑 ]
回复

使用道具 举报

zeme 发表于 2006-9-14 23:18:05 | 显示全部楼层
楼主,asp版本的解码函数有错误。麻烦你看一下
回复

使用道具 举报

 楼主| huozhe3136 发表于 2006-9-15 13:19:00 | 显示全部楼层
我这没有出错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-9-29 05:20 , Processed in 0.138413 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表