Вход Регистрация
Файл: register.php
Строк: 425
<?
/***************************************************************************
 * ExBB v.1.1                                                              *
 * Copyright (c) 2002-20хх by Alexander Subhankulov aka Warlock            *
 *                                                                         *
 * http://www.exbb.revansh.com                                             *
 * email: admin@exbb.revansh.com                                           *
 *                                                                         *
 ***************************************************************************/
/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

 
session_start();

include(
'common.php');

$vars = parsed_vars();

include(
$exbb['home_path'] . 'language/' . $exbb['default_lang'] . '/lang_reg.php');

if (!
$exbb['reg_on']) error($lang['Registration'],$lang['Reg_dinied'],'',false);

if (
$vars['action'] == 'addmember') {

   if (
$vars['request_method'] != 'post') {error($lang['Main_msg'],$lang['Correct_post']);}

if (
$exbb['anti_bot']) {
if (
trim( intval($vars['reg_code']) ) != $_SESSION['reg_code']) error($lang['Registration'],$lang['Pers_error']);
}
   
$emailaddress = $vars['emailaddress'];
   
$homepage = $vars['homepage'];
   
$aolname = $vars['aolname'];
   
$icqnumber = $vars['icqnumber'];
   
$location = $vars['location'];
   
$interests = $vars['interests'];
   
$signature = $vars['signature'];
   
$useravatar = $vars['useravatar'];
   
$inmembername = str_replace( "'" , '&#39;', $vars['inmembername'] );
   
$ipaddress = $vars['IP_ADDRESS'];


   
$emailaddress = (!empty($emailaddress)) ? strtolower($emailaddress) : '';
   
$homepage = (!empty($homepage) || $homepage != 'http://') ? trim(strip_tags($homepage)) : '';
   
$aolname = (!empty($aolname)) ? trim(strip_tags($aolname)) : '';
   
$icqnumber = (!empty($icqnumber)) ? trim(strip_tags($icqnumber)) : '';
   
$location =  (!empty($location)) ? trim(strip_tags($location)) : '';
   
$interests = (!empty($interests)) ? trim(strip_tags($interests)) : '';
   
$inmembername = (!empty($inmembername)) ? trim(strip_tags(str_replace("&nbsp;", " ", $inmembername))) : '';
   
$inmembername = preg_replace( "/s{2,}/", " ", $inmembername );

   
$bannedmembers = get_file($exbb['home_path'].'data/banlist.php');
   
$bannedmember = 0;
   if (
is_array($bannedmembers)) {
   foreach(
$bannedmembers as $name=>$infa){
       if (
$emailaddress == $infa['em']) { $bannedmember = 1; break;}
       if (
$inmembername == $name) { $bannedmember = 1; break;}
       if (
$ipaddress == $infa['ip']) { $bannedmember = 1; break;}
   }
   }
   unset(
$bannedmembers);

   if (
$bannedmember) {
          
error($lang['Registration'],$lang['Registr_denied']);
   }

   if (!empty(
$signature)) {
         
$signature = trim($signature);
         
$signature = str_replace('<p>','<br>',$signature);
   }

  
validate_items($icqnumber, $aolname, $homepage, $location, $interests, $signature);

  if (!
$exbb['passwordverification']) {$password = $vars['password'];}
  else {
$password = password();}

  
$siglines = explode('<br>',$signature);
  if ((
count($siglines) > $exbb['max_sig_lin']) && (strlrn($vars['signature']) > $exbb['max_sig_chars'])) error($lang['Registration'],$lang['Sig_lines']);

  
$inmembername = ltrim(trim($inmembername));
  
$name = preg_replace ($lang['search'], $lang['replace'], $inmembername);

  
$blankfields = 0;

  if (
$name == 'guest' || $name == preg_replace ($lang['search'], $lang['replace'], $lang['Unreg']) ) error($lang['Registration'],$inmembername.$lang['Name_exist']);
  if( empty(
$inmembername) || empty($password) || empty($emailaddress) ) $blankfields = 1;

  if (
$blankfields) error($lang['Registration'],$lang['Check_fields']);

  
######check for bad words

  
if ($exbb['wordcensor']) {
     if (
bads_filter($inmembername,0) || bads_filter($signature,0)) {
         
error($lang['Registration'],$lang['No_profanity'],'',0);
     }
  }

  if (empty(
$exbb['ru_nicks']) && ereg("[а-я|А-Я]{1,}",$inmembername)) {error($lang['Registration'],$lang['Name_wrong_sim'],'',0);}
  if ((
ereg("[а-я|А-Я]{1,}",$inmembername)) and (ereg("[a-z|A-Z]{1,}",$inmembername))) {error($lang['Registration'],$lang['int_name'],'',0);}
  if (
ereg("([ ]{2,})|([<|>]{1,}|([|]{1,})|([[|]]{1,})|([/|\]{1,})|([*|?]{1,})|([|]{1,}))",$inmembername)) error($lang['Registration'],$lang['Name_wrong_sim'],'',0);

  
$emailaddress = vm($emailaddress);

  if ( !
$emailaddress ) error($lang['Registration'],$lang['Wrong_email']);

  
$filetoopen = $exbb['home_path'].'data/users.php';

  if (
file_exists($filetoopen)) {

    
##########################Silent update
    
$fp = @fopen($filetoopen,'r');
    
lock_file($fp,1);
    
$str = @fread($fp,filesize($filetoopen));
    @
fclose($fp);
    
$str = substr($str,8,strlen($str));
    
$str = preg_replace ($lang['search'], $lang['replace'], $str);
    
$allusers = unserialize($str);
    unset(
$str);
    
########################################
    #$allusers = get_file($filetoopen);
    
foreach ($allusers as $u_id=>$info) {
      if (
$info['n'] == $name) error($lang['Registration'],$inmembername.$lang['Name_exist']);
      if (
$info['m'] == $emailaddress) error($lang['Registration'],$lang['Email_exist'],'',false);
    }

    
$ids = array();
    
$ids = array_keys($allusers);
    
$id = max($ids) + 1;

    while (isset(
$allusers[$id])) $id++;
    unset(
$ids);


  } else {
$allusers = array(); $id = 2;}

  
$usr = fopen($filetoopen,'w');
  
lock_file($usr);
  
$allusers[$id]['n'] = $name;
  
$allusers[$id]['m'] = $emailaddress;
  
save_opened_file($usr,$allusers);
  unset(
$allusers);

  
$user = array();

  
$user['status'] = 'me';
  
$user['title'] = '';
  
$user['posts'] = 0;
  
$user['joined'] = time();

  
$user['ip'] = $vars['IP_ADDRESS'];
  
$user['name'] = $inmembername;
  
$user['id'] = $id;
  
$user['pass'] = $password;
  
#$user['gender'] = 'Male';
  
$user['mail'] = $emailaddress;
  
$user['showemail'] = ($vars['showemail'] == 'yes') ? true : false;
  if (!empty(
$homepage)) $user['www'] = $homepage;
  
$user['aim'] = $aolname;
  
$user['icq'] = $icqnumber;
  
$user['location'] = $location;
  
$user['interests'] = $interests;
  
$user['sig'] = $signature;
  
$user['lang'] = $vars['default_lang'];
  
$user['skin'] = $vars['default_style'];
  
$user['timedif'] = $vars['timedifference'];
  
$user['avatar'] = $useravatar;
  
$user['upload'] = ($exbb['autoup']) ? true : false;

  
$filetomake = $exbb['home_path'].'members/'.$id.'.php';
  
save_file($filetomake,$user);
  @
chmod($filetomake,$exbb['ch_files']);

  
$_SESSION['mid'] = $id;
  
$_SESSION['sts'] = 'me';
  
$_SESSION['time'] = $vars['timedifference'];
  unset(
$_SESSION['reg_code']);

  
my_setcookie('exbbn',$id);
  
my_setcookie('exbbp',md5($inpassword));

  
$exbb['mem_id'] = $id;
  
### update statistic

  
include ('./data/boardstats.php');
  
$exbb['totalmembers']++;
  
$exbb['lastreg'] = $inmembername;
  
$exbb['last_id'] = $id;
  
save_statfile();

  if (
$exbb['emailfunctions']) {
     
$subject = $lang['Reg_thanks'].$exbb['boardname'];
     include(
'./templates/'.$exbb['default_style'].'email_newreg.tpl');
     
sendmail($exbb['boardname'],$exbb['adminemail'],$email,$subject,$emailaddress);

     if (
$exbb['newusernotify']) {
        
$subject = $lang['New_reged'];
        include(
'./templates/'.$exbb['default_style'].'email_adminreg.tpl');
        
sendmail($exbb['boardname'],$exbb['adminemail'],$email,$subject,$exbb['adminemail']);
     }
  }


  if ((
$exbb['passwordverification']) && ($exbb['emailfunctions'])) {
           
$url1 = '<li><b>'.$lang['Pass_sended'].'</b>';
  } else { 
$url1 = '<li><a href="profile.php">'.$lang['To_chg_pass'].'</a>'; }
  
$relocurl = 'index.php';
  
$title_page = $exbb['boardname'].' :: '.$lang['Reg_thanks'];
  
$ok_title = $lang['Reg_thanks'];
  
$url2 = '<li><a href="index.php">'.$lang['Forums_return'].'</a>';
  
$url3 = '<li><a href="profile.php">'.$lang['Profile_editing'].'</a>';
  include(
'./templates/'.$exbb['default_style'].'all_header.tpl');
  include(
'./templates/'.$exbb['default_style'].'postok.tpl');
  include(
'./templates/'.$exbb['default_style'].'footer.tpl');
  include(
'page_tail.php');

}

