这是我的情况:
1) a simple_php.php file in webroot folder
2) the users_controller.php in the app/controllers
3) the follow function in the users_controller.php :
function login_flat($user_id){
$user_data = $this->User->find('first', array(
'conditions' => array('User.id'=>$user_id)));
if($this->Auth->login($user_data)){
$this->Cookie->write('User.id', $this->Auth->user('id'), true, '+2 hour');
$this->Session->setFlash(__('Welcome back !', true));
$this->redirect(array('controller'=>'posts', 'action'=>'index'));
exit();
}
else{
echo 'ERROR!!';
exit();
}
}
(一个登录用户的简单功能。注意:我知道它不安全,但它仅用于测试)
现在,如果我通过浏览器调用该函数(例如www.mysite.com/users/login_flat/13
),它就可以了!但是......我需要通过另一个文件调用它,simple_php.php位于我的域的webroot中。
我尝试使用php“header”函数。它“调用”(重定向)到login_flat函数,但登录不起作用! :(
有什么建议吗? thx提前。
P.S。 我正在使用cakephp 1.2.6
-------------编辑------------------
我在阅读本文时遇到了麻烦: - > Solution
答案 0 :(得分:0)
来自OP:
这是我在simple_php文件中用于重定向的代码:
header("Location:http://".$subdomain_locale.".".$site_subdomain.".com/users/login_via_app/".$user_id."");
将重定向到
/users/login_via_app/13
哪个是错误的网址,因为它应重定向到
/users/login_flat/13
还要确保放'exit();'发送标题并检查之前没有输出任何其他内容,否则您的重定向将无法正常工作
并且,请检查$ sudomain_locale和$ site_subdomain变量是否包含正确的值,或使用此调试整个URL,而不是执行重定向;
echo "this is the URL that will be redirected to:<br>";
print_r("Location:http://".$subdomain_locale.".".$site_subdomain.".com/users/login_via_app/".$user_id."");
exit();