joomlaでパスワードリセット時のトークンのエラー修正方法
先日joomlaでパスワード再発行のシステムで、「トークンが有効ではありません」というエラーが起きてそれを修正したのでメモしておきます。
日本語のサイトがなかったので、海外のサイトを調べると修正案がありました。
まず、トークン文字列自体には問題はなく、問題の箇所はトークン入力画面のフォームに
ユーザー名を入力するフォームがない場合にこの問題が起こるようです。
ユーザー名とトークンを一緒に送信しないといけないようで、
私が使っていたテンプレートにはユーザー名入力フォームがなく、
「トークンが有効でありません」
とエラーが出ていました。
具体的には、下記のようにテンプレートファイルを修正することで解決できます。
修正方法:赤文字のコード部分を追加する。
場所
/www/templates/(theme名)/html/com_user/reset/confirm.php
<div class="user">
<h1 class="pagetitle">
<?php echo JText::_(‘Confirm your Account’); ?>
</h1>
<p>
<?php echo JText::_(‘RESET_PASSWORD_CONFIRM_DESCRIPTION’); ?>
</p>
<form action="<?php echo JRoute::_( ‘index.php?option=com_user&task=confirmreset’ ); ?>" method="post" class="josForm form-validate">
<fieldset>
<legend><?php echo JText::_(‘Confirm your Account’); ?></legend>
<div>
<label for="username" class="hasTip" title="<?php echo JText::_(‘RESET_PASSWORD_USERNAME_TIP_TITLE’); ?>::<?php echo JText::_(‘RESET_PASSWORD_USERNAME_TIP_TEXT’); ?>"><?php echo JText::_(‘User Name’); ?>:</label>
<input id="username" name="username" type="text" class="required" size="36" />
</div>
<div>
<label for="token" class="hasTip" title="<?php echo JText::_(‘RESET_PASSWORD_TOKEN_TIP_TITLE’); ?>::<?php echo JText::_(‘RESET_PASSWORD_TOKEN_TIP_TEXT’); ?>"><?php echo JText::_(‘Token’); ?>:</label>
<input id="token" name="token" type="text" class="required" size="36" />
</div>
<div class="readon">
<button type="submit" class="button"><?php echo JText::_(‘Submit’); ?></button>
</div>
</fieldset>
<?php echo JHTML::_( ‘form.token’ ); ?>
</form>
</div>
トークン入力画面でユーザー名入力フォームが出てきたら修正完了です!
これでパスワードを忘れたユーザーもきちんとパスワード再設定ができるかと思います。