CakePHP:在外部php文件中调用控制器函数

时间:2013-02-09 08:49:26

标签: php cakephp redirect header cakephp-1.2

这是我的情况:

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

1 个答案:

答案 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();