CakePHPで管理画面などを作る場合、認証(Auth)コンポーネントを使用すると非常に便利だったりします。CakePHPをよく使用する方にとっては、よく使用するコンポーネントの一つではないでしょうか?

 このAuthコンポーネントを使用し、ここを参考にしてログイン画面を作った時、ログインに失敗した時にその旨のメッセージと一緒に「1」と表示される時がないでしょうか?

 何だろうな?と思って調べてみた結果を下記に明記しておききます。

 実際に確認する場所は

/cake/libs/view/helpers/session.php

のファイルの130行目付近のflash関数の部分です。

function flash($key = 'flash') {
 if ($this->__active === true && $this->__start()) {
  if (parent::check('Message.' . $key)) {
   $flash = parent::read('Message.' . $key);

   if ($flash['layout'] == 'default') {
    if (!empty($flash['params']['class'])) {
     $class = $flash['params']['class'];
    } else {
     $class = 'message';
    }
    $out = '<div id="' . $key . 'Message" class="' . $class . '">' . $flash['message'] . '</div>';
   } elseif ($flash['layout'] == '' || $flash['layout'] == null) {
    $out = $flash['message'];
   } else {
    $view =& ClassRegistry::getObject('view');
    list($tmpVars, $tmpTitle) = array($view->viewVars, $view->pageTitle);
    list($view->viewVars, $view->pageTitle) = array($flash['params'], '');
    $out = $view->renderLayout($flash['message'], $flash['layout']);
    list($view->viewVars, $view->pageTitle) = array($tmpVars, $tmpTitle);
   }
   echo($out);
   parent::del('Message.' . $key);
   return true;
  }
 }
 return false;
}

 これを見てもらうとわかるとおり、メッセージがある場合は$out変数に入れ、後半のecho($out);で出力しています。そして、その後にtrueを返しています。その為、trueが1で表示されるわけです。

その為、メッセージを表示させる時は、こちらのマニュアルに書かれている

<?php
echo $session->flash();
echo $session->flash('auth');
?>

ではなく、echoを外した

<?php
$session->flash();
$session->flash('auth');
?>

とするようにしましょう。