Вход Регистрация
Файл: qa-include/qa-page-register.php
Строк: 170
<?php

/*
    Question2Answer (c) Gideon Greenspan

    http://www.question2answer.org/

    
    File: qa-include/qa-page-register.php
    Version: See define()s at top of qa-include/qa-base.php
    Description: Controller for register page


    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.
    
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    More about this license: http://www.question2answer.org/license.php
*/

    
if (!defined('QA_VERSION')) { // don't allow this page to be requested directly from browser
        
header('Location: ../');
        exit;
    }

    require_once 
QA_INCLUDE_DIR.'qa-app-captcha.php';
    require_once 
QA_INCLUDE_DIR.'qa-db-users.php';


//    Check we're not using single-sign on integration, that we're not logged in, and we're not blocked

    
if (QA_FINAL_EXTERNAL_USERS)
        
qa_fatal_error('User registration is handled by external code');
        
    if (
qa_is_logged_in())
        
qa_redirect('');
    
    if (
qa_opt('suspend_register_users')) {
        
$qa_content=qa_content_prepare();
        
$qa_content['error']=qa_lang_html('users/register_suspended');
        return 
$qa_content;
    }
    
    if (
qa_user_permit_error()) {
        
$qa_content=qa_content_prepare();
        
$qa_content['error']=qa_lang_html('users/no_permission');
        return 
$qa_content;
    }

    
//    Process submitted form

    
if (qa_clicked('doregister')) {
        require_once 
QA_INCLUDE_DIR.'qa-app-limits.php';
        
        if (
qa_limits_remaining(nullQA_LIMIT_REGISTRATIONS)) {
            require_once 
QA_INCLUDE_DIR.'qa-app-users-edit.php';
            
            
$inemail=qa_post_text('email');
            
$inpassword=qa_post_text('password');
            
$inhandle=qa_post_text('handle');
            
            
$errors=array_merge(
                
qa_handle_email_filter($inhandle$inemail),
                
qa_password_validate($inpassword)
            );
            
            if (
qa_opt('captcha_on_register'))
                
qa_captcha_validate_post($errors);
        
            if (empty(
$errors)) { // register and redirect
                
qa_limits_increment(nullQA_LIMIT_REGISTRATIONS);

                
$userid=qa_create_new_user($inemail$inpassword$inhandle);
                
qa_set_logged_in_user($userid$inhandle);
    
                
$topath=qa_get('to');
                
                if (isset(
$topath))
                    
qa_redirect_raw(qa_path_to_root().$topath); // path already provided as URL fragment
                
else
                    
qa_redirect('');
            }
            
        } else
            
$pageerror=qa_lang('users/register_limit');
    }


//    Prepare content for theme

    
$qa_content=qa_content_prepare();

    
$qa_content['title']=qa_lang_html('users/register_title');
    
    
$qa_content['error']=@$pageerror;

    
$custom=qa_opt('show_custom_register') ? trim(qa_opt('custom_register')) : '';
    
    
$qa_content['form']=array(
        
'tags' => 'METHOD="POST" ACTION="'.qa_self_html().'"',
        
        
'style' => 'tall',
        
        
'fields' => array(
            
'custom' => array(
                
'type' => 'custom',
                
'note' => $custom,
            ),
            
            
'handle' => array(
                
'label' => qa_lang_html('users/handle_label'),
                
'tags' => 'NAME="handle" ID="handle"',
                
'value' => qa_html(@$inhandle),
                
'error' => qa_html(@$errors['handle']),
            ),
            
            
'password' => array(
                
'type' => 'password',
                
'label' => qa_lang_html('users/password_label'),
                
'tags' => 'NAME="password" ID="password"',
                
'value' => qa_html(@$inpassword),
                
'error' => qa_html(@$errors['password']),
            ),

            
'email' => array(
                
'label' => qa_lang_html('users/email_label'),
                
'tags' => 'NAME="email" ID="email"',
                
'value' => qa_html(@$inemail),
                
'note' => qa_opt('email_privacy'),
                
'error' => qa_html(@$errors['email']),
            ),
        ),
        
        
'buttons' => array(
            
'register' => array(
                
'tags' => 'onClick="qa_show_waiting_after(this, false);"',
                
'label' => qa_lang_html('users/register_button'),
            ),
        ),
        
        
'hidden' => array(
            
'doregister' => '1',
        ),
    );
    
    if (!
strlen($custom))
        unset(
$qa_content['form']['fields']['custom']);
    
    if (
qa_opt('captcha_on_register'))
        
qa_set_up_captcha_field($qa_content$qa_content['form']['fields'], @$errors);
    
    
$loginmodules=qa_load_modules_with('login''login_html');
    
    foreach (
$loginmodules as $module) {
        
ob_start();
        
$module->login_html(qa_opt('site_url').qa_get('to'), 'register');
        
$html=ob_get_clean();
        
        if (
strlen($html))
            @
$qa_content['custom'].='<BR>'.$html.'<BR>';
    }

    
$qa_content['focusid']=isset($errors['handle']) ? 'handle'
        
: (isset($errors['password']) ? 'password'
            
: (isset($errors['email']) ? 'email' 'handle'));

            
    return 
$qa_content;
    

/*
    Omit PHP closing tag to help avoid accidental output
*/
Онлайн: 0
Реклама