Vista de perfil protegida por senha

Eu estendi a página de perfil do usuário no backend para que cada perfil de usuário tenha vários campos personalizados extras para dados como filmes favoritos, aniversários e assim por diante podem ser armazenados. Criando um site de namoro, é por isso que são necessários mais campos. Pessoas com o código apropriado podem ver esses perfis no front-end usando um código de input que basicamente é algum código random, mais userID como número no final. Usando substring PHP, o ID do usuário é agarrado e o access é concedido. Consulte o código:

if(empty($_REQUEST['enterCodeId'])){ echo " location.replace('".$_SERVER['HTTP_REFERER']."'); "; }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 " location.replace('".$_SERVER['HTTP_REFERER']."'); "; } $uploads = wp_upload_dir(); // } 

Esta configuração não é ideal porque a: o código ainda não pode ser adicionado da página de perfil, que pode ser corrigido com um extra get_the_author_meta() , mas eu preciso de uma maneira melhor de gerar uma senha, mas também porque b: uma senha sempre será termine no mesmo número de ID do usuário.

Como posso dar aos usuários a opção de gerar automaticamente uma senha de access do Painel> Usuários> Perfil de usuário para que os usuários possam regenerar uma nova chave de access? Isso é necessário para que o access dado a outro usuário possa ser revogado. Preciso de uma function PHP para gerar uma nova chave e obtê-la armazenada como um campo author_meta no database.

Solução

Graças a Toscho e outro dev, recebi este código para carregar tudo. Em functions.php eu adicionei:

 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; }} 

e

     <input type="text" name="myaccesskey" id="myaccesskey" value="ID ) ); ?>" class="regular-text" />
 

Solutions Collecting From Web of "Vista de perfil protegida por senha"

Use wp_generate_password() para gerar senhas. Por exemplo, você pode adicionar um botão ao perfil do usuário para obter uma nova senha por AJAX.

E você tem uma vulnerabilidade de segurança em seu código atual: $getId , a substring de um pedido de visitante pode conter código malicioso. Sempre escaping dados de solicitação. Leia Data Validation para obter mais informações, especialmente $wpdb->prepare() deve ser útil.