如何在CakePHP 2.x中集成自动登录SMF论坛



我将在我的cakehp2.x中集成smf论坛2.0.9版。我使用的是SSI.php

我在cakepp中有一个users表,另一个表名为smf_members。我已使用CakePhp代码成功注册。

我也成功登录论坛,但页面没有重定向到我的登录页面。

我的代码:

登录.ctp

$_SESSION['login_url']='http://mydomainname.com/login';
$_SESSION['logout_url']='http://mydomainname.com/logout';
<form accept-charset="UTF-8" action="http://mydomainname.com/forum/index.php?action=login2" method="post">
      <input type="text" name="user" id="user" placeholder="Emailid" />
      <input type="password" id="passwrd" name="passwrd" placeholder="Password" />
      <input type="password" id="passwrd" name="passwrd" placeholder="Password" />
</form>

以上代码成功登录。但是页面没有重定向它停留在论坛的index.php页面。登录后,我需要将页面重定向到http://mydomainname.com/login

如果我在核心中写作,这个文件就可以工作

代码:

login.php

<?php
include('forum/SSI.php');
$_SESSION['login_url']='http://mydomainname.com/login';
$_SESSION['logout_url']='http://mydomainname.com/logout';
/*echo "<pre>";
print_r($_SESSION); //exit;
echo "</pre>"; */
ssi_login();
?>

请分享你的知识。

谢谢ChatFun

经过大量研究,我终于找到了一个解决方案。

我已经在webroot文件夹中创建了外部php文件

我在external_login.php-中编写以下代码

<?php
if(isset($_REQUEST['login'])){
session_start();
//include('forum/SSI.php');
?>
<!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>Redirecting...</title>
</head>
<body>
<div style="display:block; position:relative">
<div style="position:absolute; left:-200px;">
<form accept-charset="UTF-8" action="<?php echo 'forum/index.php?action=login2';?>" method="post" name="smf_login_frm" id="smf_login_frm">
<input type="text" name="user" id="user" width="1" style="width:1px;" value="<?php echo $_SESSION['Auth']['User']['email'];?>" />
<input type="password" id="passwrd" name="passwrd" style="width:1px;" value="<?php echo $_SESSION['passwd'];?>" />
</form>
</div>
</div>
<script>
setTimeout(function(){ validateSubscription(); }, 1000);
function validateSubscription() {
        //document.smf_login_frm.submit();
        document.getElementById("smf_login_frm").submit();
        return false;
}
</script>
</body>
</html>
<?php
}else if(isset($_REQUEST['logout'])){
include('forum/SSI.php');
global $context, $txt, $scripturl;
    $redirect_to = 'http://'.$_SERVER['HTTP_HOST'].'/login';
    $_SESSION['logout_url'] = $redirect_to;
    header('location:'.$scripturl . '?action=logout;' . $context['session_var'] . '=' . $context['session_id']);
    //$link = '<a href="' . $scripturl . '?action=logout;' . $context['session_var'] . '=' . $context['session_id'] . '">' . $txt['logout'] . '</a>';
    //echo $link;

}else{
}?>

首先,我已经成功登录cakepp。然后我将重定向到external_login.php。在那里我得到了我的cakepp登录会话。所以我分配用户名和密码,然后再次重定向到smf论坛登录页面。成功后,smf论坛登录页面再次重定向到Cakephp主页,如果我都成功登录的话。

UsersController.php 中的登录操作

public function login() {
        if ($this->Session->read('Auth.User')) {
            $this->redirect($this->webroot);
        } else {
            $this->layout = 'login';
            if ($this->request->is('post')) {
                $data=$this->request->data;
                $this->Session->write('passwd',$data['User']['password']);
                if (!$this->Auth->login()) {
                    $this->Session->setFlash(__('Your Email or Password was incorrect.'), 'error_message');
                }
            }
            if ($this->Session->read('Auth.User')) {
                $this->redirect($this->webroot . 'external_login.php?login&hash_token='.md5(time()));
                exit;
                /*if ($this->Session->read('Auth.User.type') == 1) {
                    $this->redirect($this->webroot . 'users/index');
                    exit;
                }
                if ($this->Session->read('Auth.User.type') == 2 || $this->Session->read('Auth.User.type') == 3) {
                    $this->redirect($this->webroot . 'myprofile');
                    exit;
                }*/
            }
        }
    }

我是cakehp。

u已使用action="http://mydomainname.com/forum/index.php?action=login2"method="post"

action=login2这就像get方法你试图使用

尝试更改方法=获取或删除操作=登录2使用post将其保存在隐藏的html元素中作为u r

igonre如果我错了

相关内容

  • 没有找到相关文章

最新更新