Register S KOM 1002289 Appendix3

Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu Get the function and file to include - if its not there, do the board index. if isset_REQUEST[action] || issetactionArray[_REQUEST[action]] { Catch the action with the theme? if emptysettings[catch_action] { require_oncesourcedir . Themes.php; return WrapAction; } Fall through to the board index then... require_oncesourcedir . BoardIndex.php; return BoardIndex; } Otherwise, it was set - so lets go to that action. require_oncesourcedir . . actionArray[_REQUEST[action]][0]; return actionArray[_REQUEST[action]][1]; } ?

8. Register

?php Simple Machines Forum SMF package SMF author Simple Machines http:www.simplemachines.org copyright 2011 Simple Machines license http:www.simplemachines.orgaboutsmflicense.php BSD version 2.0.7 if definedSMF dieHacking attempt...; Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu This file has two main jobs, but they really are one. It registers new members, and it helps the administrator moderate member registrations. Similarly, it handles account activation as well. void Register void Register2 void Activate void CoppaForm void VerificationCode Show the verification code or let it hear. void RegisterCheckUsername Begin the registration process. function Registerreg_errors = array { global txt, boarddir, context, settings, modSettings, user_info; global language, scripturl, smcFunc, sourcedir, smcFunc, cur_profile; Is this an incoming AJAX check? if isset_GET[sa] _GET[sa] == usernamecheck return RegisterCheckUsername; Check if the administrator has it disabled. if emptymodSettings[registration_method] modSettings[registration_method] == 3 fatal_lang_errorregistration_disabled, false; Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu If this user is an admin - redirect them to the admin registration page. if allowedTomoderate_forum user_info[is_guest] redirectexitaction=admin;area=regcenter;sa=register; You are not a guest, so you are a member - and members dont get to register twice elseif emptyuser_info[is_guest] redirectexit; loadLanguageLogin; loadTemplateRegister; Do we need them to agree to the registration agreement, first? context[require_agreement] = emptymodSettings[requireAgreement]; context[registration_passed_agreement] = empty_SESSION[registration_agreed]; context[show_coppa] = emptymodSettings[coppaAge]; Under age restrictions? if context[show_coppa] { context[skip_coppa] = false; context[coppa_agree_above] = sprintftxt[agreement_agree_coppa_above], modSettings[coppaAge]; context[coppa_agree_below] = sprintftxt[agreement_agree_coppa_below], modSettings[coppaAge]; } What step are we at? current_step = isset_REQUEST[step] ? int _REQUEST[step] : context[require_agreement] ? 1 : 2; Does this user agree to the registation agreement? if current_step == 1 isset_POST[accept_agreement] || isset_POST[accept_agreement_coppa] { context[registration_passed_agreement] = _SESSION[registration_agreed] = true; current_step = 2; Skip the coppa procedure if the user says hes old enough. Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu if context[show_coppa] { _SESSION[skip_coppa] = empty_POST[accept_agreement]; Are they saying theyre under age, while under age registration is disabled? if emptymodSettings[coppaType] empty_SESSION[skip_coppa] { loadLanguageLogin; fatal_lang_errorunder_age_registration_prohibited, false, arraymodSettings[coppaAge]; } } } Make sure they dont squeeze through without agreeing. elseif current_step 1 context[require_agreement] context[registration_passed_agreement] current_step = 1; Show the user the right form. context[sub_template] = current_step == 1 ? registration_agreement : registration_form; context[page_title] = current_step == 1 ? txt[registration_agreement] : txt[registration_form]; Add the register chain to the link tree. context[linktree][] = array url = scripturl . ?action=register, name = txt[register], ; If you have to agree to the agreement, it needs to be fetched from the file. if context[require_agreement] { Have we got a localized one? if file_existsboarddir . agreement. . user_info[language] . .txt Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu context[agreement] = parse_bbcfile_get_contentsboarddir . agreement. . user_info[language] . .txt, true, agreement_ . user_info[language]; elseif file_existsboarddir . agreement.txt context[agreement] = parse_bbcfile_get_contentsboarddir . agreement.txt, true, agreement; else context[agreement] = ; } if emptymodSettings[userLanguage] { selectedLanguage = empty_SESSION[language] ? language : _SESSION[language]; Do we have any languages? if emptycontext[languages] getLanguages; Try to find our selected language. foreach context[languages] as key = lang { context[languages][key][name] = strtrlang[name], array-utf8 = ; Found it if selectedLanguage == lang[filename] context[languages][key][selected] = true; } } Any custom fields we want filled in? require_oncesourcedir . Profile.php; loadCustomFields0, register; Or any standard ones? if emptymodSettings[registration_fields] { require_oncesourcedir . Profile-Modify.php; Setup some important context. loadLanguageProfile; Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu loadTemplateProfile; context[user][is_owner] = true; Here, and here only, emulate the permissions the user would have to do this. user_info[permissions] = array_mergeuser_info[permissions], arrayprofile_account_own, profile_extra_own; reg_fields = explode,, modSettings[registration_fields]; We might have had some submissions on this front - go check. foreach reg_fields as field if isset_POST[field] cur_profile[field] = smcFunc[htmlspecialchars]_POST[field]; Load all the fields in question. setupProfileContextreg_fields; } Generate a visual verification code to make sure the user is no bot. if emptymodSettings[reg_verification] { require_oncesourcedir . Subs-Editor.php; verificationOptions = array id = register, ; context[visual_verification] = create_control_verificationverificationOptions; context[visual_verification_id] = verificationOptions[id]; } Otherwise we have nothing to show. else context[visual_verification] = false; Are they coming from an OpenID login attempt? if empty_SESSION[openid][verified] empty_SESSION[openid][openid_uri] { context[openid] = _SESSION[openid][openid_uri]; Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu context[username] = smcFunc[htmlspecialchars]empty_POST[user] ? _POST[user] : _SESSION[openid][nickname]; context[email] = smcFunc[htmlspecialchars]empty_POST[email] ? _POST[email] : _SESSION[openid][email]; } See whether we have some prefiled values. else { context += array openid = isset_POST[openid_identifier] ? _POST[openid_identifier] : , username = isset_POST[user] ? smcFunc[htmlspecialchars]_POST[user] : , email = isset_POST[email] ? smcFunc[htmlspecialchars]_POST[email] : , ; } Why isnt this a simple set operation? Were there any errors? context[registration_errors] = array; if emptyreg_errors foreach reg_errors as error context[registration_errors][] = error; } Actually register the member. function Register2verifiedOpenID = false { global scripturl, txt, modSettings, context, sourcedir; global user_info, options, settings, smcFunc; Start collecting together any errors. reg_errors = array; Did we save some open ID fields? if verifiedOpenID emptycontext[openid_save_fields] { foreach context[openid_save_fields] as id = value _POST[id] = value; Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu } You cant register if its disabled. if emptymodSettings[registration_method] modSettings[registration_method] == 3 fatal_lang_errorregistration_disabled, false; Things we dont do for people who have already confirmed their OpenID allegances via register. if verifiedOpenID { Well, if you dont agree, you cant register. if emptymodSettings[requireAgreement] empty_SESSION[registration_agreed] redirectexit; Make sure they came from somewhere, have a session. if isset_SESSION[old_url] redirectexitaction=register; Are they under age, and under age users are banned? if emptymodSettings[coppaAge] emptymodSettings[coppaType] empty_SESSION[skip_coppa] { This should be put in Errors, imho. loadLanguageLogin; fatal_lang_errorunder_age_registration_prohibited, false, arraymodSettings[coppaAge]; } Check whether the visual verification code was entered correctly. if emptymodSettings[reg_verification] { require_oncesourcedir . Subs-Editor.php; verificationOptions = array id = register, ; context[visual_verification] = create_control_verificationverificationOptions, true; if is_arraycontext[visual_verification] Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu { loadLanguageErrors; foreach context[visual_verification] as error reg_errors[] = txt[error_ . error]; } } } foreach _POST as key = value { if is_array_POST[key] _POST[key] = htmltrim__recursivestr_replacearray\n, \r, , _POST[key]; } Collect all extra registration fields someone might have filled in. possible_strings = array website_url, website_title, aim, yim, location, birthdate, time_format, buddy_list, pm_ignore_list, smiley_set, signature, personal_text, avatar, lngfile, secret_question, secret_answer, ; possible_ints = array pm_email_notify, notify_types, icq, gender, id_theme, ; possible_floats = array time_offset, ; possible_bools = array notify_announcements, notify_regularity, notify_send_body, hide_email, show_online, Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu ; if isset_POST[secret_answer] _POST[secret_answer] = _POST[secret_answer] = md5_POST[secret_answer]; Needed for isReservedName and registerMember. require_oncesourcedir . Subs-Members.php; Validation... even if were not a mall. if isset_POST[real_name] emptymodSettings[allow_editDisplayName] || allowedTomoderate_forum { _POST[real_name] = trimpreg_replace~[\t\n\r \x0B\0 . context[utf8] ? context[server][complex_preg_chars] ? \x{A0}\x{AD}\x{2000}-\x{200F}\x{201F}\x{202F}\x{3000}\x{FEFF} : \xC2\xA0\xC2\xAD\xE2\x80\x80- \xE2\x80\x8F\xE2\x80\x9F\xE2\x80\xAF\xE2\x80\x9F\xE3\x80\x80\xEF\xB B\xBF : \x00-\x08\x0B\x0C\x0E-\x19\xA0 . ]+~ . context[utf8] ? u : , , _POST[real_name]; if trim_POST[real_name] = isReservedName_POST[real_name] smcFunc[strlen]_POST[real_name] 60 possible_strings[] = real_name; } if isset_POST[msn] preg_match~[0-9A-Za-z=_+\-][0-9A- Za-z=_\+\-\.][\w\-]+\.[\w\-]+\.[\w]{2,6}~, _POST[msn] = 0 profile_strings[] = msn; Handle a string as a birthdate... if isset_POST[birthdate] _POST[birthdate] = _POST[birthdate] = strftimeY-m-d, strtotime_POST[birthdate]; Or birthdate parts... elseif empty_POST[bday1] empty_POST[bday2] _POST[birthdate] = sprintf04d-02d-02d, empty_POST[bday3] ? 0 : int _POST[bday3], int _POST[bday1], int _POST[bday2]; By default assume email is hidden, only show it if we tell it to. _POST[hide_email] = empty_POST[allow_email] ? 0 : 1; Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu Validate the passed language file. if isset_POST[lngfile] emptymodSettings[userLanguage] { Do we have any languages? if emptycontext[languages] getLanguages; Did we find it? if issetcontext[languages][_POST[lngfile]] _SESSION[language] = _POST[lngfile]; else unset_POST[lngfile]; } else unset_POST[lngfile]; Some of these fields we may not want. if emptymodSettings[registration_fields] { But we might want some of them if the admin asks for them. standard_fields = arrayicq, msn, aim, yim, location, gender; reg_fields = explode,, modSettings[registration_fields]; exclude_fields = array_diffstandard_fields, reg_fields; Website is a little different if in_arraywebsite, reg_fields exclude_fields = array_mergeexclude_fields, arraywebsite_url, website_title; We used to accept signature on registration but its being abused by spammers these days, so no more. exclude_fields[] = signature; } else exclude_fields = arraysignature, icq, msn, aim, yim, location, gender, website_url, website_title; possible_strings = array_diffpossible_strings, exclude_fields; Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu possible_ints = array_diffpossible_ints, exclude_fields; possible_floats = array_diffpossible_floats, exclude_fields; possible_bools = array_diffpossible_bools, exclude_fields; Set the options needed for registration. regOptions = array interface = guest, username = empty_POST[user] ? _POST[user] : , email = empty_POST[email] ? _POST[email] : , password = empty_POST[passwrd1] ? _POST[passwrd1] : , password_check = empty_POST[passwrd2] ? _POST[passwrd2] : , openid = empty_POST[openid_identifier] ? _POST[openid_identifier] : , auth_method = empty_POST[authenticate] ? _POST[authenticate] : , check_reserved_name = true, check_password_strength = true, check_email_ban = true, send_welcome_email = emptymodSettings[send_welcomeEmail], require = emptymodSettings[coppaAge] verifiedOpenID empty_SESSION[skip_coppa] ? coppa : emptymodSettings[registration_method] ? nothing : modSettings[registration_method] == 1 ? activation : approval, extra_register_vars = array, theme_vars = array, ; Include the additional options that might have been filled in. foreach possible_strings as var if isset_POST[var] regOptions[extra_register_vars][var] = smcFunc[htmlspecialchars]_POST[var], ENT_QUOTES; foreach possible_ints as var if isset_POST[var] regOptions[extra_register_vars][var] = int _POST[var]; foreach possible_floats as var if isset_POST[var] Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu regOptions[extra_register_vars][var] = float _POST[var]; foreach possible_bools as var if isset_POST[var] regOptions[extra_register_vars][var] = empty_POST[var] ? 0 : 1; Registration options are always default options... if isset_POST[default_options] _POST[options] = isset_POST[options] ? _POST[options] + _POST[default_options] : _POST[default_options]; regOptions[theme_vars] = isset_POST[options] is_array_POST[options] ? _POST[options] : array; Make sure they are clean, dammit regOptions[theme_vars] = htmlspecialchars__recursiveregOptions[theme_vars]; If Quick Reply hasnt been set then set it to be shown but collapsed. if issetregOptions[theme_vars][display_quick_reply] regOptions[theme_vars][display_quick_reply] = 1; Check whether we have fields that simply MUST be displayed? request = smcFunc[db_query], SELECT col_name, field_name, field_type, field_length, mask, show_reg FROM {db_prefix}custom_fields WHERE active = {int:is_active}, array is_active = 1, ; custom_field_errors = array; while row = smcFunc[db_fetch_assoc]request { Dont allow overriding of the theme variables. if issetregOptions[theme_vars][row[col_name]] unsetregOptions[theme_vars][row[col_name]]; Not actually showing it then? if row[show_reg] continue; Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu Prepare the value value = isset_POST[customfield][row[col_name]] ? trim_POST[customfield][row[col_name]] : ; We only care for text fields as the others are valid to be empty. if in_arrayrow[field_type], arraycheck, select, radio { Is it too long? if row[field_length] row[field_length] smcFunc[strlen]value custom_field_errors[] = arraycustom_field_too_long, arrayrow[field_name], row[field_length]; Any masks to apply? if row[field_type] == text emptyrow[mask] row[mask] = none { We never error on this - just ignore it at the moment... if row[mask] == email preg_match~[0-9A-Za-z=_+\-][0-9A-Za-z=_\+\-\.][\w\-]+\.[\w\- ]+\.[\w]{2,6}~, value === 0 || strlenvalue 255 custom_field_errors[] = arraycustom_field_invalid_email, arrayrow[field_name]; elseif row[mask] == number preg_match~[\d]~, value custom_field_errors[] = arraycustom_field_not_number, arrayrow[field_name]; elseif substrrow[mask], 0, 5 == regex trimvalue = preg_matchsubstrrow[mask], 5, value === 0 custom_field_errors[] = arraycustom_field_inproper_format, arrayrow[field_name]; } } Is this required but not there? if trimvalue == row[show_reg] 1 custom_field_errors[] = arraycustom_field_empty, arrayrow[field_name]; Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu } smcFunc[db_free_result]request; Process any errors. if emptycustom_field_errors { loadLanguageErrors; foreach custom_field_errors as error reg_errors[] = vsprintftxt[error_ . error[0]], error[1]; } Lets check for other errors before trying to register the member. if emptyreg_errors { _REQUEST[step] = 2; return Registerreg_errors; } If theyre wanting to use OpenID we need to validate them first. if empty_SESSION[openid][verified] empty_POST[authenticate] _POST[authenticate] == openid { What do we need to save? save_variables = array; foreach _POST as k = v if in_arrayk, arraysc, sesc, context[session_var], passwrd1, passwrd2, regSubmit save_variables[k] = v; require_oncesourcedir . Subs-OpenID.php; smf_openID_validate_POST[openid_identifier], false, save_variables; } If weve come from OpenID set up some default stuff. elseif verifiedOpenID || empty_POST[openid_identifier] _POST[authenticate] == openid { regOptions[username] = empty_POST[user] trim_POST[user] = ? _POST[user] : _SESSION[openid][nickname]; Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu regOptions[email] = empty_POST[email] trim_POST[email] = ? _POST[email] : _SESSION[openid][email]; regOptions[auth_method] = openid; regOptions[openid] = empty_POST[openid_identifier] ? _POST[openid_identifier] : _SESSION[openid][openid_uri]; } memberID = registerMemberregOptions, true; What there actually an error of some kind dear boy? if is_arraymemberID { reg_errors = array_mergereg_errors, memberID; _REQUEST[step] = 2; return Registerreg_errors; } Do our spam protection now. spamProtectionregister; Well do custom fields after as then we get to use the helper function if empty_POST[customfield] { require_oncesourcedir . Profile.php; require_oncesourcedir . Profile-Modify.php; makeCustomFieldChangesmemberID, register; } If COPPA has been selected then things get complicated, setup the template. if emptymodSettings[coppaAge] empty_SESSION[skip_coppa] redirectexitaction=coppa;member= . memberID; Basic template variable setup. elseif emptymodSettings[registration_method] { loadTemplateRegister; context += array page_title = txt[register], Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu title = txt[registration_successful], sub_template = after, description = modSettings[registration_method] == 2 ? txt[approval_after_registration] : txt[activate_after_registration] ; } else { call_integration_hookintegrate_activate, arrayrow[member_name]; setLoginCookie60 modSettings[cookieTime], memberID, sha1sha1strtolowerregOptions[username] . regOptions[password] . regOptions[register_vars][password_salt]; redirectexitaction=login2;sa=check;member= . memberID, context[server][needs_login_fix]; } } function Activate { global context, txt, modSettings, scripturl, sourcedir, smcFunc, language; loadLanguageLogin; loadTemplateLogin; if empty_REQUEST[u] empty_POST[user] { if emptymodSettings[registration_method] || modSettings[registration_method] == 3 fatal_lang_errorno_access, false; context[member_id] = 0; context[sub_template] = resend; context[page_title] = txt[invalid_activation_resend]; context[can_activate] = emptymodSettings[registration_method] || modSettings[registration_method] == 1; context[default_username] = isset_GET[user] ? _GET[user] : ; Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu return; } Get the code from the database... request = smcFunc[db_query], SELECT id_member, validation_code, member_name, real_name, email_address, is_activated, passwd, lngfile FROM {db_prefix}members . empty_REQUEST[u] ? WHERE member_name = {string:email_address} OR email_address = {string:email_address} : WHERE id_member = {int:id_member} . LIMIT 1, array id_member = isset_REQUEST[u] ? int _REQUEST[u] : 0, email_address = isset_POST[user] ? _POST[user] : , ; Does this user exist at all? if smcFunc[db_num_rows]request == 0 { context[sub_template] = retry_activate; context[page_title] = txt[invalid_userid]; context[member_id] = 0; return; } row = smcFunc[db_fetch_assoc]request; smcFunc[db_free_result]request; Change their email address? they probably tried a fake one first :P. if isset_POST[new_email], _REQUEST[passwd] sha1strtolowerrow[member_name] . _REQUEST[passwd] == row[passwd] row[is_activated] == 0 || row[is_activated] == 2 { if emptymodSettings[registration_method] || modSettings[registration_method] == 3 fatal_lang_errorno_access, false; Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu Separate the sprintf? if preg_match~[0-9A-Za-z=_+\-][0-9A-Za-z=_\+\- \.][\w\-]+\.[\w\-]+\.[\w]{2,6}~, _POST[new_email] == 0 fatal_errorsprintftxt[valid_email_needed], htmlspecialchars_POST[new_email], false; Make sure their email isnt banned. isBannedEmail_POST[new_email], cannot_register, txt[ban_register_prohibited]; Ummm... dont even dare try to take someone elses email request = smcFunc[db_query], SELECT id_member FROM {db_prefix}members WHERE email_address = {string:email_address} LIMIT 1, array email_address = _POST[new_email], ; Separate the sprintf? if smcFunc[db_num_rows]request = 0 fatal_lang_erroremail_in_use, false, arrayhtmlspecialchars_POST[new_email]; smcFunc[db_free_result]request; updateMemberDatarow[id_member], arrayemail_address = _POST[new_email]; row[email_address] = _POST[new_email]; email_change = true; } Resend the password, but only if the account wasnt activated yet. if empty_REQUEST[sa] _REQUEST[sa] == resend row[is_activated] == 0 || row[is_activated] == 2 isset_REQUEST[code] || _REQUEST[code] == { require_oncesourcedir . Subs-Post.php; replacements = array Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu REALNAME = row[real_name], USERNAME = row[member_name], ACTIVATIONLINK = scripturl . ?action=activate;u= . row[id_member] . ;code= . row[validation_code], ACTIVATIONLINKWITHOUTCODE = scripturl . ?action=activate;u= . row[id_member], ACTIVATIONCODE = row[validation_code], FORGOTPASSWORDLINK = scripturl . ?action=reminder, ; emaildata = loadEmailTemplateresend_activate_message, replacements, emptyrow[lngfile] || emptymodSettings[userLanguage] ? language : row[lngfile]; sendmailrow[email_address], emaildata[subject], emaildata[body], null, null, false, 0; context[page_title] = txt[invalid_activation_resend]; This will ensure we dont actually get an error message if it works context[error_title] = ; fatal_lang_erroremptyemail_change ? change_email_success : resend_email_success, false; } Quit if this code is not right. if empty_REQUEST[code] || row[validation_code] = _REQUEST[code] { if emptyrow[is_activated] fatal_lang_erroralready_activated, false; elseif row[validation_code] == { loadLanguageProfile; fatal_errortxt[registration_not_approved] . a href= . scripturl . ?action=activate;user= . row[member_name] . . txt[here] . a., false; } Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu context[sub_template] = retry_activate; context[page_title] = txt[invalid_activation_code]; context[member_id] = row[id_member]; return; } Let the integration know that theyve been activated call_integration_hookintegrate_activate, arrayrow[member_name]; Validation complete - update the database updateMemberDatarow[id_member], arrayis_activated = 1, validation_code = ; Also do a proper member stat re-evaluation. updateStatsmember, false; if isset_POST[new_email] { require_oncesourcedir . Subs-Post.php; adminNotifyactivation, row[id_member], row[member_name]; } context += array page_title = txt[registration_successful], sub_template = login, default_username = row[member_name], default_password = , never_expire = false, description = txt[activate_success] ; } This function will display the contact information for the forum, as well a form to fill in. function CoppaForm { global context, modSettings, txt, smcFunc; Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu loadLanguageLogin; loadTemplateRegister; No User ID?? if isset_GET[member] fatal_lang_errorno_access, false; Get the user details... request = smcFunc[db_query], SELECT member_name FROM {db_prefix}members WHERE id_member = {int:id_member} AND is_activated = {int:is_coppa}, array id_member = int _GET[member], is_coppa = 5, ; if smcFunc[db_num_rows]request == 0 fatal_lang_errorno_access, false; list username = smcFunc[db_fetch_row]request; smcFunc[db_free_result]request; if isset_GET[form] { Some simple contact stuff for the forum. context[forum_contacts] = emptymodSettings[coppaPost] ? modSettings[coppaPost] . br br : . emptymodSettings[coppaFax] ? modSettings[coppaFax] . br : ; context[forum_contacts] = emptycontext[forum_contacts] ? context[forum_name_html_safe] . br . context[forum_contacts] : ; Showing template? if isset_GET[dl] { Shortcut for producing underlines. context[ul] = unbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nb sp;nbsp;nbsp;nbsp;nbsp;nbsp;u; Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu context[template_layers] = array; context[sub_template] = coppa_form; context[page_title] = txt[coppa_form_title]; context[coppa_body] = str_replacearray{PARENT_NAME}, {CHILD_NAME}, {USER_NAME}, arraycontext[ul], context[ul], username, txt[coppa_form_body]; } Downloading. else { The data. ul = ; crlf = \r\n; data = context[forum_contacts] . crlf . txt[coppa_form_address] . : . crlf . txt[coppa_form_date] . : . crlf . crlf . crlf . txt[coppa_form_body]; data = str_replacearray{PARENT_NAME}, {CHILD_NAME}, {USER_NAME}, br, br , arrayul, ul, username, crlf, crlf, data; Send the headers. headerConnection: close; headerContent-Disposition: attachment; filename=approval.txt; headerContent-Type: . context[browser][is_ie] || context[browser][is_opera] ? applicationoctetstream : applicationoctet- stream; headerContent-Length: . countdata; echo data; obExitfalse; } } else { context += array page_title = txt[coppa_title], sub_template = coppa, ; context[coppa] = array Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu body = str_replace{MINIMUM_AGE}, modSettings[coppaAge], txt[coppa_after_registration], many_options = emptymodSettings[coppaPost] emptymodSettings[coppaFax], post = emptymodSettings[coppaPost] ? : modSettings[coppaPost], fax = emptymodSettings[coppaFax] ? : modSettings[coppaFax], phone = emptymodSettings[coppaPhone] ? : str_replace{PHONE_NUMBER}, modSettings[coppaPhone], txt[coppa_send_by_phone], id = _GET[member], ; } } Show the verification code or let it hear. function VerificationCode { global sourcedir, modSettings, context, scripturl; verification_id = isset_GET[vid] ? _GET[vid] : ; code = verification_id isset_SESSION[verification_id . _vv] ? _SESSION[verification_id . _vv][code] : isset_SESSION[visual_verification_code] ? _SESSION[visual_verification_code] : ; Somehow no code was generated or the session was lost. if emptycode { headerContent-Type: imagegif; die\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\x00\x0 0\x00\x00\x00\x00\x21\xF9\x04\x01\x00\x00\x00\x00\x2C\x00\x00\x00\x00\ x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3B; } Show a window that will play the verification code. elseif isset_REQUEST[sound] { loadLanguageLogin; loadTemplateRegister; Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu context[verification_sound_href] = scripturl . ?action=verificationcode;rand= . md5mt_rand . verification_id ? ;vid= . verification_id : . ;format=.wav; context[sub_template] = verification_sound; context[template_layers] = array; obExit; } If we have GD, try the nice code. elseif empty_REQUEST[format] { require_oncesourcedir . Subs-Graphics.php; if in_arraygd, get_loaded_extensions showCodeImagecode headerHTTP1.1 400 Bad Request; Otherwise just show a pre-defined letter. elseif isset_REQUEST[letter] { _REQUEST[letter] = int _REQUEST[letter]; if _REQUEST[letter] 0 _REQUEST[letter] = strlencode showLetterImagestrtolowercode{_REQUEST[letter] - 1} { headerContent-Type: imagegif; die\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\x00\x0 0\x00\x00\x00\x00\x21\xF9\x04\x01\x00\x00\x00\x00\x2C\x00\x00\x00\x00\ x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3B; } } You must be up to no good. else { headerContent-Type: imagegif; die\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\x00\x0 0\x00\x00\x00\x00\x21\xF9\x04\x01\x00\x00\x00\x00\x2C\x00\x00\x00\x00\ x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3B; Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu } } elseif _REQUEST[format] === .wav { require_oncesourcedir . Subs-Sound.php; if createWaveFilecode headerHTTP1.1 400 Bad Request; } We all die one day... die; } See if a username already exists. function RegisterCheckUsername { global sourcedir, smcFunc, context, txt; This is XML loadTemplateXml; context[sub_template] = check_username; context[checked_username] = isset_GET[username] ? _GET[username] : ; context[valid_username] = true; Clean it up like mother would. context[checked_username] = preg_replace~[\t\n\r \x0B\0 . context[utf8] ? context[server][complex_preg_chars] ? \x{A0}\x{AD}\x{2000}-\x{200F}\x{201F}\x{202F}\x{3000}\x{FEFF} : \xC2\xA0\xC2\xAD\xE2\x80\x80- \xE2\x80\x8F\xE2\x80\x9F\xE2\x80\xAF\xE2\x80\x9F\xE3\x80\x80\xEF\xB B\xBF : \x00-\x08\x0B\x0C\x0E-\x19\xA0 . ]+~ . context[utf8] ? u : , , context[checked_username]; if smcFunc[strlen]context[checked_username] 25 context[checked_username] = smcFunc[htmltrim]smcFunc[substr]context[checked_username], 0, 25; Only these characters are permitted. Raksa Griya Ramadhan, 2016 PENERAPAN PEMBELAJARAN PROBLEM POSING BERBANTU MULTIMEDIA INTERAKTIF PADA MATA PELAJARAN JARINGAN DASAR UNTUK MENINGKATKAN PEMAHAMAN SISWA SMK. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu if preg_match~[\=\\\]~, preg_replace~?:\\d{1,7}|x[0-9a- fA-F]{1,6};~, , context[checked_username] = 0 || context[checked_username] == _ || context[checked_username] == | || strposcontext[checked_username], [code == false || strposcontext[checked_username], [code == false context[valid_username] = false; if stristrcontext[checked_username], txt[guest_title] == false context[valid_username] = false; if trimcontext[checked_username] == context[valid_username] = false; else { require_oncesourcedir . Subs-Members.php; context[valid_username] = isReservedNamecontext[checked_username], 0, false, false ? 0 : 1; } } ?

9. Login dan Log Out