示例#1
0
 function __construct()
 {
     parent::__construct();
     $this->omit = array('submit', 'nonce', 'action', 'tab', 'checkFields');
     $this->fieldTypes = array('text' => 'Text', 'drop' => 'Drop Down', 'check' => 'Check Box', 'radio' => 'Radio', 'area' => 'Text Area', 'date' => 'Date', 'captcha' => 'Captcha', 'pass' => 'Password');
     //do_action('wp_ajax_' . $_POST['action']);
 }
示例#2
0
 function registerForm()
 {
     if ($_POST['submit']) {
         $cont = true;
         if (!wp_verify_nonce($_POST['nonce'], 'loginx_register')) {
             parent::loginx_errorMessage('Security Token Mismatch');
             $cont = false;
         } else {
             if (username_exists($_POST['user_login'])) {
                 parent::loginx_errorMessage('Username Exists.  Do you want to <a href="' . $this->loginx_getURL() . '">Login?</a>');
                 $_POST['user_login'] = '';
                 $cont = false;
             } else {
                 if (email_exists($_POST['user_email'])) {
                     parent::loginx_errorMessage('Email Exists.  Do you want to <a href="' . $this->loginx_getURL() . '">Login?</a>');
                     $_POST['user_email'] = '';
                     $cont = false;
                 } else {
                     if ($_POST['recaptcha_challenge_field']) {
                         $data['privatekey'] = $this->options['captcha_private'];
                         $data['remoteip'] = $_SERVER['REMOTE_ADDR'];
                         $data['challenge'] = $_POST['recaptcha_challenge_field'];
                         $data['response'] = $_POST['recaptcha_response_field'];
                         $c = curl_init();
                         curl_setopt($c, CURLOPT_URL, 'http://www.google.com/recaptcha/api/verify');
                         curl_setopt($c, CURLOPT_POST, true);
                         curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
                         curl_setopt($c, CURLOPT_POSTFIELDS, $data);
                         $response = curl_exec($c);
                         $r = explode("\n", $response);
                         if ($r[0] == 'true') {
                         } else {
                             parent::loginx_errorMessage($this->option['captcha_fail']);
                             $cont = false;
                         }
                     }
                 }
             }
         }
         if ($cont == true) {
             $omit = array('submit', 'nonce', 'user_pass_confirm', 'captcha', 'recaptcha_challenge_field', 'recaptcha_response_field');
             $wpFields = array();
             $createArray = array();
             $metaArray = array();
             $results = $this->wpdb->get_results('select loginx_field_name from ' . $this->wpdb->prefix . 'loginx_field where loginx_field_wp = 1');
             foreach ($results as $row) {
                 $wpFields[] = $row->loginx_field_name;
             }
             foreach ($_POST as $k => $v) {
                 if (!in_array($k, $omit)) {
                     if (in_array($k, $wpFields)) {
                         $createArray[$k] = $v;
                     } else {
                         $metaArray[$k] = $v;
                     }
                 }
             }
             $user_id = wp_insert_user($createArray);
             foreach ($metaArray as $k => $v) {
                 add_user_meta($user_id, $k, $v, true);
             }
             if ($this->options['email_valid'] == 'on') {
                 $actKey = substr(md5(microtime() . NONCE_SALT), 5, 15);
                 $this->wpdb->insert($this->wpdb->prefix . 'loginx_key', array('user_id' => $user_id, 'loginx_key' => $actKey, 'loginx_expire' => 0, 'act' => 1));
                 $subject = parent::loginx_emailTrans($this->options['act_email_subject']);
                 $message = parent::loginx_emailTrans($this->options['act_email_text'], array('::LINK::' => get_permalink($this->options['login_page']) . '?act=' . $actKey));
                 wp_mail($_POST['user_email'], $subject, $message);
                 parent::loginx_successMessage($this->options['register_success_message']);
                 $text = '<div id="loginx_form">' . parent::loginx_successMessage() . '</div>';
                 return $text;
             } else {
                 wp_redirect(get_permalink($this->options['profile_page']));
             }
         }
     }
     require_once PHPX_DIR . 'phpx_form.php';
     $form = new phpx_form();
     $form->startForm(get_permalink(), 'loginxRegisterForm');
     $form->hidden('nonce', wp_create_nonce('loginx_register'));
     if (parent::loginx_errorMessage()) {
         $form->freeText(parent::loginx_errorMessage('get'), 'loginx_error');
     }
     $results = $this->wpdb->get_results('select loginx_field_name, loginx_field_label, loginx_field_options, loginx_field_type, loginx_field_req from ' . $this->wpdb->prefix . 'loginx_field where loginx_field_reg = 1 order by loginx_field_ord asc');
     $form = parent::publicForm($form, $results);
     $text = '<div id="loginx_form">' . $form->endForm() . '</div>';
     return $text;
 }
