私はバックエンドのユーザープロファイルページを拡張し、各ユーザープロファイルにお気に入りの映画、誕生日などのデータ用のいくつかの追加のカスタムフィールドを格納できるようにしました。出会い系サイトを作成する、それがより多くの分野が必要とされる理由です。適切なコードを持っている人は、フロントエンドでこれらのプロファイルを見ることができます。エントリコードは基本的にはランダムコードと最後の番号としてのユーザーIDです。 PHP部分文字列を使用すると、ユーザーIDが取得され、アクセスが許可されます。コードを参照してください。
if(empty($_REQUEST['enterCodeId'])){
echo "<script>
location.replace('".$_SERVER['HTTP_REFERER']."');
</script>";
}else{
$getId=substr($_REQUEST['enterCodeId'], 4, 10);
$querystr ="SELECT ID FROM wp_prefixcode_users WHERE ID='".$getId."'";
$querystrChecking = mysql_query($querystr);
if(mysql_num_rows($querystrChecking)<=0){
echo "<script>
location.replace('".$_SERVER['HTTP_REFERER']."');
</script>";
}
$uploads = wp_upload_dir();
//
}
この設定は理想的ではありません。プロファイルページからコードを追加することはできません。追加のget_the_author_meta()
で修正できますが、パスワードを生成するより良い方法が必要です。同じユーザーID番号.
ユーザーが新しいアクセスキーを再生成できるように、ダッシュボード>ユーザー>ユーザープロファイルから自動的にアクセスパスワードを生成するオプションをユーザーに与えるにはどうすればよいですか。これが必要なので、他のユーザーに与えられたアクセス権を取り消すことができます。新しいキーを生成し、それをデータベースのauthor_metaフィールドとして保存するには、PHP関数が必要です。
解決策
Toschoと他の開発者のおかげで、私はこのコードをすべてロードすることができました。 functions.phpに私が追加しました:
add_action( 'init', 'accesskeygen_func' );
function accesskeygen_func() {
$phpfile = explode('/', $_SERVER['PHP_SELF']);
$phpfile = $phpfile[count($phpfile)-1];
if (($phpfile=='profile.php') && isset($_GET['accesskeygen'])) {
echo wp_generate_password();
exit;
}}
そして
<!-- begin access key -->
<tr>
<th><label for="myaccesskey"><?php _e("Access Key"); ?></label></th>
<td>
<input type="text" name="myaccesskey" id="myaccesskey" value="<?php echo esc_attr( get_the_author_meta( 'myaccesskey', $user->ID ) ); ?>" class="regular-text" /><br />
<span class="description">
<input type="button" class="button-secondary" id="myaccesskeygen" value="Generate Access Key"/>
<?php _e("Please click the button generate access key."); ?>
</span>
</td>
</tr>
<!-- end access key -->
パスワードを生成するにはwp_generate_password()
を使います。たとえば、AJAXごとに新しいパスワードを取得するためのボタンをユーザープロファイルに追加できます。
現在のコードにセキュリティ上の脆弱性があります。$getId
、訪問者のリクエストからのサブストリングに悪意のあるコードが含まれている可能性があります。常に要求データをエスケープします。詳細については、 データ検証 を参照してください。特に $wpdb->prepare()
が役に立ちます。