【注意】
数字だけのユーザーの場合、Wordpressにより不要なリロードが発生することがあります。
この問題が発生する可能性があるため、数字だけのユーザー登録は行わないでください。
ユーザーが「別のページ」に移動する途中に「登録用URL」を経由することで、任意のユーザーネーム(メールアドレス等)を指定する方法です。下記のような特徴があります
- ユーザーネームを任意に指定できる
- メールアドレス形式 60文字以内
- 任意文字列 29文字以内
- ※メールアドレス有無は自動判別
- 登録後にリダイレクトすることができる
- 登録済みの場合は別ページにリダイレクトできる
- GET・POSTされたパラメータも転送する
- ※未指定の場合は登録情報表示
使い方
「登録リダイレクト」にて「リダイレクト名」と「リダイレクト先」を指定します
「リダイレクト名」には「指定ユーザーネーム」を付加します
例えば、リダイレクト名が rdirect、指定ユーザーネームがtest_userのとき、
rdirect=test_user のように指定をします
ステップメールMyASP内での指定例:
https://example.com/ss/-/UserCreateName?rdirect=%mail%
リダイレクトについて
リダイレクト時にGET,POSTで送信されたクエリーパラメータは、そのままリダイレクト先に転送されます。これにより、利用者に見せたいページへの移動をスームズに行うことができます(リダイレクト名も合わせて転送します)
登録ページクリック
↓
https://example.com/ss/-/createUserName?abc-def=id123&page=456
↓
(リダイレクト)
https://example2.net/support/?abc-def=id123&page=456
POST送信の場合、通常の方法ではリダイレクトできないため、転送用フォームページを生成して自動で送信ボタンを自動(Javascript)でクリックして送信します
転送用フォームページで、Javascriptが利用できない状態のときは「ページが自動的に切り替わらない場合はクリックしてください」というメッセージを表示してクリックを促します
【注意】
決済システム等へに転送する場合、拒否される可能性があります。セキュリティ上、別ページ(ユーザー登録処理など)を挟むことが禁止されているためです。事前にテストにて動作確認をしてください
【指定ユーザーネームを指定しない場合】
リダイレクト方式も指定ユーザーネームを指定しない場合は「ランダムなユーザーネーム」を作成します。
その際もリダイレクト処理には、「リダイレクト名」は必要ですので気をつけてください。
例:https://example.com/ss/-/UserCreateName?xoiufaxe
※リダイレクト名が「xoiufaxe」の場合
同一ユーザーの複数登録
【注意】
ユーザーネームが同じ場合、リダイレクト名が異なっていても「登録済み」と処理されます
- (ダイレクト名:abc)?abc=id123 で登録を行った
- 新規登録して処理される
- (ダイレクト名:def)?def=id123 で登録を行った
- 登録不要として処理される(すでに id123 は登録済み)
同じユーザーを複数登録する場合は、ユーザーIDの後ろにコードを追加するなどしてユニークなユーザーネームにします(-1、-aなどをつける)
- %mail% → example@example.com
- %mail%-23232 → example@example.com-23232
- %mail%-abcef → example@example.com-abcef
- %id% → id123
- %id%-23232 → id123-23232
- %id%-abcef → id123-abcef
メールアドレスの自動判別
「RFC 822」にマッチするかで判定しています
(PHPプログラムの filter_var FILTER_VALIDATE_EMAIL を使用)
かなり緩い規約のため「文字列途中に@1つと.が1つ以上ある」ぐらいでマッチします(実際にはかなり複雑です)
- 1@a.a
- 1@a.a-1
- a@a.a-abcdef
- など…
次のよう場合は「メールアドレスではない」と判断して、任意文字列として処理します
- 1@aa (@の後ろに.が1つもない)
- 1@@a.a (@が2つ以上ある)
- a@a+1 (@の後ろに+が使用されている)
- a@a. (.で終了している)
- など…