joomlaでパスワードリセット時のトークンのエラー修正方法

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>

トークン入力画面でユーザー名入力フォームが出てきたら修正完了です!
これでパスワードを忘れたユーザーもきちんとパスワード再設定ができるかと思います。

コメントを残す

メールアドレスが公開されることはありません。