elseif (
$vars['action'] == 'agreed') {

  if (
$vars['request_method'] != 'post') {error($lang['Main_msg'],$lang['Correct_post']);}
  if (
$exbb['anti_bot']) {
    
mt_srand ((double) microtime() * 1000000);
    
$_SESSION['reg_code'] = mt_rand(100000,999999);
  }

  
$requirepass = ( $exbb['passwordverification'] && $exbb['emailfunctions'] ) ? true : false;

  
$intern = ($exbb['ru_nicks']) ? '<br>'.$lang['ru_yes'] : '<br>'.$lang['ru_no'];

  if (!
$exbb['reg_simple']) {  //simple reg form

  
if ($exbb['avatars']) {
    
$images=array();
    
$dirtoopen = $exbb['home_path'].'im/avatars';
    
$handle=opendir($dirtoopen);
    while ((
$file = @readdir($handle))!==false) {
         if (
strstr($file,'.gif') || strstr($file,'.jpg')) $images[]=$file;
    }
    
closedir($handle);
    
$selecthtml = '';
    foreach (
$images as $file) {
      
$cleanavatar = (strstr($file,'.gif')) ? str_replace('.gif','',$file) : str_replace('.jpg','',$file);
      if (
strstr($cleanavatar,'admin_')) { continue; }
      if (
$cleanavatar == 'noavatar') {
        
$selecthtml .= '<option value="'.$file.'" selected>'.$cleanavatar."</option>n";
        
$currentface = $file;
      } else {
        
$selecthtml .= '<option value="'.$file.'">'.$cleanavatar."</option>n";
      }
    }
  } 
//avatars

  
$temp_ar = array();

  
$dirtoopen = $exbb['home_path'].'language';
  
$handle = opendir($dirtoopen);
  while ((
$file = @readdir($handle))!==false) {
    if (
is_dir($exbb['home_path'].'language/'.$file) && $file != '.' && $file != '..') $temp_ar[] = $file;
  }
  
closedir($handle);

  
$temp_def = $exbb['default_lang'];
  
$langs_select = '<select name="default_lang">';
  foreach ( 
$temp_ar as $ln ) {
     
$selected = ( $ln == $temp_def ) ? ' selected="selected"' : '';
     
$langs_select .= '<option value="' . trim($ln) . '"' . $selected . '>' . ucfirst ($ln) . '</option>';
  }
  
$langs_select .= '</select>';

  
$temp_ar = array();

  
$dirtoopen = $exbb['home_path'].'templates';
  
$handle = opendir($dirtoopen);
  while ((
$file = @readdir($handle))!==false) {
     if (
is_dir($exbb['home_path'].'templates/'.$file) && $file != '.' && $file != '..') $temp_ar[] = $file;
  }


  
$temp_def = substr($exbb['default_style'],0,-1);
  
$style_select = '<select name="default_style">';
  foreach ( 
$temp_ar as $ln ) {
     
$selected = ( $ln == $temp_def) ? ' selected="selected"' : '';
     
$style_select .= '<option value="' . trim($ln) . '"' . $selected . '>' . $ln . '</option>';
  }
  
$style_select .= '</select>';

  unset(
$temp_ar,$temp_def,$ln,$selected,$file,$dirtoopen);


  include(
$exbb['home_path'] .'language/'.$exbb['default_lang'].'/lang_tz.php');
  
$timedifference = '0';
  
$timezones = '<select name="timedifference">';
  foreach (
$tz as $shift=>$zona) {
    if (
$shift == $timedifference) { $timezones .= '<option value="'.$shift.'" selected>'.$zona.'</option>'; }
    else { 
$timezones .= '<option value="'.$shift.'">'.$zona.'</option>'; }
  }
  
$timezones .= '</select>';

  
$basetimes = longdate(time());

  } 
//simple reg form
} #end agree