示例#3
0
 function editProfile()
 {
     global $current_user;
     get_currentuserinfo();
     if ($_POST['submit']) {
         $cont = true;
         if (!wp_verify_nonce($_POST['nonce'], 'loginx_profile')) {
             parent::loginx_errorMessage('Security Token Mismatch');
             $cont = false;
         } else {
             if ($current_user->user_email != $_POST['user_email'] && $_POST['user_email'] != '' && isset($_POST['user_email'])) {
                 if (email_exists($_POST['user_email'])) {
                     parent::loginx_errorMessage('Email already exists.');
                     $cont = false;
                 } else {
                     if ($this->options['email_valid'] == 'on') {
                         $emailVerify = true;
                         $actKey = substr(md5(microtime() . NONCE_SALT), 5, 15);
                         $this->wpdb->insert($this->wpdb->prefix . 'loginx_key', array('user_id' => $current_user->ID, 'loginx_key' => $actKey, 'loginx_expire' => 0, 'act' => 1));
                         $subject = parent::loginx_emailTrans($this->options['act_email_subject']);
                         $message = parent::loginx_emailTrans($this->options['act_email_text'], array('::LINK::' => get_permalink($this->options['login_page']) . '?act=' . $actKey));
                         wp_mail($_POST['user_email'], $subject, $message);
                     }
                 }
             }
         }
         if ($cont == true) {
             $_POST['user_login'] = $current_user->user_login;
             $omit = array('submit', 'nonce', 'user_pass_confirm', 'captcha', 'recaptcha_challenge_field', 'recaptcha_response_field');
             $wpFields = array();
             $createArray = array();
             $metaArray = array();
             $results = $this->wpdb->get_results('select loginx_field_name, loginx_field_wp from ' . $this->wpdb->prefix . 'loginx_field');
             foreach ($results as $row) {
                 if ($row->loginx_field_wp == 1) {
                     $wpFields[] = $row->loginx_field_name;
                 } else {
                     $metaFields[] = $row->loginx_field_name;
                 }
             }
             foreach ($_POST as $k => $v) {
                 if (!in_array($k, $omit)) {
                     if (in_array($k, $wpFields)) {
                         if ($_POST[$k] != '') {
                             $updateArray[$k] = $v;
                         }
                     } else {
                         $metaArray[$k] = $v;
                     }
                 }
             }
             $updateArray['ID'] = $current_user->ID;
             wp_update_user($updateArray);
             foreach ($metaArray as $k => $v) {
                 update_user_meta($current_user->ID, $k, $v);
             }
             foreach ($metaFields as $m) {
                 if (!in_array($m, array_keys($metaArray))) {
                     delete_user_meta($current_user->ID, $m);
                 }
             }
             $message = $emailVerify == true ? $this->options['profile_email_verify_message'] : '';
             $message .= $this->options['profile_success_message'];
             do_action('loginx_after_profile_save', $emailVerify);
             parent::loginx_successMessage($message);
         }
     }
     require_once PHPX_DIR . 'phpx_form.php';
     $form = new phpx_form();
     $form->startForm(get_permalink() . '?edit=1', 'loginxProfileForm');
     $form->hidden('nonce', wp_create_nonce('loginx_profile'));
     $form->hidden('loginx_form', 1);
     if (parent::loginx_errorMessage()) {
         $form->freeText(parent::loginx_errorMessage('get'), 'loginx_error');
     } else {
         if (parent::loginx_successMessage()) {
             $form->freeText(parent::loginx_successMessage('get'), 'loginx_success');
         }
     }
     $results = $this->wpdb->get_results('select loginx_field_name, loginx_field_label, loginx_field_options, loginx_field_type, loginx_field_req, loginx_field_no_edit from ' . $this->wpdb->prefix . 'loginx_field where loginx_field_profile = 1 order by loginx_field_ord asc');
     parent::setFormValue($current_user);
     $form = parent::publicForm($form, $results, false);
     $form->freeText($this->rpx_user_profile());
     $this->text .= '<div id="loginx_form">' . $form->endForm() . '</div>';
 }
