• こんにちは。
    BuddyPressの最新版1.5.4を使ってSNSを運用しています。
    ユーザー登録フォームからユーザーが任意に登録できるようになっています。

    しかし、登録フォームを開くと、何故か最後に登録したユーザーの情報がフォームのvalueに入力された状態で表示されてしまいます。
    フォームには基本情報(ユーザ名、メールアドレス、パスワード)を除く任意に設定できる登録フィールドの内容だけが表示されてしまいます。

    ソースを見てみた所、bp_the_profile_field_edit_value()から値を引っ張ってきているようですが、データベースからユーザの情報を引っ張ってきているような処理は見受けられませんでした。

    この不具合の対処方法について是非アドバイスをいただけないでしょうか?

    宜しくお願いいたします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • ブラウザの機能ではないでしょうか?
    ブラウザのキャッシュをクリアしてからアクセスしても同様の現象が発生しますか?

    トピック投稿者 jmzkw

    (@jmzkw)

    >popup様
    ご回答ありがとうございます。
    まったく別の端末で確認しておりますが、やはり同様の内容が表示されます。

    DBを調べてみた所、wp_bp_xprofile_dataテーブルのuser_idが「0」のものが表示されているのが分かりました。
    管理者のIDが「1」なので、本来登録してきたユーザーのIDが「0」になるはずはないと思うのですが、一先ずレコードの内容をブランクにすることで、フォームの表示は回避できました。

    これはBuddyPressの不具合でしょうか?

    直接データベースにuser_id「0」のデータを作成して確認した所、こちらでも表示されました。
    ただ、通常の操作ではID0のユーザーは作成されないようですし、特に問題はないと思います。
    通常操作では発生しないので対処していないだけかもしれませんし、不具合と言えるかどうかも分かりません。(開発元が不具合だと判断すれば不具合になりますが。)

    どうしても気になる場合は、[bp-themes/bp-default/registration/register.php]のbp_get_the_profile_field_edit_value()内を変更すると、登録(レジスト)ページではデータを取得しないようになります。

    【変更前】

    $field_value = isset( $field->data->value ) ? bp_unserialize_profile_field( $field->data->value ) : '';

    【変更後】

    $field_value = (isset( $field->data->value ) && !bp_is_register_page() ) ? bp_unserialize_profile_field( $field->data->value ) : '';

    トピック投稿者 jmzkw

    (@jmzkw)

    >popup様

    調査いただき誠にありがとうございます。

    >通常の操作ではID0のユーザーは作成されないようです
    私も何故ユーザの情報が登録されたのか不明です。
    そのユーザはuser_id=0だけでなく、普通の登録情報もDBにありました。

    >bp_get_the_profile_field_edit_value()内を変更
    素人質問で恐縮ですが、この処理を行った場合、例えば入力必須項目にエラーがあった場合、
    他の項目で入力したデータの引き回しができなくなる可能性はないでしょうか?

    素人質問で恐縮ですが、この処理を行った場合、例えば入力必須項目にエラーがあった場合、
    他の項目で入力したデータの引き回しができなくなる可能性はないでしょうか?

    ×(誤)POSTしたデータを取得している箇所(以下)には手をつけていませんので大丈夫なはずです。

    今確認しましたが、使いまわしできなくなってしまいますね。
    元々影響がないはずなので、そのままにした方がいいみたいです。

    一応、次のようにすると入力データの再利用が可能でした。

    $field_value = (isset( $field->data->value ) && bp_is_user_profile_edit() || bp_is_register_page() && isset($_POST['signup_submit']) ) ? bp_unserialize_profile_field( $field->data->value ) : '';

    トピック投稿者 jmzkw

    (@jmzkw)

    >popup様
    色々とご指導いただきありがとうございました。
    勉強になりました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「登録フォームに最後に登録したユーザーのデータが表示される」には新たに返信することはできません。