我将在我的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如果我错了