示例#4
0
 function login()
 {
     global $post;
     if ($post->ID == $this->options['login_page']) {
         if ($_POST['nonce']) {
             if (!wp_verify_nonce($_POST['nonce'], 'loginx')) {
                 parent::loginx_errorMessage('Security Token Mismatch');
             } else {
                 if ($_GET['password']) {
                     $email_user_id = email_exists($_POST['email']);
                     $user_user_id = username_exists($_POST['email']);
                     if ($user_user_id || $email_user_id) {
                         $user_id = $user_user_id > 0 ? $user_user_id : $email_user_id;
                         if (parent::checkActKey($user_id)) {
                             $user = get_userdata($user_id);
                             parent::loginx_successMessage($this->options['check_email_password'], array('::EMAIL::' => $user->user_email));
                             $key = substr(md5(microtime() . NONCE_SALT), 5, 25);
                             $this->wpdb->query($this->wpdb->prepare('insert into ' . $this->wpdb->prefix . 'loginx_key (user_id, loginx_key, loginx_expire) values (%d, %s, %d)', $user_id, $key, time() + 86400));
                             $subject = parent::loginx_emailTrans($this->options['email_password_reset_subject']);
                             $message = parent::loginx_emailTrans($this->options['email_password_reset'], array('::USERNAME::' => $user->user_login, '::LINK::' => get_permalink($this->options['login_page']) . '?reset=' . $key));
                             wp_mail($user->user_email, $subject, $message, $headers);
                         }
                     } else {
                         parent::loginx_errorMessage('Email/Username not Found.');
                     }
                 } else {
                     if ($_POST['reset']) {
                         $user_id = $this->wpdb->get_var($this->wpdb->prepare('select user_id from ' . $this->wpdb->prefix . 'loginx_key where loginx_key = %s and loginx_expire > %d limit 1', $_POST['reset'], time()));
                         if (!$user_id) {
                             parent::loginx_errorMessage('Bad Key or Key as Expired.  Please try to reset your password again.');
                         } else {
                             if (parent::checkActKey($user_id)) {
                                 wp_update_user(array('ID' => $user_id, 'user_pass' => $_POST['pass']));
                                 $this->wpdb->query($this->wpdb->prepare('delete from ' . $this->wpdb->prefix . 'loginx_key where user_id = %d', $user_id));
                                 parent::loginx_successMessage($this->options['password_change_success_message'], array('::LINK::' => get_permalink(parent::loginx_getURL())));
                             }
                         }
                     } else {
                         $user_check = get_userdatabylogin($_POST['username']);
                         if (parent::checkActKey($user_check->ID)) {
                             $user = wp_signon(array('user_login' => $_POST['username'], 'user_password' => $_POST['password'], 'remember' => $_POST['remember']), false);
                             if (is_wp_error($user)) {
                                 parent::loginx_errorMessage($user->get_error_message());
                             } else {
                                 if (!in_array('subscriber', array($user->roles))) {
                                     wp_redirect('/wp-admin');
                                 } else {
                                     if ($_POST['redirect_to'] == parent::loginx_getURL() || $_POST['redirect_to'] == '') {
                                         wp_redirect(get_permalink($this->options['profile_page']));
                                     } else {
                                         wp_redirect($_POST['redirect_to']);
                                     }
                                 }
                                 exit;
                             }
                         }
                     }
                 }
             }
         } else {
             if ($_GET['act']) {
                 $user_id = $this->wpdb->get_var($this->wpdb->prepare('select user_id from ' . $this->wpdb->prefix . 'loginx_key where loginx_key = %s and act = 1', $_GET['act']));
                 if ($user_id > 0) {
                     $this->wpdb->query($this->wpdb->prepare('delete from ' . $this->wpdb->prefix . 'loginx_key where loginx_key = %s and user_id = %d and act = 1', $_GET['act'], $user_id));
                     parent::wooRedirect($this->options['act_success']);
                     parent::loginx_successMessage($this->options['act_success']);
                 } else {
                     parent::wooRedirect($this->options['act_fail'], true);
                     parent::loginx_errorMessage($this->options['act_fail']);
                 }
             } else {
                 if ($_GET['resend']) {
                     if (!wp_verify_nonce($_GET['nonce'], 'loginx_resend')) {
                         parent::loginx_errorMessage('Security Token Mismatch');
                     } else {
                         $user_id = $this->wpdb->get_var($this->wpdb->prepare('select user_id from ' . $this->wpdb->prefix . 'loginx_key where loginx_key = %s and act = 2 limit 1', $_GET['resend']));
                         $user = get_userdata($user_id);
                         $this->wpdb->query($this->wpdb->prepare('delete from ' . $this->wpdb->prefix . 'loginx_key where user_id = %d and act = 2', $user_id));
                         $actKey = $this->wpdb->get_var($this->wpdb->prepare('select loginx_key from ' . $this->wpdb->prefix . 'loginx_key where user_id = %d and act = 1 limit 1', $user_id));
                         $subject = parent::loginx_emailTrans($this->options['act_email_subject']);
                         $message = parent::loginx_emailTrans($this->options['act_email_text'], array('::LINK::' => get_permalink($this->options['login_page']) . '?act=' . $actKey));
                         wp_mail($user->user_email, $subject, $message);
                         parent::loginx_successMessage($this->options['act_key_resent']);
                     }
                 }
             }
         }
     }
 }