Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * ../../ext/pok4/register/ext.php
- *
- * @package default
- */
- namespace ext\pok4;
- use \PDO;
- use App\Entity\CSRF;
- use App\Entity\FormValidator;
- use App\Entity\Cookie;
- if (count(get_included_files()) == 1) exit("Direct access not permitted."); //Don't edit
- //Your Extension Script
- class register extends \App\Controllers\BaseController {
- /**
- *
- */
- public function __construct() {
- parent::__construct();
- }
- /**
- *
- * @return unknown
- */
- public function custom_page() {
- if (strpos($_SERVER['REQUEST_URI'], '/pages/register') !== false) {
- $csrf = new CSRF();
- $cookie = new Cookie();
- $cookie->set( 'argos_reg', '1', 1200 ); //set cookie and check it below
- $submit = "";//globalize
- if(isset($_POST['register'])) {
- $validations = [
- 'username' => 'alfanum',
- 'email' => 'email',
- 'pass'=>'password',
- 'r_pass'=>'password',
- 'captcha_code'=>'not_empty',
- ];
- $required = ['username', 'email','pass','r_pass','captcha_code'];
- $validator = new FormValidator($validations, $required);
- $cookie_value = $cookie->get( 'argos_reg' );
- if($cookie_value == 1) {
- if ($csrf->isTokenValid($_POST['_csrf'])) {
- if($validator->validate($_POST))
- {
- $_POST = $validator->sanatize($_POST);
- if($this->stop_spam($_POST['username'],$_POST['email']) == false) { die('bot'); } //remove bots
- $captchaCode = $_SESSION['captchaCode'];
- $enteredcaptchaCode = $_POST['captcha_code'];
- if($enteredcaptchaCode === $captchaCode){
- if($_POST['pass']==$_POST['r_pass']) {
- $go = $this->db->prepare("SELECT username,user_email FROM `".$this->forum_db."`.".$this->forum_db_prefix."_users WHERE username =? OR user_email=?");
- $go->bindParam(1, $_POST['username'], PDO::PARAM_STR);
- $go->bindParam(2, $_POST['email'], PDO::PARAM_STR);
- $go->execute();
- if($go->rowCount() < 1){
- //Everything is OK, and we proceed to make requests to db
- $user_row = array(
- 'username' => $_POST['username'], //потребителското име за акаунта
- 'user_password' => phpbb_hash($_POST['pass']), //паролата на потребителя с phpbb_hash
- 'user_email' => $_POST['email'],
- 'group_id' => 2, //default user group
- 'user_timezone' => '2.00', //GMT+2 (Sofia, Helsinki...)
- 'user_lang' => 'en', //default language
- 'user_type' => 0, //is not admin
- 'user_actkey' => '', //we dont need this one
- 'user_dateformat' => 'd M Y H:i', //date format for this user
- 'user_regdate' => time(), //Date of reg
- );
- user_add($user_row);
- //Your custom code here...
- //End Custom code...
- $submit .= '<div class="alert alert-success">'.$this->lang['ext_register_lang_success'].'</div>';
- } else {
- $submit .= '<div class="alert alert-danger">'.$this->lang['ext_register_lang_taken'].'</div>';
- }
- } else {
- $submit .= '<div class="alert alert-danger">'.$this->lang['ext_register_lang_pass_not_match'].'</div>';
- }
- } else {
- $submit .= '<div class="alert alert-danger">'.$this->lang['ext_register_antibot_not_ok'].'</div>';
- }
- } else {
- foreach(array_keys($validator->getErrors()['errors']) as $v => $k) {
- switch($k) {
- case 'username': {
- $submit .= '<div class="alert alert-danger">'.$this->lang['ext_register_name_req'].'</div>';
- break;
- }
- case 'email': {
- $submit .= "<div class='alert alert-danger'>".$this->lang['ext_register_email_req']."</div>";
- break;
- }
- case 'pass': {
- $submit .= "<div class='alert alert-danger'>".$this->lang['ext_register_pass_req']."</div>";
- break;
- }
- case 'r_pass': {
- $submit .= "<div class='alert alert-danger'>".$this->lang['ext_register_repeat_pw']."</div>";
- break;
- }
- case 'captcha_code': {
- $submit .= "<div class='alert alert-danger'>".$this->lang['ext_register_antibot_req']."</div>";
- break;
- }
- }
- }
- }
- } else {
- $submit .= '<div class="alert alert-danger">CSRF Token is not valid.</div>';
- }
- } else {
- $submit .= "<div class='alert alert-danger'>Cookie not set.</div>";
- }
- }
- return $this->m->render(file_get_contents("ext/pok4/register/template/register.html"),
- [
- 'csrf_token_form'=>$csrf->echoInputField(),
- 'is_anony'=>$this->is_anonymous,
- 'submit'=>$submit,
- 'ext_register_allowed_username'=>$this->lang['ext_register_allowed_username'],
- 'ext_register_allowed_password'=>$this->lang['ext_register_allowed_password'],
- 'ext_register_already'=>$this->lang['ext_register_already'],
- 'ext_register_lang_username'=>$this->lang['ext_register_lang_username'],
- 'ext_register_lang_pass'=>$this->lang['ext_register_lang_pass'],
- 'ext_register_lang_pass_r'=>$this->lang['ext_register_lang_pass_r'],
- 'ext_register_lang_mail'=>$this->lang['ext_register_lang_mail'],
- 'ext_register_lang_antibot'=>$this->lang['ext_register_lang_antibot'],
- 'ext_register_button'=>$this->lang['ext_register_button'],
- ]);
- }
- }
- public function ajax() {
- if(is_ajax()) {
- if(isset($_POST['username2'])) {
- $username = $_POST['username2'];
- $go = $this->db->prepare("SELECT username from `".$this->forum_db."`.".$this->forum_db_prefix."_users WHERE username=?");
- $go->bindParam(1, $username, PDO::PARAM_STR);
- $go->execute();
- if($go->rowCount() > 0) {
- echo 1;
- } else {
- echo 0;
- }
- } else {
- $email = $_POST['email2'];
- $go = $this->db->prepare("SELECT user_email from `".$this->forum_db."`.".$this->forum_db_prefix."_users WHERE user_email=?");
- $go->bindParam(1, $email, PDO::PARAM_STR);
- $go->execute();
- if($go->rowCount() > 0) {
- echo 1;
- } else {
- echo 0;
- }
- }
- }
- }
- public function stop_spam($username,$email) {
- // setup the URL
- $url = 'http://api.stopforumspam.org/api?json';
- $data = array(
- 'username' => $username,
- 'email' => $email,
- 'ip' => $_SERVER['REMOTE_ADDR'],
- );
- $data = http_build_query($data);
- // init the request, set some info, send it and finally close it
- $ch = curl_init($url);
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- $result = curl_exec($ch);
- curl_close($ch);
- if(json_decode($result)->username->appears == 0 && json_decode($result)->email->appears == 0) {
- return true;
- } else {
- return false;
- }
- }
- /**
- *
- */
- public function load() {
- //check name/email availability
- if (strpos($_SERVER['REQUEST_URI'], '/pages/register') !== false) {
- $this->dispatcher->emit('core_event_inside_head_ready_front', [
- $this->m->render(file_get_contents("ext/pok4/register/template/username_mail_checker.js"),[
- 'ext_register_name_taken'=>$this->lang['ext_register_name_taken'],
- 'ext_register_name_no_taken'=>$this->lang['ext_register_name_no_taken'],
- 'ext_register_email_taken'=>$this->lang['ext_register_email_taken'],
- 'ext_register_email_no_taken'=>$this->lang['ext_register_email_no_taken'],
- ])
- ]);
- }
- if(!$this->is_anonymous) {
- //remove link in menu for registered members
- $this->dispatcher->emit('core_event_inside_head_ready_front', [ '
- $("a[href*=\"pages/register\"]").prev().remove();
- $("a[href*=\"pages/register\"]").next().remove();
- $("a[href*=\"pages/register\"]").remove();
- ']);
- }
- $this->dispatcher->emit('core_event_inside_custom_menu', [$this->custom_page()]);
- }
- };
- $load_ext = new register;
- $load_ext->load();
Advertisement
Add Comment
Please, Sign In to add comment