else {
      
$vars['action'] = 'agreement';
}


$title_page = $exbb['boardname'].' :: '.$lang['Registration'];

include(
'./templates/'.$exbb['default_style'].'all_header.tpl');
include(
'./templates/'.$exbb['default_style'].'logos.tpl');
@include(
'./templates/'.$exbb['default_style'].$vars['action'].'.tpl');
include(
'./templates/'.$exbb['default_style'].'footer.tpl');

include(
'page_tail.php');

function 
password() {
$input = array ('A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','S','T','U','V','W','Y','Z','a','b','c','d','e','f','g','h','j','k','l',
                
'm','n','p','q','r','s','t','u','v','w','y','z','0','1','2','3','4','5','6','7','8','9');
          
$password = '';
          
$count = count($input) - 1;
          
mt_srand((double) microtime() * 1000000);
          for (
$i=1; $i<8; $i++) {
             
$password .= $input[mt_rand(0,$count)];
          }
          return(
$password);
}

function 
validate_items(&$icqnumber, &$aolname, &$homepage, &$location, &$interests, &$signature) {

        if (!
preg_match("/^[0-9]+$/", $icqnumber)) $icqnumber = '';

        if (
strlen($aolname) < 2) $aolname = '';

        if (
$homepage != '') {
           if ( !
preg_match("#^http://#i", $homepage) ) $homepage = "http://" . $homepage;
           if ( !
preg_match("#^http\:\/\/[a-z0-9-]+.([a-z0-9-]+.)?[a-z]+#i", $homepage) ) $homepage = '';
        }

        if (
strlen($location) < 2) $location = '';

        if (
strlen($interests) < 2) $interests = '';

        if (
strlen($signature) < 2) $sig = '';

        return;
}

?>
Онлайн: 0
Реклама