This commit is contained in:
2025-07-10 23:55:26 +08:00
commit f140c92ddd
1840 changed files with 184740 additions and 0 deletions

1
.htaccess Normal file
View File

@@ -0,0 +1 @@

26
404.html Normal file
View File

@@ -0,0 +1,26 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>404</title>
<style>
body{
background-color:#444;
font-size:14px;
}
h3{
font-size:60px;
color:#eee;
text-align:center;
padding-top:30px;
font-weight:normal;
}
</style>
</head>
<body>
<h3>404您请求的文件不存在!</h3>
</body>
</html>

1013
api.php Normal file

File diff suppressed because it is too large Load Diff

437
config.php Normal file
View File

@@ -0,0 +1,437 @@
<?php
/**
* 冰雪传奇H5
* 2022 XX信息科技有限公司
*
* @author 123456
* @wx 123456
* @qq 123456
*/
ob_start();
session_start();
date_default_timezone_set('PRC');
define('BASE_KEY', 'Zf$N%UQ^AMWd3mNyb%Dw5i%L#dNCBea$'); // 通用加密秘钥
define('PASSWORD_KEY', 'WVImV8mIMnpY9Lrmh3yoaJ2yRLNACBfg'); // 玩家密码加密秘钥
// 数据库配置
$_CONFIG_DB = [
'db_host' => '121.36.201.12',
'db_port' => 32506,
'db_name' => 'mir_web',
'db_user' => 'root',
'db_password' => 'mysql_Adkijc',
'db_charset' => 'utf8',
];
$mir_actor_s1_port = 32506;
// LINUXDO三方登录
$_LINUXDO_CONNECT = [
'client_id'=>'tfKevot5lSwB5A5gcqPQMMhaXDLjib0P',
'client_secret'=>'95KWP8sbRIUu5df7gBo5fIztz6ISmvfa'
];
// 网站IP+端口
$_host = $protocol.$_SERVER['HTTP_HOST'];
$_port = 80;
// 主配置
$_CONFIG = [
'web_url' => 'http://'.$_host.(80 != $_port ? ':'.$_port : ''),
'host' => $_host, // 网站IP
'port' => $_port, // 网站端口
// 游戏IP+端口
'game_host' => $_host, // 游戏服务器IP
'game_port' => 9000, // 游戏网关起始端口1区则9001
'game_name' => '清渊传奇', // 游戏名字
'game_first_name' => '清渊', // 游戏名字前缀
'game_description' => '经典复古 爽快耐玩', // 游戏描述
'copyright' => '2022 &copy; XX信息科技有限公司',
// 请勿更改
'spid' => 1,
'pf' => 'yfbx',
'pf_id' => 10001,
// 提现配置
'withdraw' => [
'sid' => 1, // 开启提现的区ID0表示关闭提现功能
'type' => 3, // 提现的货币类型2=金币,3=银两,4=元宝
'ratio' => 10000 // 提现比例10000货币值=1元
],
// 游戏货币配置
'currency_list' => [2 => '金币', 3 => '银两', 4 => '元宝'], // 货币列表
'currency_field' => [2 => 'bindcoin', 3 => 'bindyuanbao', 4 => 'nonbindyuanbao'], // 货币字段名(请勿更改)
// 客服信息
'kf_qq' => '123456',
'kf_wx' => '123456',
// 帐号密码别名
'account_name' => '通行证',
'account_name_suffix' => '号',
'password_name_suffix' => '密文',
'admin_account' => 'admin', // 管理员帐号
'reg_open' => 1, // 是否开放注册
'login_open' => 1, // 是否开放登录
'day_max_reg' => 1, // 单个玩家每日注册帐号数量上限
//'allow_ip' => '', // 允许访问的IP
'deny_ip' => '127.0.0.1', // 禁用IP
'code_open' => 1, // 验证码(总开关)是否开启:用于注册/找回密码验证
'reg_code_open' => 0, // 注册是否需要验证码
'code_type' => 'email', // email=邮件mobile=手机短信(未实现)
'code_length' => 6, // 验证码最大长度请勿设置大于6
'code_data_type' => 'NUMBER', // 验证码字符类型NUMBER=纯数字CHAR=大小写字母ALL=大小写字母+数字+符号
'code_send_interval' => 60, // 发送验证码时间间隔(秒)
// 发送邮件配置
'mail_from' => 'admin@163.com', // 发件人邮箱
'mail_password' => '123456', // 发件人邮箱密码
'mail_host' => 'smtp.163.com', // 发件SMTP服务器
'mail_port' => 465, // 发件SMTP服务器端口
'mail_charset' => 'UTF-8',
// 注册保留帐号
'retain_account' => 'administror,admin',
// 登录过期时间默认30天
'session_time' => time() + (86400 * 30),
'agree' => '<div style="padding: 15px;">
<span style="color:#000000;">前言<br>
本《用户服务协议》(以下简称“本协议”)是由您(以下称为“用户”)与广东夜风信息技术有限公司(以下称为“夜风”)就夜风在其和/或其关联公司的游戏平台上所提供的产品和服务(包括夜风的网站以及夜风现在正在提供和将来可能向用户提供的游戏服务和其他网络服务,以下统称为“产品和服务”)所订立的协议。<br>
&nbsp;<br>
<strong>重要须知:</strong><br>
<strong>1、本协议在用户获得及使用</strong><strong>夜风</strong><strong>游戏产品和服务之日签订并生效。本协议的订立、履行、解释及争议的解决均适用中华人民共和国法律并排除其他一切冲突法的适用。本协议订立于</strong><strong>广东省广州市天河区</strong><strong>。如双方就本协议的内容或其执行发生任何争议(包括但不限于合同或者其他财产性权益纠纷),双方应友好协商解决;协商不成时,双方同意交由</strong><strong>夜风所在地</strong><strong>有管辖权的</strong><strong>人民法院管辖并处理。</strong><br>
<strong>2、请用户仔细阅读本协议内容特别是</strong><strong>加粗字体</strong><strong>的内容)。如用户不同意本协议的任意内容,请不要注册或使用夜风提供的任何产品和服务。如用户通过进入注册程序并勾选“我已阅读并同意用户服务</strong><strong>协议与</strong><strong>隐私协议”,即表示用户与夜风已达成协议,自愿接受本协议</strong><strong>及《用户隐私协议》</strong><strong>的所有内容。此后,用户不得以未阅读/未同意本协议</strong><strong>及《用户隐私协议》</strong><strong>的内容作任何形式的抗辩。</strong><br>
<strong>3、</strong><strong>请注意,夜风可能适时对本协议进行修改与更新,用户同意将随时留意查看本协议的最新版本。请在使用夜风的产品(或服务)前,仔细阅读并了解本协议,以确保对本协议的最新版本始终保持了解。</strong><strong>如</strong><strong>用户不同意或不接受本协议条款内容的,请不要继续使用</strong><strong>夜风</strong><strong>游戏提供的产品和服务</strong><strong>,否则视为用户同意接受修订后的本协议内容。</strong><br>
<strong>4、夜风游戏特别提醒用户认真阅读本协议的全部条款特别是其中免除或者限制夜风游戏责任的条款该等条款通常含有“不负责”、“不保证”等词汇、限制用户权利的条款该等条款通常含有“不得”、“不应”、“不允许”、“禁止”等词汇、法律适用和争议解决条款这些条款应在中国法律所允许的范围内最大程度地适用该类条款通常用红色字体标示。</strong><br>
<strong>5、如果用户未满18周岁请在法定监护人的陪同下阅读本协议并特别注意未成年人使用条款。</strong><strong>如未成年人继续使用夜风游戏提供的游戏及服务的,视为未成年人用户已取得法定监护人对该用户享用夜风游戏提供的游戏和服务、向夜风游戏支付费用的行为,以及对本协议全部条款的同意。</strong><br>
&nbsp;<br>
<strong>一、服务内容</strong><br>
1.1. 夜风产品和服务的具体内容由夜风根据实际情况提供例如网络游戏、手机软件、论坛BBS、聊天室、电子邮件等。夜风保留随时变更、中断或终止部分或全部产品和服务的权利。<br>
1.2. 夜风在提供产品和服务时,可能会对部分用户收取一定的费用。在此情况下,相关页面上会有明确的提示。如用户不同意支付该等费用,可选择不接受相应的产品和服务。<br>
1.3. 夜风通过服务器端设备接入互联网为用户提供产品和服务,除此之外与产品和服务有关的设备(如电脑、手机、调制解调器及其他与接入互联网有关的装置)及所需的费用(如为接入互联网而支付的电话费及上网费)均应由用户自行负担。<br>
1.4. 用户应使用正版软件接受产品和服务,软件费用由用户自行负担。<br>
<strong>二、帐号名称和密码</strong><br>
2.1. 用户阅读并同意本协议,成功完成注册后,即成为夜风的注册用户,取得夜风用户帐号(以下称<strong>“夜风帐号”</strong>)。夜风帐号名称在注册之后不可变更,而帐号对应的密码则可以通过夜风提供的客户服务进行修改。<br>
2.2. 用户对于夜风帐号及密码的保管以及使用该帐号和密码所进行的一切行为负有完全的责任。夜风禁止用户将夜风帐号或密码进行销售、转让或出借、共享给他人使用。<strong>因为用户的保管疏忽或任何第三方行为,导致用户的夜风帐号或密码遭他人非法使用,以及因此而产生的任何后果,夜风均不承担任何责任。</strong><br>
2.3. 用户发现其夜风帐号或密码被他人非法使用或有使用异常情况的,应及时根据夜风不时公布的处理方式通知夜风,并有权请求夜风采取措施暂停该帐号的登录和使用。<strong>夜风根据用户身份核对结果,有权决定是否暂停用户帐号的登录和使用。</strong><br>
<strong>2.</strong><strong>4. 如果用户选择通过“快速游戏”、“游客”或其他类似便捷模式(下称“游客模式”),在未注册用户帐号的前提下快速登录游戏的,请用户登录后及时绑定用户帐号;如用户未绑定用户帐号的,则一旦用户选择卸载、重装夜风的产品或游戏软件的,或用户的移动智能设备、电脑损坏导致产品或游戏软件无法正常启动的,用户在游客模式下的全部游戏数据、游戏记录等内容将无法查询、恢复。</strong><br>
<strong>三、帐号注册信息</strong><br>
3.1. 提供注册信息<br>
1在申请夜风帐号时或注册后补充信息时用户应当向夜风提供最新、详细及真实准确的个人注册信息。前述个人注册信息包括用户的夜风帐号名称、密码及注册夜风帐号或补充、更新帐号信息时输入的所有信息。<strong>用户在此承诺:用户应依据相关法律法规的规定及夜风提供的相关指引以其真实身份注册成为夜风的用户,并保证所提供的个人身份资料信息真实、完整、有效,依据法律规定和必备条款约定对所提供的信息承担相应的法律责任,未进行实名认证的用户部分夜风账号功能将可能被限制。夜风应当为用户提供帐号注册人证明、原始注册信息等必要的协助和支持,并根据需要向有关行政机关和司法机关提供相关证据信息资料。</strong><br>
2所有由用户提供的个人注册信息将可能被夜风用来作为认定夜风帐号的关联性以及辨别用户身份的唯一依据。用户同意应夜风的要求随时提供该等信息的证明材料以便夜风核实用户身份。<br>
<strong>3如果用户提供给夜风的信息不准确或不真实或非法无效或已变更而未及时更新或有任何误导之嫌夜风有权中止或终止该用户使用夜风的任何服务直至用户提供符合要求的信息。夜风采取中止措施应当通知用户并告知中止期间中止期间应该是合理的中止期间届满夜风应当及时恢复对用户的服务。</strong><br>
4夜风有权审查用户注册所提供的身份信息是否真实、有效并应积极地采取技术与管理等合理措施保障用户帐号的安全、有效用户有义务妥善保管其帐号及密码并正确、安全地使用其帐号及密码。任何一方未尽上述义务导致帐号密码遗失、帐号被盗等情形而给对方或他人的权利造成损害的应当承担由此产生的法律责任。<br>
3.2. 查询注册信息<br>
用户有权随时通过登录夜风官方网站,在“用户中心”页面访问和查阅用户注册信息及个人信息。<br>
3.3. 修改注册信息<br>
用户有权随时通过登录夜风官方网站,在“用户中心”页面,或通过夜风公布的其他途径,更新或修改用户申请注册时所提供的信息。夜风应当及时、有效地为其提供该项服务。但是,用户在注册夜风帐号时(或注册后补充信息时)填写的真实姓名、证件号码,以及夜风帐号名称本身<strong></strong><strong>在帐号注册成功后(或补充信息后)如无特殊原因将无法进行修改,请用户慎重填写各类注册信息。</strong><br>
<strong>3.4. </strong><strong>用户同意,与其夜风帐号相关的一切资料、数据和记录(包括但不限于登录记录、登录后行为记录、点卡信息等)均以夜风系统记录的数据为准。</strong><br>
<strong>四、信息披露与保护</strong><br>
4.1. 本协议第三条所描述的注册信息,以及用户在使用产品和服务时存储在夜风控制范围内的非公开信息(以下合称<strong>“用户信息”</strong>),应按照本条约定进行披露及保护。<br>
4.2. 为了向用户提供更好的产品和服务,在用户自愿选择使用夜风的产品和服务的情况下,或者明示同意提供信息的情况下,夜风可能会收集用户信息,并可能对这些信息进行分析和整合。在用户使用夜风的产品和服务时,服务器可能会自动记录部分用户信息,这些信息都将成为夜风商业秘密的一部分。<br>
4.3. 保护用户(特别是未成年人用户)的隐私是夜风的一项基本原则。夜风一贯积极地采取技术与管理等方面的合理措施保障用户信息的安全、保密。<br>
4.4. 除本条所列下述情形之外,夜风保证不对外公开或向第三方披露、提供用户信息。但以下情形除外:<br>
1用户或者用户的监护人要求或同意夜风披露用户信息<br>
2有关法律法规要求夜风披露用户信息<br>
3司法机关或行政机关基于法定程序要求夜风披露用户信息<br>
4为保护夜风的合法权益知识产权和其他权益向用户提起诉讼或者仲裁时需要披露用户信息<br>
5在紧急情况下为保护其他用户和社会公众的利益需要披露用户信息<br>
6根据本协议其他条款的规定夜风游戏认为确有必要披露用户信息的其他情况。<br>
4.5. 为了向用户正常地提供产品和服务,夜风可能需要向夜风的技术服务商、夜风的关联公司或其他第三方传送部分用户信息,在这些第三方承诺其具有合法经营资质并将承担至少与夜风同等的保密义务的前提下,夜风将向这些第三方传送用户信息,用户对此予以理解和同意。<br>
4.6. 在不透露单个用户隐私资料的前提下,夜风有权对整个用户信息数据库进行技术分析并对已进行分析、整理后的用户数据库进行商业上的利用。<br>
4.7. 夜风将采取行业内通用的、合理可行的方式保护用户的个人信息的安全。夜风使用通常可以获得的安全技术和程序来保护用户的个人信息不被未经授权地访问、使用或泄漏,包括但不限于:防火墙和数据备份措施;数据中心的访问权限限制;对移动终端的识别性信息进行加密处理等。<br>
<strong>五、用户的基本权利</strong><br>
5.1. 用户可以根据本协议以及夜风不时公布和变更的其他规则使用夜风提供的产品和服务。<br>
5.2. 用户可以自愿选择通过手机绑定夜风提供的页面,从而在第一时间获得夜风提供的游戏活动、优惠信息等内容。<br>
5.3. 用户有权在使用夜风提供的产品和服务期间监督夜风及夜风的工作人员是否按照夜风所公布的标准向用户提供产品和服务,也可以随时向夜风提出与产品和服务有关的意见和建议。<br>
5.4. 如果用户不同意本协议条款,或对夜风后来修改、更新的条款有异议,或对夜风所提供的产品和服务不满意,用户可以随时选择停止使用夜风的产品和服务。<strong>如果用户选择停止使用夜风的产品和服务,夜风不再对用户承担任何义务和责任。</strong><br>
<strong>六、用户行为守则</strong><br>
6.1. 用户同意按照包括本协议在内的、夜风不时发布或变更的各类规则规范自己的行为,从而接受并使用夜风的产品和服务。用户对登录后其所持帐号产生的行为依法享有权利和承担责任。<strong>用户进一步同意在违反这些规则时按照本协议第六条第14款、第15款、第十四条及其他相关条款的规定承担违规后果和违约责任。</strong><br>
6.2. 用户在使用夜风帐号期间,须遵守与互联网信息发布相关的法律、法规及通常适用的互联网一般道德和礼仪的规范,用户将自行承担用户所发布的信息内容产生的全部责任。用户发布的各类信息,不得包含以下内容:<br>
1违背宪法所确定的基本原则的<br>
2危害国家安全泄露国家秘密颠覆国家政权破坏国家统一的<br>
3损害国家荣誉和利益的<br>
4煽动民族仇恨、民族歧视破坏民族团结的<br>
5破坏国家宗教政策宣扬邪教和封建迷信的<br>
6散布谣言扰乱社会秩序破坏社会稳定的<br>
7传播淫秽、色情、赌博、暴力、凶杀、恐怖信息或者教唆犯罪的<br>
8侮辱、诽谤或恶意用言语攻击他人侵害他人合法权益的<br>
9侵犯任何第三者的知识产权版权或公众私人权利的<br>
10违反社会公德、人文道德、风俗习惯的<br>
11破坏游戏正常秩序的<br>
12含有法律、行政法规禁止的其他内容的。<br>
6.3. 用户的夜风帐号名称及游戏中的人物、帮派等名称应当遵守合法、健康的原则,不允许使用包括但不限于涉及种族、宗教、政治、国家领导人、淫秽、低俗、诽谤、恐吓、欺诈性的、攻击性的、污辱性的、可能引起误会的、违禁药品等内容的名称。<br>
6.4. 用户应当对自己在游戏中的言行负责,尤其不得:<br>
1通过任何方式、行为散布或传播低俗、不雅、违背公序良俗的信息<br>
2通过任何方式、行为冒充平台或游戏系统向其他用户散布或传播虚假信息<br>
3通过任何方式或途径引起纷争<br>
4通过任何方式、行为散布或传播、使用私服、木马、外挂、病毒及此类信息<br>
5通过任何方式、行为散布或传播代练的信息<br>
6通过任何方式、行为传播或进行游戏帐号、虚拟货币、虚拟道具的在非夜风游戏认可的平台上进行交易又称“线下交易”<br>
7大量传播相同的、类似的短语或无意义的文字或者任何与夜风平台及其游戏无关的信息<br>
8宣扬、鼓动任何游戏虚拟世界之外的暴力行为<br>
9泄露其它用户、非用户或夜风平台相关的任何游戏世界和现实世界信息<br>
10宣传或发布违法信息、违反社会公德的信息或不利于精神文明建设的信息包括但不限于色情、赌博、邪教、恐怖主义等内容<br>
11通过任何方式、行为散布任何种类的广告信息及广告链接<br>
12发布诋毁或攻击夜风的言论或信息<br>
13其他不符合法律法规、社会公德或游戏规则的言论或行为。<br>
6.5. 用户不得干扰、阻碍夜风正常地提供产品和服务,尤其不得:<br>
1攻击、侵入夜风的网站服务器或使网站服务器过载<br>
2破解、修改夜风提供的客户端程序<br>
3攻击、侵入夜风的游戏服务器或游戏服务器端程序或使游戏服务器过载<br>
4不合理地干扰或阻碍他人使用夜风所提供的产品和服务<br>
5利用程序的漏洞和错误Bug破坏游戏的正常进行或传播该漏洞或错误Bug<br>
6直接或间接利用游戏Bug包括游戏系统、程序、设定等方面存在的漏洞或不合理的现象、程序漏洞、非法手段获利或扰乱游戏秩序、违反游戏规则或者通过非法手段利用游戏Bug、程序漏洞修改游戏数据以达到个人目的<br>
7制作、使用、发布、传播任何形式的妨碍游戏公平性的辅助工具或程序指用于在游戏中获取优势但不属于夜风平台或各游戏软件的一部分的任何文件或程序包括作弊性质的外挂以及相关辅助性质的外挂等包括但不限于自动打怪、自动练级、自动吃药、自动完成任务、加速性质或超出游戏设定范围等操作<br>
8擅自修改客户端程序使之改变或者新增或者减少夜风平台所预先设定的功能或者导致客户端向服务器发送的数据出现异常的一切行为<br>
9在夜风提供的游戏或服务内恶意拉人或从事任何不正当竞争行为包括但不限于恶意发布与夜风相关运营游戏开服信息、开服活动、以及一切开服入驻奖励政策、渠道充值溢价返利、或攻击性及诽谤性质言论或使用含有淫秽、色情、赌博、暴力、迷信等不健康/违法内容的文字、图片、音频、视频等方式诱导其他用户或利用公会将夜风原有用户引导入其他非夜风运营的游戏或提供的服务内。<br>
6.6. 用户不得扰乱游戏秩序,尤其不得:<br>
1长时间停留在特殊地点或敏感地区包括但不限于活动报名人、“移民使者”、传送人、传送点等处干扰其他用户游戏<br>
2进行恶意PK、清场、敲诈、勒索等行为<br>
3扬言进行或煽动其他用户或非用户参与非正常游戏内容的行为包括但不限于游行、聚众闹事等<br>
4以相似昵称的人物冒充他人好友、冒充NPC或官方角色等方式在游戏内外进行欺诈。<br>
6.7. 用户可以与游戏管理员(以下称为<strong>“GM”</strong>进行交流但在与GM交流时不得做出以下行为<br>
1冒充系统或GM<br>
2欺骗或试图欺骗GM包括但不限于误导GM、拒绝提供信息、提供虚假信息以及任何试图“诈骗”GM的行为<br>
3违反或忽视GM做出的提示。在游戏中为了确保大多数用户的共同利益维护正常的游戏秩序GM可能会提示用户执行某些操作或停止执行某些操作用户不得忽视或阻挠该项工作的进行<br>
4干扰GM工作。干扰GM工作包括但不限于向GM索取任何游戏虚拟物品包括但不限于虚拟货币、游戏道具等频繁呼叫GM或发送无实质性内容的请求反复向GM发送已解答或解决问题的帮助请求<br>
5辱骂、威胁或恶意攻击GM。<br>
6.8. 用户必须保管好自己的帐号和密码,由于用户的原因导致帐号和密码泄密而造成的后果均将由用户自行承担。<br>
<strong>6.</strong><strong>9. </strong><strong>牟取不正当利益行为处理规则</strong><br>
<strong>用户承诺不以营利为目的从事游戏行为或交易虚拟物品,任何以营利为目的从事游戏行为或交易虚拟物品的情形将被视为牟取不正当利益,包括但不限于用户:</strong><br>
<strong>(1)注册多个用户帐号和/或游戏角色ID以营利为目的进行游戏行为</strong><br>
<strong>(2)从事游戏内单一或系列产出玩法,将获得的虚拟物品出售获利;</strong><br>
<strong>(3)利用不同服务器的虚拟物品价值差异,在不同服务器买卖虚拟物品获利;</strong><br>
<strong>(4)充当游戏帐号、虚拟物品交易中介收取费用获利;</strong><br>
<strong>(5)在非</strong><strong>夜风</strong><strong>公司提供或认可的交易平台上交易用户帐号或虚拟物品获利;</strong><br>
<strong>(6)将游戏内获得的虚拟物品用于出售获利而不注重本身角色实力的提升,角色多个技能、修炼、装备、召唤兽水平与角色等级相差较大的;</strong><br>
<strong>(7)利用游戏行为和游戏内容组织或参与赌博、实施或参与实施盗窃他人财产或虚拟物品等涉嫌违法犯罪行为的;</strong><br>
<strong>(8)其他任何不以正常的游戏娱乐互动需要为目的的游戏内牟利行为。</strong><br>
&nbsp;<br>
6.10. 用户不得利用夜风提供的产品和服务从事以下活动:<br>
1未经允许进入夜风计算机信息网络系统或者使用计算机信息网络系统资源的<br>
2未经允许对计算机信息网络功能进行删除、修改或者增加的<br>
3未经允许对进入计算机信息网络中存储、处理或者传输的数据和应用程序进行删除、修改或者增加的<br>
4故意制作、传播计算机病毒等破坏性程序的<br>
5其他危害计算机信息网络安全的行为。<br>
6.11. 用户同意以游戏程序中的监测数据作为判断用户是否有通过使用外挂程序等方法进行的游戏作弊行为的依据。<br>
6.12. 如果夜风发现用户行为或者数据异常,可以观察及记录该用户行为,并以观察和记录的结果作为判断用户是否实施了违反本协议用户行为守则的依据。<br>
<strong>夜风积极保护用户的帐号、虚拟物品及虚拟货币的安全,为此,夜风对盗号及盗号相关行为展开严厉的打击。夜风发现或者怀疑存在包括但不限于以下的盗号及盗号相关行为时,有权视情况按照本协议第</strong><strong>6.13</strong><strong>款</strong><strong>、第</strong><strong>6</strong><strong>.14</strong><strong>款、第十四条及其他相关条款的规定处理同时夜风保留进一步追诉的权利1盗取帐号2盗取虚拟物品3盗取虚拟货币4盗取帐号或/及密码5异常IP下的物品转移6其他盗号及盗号相关行为。为了维护游戏的公平与秩序即使用户没有主动的参与盗号但是用户的物品来源于盗号或者盗号相关行为的夜风也有权自行判断回收、冻结涉及盗号的物品及帐号。用户应该配合夜风对盗号及盗号相关行为的调查。用户应该自觉维护游戏的秩序夜风发现或者怀疑存在虚假的盗号投诉时有权视情况按照本协议第</strong><strong>6</strong><strong>.</strong><strong>13款、第</strong><strong>6.</strong><strong>14款、第十四条及其他相关条款的规定处理。</strong><br>
<strong>6.</strong><strong>13. 若用户实施违反本条所述用户行为守则的行为,夜风有权视行为严重程度,向该用户</strong><strong>采取</strong><strong>以下一项或</strong><strong>多</strong><strong>项</strong><strong>处罚措施</strong><strong>,该用户应承担该等不利后果:</strong><br>
<strong>1警告警告是针对轻微违反游戏政策而做出的教育导向它是用于正常管理游戏运行的一种方式。</strong><br>
<strong>2禁言关闭违规用户的部分或全部聊天频道强制暂停违规用户角色的线上对话功能使该角色无法与其他用户对话直到此次处罚到期或取消。</strong><br>
<strong>3强制离线强制让违规用户离开当前游戏结束该用户当前游戏程序的执行。</strong><br>
<strong>4封停帐号暂停或永久终止违规用户使用夜风帐号登录某款游戏的权利。</strong><br>
<strong>5暂时隔离将违规用户的游戏角色转移至特殊游戏场景限制其局部游戏操作直到此次处罚到期或取消。</strong><br>
<strong>6删除档案将违规用户在某个游戏世界中的人物档案删除不让该人物再出现在游戏世界。</strong><br>
<strong>7删除帐号永久终止违规用户通过夜风帐号登录夜风平台的权利包括但不限于用户注册信息、角色信息、等级物品、游戏货币等游戏数据库中的全部数据都将被永久封禁。</strong><br>
<strong>8收回游戏虚拟物品对于违规用户因欺诈或其他违规行为而获取的游戏虚拟物品包括但不限于游戏虚拟货币、虚拟物品进行收回。</strong><br>
<strong>9修改名称强制修改违规用户论坛昵称、游戏人物或帮派等的名称。</strong><br>
<strong>10解散组织解散违规用户成立的帮派、公会等组织。</strong><br>
<strong>11倒扣数值针对游戏角色游戏数值进行扣除包括但不限于游戏角色等级、金钱、经验等。</strong><br>
<strong>12封禁IP暂时或永久禁止违规用户在某一异常IP登录某款游戏的某个服务器。</strong><br>
<strong>13撤销交易撤销用户通过夜风授权或指定的交易平台/网站进行的违规交易</strong><strong></strong><strong>将交易双方付出的游戏虚拟物品予以还原。</strong><br>
<strong>14交易限制暂时冻结用户在夜风授权/指定的交易平台中进行的违规交易所涉及的游戏虚拟物品或游戏账号,并持续考察用户在指定期限内的游戏内行为。如指定期限内其无再次违规的,到期将自动解冻相应的游戏虚拟物品或游戏账号;如指定期限内用户再次违规的,或在夜风认定违规行为存在时,夜风有权扣除用户游戏账号及/或游戏虚物品。</strong><br>
<strong>15承担法律责任违规用户的不当行为对他人或者夜风造成损害或者与现行法律规定相违背的违规用户应依法承担相应的民事、行政和或刑事责任例如用户在进行游戏过程中侵犯第三方知识产权或其他权利而导致被权利人索赔的由用户直接承担责任。</strong><br>
<strong>6.</strong><strong>14若用户实施违反本条所述用户行为守则的行为夜风还有权要求违规用户向夜风承担违约责任包括但不限于恢复原状消除影响对给夜风造成的直接及间接损失或额外的成本支出进行赔偿以及在夜风首先承担了因违规用户行为导致的行政处罚或侵权损害赔偿责任后由夜风向违规用户追偿。</strong><br>
<strong>6.</strong><strong>15. 用户只可在游戏内或者通过夜风授权/指定的交易平台</strong><strong>(如有,夜风将通过官网公告、游戏内公告、手机短信或其他可明确通知用户的方式进行通知)</strong><strong>进行游戏虚拟物品或游戏账号交易。对于用户在任何非夜风事先认可的平台进行其他交易的相关行为(包括但不限于用户通过第三方进行充值或游戏内虚拟物品的购买、游戏账户的买卖等),夜风将予以严厉打击和处罚。一经查证属实,夜风有权视具体情况根据本协议采取一种或多种处理措施,情节严重的,夜风保留追究用户法律责任的权利。</strong><br>
<strong>七、游戏管理</strong><br>
7.1. 游戏管理员<br>
1游戏管理员即GMGame Master指维护和管理游戏虚拟世界秩序的夜风在线工作人员。<br>
2GM不会干预游戏的正常秩序不会以任何方式索要用户的个人资料和密码不负责解决用户之间的私人纠纷或回答游戏的攻略、诀窍等问题。<br>
3用户在游戏中应当尊重、理解并配合GM的工作如有任何意见应通过专用信箱向客户服务中心申诉和举报。<br>
7.2. 游戏信息转移。夜风有权根据产品和服务的提供状况,安排拆分或合并游戏服务器。<strong>用户</strong><strong>知晓</strong><strong>并同意,夜风有权</strong><strong>根据自身经营安排</strong><strong>将用户在游戏中的人物信息、角色档案转移到其它游戏服务器。</strong><strong>此等转移行为并不影响用户继续使用夜风游戏服务,因此不属于违约情形。</strong><br>
7.3. 家长监护系统。夜风遵从国家政策在游戏中开设“未成年人家长监护系统”若父母监护人同意未成年人尤其是十岁以下子女使用产品和服务必须以父母监护人名义申请注册夜风帐号。在使用产品和服务时父母监护人应以监护人身份判断产品和服务是否适合未成年人。如果用户未满18周岁或夜风无法识别用户的年龄则用户将受到“未成年人家长监护系统”的约束。<strong>在监护人提供充分证据证明账号的实际使用人为未成年人时,夜风将有权根据有关规则以及</strong><strong>监护人</strong><strong>的要求,对用户创建或使用夜风帐号关联的游戏帐号进行限制,包括但不限于临时或永久冻结帐号,部分或者全部终止提供夜风各项产品和服务。</strong><br>
7.4. 防沉迷系统<br>
1如果用户未满法定年龄或夜风无法识别用户的年龄例如未填写实名身份信息被系统默认为未成年用户的则用户在游戏内的活动将受到“游戏防沉迷系统”监测如果用户拥有一个以上夜风帐号则该“游戏防沉迷系统”将同时适用于该用户的所有夜风帐号<br>
2“游戏防沉迷系统”通过按照连续游戏时间来逐级扣减游戏内收益的方式对用户长时间连续游戏的行为进行规制<br>
<strong>3用户需提供真实完整的信息以便夜风识别用户的身份并向有关部门提交实名认证信息如因提供的资料不真实而产生的后果由用户自行承担。</strong><br>
7.5. 在现有的技术条件下,夜风将尽合理的商业努力并根据有关监管部门的要求开发并维护“未成年人家长监护系统”、“游戏防沉迷系统”与实名认证系统,按“现状”提供给用户使用。由于技术不可避免的局限性以及系统运作各环节受外界的影响,夜风不保证各个系统不存在任何漏洞,不保证各系统能随时正常运作,亦不保证监护或认证效果完全满足用户的需求。夜风不提供任何适用法律明确规定之外的明示或默示担保,并不对此承担任何责任。<br>
<strong>八、资费政策</strong><br>
8.1. 夜风产品和服务的收费信息以及有关的资费标准、收费方式、购买方式及其他有关资费政策的信息,在夜风相关平台或游戏网站(包括但不限于夜风官网和相应游戏官方网站等网站)上作出说明。<br>
8.2. 夜风有权决定夜风所提供的产品和服务的资费标准和收费方式,夜风可能会就不同的产品和服务制定不同的资费标准和收费方式,也可能按照夜风所提供的产品和服务的不同阶段确定不同的资费标准和收费方式。另外,夜风也可能不时地修改夜风的资费政策。夜风会将有关产品和服务的收费信息以及与该产品和服务有关的资费标准、收费方式、购买方式或其他有关资费政策的信息放置在该产品和服务相关网页的显著位置。<br>
8.3. 对于夜风的收费产品和服务,用户应该按照夜风确定的资费政策购买夜风的产品和服务。<strong>如果用户未按夜风确定的资费政策购买夜风的产品和服务,夜风可以立即停止向用户提供该产品和服务。</strong><br>
<strong>8.</strong><strong>4. 除非法律另有明文规定,否则用户不得要求夜风返还用户已经支付予夜风的任何资费(以下简称“退款”),无论该等资费是否已被消费。夜风有权决定是否、何时、以何种方式向用户退款。夜风同意退款的,用户应补偿支付时使用信用卡、手机等支付渠道产生的费用,夜风有权在返还用户的资费中直接扣收。夜风在产品和服务提供过程中赠送的充值金额、虚拟货币、虚拟道具等,不予退款或变现。</strong><br>
<strong>九、虚拟物品</strong><br>
<strong>9.</strong><strong>1. 夜风(包括但不限于游戏平台、游戏、论坛)所提供的各种虚拟物品,不限于金币、银两、道具、装备等,其所有权归夜风或其合作方所有。用户只能在合乎法律和游戏规则的情况下拥有对虚拟物品的使用权。用户一旦购买了虚拟道具的使用权,将视为已经进入消费过程,不得以任何理由要求退还该虚拟道具或要求夜风退还相应款项。</strong><br>
<strong>9.</strong><strong>2. 夜风提供的服务或游戏中的各类虚拟物品,如对使用期限无特殊标识的,均默认用户可在获得使用权后持续使用,直至夜风提供的相应服务或游戏终止;如对使用期限有特殊标识的,则其使用期限以特殊标识的期限为准</strong><strong>(但最迟</strong><strong>不超过夜风提供相应服务或游戏终止的时间</strong><strong></strong><strong>。</strong><strong>超过使用期限的,夜风有权不另行通知用户而随时收回其使用权(该使用期限不因任何原因而中断、中止)。</strong><br>
<strong>9.</strong><strong>3. 除服务器大规模断线外,由于地方网络问题、个人操作问题等非可归责于夜风的原因导致造成的角色被删或回档、虚拟物品或金钱的损失,夜风无需向用户承担任何责任。</strong><br>
<strong>9.</strong><strong>4. 鉴于网上交易的复杂性,夜风不支持用户自行进行虚拟物品买卖的线下交易及线下交易相关行为(包括但不限于参与线下交易、协助线下交易者操作及转移游戏虚拟物品等一系列行为),并且不保护用户自行进行线下交易产生的任何交易结果,用户之间进行线下交易行为发生的任何问题、纠纷,包括但不限于被虚假交易信息诈骗金钱或者游戏虚拟物品的,均与夜风无关,用户将自行负责,夜风不负责赔偿或追回因受骗造成的损失。</strong><br>
<strong>9.</strong><strong>5. 夜风不支持线下交易,不认可用户线下交易所产生的交易结果,用户通过非夜风指定或夜风授权的平台/网站进行线下交易所获得的游戏虚拟物品将被认定为来源不符合游戏规则;夜风有权按照本协议第六条的约定,对线下交易及线下交易相关行为涉及的游戏虚拟物品、游戏角色与夜风帐号采取相应的措施。</strong><br>
<strong>十、服务方式、内容的变动与个人资料转移</strong><br>
10.1. 夜风将尽力持续地向用户提供产品和服务,但是在适用法律许可的最大范围内,并不排除夜风可能会停止提供任何产品和服务的可能性,也不排除任何改变游戏服务或其他网络服务的服务方式、服务内容的可能性。<br>
10.2. 为增加并丰富夜风提供的游戏及其他网络服务的内容,游戏和游戏平台在运行时可能不定期更新并调整其包含的功能。在游戏和游戏平台更新后,一切游戏和游戏平台内的操作、内容、设定,将以游戏和游戏平台中的公告内容为准。<br>
10.3. 如果夜风停止提供某一项产品和服务,或改变某一项产品和服务的方式或内容,夜风将会事先通知用户,并尽力寻找适当的服务提供者以接替夜风继续提供产品和服务。<br>
10.4. 在本条第3款所述情况下且在适用法律许可的最大范围内则夜风可能会将用户的个人资料包括有关的帐号和密码信息及个人资料转移给该继续提供服务的一方用户在此同意夜风有权做此转移和提供并且同意在夜风完成转移和提供之后夜风将不再对用户原有资料承担任何义务和责任。但是夜风并不保证夜风届时一定能够找到适当的服务提供者或服务方式以代替夜风继续提供产品和服务也不保证夜风找到的服务提供者所提供的产品和服务或者改变的游戏方式能够满足用户的要求。<br>
<strong>10.</strong><strong>5</strong><strong>. </strong><strong>用户可授权夜风指定或授权的交易平台/网站向夜风申请查询或操作用户游戏账号,经交易平台/网站的申请,夜风可以对用户账号进行查询、冻结、转移、更新、更改或解封等操作,并将相关操作内容及结果反馈给交易平台。但用户知悉并确认,夜风依据交易平台的申请进行任何操作行为或产生的任何操作结果不承担责任。</strong><br>
<strong>十一、服务中断或终止</strong><br>
11.1. 如发生下列任何一种情形,夜风有权随时中断或终止向用户提供本协议项下的游戏服务和其他网络服务,对于因而产生的不便和损失,<strong>夜风不承担任何责任:</strong><br>
1用户提供的个人资料不真实<br>
2用户违反本协议中规定的用户行为准则。<br>
<strong>11.</strong><strong>2. 用户清楚知悉夜风帐号存在</strong><strong>有效期(有效期以夜风公司对外公布为准),</strong><strong>并同意不定时登录夜风帐号以延续其有效期,用户清楚知悉夜风有权对超过有效期的夜风帐号进行注销并删除该帐号中的信息内容。</strong><br>
<strong>1用户在注册帐号后</strong><strong>若在6个月内</strong><strong>该帐号无登录使用记录,且该帐号从无任何充值记录的,夜风有权注销该帐号并删除该帐号中的信息内容。</strong><br>
<strong>2关于夜风所提供的不同产品和服务注销帐户/角色的其他条件,请参见各个产品和服务的具体规定,或相关产品和服务的官方网站上的具体规定。</strong><br>
11.3. 为了保障游戏及游戏平台网站和服务器的正常运行,夜风需要定期或不定期对游戏及游戏平台网站和服务器进行停机维护,或针对突发事件进行紧急停机维护。<strong>因上述情况而造成的正常服务中断、中止,用户予以理解并同意,夜风应尽力避免服务中断并将中断时间限制在最短时间内。</strong><br>
<strong>11.</strong><strong>4. 在适用法律许可的最大范围内,发生下列情形之一时,为了游戏网站和服务器的持续稳定运行,夜风有权不经提前通知,终止或中断游戏服务器所提供的全部或部分服务,对因此而产生的不便或损失,夜风对用户或第三人均不承担任何责任:</strong><br>
<strong>1定期检查或施工更新软硬件等</strong><br>
<strong>2服务器遭受损害无法正常运作</strong><br>
<strong>3突发性的软硬件设备与电子通信设备故障</strong><br>
<strong>4网络提供商线路或其他故障</strong><br>
<strong>5在紧急情况下依照法律的规定或为用户及第三者之人身安全</strong><br>
<strong>6第三方原因或其他不可抗力的情形。</strong><br>
11.5. 在适用法律许可的最大范围内,不管产品和服务由于任何原因终止,在夜风发布终止运营公告后,用户应在公告期内采取相应的措施自行处理游戏及游戏平台上的虚拟物品。产品和服务终止运营后,<strong>用户不得因终止服务而要求夜风承担除用户已经购买但尚未使用的游戏虚拟货币以外任何形式的赔偿或补偿责任,</strong>包括但不限于因不再能继续使用游戏帐号、游戏内虚拟物品等而要求的赔偿。<br>
<strong>十二、有限保证及免责声明</strong><br>
12.1. 对于夜风的产品和服务,夜风仅作本条所述有限保证,该有限保证取代任何文档、包装或其他资料中的任何其他明示或默示的保证(若有)。<br>
12.2. 夜风仅以“现有状况且包含所有错误”的形式提供相关的产品、软件或程序及任何支持服务,并仅保证:<br>
1夜风所提供的产品和服务能基本符合夜风正式公布的要求<br>
2夜风所提供的相关产品和服务基本与夜风正式公布的服务承诺相符<br>
3夜风仅在法律允许的合理范围内尽力解决夜风在提供产品和服务过程中所遇到的任何问题。<br>
<strong>12.</strong><strong>3. </strong><strong>在适用法律允许的最大范围内,夜风明确表示不提供任何其他类型的保证,不论是明示的或默示的,包括但不限于适销性、适用性、可靠性、准确性、完整性以及无错误的任何默示保证和责任。</strong><br>
<strong>12.</strong><strong>4. </strong><strong>在适用法律允许的最大范围内,夜风并不担保夜风所提供的产品和服务一定能满足用户的要求,也不担保提供的产品和服务不会被中断,并且不担保产品和服务的及时性、安全性及不受干扰,亦不担保无错误发生,以及信息能准确、及时、顺利地传送。</strong><br>
12.5. 用户理解并同意:通过夜风的产品和服务取得的任何信息、资料,是否信任及使用,完全取决于用户自己,并由用户承担由该等信任及使用带来的系统受损、资料丢失以及其它任何风险。夜风对在产品和服务中提及的任何第三方发出的信息(包括但不限于任何商品购物服务、交易进程、招聘信息等),都不作担保。<br>
<strong>12.</strong><strong>6. 如有系统故障、安全漏洞Security Vulnerability、程序缺陷Bug、程序出错等问题夜风有权把游戏的资料还原到一定日期以维护游戏之平衡。用户不得因此要求补偿或赔偿。</strong><br>
<strong>12.</strong><strong>7. </strong><strong>在适用法律允许的最大范围内,夜风对用户因使用夜风的产品和服务引起的任何间接、偶然、意外、特殊或继起的损害(包括但不限于人身伤害、隐私泄漏、因未能履行包括诚信或合理谨慎在内的任何责任、因过失和因任何其他金钱上的损失或其他损失而造成的损害赔偿)不负责任,这些损害可能来自:用户或他人不正当使用产品和服务、在网上购买商品或类似服务、在非夜风指定或授权的网上进行交易、非法使用服务或用户传送的信息有所变动。</strong><br>
12.8. 夜风对本协议项下涉及的境内外基础电信运营商的固定及移动通信网络的故障,各类技术缺陷、覆盖范围限制、不可抗力、计算机病毒、黑客攻击、用户所在位置、用户关机、合作方因素、他人故意或过失行为或其他非夜风技术能力范围内的原因造成的服务中断、用户发送的数据或短信息的内容丢失、出现乱码、错误接收、无法接收、迟延接收等等,均不承担责任。<br>
<strong>12.</strong><strong>9. 由于用户个人失误、错误、不当操作、未进行实名制认证等导致的任何后果,由用户自行承担责任,夜风不予任何赔偿或补偿。</strong><br>
<strong>12.</strong><strong>10.</strong>&nbsp;<strong>用户在</strong><strong>非夜风事先认可的</strong><strong>第三方交易平台进行交易,</strong><strong>所</strong><strong>产生的交易行为、交易结果或与交易平台产生的任何纠纷、法律责任</strong><strong>或用户个人账号及虚拟财产风险</strong><strong>均与夜风无关。</strong><br>
十三、<strong>知识产权及信息所有权</strong><br>
13.1. 夜风向用户通过产品和服务提供的游戏软件(包括具备客户端软件及不具备客户端软件的游戏)、其他软件、信息、作品及资料,其著作权、专利权、商标专用权及其它知识产权,均为夜风或其相应权利人所有。除非事先经夜风书面合法授权,或法律另有明文规定,任何人不得擅自以任何形式使用、复制、传播、伪造、模仿、修改、改编、翻译、汇编、出版、进行反编译或反汇编等反向工程,否则夜风有权立即终止向用户提供产品和服务,并依法追究其知识产权侵权责任,要求用户赔偿夜风的一切损失。<br>
13.2. 用户在使用产品和服务过程中产生并储存于夜风服务器中的任何数据信息(包括但不限于帐号数据信息、角色数据信息、等级物品数据信息等,但用户的姓名、身份证号、电话号码等个人身份数据信息除外)属于游戏或游戏平台的一部分,由夜风所有并进行管理,用户有权在遵守游戏规则的前提下通过夜风指定的途径对属于自身帐号的数据信息进行修改、转移、处分。<br>
13.3. 为保证准确及避免争议,本协议涉及到的有关技术方面的数据、信息,用户同意以夜风服务器所储存的数据作为判断标准,夜风保证该数据的真实性。<br>
<strong>十四、损害赔偿</strong><br>
<strong>用户若违反本协议或可适用的法律法规,导致夜风的母公司、子公司、其他关联公司、附属机构及其人员,受雇人、代理人及其他一切相关履行辅助人员因此受到损害或支出任何衍生费用(包括但不限于支付上述法律主体须就用户的违约或违法行为所进行的一切辩护或索偿诉讼及相关和解之法律费用),用户应承担补偿相关费用及支付损害赔偿的责任。</strong><br>
<strong>十五、协议的终止</strong><br>
<strong>用户应遵守本协议及有关法律法规的规定。夜风有权判断用户是否违反本协议。若夜风认定用户违反本协议或任何法律法规,夜风无需向用户进行事先通知的情况下,立即暂停或终止用户的帐号并删除用户帐号中的所有相关资料、档案及任何记录,以及限制、停止或取消用户的使用资格。</strong><br>
<strong>十六、修改和解释权</strong><br>
<strong>16.</strong><strong>1. 为了向用户及时、更好地提供产品和服务,基于对夜风本身、用户及市场状况不断变化的考虑,在法律最大适用范围内,夜风保留随时修改、新增、删除本协议条款的权利。修改、新增、删除本协议条款时,夜风将于官方网站公告修改、新增、删除的事实,而不另行对用户进行个别通知。若用户不同意夜风所修改、新增、删除的内容,可立即停止使用夜风所提供的服务。若用户继续使用夜风提供的服务,则视同用户同意并接受本协议条款修改、新增、删除后的内容,且不得因此而要求任何补偿或赔偿。</strong><br>
<strong>16.</strong><strong>2. 未经夜风事先书面同意,用户不得转让其在本协议项下的权利或义务。夜风有权通过夜风的子公司或其他关联公司行使其在本协议项下的权利或履行本协议项下的义务。</strong><br>
<strong>十七、广告与外部链接</strong><br>
17.1. 夜风的产品和服务中可能包含他人的商业广告或其它活动促销的广告。这些内容由广告商或商品/服务提供者提供并承担相应责任,夜风仅提供刊登内容的媒介。用户通过夜风或夜风所链接的网站所购买的该等服务或商品,其交易行为仅存于用户与该等商品或服务的提供者之间,与夜风无关,夜风无需就用户与该商品或服务的提供者之间所产生的交易行为承担任何法律责任。<br>
17.2. 用户可能在使用夜风的产品和服务过程中链接到第三方的站点。第三方的站点不由夜风控制,并且夜风也不对任何第三方站点的内容、第三方站点包含的任何链接、第三方站点的任何更改或更新负责。夜风仅为了提供便利的目的而向用户提供这些到第三方站点的链接,夜风所提供的这些链接并不意味着夜风认可该第三方站点,不意味着夜风担保其真实性、完整性、实时性或可信度。这些个人、公司或组织与夜风间亦不存在任何雇用、委任、代理、合伙或其它类似的关系。用户需要检查并遵守该第三方站点的相关规定。<br>
17.3. 用户理解并同意夜风通过电子邮件、短信或者其他方式向用户发送产品和服务或其他相关商业信息。<br>
<strong>十八、其他约定</strong><br>
18.1. 本协议的订立、效力、解释、履行及争议解决适用中华人民共和国法律。如果本协议的任何内容与法律相抵触,应以法律规定为准。<br>
18.2. 本协议的任何条款部分或全部无效的,不影响其它条款的效力。<br>
18.3.夜风需要向用户发送的通知等均可以通过夜风官网mir.317743968.cn公告、电子邮件、页面公告、电话或其他夜风认为合适的方式进行发送。如本协议内容条款变更、夜风提供的产品或服务内容/方式变更、或其他重要通知等,夜风将会以上述形式向用户发送通知。通知一经发送即视为送达,用户应及时查看相关内容。</span>
<br>
<br>
<br>
<br>
<h2 align="center">
<span style="color:#000000;"><span style="font-size: 28px;">隐私协议</span></span></h2>
<h2>
<br>
<span style="color:#000000;"><strong style="font-size: 12px;">前言</strong></span></h2>
<div>
<span style="color:#000000;">本《用户隐私协议》(以下简称“本协议”)是由您(以下称为“用户”)与广东夜风信息技术有限公司(以下称为“夜风”)就夜风在其和/或其关联公司的游戏平台上所提供的产品和服务(包括夜风的网站以及夜风现在正在提供和将来可能向用户提供的游戏服务和其他网络服务,以下统称为“产品和服务”)所订立的协议。<br>
<strong>用户在使用夜风的产品和服务时,夜风有权依本协议约定收集和使用用户的相关信息。</strong><br>
&nbsp;<br>
<strong>重要须知</strong><strong></strong><br>
<strong>1、</strong><strong>本协议应根据中华人民共和国法律解释与管辖并排除其他一切冲突法的适用。本协议订立于广东省广州市天河区,有关与用户和夜风之间发生的任何形式的争议均应友好协商解决。协商不能解决的,任一方均有权将争议提交至</strong><strong>夜风所在地</strong><strong>有管辖权的人民法院提起诉讼解决。</strong><br>
<strong>2</strong><strong>、</strong><strong>如果用户不同意本协议的任意条款,则不得注册或</strong><strong>(继续)</strong><strong>使用夜风提供的任何产品和服务。用户一旦点击确认“同意”(或其他具有同样含义的词,如“接受”等)进行注册、开始使用及/或继续使用夜风游戏服务,即表示用户与夜风已达成协议,自愿接受本协议的所有内容。此后,用户不得以未阅读/未同意本协议的内容作任何形式的抗辩。 </strong><br>
<strong>3</strong><strong>、请注意,夜风有权适时对本协议进行修改与更新,请用户随时留意查看本协议的最新版本。如用户不同意变更后的内容,用户可以选择停止使用夜风的产品或服务;如用户仍然继续使用夜风的产品或服务的,即表示同意夜风按照修订后的《用户隐私协议》收集、使用、储存和分享用户的信息。</strong><br>
<strong>4、夜风游戏特别提醒用户认真阅读本协议的全部条款特别是以</strong><strong>加粗</strong><strong>字体标示的内容,此类条款应在中国法律所允许的范围内最大程度地适用。</strong><br>
&nbsp;<br>
<strong>一、夜风收集的信息</strong><br>
个人信息是指以电子或者其他方式记录的能够单独或者与其他信息结合识别特定自然人身份或者反映特定自然人活动情况的各种信息,具体如下:<br>
<strong>1.1用户在使用夜风服务时主动提供的信息</strong><br>
1.1.1用户在注册账户或使用夜风的服务时,向夜风提供的相关个人信息,<strong>包括但不限于姓名、</strong><strong>QQ号、微信号、电话号码、电子邮箱、银行卡号、身份证号、护照号等</strong>。<br>
1.1.2 用户在使用服务时上传的信息,例如<strong>上传的头像,分享的照片、拍摄的视频</strong><strong>等。</strong><br>
1.1.3 用户通过夜风的客服或参加夜风举办的活动时所提交的信息,例如,用户参与夜风线上或线下活动时填写的调查问卷或者提交的材料中可能包含<strong>用户的姓名、电话号码、生日、籍贯、性别、兴趣爱好、QQ号、微信号、电子邮箱、银行卡号、身份证号、家庭地址</strong>等信息。<br>
<strong>夜风</strong><strong>的部分服务可能需要</strong><strong>用户</strong><strong>提供特定的个人敏感信息来实现特定功能。若</strong><strong>用户</strong><strong>选择不提供该类信息,则可能无法正常使用服务中的特定功能,但不影响</strong><strong>用户</strong><strong>使用服务中的其他功能。若</strong><strong>用户</strong><strong>主动提供</strong><strong>用户</strong><strong>的个人敏感信息,即表示</strong><strong>用户</strong><strong>同意</strong><strong>夜风</strong><strong>按本</strong><strong>协议</strong><strong>所述目的和方式来处理</strong><strong>用户</strong><strong>的个人敏感信息。</strong><br>
<strong>1.2夜风在用户使用服务时获取的信息</strong><br>
1.2.1 <strong>日志信息</strong><strong>。</strong>当用户使用夜风的服务时,夜风可能会自动收集登录时间、登录地址、服务使用日志、操作日志等相关信息并存储为服务日志信息。<br>
(1)&nbsp;<strong>设备信息</strong><strong>。</strong>例如,设备型号、操作系统版本、唯一设备标识符、电池、信号强度等信息。<br>
(2)&nbsp;<strong>软件信息</strong><strong>。</strong>例如,软件的版本号、浏览器类型。为确保操作环境的安全或提供服务所需,夜风会收集有关用户使用的移动应用和其他软件的信息。<br>
(3) IP地址<strong>。</strong><br>
(4)&nbsp;<strong>服务日志信息</strong><strong>。</strong>例如,用户在使用夜风服务时搜索、查看的信息、服务故障信息、引荐网址等信息。<br>
(5)&nbsp;<strong>通讯日志信息</strong><strong>。</strong>例如,用户在使用夜风服务时曾经通讯的账户、通讯时间和时长。<br>
1.2.2 <strong>位置信息</strong><strong>。</strong>当用户使用与位置有关的服务时,夜风可能会记录用户设备所在的位置信息,包括定位信息、行程信息,以便为用户提供相关服务。<br>
(1) 在用户使用服务时夜风可能会通过IP地址、GPS、WIFI、基站等途径获取用户的地理位置信息。<br>
(2) 用户或其他用户在使用服务时提供的信息中可能包含用户所在地理位置信息,例如用户提供的帐号信息中可能包含的用户所在地区信息,用户或其他人共享的照片包含的地理标记信息。<br>
1.2.3<strong>支付信息</strong><strong>。</strong>为便于用户在支付相关订单时,综合判断用户账户及交易风险、进行身份验证、检测及防范安全事件,夜风可能会在交易过程中收集用户的<strong>虚拟财产相关信息(仅限交易记录、虚拟货币、虚拟交易、游戏类兑换码、口令密码等)</strong>。<br>
1.2.4<strong>其他相关信息</strong><strong>。</strong>为了帮助用户更好地使用夜风的产品或服务,夜风会收集相关信息。<strong>例如,</strong><strong>夜风</strong><strong>收集的好友列表、群列表信息、声纹特征值信息。为确保</strong><strong>用户</strong><strong>使用</strong><strong>夜风的产品和</strong><strong>服务时能与</strong><strong>用户</strong><strong>认识的人进行联系,如</strong><strong>用户</strong><strong>选择开启导入通讯录功能,</strong><strong>夜风</strong><strong>可能对</strong><strong>用户</strong><strong>联系人的姓名和电话号码进行加密,并仅收集加密后的信息。</strong><br>
<strong>1.3其他用户分享的信息中含有用户的信息,</strong>例如,其他用户发布的照片或分享的视频中可能包含用户的信息。<br>
<strong>1.4从第三方合作伙伴获取的信息</strong><br>
夜风可能会根据第三方合作伙伴的规定或用户的授权获得用户在使用第三方合作伙伴服务时所产生或分享的信息。例如,用户使用夜风游戏帐户登录第三方合作伙伴服务时,夜风会获得用户登录第三方合作伙伴服务的名称、登录时间,方便用户进行授权管理。<br>
本协议只适用于夜风提供的服务,不适用于任何第三方提供的服务或第三方的用户信息使用规则,夜风对任何第三方使用用户提供的信息不承担任何责任。请用户仔细阅读第三方合作伙伴服务的用户协议或隐私协议。<br>
<strong>二、夜风如何使用收集的信息</strong><br>
<strong>2.1</strong><strong>夜风严格遵守法律法规的规定及与用户的约定,将收集的信息用于以下用途:</strong><br>
2.1.1向用户发送注册确认;<br>
2.1.2了解和管理账户;<br>
2.1.3回应用户的客户服务要求;<br>
2.1.4了解用户的企业和产品需求以确定适用的产品和服务;<br>
2.1.5基于市场营销和促销的目的联系用户,并为用户提供更多有关夜风产品或服务的信息;<br>
2.1.6进行研究和分析,提升夜风的网站和服务质量;&nbsp;<br>
2.1.7提升用户使用网站的体验和服务质量;<br>
2.1.8帮助夜风有效地管理网站内容;<br>
2.1.9分析群体性用户的站内活动情况以及整个用户群的社会信息。<br>
三、<strong>个人信息的授权与同意</strong><br>
用户十分清楚,为了使用夜风的数据统计和分析之目的,用户需要夜风收集、存储、加工来自于用户的个人信息。因此,用户必须承诺:&nbsp;<br>
1用户允许夜风出于提供服务的目的使用&nbsp;<br>
2<strong>用户允许夜风对已收集的数据进行匿名的、聚合性的处理和转移(包括可能的国际间转移)</strong>&nbsp;<br>
3<strong>用户允许夜风对已收集的数据进行匿名的和聚合性的处理后,为互联网定向广告目的转移给非关联方使用</strong><strong></strong><br>
<strong>4</strong><strong>用户允许夜风与第三方合作以多种形式将夜风游戏平台中经过处理、加工后的数据用于商业化使用。这些合作包括但不限于:与广告平台、广告联盟或者其他广告经营者合作,将数据用于优化广告投放和提升营销效果;</strong><br>
<strong>5</strong><strong>用户允许夜风将用户个人信息及用户账号信息与夜风指定/授权的交易平台/网站进行同步,但夜风指定/授权的交易平台/网站应承担与夜风同等要求的信息安全保障及保密责任。</strong><br>
<strong>四、夜风如何向其他方披露和共享信息</strong><br>
4.1除非本协议已说明的情况外,用户的数据不会被以可识别具体个人真实身份信息的形式向第三方披露和共享。但以下情况除外:<br>
1获得用户的事先同意/允许;<br>
2因司法、行政等合法程序的要求<br>
3在有限的情况下夜风有可能聘请第三方供应商、顾问或其他服务商为夜风提供必要的维护、支持和服务但夜风应要求该等第三方与夜风签署必要的条款保护数据安全和保密性的<br>
4在紧急情况下经合理判断是为了保护夜风、夜风的代理人、客户、终端用户或其他人的合法权益和安全的<br>
5夜风为维护自己或其他用户的合法权益而向用户提起诉讼或者仲裁的<br>
6夜风正在或拟进行企业并购、重组、出售全部或部分股份和/或资产等重大变化,包括但不限于尽职调查过程。<br>
<strong>4.2</strong><strong>经用户同意合法收集的个人信息,通过信息系统、算法等非人工自动决策技术实现标签化或画像处理,从而做出的自动决策决定(如商业化信息推送等),此行为构成数据的不可识别化,不应视为夜风向任何第三方共享、转让或披露用户的任何个人信息。&nbsp;</strong><br>
<strong>五、重要提示</strong><br>
5.1用户可以通过夜风的服务与用户的好友、家人及其他用户分享用户的相关信息。例如,用户在夜风游戏平台中公开分享的文字和照片。<strong>请注意,这其中可能包含用户的个人身份信息、个人财产信息等敏感信息;请用户谨慎考虑披露用户的相关个人敏感信息</strong><strong>。</strong><br>
5.2用户可通过夜风提供服务中的隐私设置来控制分享信息的范围,也可通过服务中的设置或夜风提供的指引删除公开分享的信息。<strong>但请用户注意,这些信息仍可能由其他用户或不受夜风控制的非关联第三方独立地保存。</strong><br>
<strong>六、个人信息保护措施</strong><br>
<strong>6.1夜风采取的数据保密措施</strong><br>
<strong>6.1.1</strong><strong>用户知悉并了解,互联网传输或电子存储方法并非百分之百安全,夜风将尽到合理努力保障数据安全,但仍可能存在用户数据被盗、被非法拥有或者被滥用而给用户带来人身、财产和声誉等方面损失的风险,用户自愿承担相应风险。</strong><br>
6.1.2夜风将采用行业内通行的、合理的、标准的安全防护措施来保护夜风所储存的信息的安全性和保密性。包括但不限于:防火墙和数据备份措施;数据中心的访问权限限制;对移动终端的识别性信息进行加密处理等。<br>
6.1.3夜风已经建立健全数据安全管理体系,包括对用户信息进行分级分类、加密保存、数据访问权限划分,指定内部数据管理制度和操作规程,从数据的获取、使用、销毁都有严格的流程要求,避免用户隐私数据被非法使用。&nbsp;<br>
<strong>6.2应急处置与预警</strong><br>
6.2.1若不幸发生个人信息安全事件的,夜风将按照法律法规要求,及时通过平台内通知/用户预留的联系方式等向用户告知安全事件的基本情况和可能的影响、夜风已采取或将采取的应急响应及其他有关处置措施、对用户的补救措施等。<strong>若难以逐一告知个人信息主体时,夜风将采取合理、有效的方式发布公告并将主动向有关监管部门上报个人信息安全事件的处置情况。</strong><br>
6.2.2若用户发现用户的个人信息泄漏时,请立即与夜风联系,以便夜风及时采取相应的措施。<br>
<strong>七、未成年人保护</strong><br>
夜风非常重视对未成年人个人信息的保护。根据相关法律法规的规定若用户为18周岁以下的未成年人在使用夜风游戏的产品或服务前应事先取得用户的家长或法定监护人的同意。若用户是未成年人的监护人在对用户所监护未成年人的个人信息有相关疑问时请与夜风联系。<br>
八、<strong>免责条款</strong><br>
<strong>除本协议约定的情形外,下列情况夜风亦无需承担任何责任:</strong><br>
<strong>8.1 </strong><strong>因用户将用户账号及密码告知他人、用户通过非夜风认可的交易平台进行虚拟物品道具交易、用户未保管好自己的密码或与他人共享夜风游戏账号、游戏角色、用户使用第三方软件或任何其他非夜风的过错导致的任何个人信息资料泄露;</strong><br>
8.2 任何由于黑客攻击、计算机病毒侵入或发作、电信部门技术调整导致的影响、因政府管制而造成的暂时性关闭、由于第三方原因(包括不可抗力,例如国际出口的主干链路及国际出口电信提供商一方出现故障、火灾、水灾、雷击、地震、洪水、台风、龙卷风、火山爆发、瘟疫和传染病流行、罢工、战争或暴力行为或类似事件)及其他非因夜风过错而造成的用户个人信息资料泄露、丢失、被盗用或被篡改等,以及由此给用户和第三方造成的任何损失;<br>
<strong>8.3 </strong><strong>由于与夜风和/或其关联公司链接的其它网站所造成的用户个人信息资料泄露及由此而导致的任何法律争议和后果;</strong><br>
<strong>8.4 任何个人用户,包括未成年人用户向夜风提供错误、不完整、不实信息等造成不能通过认证、不能正常使用夜风的产品服务或遭受任何其他损失。</strong><br>
<strong>九、用户信息访问、更正、删除</strong><br>
9.1 用户可通过服务中的设置或夜风的指引访问用户个人信息,并根据夜风的管理方式和指引自行对相关信息进行查询、更正、补充、删除、改变授权范围等操作。<br>
9.2 用户在查询、更正、补充、删除、前述信息或改变授权范围时,夜风可能要求用户完成身份认证,以保障用户账号及个人信息的安全。<br>
9.3 若用户更正、删除相关的信息或改变授权范围导致夜风不能正常提供服务的,因而产生的不便和损失,夜风不承担任何责任。<br>
9.4 若用户继续使用夜风提供的服务的,夜风为了能够正常提供服务,将会重新收集用户信息。<br>
<strong>十、用户账号注销</strong><br>
10.1 在符合夜风用户服务协议的约定的条件及国家相关法律法规规定的情况下,用户的服务账号可能被注销或者删除。<br>
10.2 当用户决定不再使用夜风提供的任何服务,可通过服务中的设置或夜风的指引注销或者删除账号。<br>
10.3 夜风将在用户注销账号后及时删除该的账号中的信息内容或按照服务协议的约定进行匿名化处理。<br>
10.4 用户十分明确并清楚,账号注销后,账号中的信息将不能再恢复,由此造成的不便和损失,夜风不承担任何责任。<br>
<strong>十一、投诉与反馈</strong><br>
&nbsp; 用户对本协议有任何疑问的应通过服务中的设置夜风官方网站上的客服信箱317743968@qq.com发送邮件或通过客服中心提供的信息向夜风进行咨询、申诉或举报用户应同时向夜风提供相应的证据材料。夜风在收到用户材料后<strong>原则上会在15天内</strong>回复处理意见或者结果。若有特殊情况需要延长的,以夜风的具体处理时间为准(若有特殊情况,夜风会另行通知用户)。<br>
十二、<strong>适用范围</strong><br>
&nbsp;&nbsp;&nbsp;&nbsp;夜风的所有服务均适用本协议。但某些服务有其特定的隐私指引/声明,该特定隐私指引/声明更具体地说明夜风在该服务中如何处理用户的信息。如本协议与特定服务的隐私指引/声明有不一致之处,请以该特定隐私指引/声明为准。<br>
<strong>十三、变更</strong><br>
本隐私协议内容如发生任何实质性变更,夜风会在变更后于官方网站显著位置或服务页面的显著位置进行公示,如用户不同意变更后的内容,用户可以选择停止使用夜风的产品或服务并注销用户账号;<strong>如用户继续使用夜风的产品或服务的,即表示用户同意并接受修订后的《用户隐私协议》的约束。</strong></span></div>
</div>',
];

BIN
favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

317
function.php Normal file
View File

@@ -0,0 +1,317 @@
<?php
/**
* 冰雪传奇H5
* 2022 XX信息科技有限公司
*
* @author 123456
* @wx 123456
* @qq 123456
*/
function input($str = '') {
global $_GET, $_POST;
$field = isset($_GET[$str]) ? $_GET[$str] : (isset($_POST[$str]) ? $_POST[$str] : '');
return $field ? htmlspecialchars(trim($field)) : '';
}
function returnJson($data = [], $fromMicroClient = false) {
if($fromMicroClient) {
if($data['code'] != 0) {
echo "<script>alert('{$data['msg']}');window.location.href = '/microClient/index';</script>";
} else {
echo "<script>window.location.href = '{$data['url']}';</script>";
}
if(isset($data['code'])) {
if(0 == $data['code']) {
$data['code'] = 1;
} else {
$data['code'] = 0;
}
}
exit;
}
exit(json_encode($data));
}
function isLogin() {
global $_SESSION;
if(isset($_SESSION['account']) && $_SESSION['account']) {
return true;
}
return false;
}
function logout() {
global $_SESSION;
if(empty($_SESSION)) return false;
$_SESSION = [];
session_destroy();
return true;
}
function loginAdmin($token = '') {
global $_CONFIG, $_SESSION;
if(!$token) return false;
if(!isset($_SESSION['admin']) || !$_SESSION['admin']) {
setcookie('admin', $token, $_CONFIG['session_time']);
$_SESSION['admin'] = $token;
}
return true;
}
function logoutAdmin() {
global $_SESSION;
if(empty($_SESSION)) return false;
setcookie('admin', '');
$_SESSION = [];
session_destroy();
return true;
}
// 推送日志
function writeLog($message, $type = 'gm') {
$date = date('Y-m-d');
$path = __DIR__.'/log/'.date('Y-m').'/'.date('d').'/';
mkdirs($path);
$file = 'log_'.md5($date.BASE_KEY).'.log';
$message .= ', IP: '.get_ip();
file_put_contents($path.$file, '['.date('Y-m-d H:i:s').'] '.$message.PHP_EOL, FILE_APPEND);
}
function isPost() {
return 'POST' == $_SERVER['REQUEST_METHOD'];
}
function get_http_type() {
return ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
}
function get_ip() {
if (isset($_SERVER)) {
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$realip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else if (isset($_SERVER['HTTP_CLIENT_IP'])) {
$realip = $_SERVER['HTTP_CLIENT_IP'];
} else {
$realip = $_SERVER['REMOTE_ADDR'];
}
} else {
if (getenv('HTTP_X_FORWARDED_FOR')) {
$realip = getenv('HTTP_X_FORWARDED_FOR');
} else if (getenv('HTTP_CLIENT_IP')) {
$realip = getenv('HTTP_CLIENT_IP');
} else {
$realip = getenv('REMOTE_ADDR');
}
}
return $realip;
}
function isMobile() {
// 如果有HTTP_X_WAP_PROFILE则一定是移动设备
if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) {
return true;
}
// 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
if (isset ($_SERVER['HTTP_VIA'])) {
// 找不到为flase,否则为true
return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
}
// 脑残法,判断手机发送的客户端标志,兼容性有待提高
if (isset ($_SERVER['HTTP_USER_AGENT'])) {
$clientkeywords = ['nokia', 'sony', 'ericsson', 'mot', 'samsung', 'htc', 'sgh', 'lg', 'sharp', 'sie-', 'philips', 'panasonic', 'alcatel', 'lenovo', 'iphone', 'ipod', 'blackberry', 'meizu', 'android', 'netfront', 'symbian', 'ucweb', 'windowsce', 'palm', 'operamini', 'operamobi', 'openwave', 'nexusone', 'cldc', 'midp', 'wap', 'mobile'];
// 从HTTP_USER_AGENT中查找手机浏览器的关键字
if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
return true;
}
}
// 协议法,因为有可能不准确,放到最后判断
if (isset ($_SERVER['HTTP_ACCEPT'])) {
// 如果只支持wml并且不支持html那一定是移动设备
// 如果支持wml和html但是wml在html之前则是移动设备
if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) {
return true;
}
}
return false;
}
/**
* 获得访客操作系统
*/
function getOS($str = '') {
$str = $str ? $str : (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '');
if (isset($str)) {
if (preg_match('/win/i', $str)) {
$val = 'Windows';
} else if (preg_match('/mac/i', $str)) {
$val = 'MAC';
} else if (preg_match('/linux/i', $str)) {
$val = 'Linux';
} else if (preg_match('/unix/i', $str)) {
$val = 'Unix';
} else if (preg_match('/bsd/i', $str)) {
$val = 'BSD';
} else {
$val = 'Other';
}
return $val;
} else {
return 'unknow';
}
}
/**
* 获得访问者浏览器
*/
function getBrowse($str = '') {
$str = $str ? $str : $_SERVER['HTTP_USER_AGENT'];
if (isset($str)) {
if (preg_match('/MSIE/i', $str)) {
$val = 'MSIE';
} else if (preg_match('/Firefox/i', $str)) {
$val = 'Firefox';
} else if (preg_match('/Chrome/i', $str)) {
$val = 'Chrome';
} else if (preg_match('/Safari/i', $str)) {
$val = 'Safari';
} else if (preg_match('/Opera/i', $str)) {
$val = 'Opera';
} else {
$val = 'Other';
}
return $val;
} else {
return 'unknow';
}
}
/**
* 生成指定位数的随机字符
*
* @static
* @access public
* @param int $len 长度
* @param string $format 格式
* @return string
* @author 317743968 <2019/07/25>
*/
function getRandomString($len = 6, $format = 'ALL') {
switch($format) {
case 'ALL':
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-@#~';
break;
case 'CHAR':
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';//-@#~
break;
case 'NUMBER':
$chars = '0123456789';
break;
default:
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-@#~';
break;
}
mt_srand((double) microtime() * 1000000 * getmypid());
$string = '';
while(strlen($string) < $len) {
$string .= substr($chars, (mt_rand() % strlen($chars)), 1);
}
return $string;
}
/**
* 个性化时间函数
* @param string $time 时间戳
* @return string
*/
function time_tran($time) {
$newtime = time() - $time;
if ($newtime < 60) {
$str = '<span class="text-success">刚刚</span>';
}elseif ($newtime < 60 * 60) {
$min = floor($newtime/60);
$str = '<span class="text-danger">'.$min.'分钟前</span>';
}elseif ($newtime < 60 * 60 * 24) {
$h = floor($newtime/(60*60));
$str = '<span class="text-warning">'.$h.'小时前</span>';
}else{
$newtime = strtotime(date('Y-m-d', time())) - strtotime(date('Y-m-d', $time));
if ($newtime < 60 * 60 * 24 * 3) {
$d = floor($newtime/(60*60*24));
$str = '<span class="text-info">'.($d == 1 ? '昨天' : '前天').'</span>';
}elseif ($newtime < 60 * 60 * 24 * 30) {
$str = '<span class="text-info">'.floor($newtime / (60*60*24)).'天前</span>';
}elseif ($newtime < 60 * 60 * 24 * 30 * 12) {
$str = floor($newtime / (60*60*24*30)).'月前';
}else{
$str = '一年前';
}
}
return $str;
}
//创建文件夹
function mkdirs($dir, $mode = 0777) {
if (is_dir($dir) || @mkdir($dir, $mode)) {
return true;
}
if (!mkdirs(dirname($dir), $mode)) {
return false;
}
return @mkdir($dir, $mode);
}
function curl($url, $post_data = null, $method = 'post') {
//初始化
$curl = curl_init();
//设置抓取的url
curl_setopt($curl, CURLOPT_URL, $url);
//设置头文件的信息作为数据流输出
//curl_setopt($curl, CURLOPT_HEADER, 1);
//设置获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//防止CURL出错
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
//不验证ssl证书
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
if ($method == 'post') {
//设置post方式提交
curl_setopt($curl, CURLOPT_POST, 1);
//设置post数据
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
}
//执行命令
$data = curl_exec($curl);
if($data === false) die('Curl error: '.curl_error($curl));
//关闭URL请求
curl_close($curl);
return $data;
}

515
home.html Normal file
View File

@@ -0,0 +1,515 @@
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>传奇霸主_传奇霸主官网_传奇霸主微端下载</title>
<meta name="description" content="传奇霸主 1.76复古版本,刀刀切割,炫酷时装">
<meta name="keywords" content="传奇霸主 1.76复古版本 刀刀切割 炫酷时装">
<script>
document.onkeydown = document.onkeyup = document.onkeypress = function(event) {
var e = event || window.event || arguments.callee.caller.arguments[0];
if (e && e.keyCode == 123) {
e.returnValue = false;
return (false);
}
}
</script>
<link rel="stylesheet" href="static/home/css/idangerous.swiper2.7.6.css">
<link rel="stylesheet" href="static/home/css/sprite.css">
<link rel="stylesheet" href="static/home/css/base.css">
<link rel="stylesheet" href="static/home/css/index.css">
<script type="text/javascript" src="static/home/js/jquery.min.js"></script>
<script type="text/javascript" src="static/home/js/idangerous.swiper2.7.6.min.js"></script>
<script type="text/javascript" src="static/home/js/jq_mousewheel.js"></script>
<link rel="stylesheet" type="text/css" href="static/home/css/style.css">
<link rel="stylesheet" href="static/home/css/Gw.css">
<script type="text/javascript" src="static/home/js/require.js" defer="" async="true" data-main="/static/home/js/common"></script>
<script src="static/js/common.js?v=1"></script>
</head>
<body oncontextmenu="return false" onselectstart="return false">
<div id="top">
<div class="top-wrap">
<div style="position: absolute;left:-174px;top: 0;height: 38px;line-height: 38px;color: #333">本游戏适合18岁以上玩家进入
</div>
<div class="top-log"><a href="javascript:void(0);"></a></div>
<div class="top-flash">
<div class="show-flash"></div>
<div class="default-flash"></div>
</div>
<div class="top-other">
<!--<a href="javascript:void (0)" class="top-login">登录</a><span class="fenge">|</span>
<a href="javascript:void(0);" class="top-register">注册</a>-->
<a href="https://127.0.0.1" class="top-kefu" target="_blank">在线客服</a>
</div>
<div class="g-all-game" id="allGame"><span class="g-all-game-btn">所有游戏</span></div>
<div class="mobile-game"><a href="javascript:void(0);">手游下载</a></div>
<div class="g-all-game-list" id="allGameList" data-kid="26F7CBD8-A214-4BD7-B158-1EA0E4E3158D">
<div class="g-all-game-img" style="display: block;">
<a href="javascript:void(0);" title="传奇世界">
<img src="static/home/img/27093352BTEIe.jpeg" alt="传奇世界" width="400" height="262" title="传奇世界">
</a>
<div class="all-game-txt">
《传奇世界》是一款ARPG角色扮演类网页游戏。宏大的世界观将上古神话背景与游戏体验做了完美的结合只有不断历练自己才能通过各种挑战顺利击杀精英、逼退对手获得珍稀奖励、给力装备为征战之途做好万全的准备。
</div>
</div>
<dl class="all-game-hot" id="TopAllGameName">
</dl>
</div>
</div>
</div><div class="main-wrap">
<div class="wrap">
<!-- 第一屏 -->
<div class="section sec1">
<div class="container">
<!--<a href="javascript:void(0);"><img class="logo" src="static/home/img/logo.png"></a>-->
<ul class="menu-list">
<li>
<a href="javascript:void(0);">官网首页<br><span>HOME</span></a>
</li>
<li>
<a href="javascript:void(0);">新闻中心<br><span>NEWS</span></a>
</li>
<li>
<a href="javascript:void(0);">礼包中心<br><span>GIFT</span></a>
</li>
<li>
<a href="javascript:void(0);">游戏资料<br><span>GAME INFO</span></a>
</li>
<li>
<a href="javascript:void(0);">游戏攻略<br><span>RAIDERS</span></a>
</li>
<li>
<a class="kf-web" href="http://wpa.qq.com/msgrd?v=3&uin=123456&site=qq" target="_blank">客服中心<br><span>SERVICE</span></a>
</li>
</ul>
<a class="ico start_btn" href="play" target="_blank">开始游戏</a>
</div>
<div class="btns">
<!--<div class="gzhBox"><img src="static/home/img/qcode.jpeg"></div>-->
<a href="http://wpa.qq.com/msgrd?v=3&uin=123456&site=qq"></a>
<a id="dlq_url" href="/microClient/yfbx.rar" class="i-b_pc"></a>
<a href="javascript:void(0);" class="i-b_message"></a>
</div>
</div>
<!-- 第二屏 -->
<div class="section sec2 clearfix">
<div class="container clearfix">
<div class="sec2Top clearfix">
<!-- 滚图 -->
<div class="banner fl">
<div class="banner_swiper swiper-container" id="slideBox"></div>
</div>
<!-- 新闻公告 -->
<div class="news fr">
<!-- 新闻公告 -->
<div class="newsTab">
<a href="javascript:void(0);" class="act">最新</a>
<a href="javascript:void(0);">活动</a>
<a href="javascript:void(0);">公告</a>
<a href="javascript:void(0);">新闻</a>
</div>
<a href="javascript:void(0);" class="more1">查看更多</a>
<div class="newSlide">
<ul>
<li>
<a href="javascript:void(0);">
<span>02-28</span>[最新] | 《传奇霸主》双线236服于03月03日火爆开启 </a>
</li>
<li>
<a href="javascript:void(0);">
<span>02-28</span>[最新] | 《传奇霸主》双线235服于03月02日火爆开启 </a>
</li>
<li>
<a href="javascript:void(0);">
<span>02-28</span>[最新] | 《传奇霸主》合服公告 </a>
</li>
<li>
<a href="javascript:void(0);">
<span>02-28</span>[最新] | 《传奇霸主》双线234服于03月01日火爆开启 </a>
</li>
<li>
<a href="javascript:void(0);">
<span>02-11</span>[最新] | 《传奇霸主》双线233服于02月28日火爆开启 </a>
</li>
<li>
<a href="javascript:void(0);">
<span>02-11</span>[最新] | 《传奇霸主》双线232服于02月27日火爆开启 </a>
</li>
</ul>
</div>
<div class="newSlide">
<ul>
<li>
<a href="javascript:void(0);">
<span>05-10</span>[活动] | 《传奇霸主》精彩开服活动 </a>
</li>
</ul>
</div>
<div class="newSlide">
<ul>
<li>
<a href="javascript:void(0);">
<span>02-28</span>[公告] | 《传奇霸主》双线236服于03月03日火爆开启 </a>
</li>
<li>
<a href="javascript:void(0);">
<span>02-28</span>[公告] | 《传奇霸主》双线235服于03月02日火爆开启 </a>
</li>
<li>
<a href="javascript:void(0);">
<span>02-28</span>[公告] | 《传奇霸主》合服公告 </a>
</li>
<li>
<a href="javascript:void(0);">
<span>02-28</span>[公告] | 《传奇霸主》双线234服于03月01日火爆开启 </a>
</li>
<li>
<a href="javascript:void(0);">
<span>02-11</span>[公告] | 《传奇霸主》双线233服于02月28日火爆开启 </a>
</li>
<li>
<a href="javascript:void(0);">
<span>02-11</span>[公告] | 《传奇霸主》双线232服于02月27日火爆开启 </a>
</li>
</ul>
</div>
<div class="newSlide">
<ul>
<li>
<a href="javascript:void(0);">
<span>02-28</span>[新闻] | 《传奇霸主》双线236服于03月03日火爆开启 </a>
</li>
<li>
<a href="javascript:void(0);">
<span>02-28</span>[新闻] | 《传奇霸主》双线235服于03月02日火爆开启 </a>
</li>
<li>
<a href="javascript:void(0);">
<span>02-28</span>[新闻] | 《传奇霸主》合服公告 </a>
</li>
<li>
<a href="javascript:void(0);">
<span>02-28</span>[新闻] | 《传奇霸主》双线234服于03月01日火爆开启 </a>
</li>
<li>
<a href="javascript:void(0);">
<span>02-11</span>[新闻] | 《传奇霸主》双线233服于02月28日火爆开启 </a>
</li>
<li>
<a href="javascript:void(0);">
<span>02-11</span>[新闻] | 《传奇霸主》双线232服于02月27日火爆开启 </a>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="container clearfix">
<div class="roleBox">
<div class="xszdBox">
<div class="xszdBoxXZD">
<ul>
<li><a href="javascript:void(0);" class="zd1">基本操作</a>
</li>
<li><a href="javascript:void(0);" class="zd2">如何交易</a>
</li>
<li><a href="javascript:void(0);" class="zd3">如何聊天</a>
</li>
<li><a href="javascript:void(0);" class="zd4">任务介绍</a>
</li>
<li><a href="javascript:void(0);" class="zd5">NPC传送</a>
</li>
<li><a href="javascript:void(0);" class="zd6">活动一览</a>
</li>
</ul>
</div>
<p class="xszdNav">
<a href="javascript:void(0);" class="n1">技能详情</a>
<a href="javascript:void(0);" class="n2">装备详情</a>
<a href="javascript:void(0);" class="n3">怪物详情</a>
</p>
</div>
<div class="role">
<!-- 职业介绍 -->
<div class="role_swiper" id="role_swiper">
<div class="wrapper">
<div class="slide roleRlide show">
<div class="content clearfix">
<div class="b_nextTop">
<img class="fl jn" src="static/home/img/zs_j.png">
<p class="fl">职业技能:</p>
<p class="fl">职业属性:近战物理攻击</p>
<p class="fl">上手难度:
<span class="i-star-a"></span>
<span class="i-star-a"></span>
<span class="i-star-a"></span>
<span class="i-star-a"></span>
<span class="i-star"></span>
</p>
</div>
<div class="roleTab">
<a href="javascript:;" class="i-r_m i-r_m_a"></a>
<a href="javascript:;" class="i-r_w"></a>
</div>
<div class="roleBoxRw">
<div class="man">
<img class="rtImg" src="static/home/img/zs_m.png">
<div class="roleBoxBg"><img src="static/home/img/zs_w.png"></div>
</div>
<div class="woman" style="display:none">
<img class="rtImg" src="static/home/img/zs_w.png">
<div class="roleBoxBg"><img src="static/home/img/zs_m.png"></div>
</div>
</div>
</div>
</div>
<div class="slide roleRlide">
<div class="content clearfix">
<div class="b_nextTop">
<img class="fl jn" src="static/home/img/fs_j.png">
<p class="fl">职业技能:</p>
<p class="fl">职业属性:远程魔法攻击</p>
<p class="fl">上手难度:
<span class="i-star-a"></span>
<span class="i-star-a"></span>
<span class="i-star-a"></span>
<span class="i-star-a"></span>
<span class="i-star-a"></span>
</p>
</div>
<div class="roleTab">
<a href="javascript:;" class="i-r_m i-r_m_a"></a>
<a href="javascript:;" class="i-r_w"></a>
</div>
<div class="roleBoxRw">
<div class="man">
<img class="rtImg" src="static/home/img/fs_m.png">
<div class="roleBoxBg"><img src="static/home/img/fs_w.png"></div>
</div>
<div class="woman" style="display:none">
<img class="rtImg" src="static/home/img/fs_w.png">
<div class="roleBoxBg"><img src="static/home/img/fs_m.png"></div>
</div>
</div>
</div>
</div>
<div class="slide roleRlide">
<div class="content clearfix">
<div class="b_nextTop">
<img class="fl jn" src="static/home/img/ds_j.png">
<p class="fl">职业技能:</p>
<p class="fl">职业属性:远程道术攻击</p>
<p class="fl">上手难度:
<span class="i-star-a"></span>
<span class="i-star-a"></span>
<span class="i-star-a"></span>
<span class="i-star"></span>
<span class="i-star"></span>
</p>
</div>
<div class="roleTab">
<a href="javascript:;" class="i-r_m i-r_m_a"></a>
<a href="javascript:;" class="i-r_w"></a>
</div>
<div class="roleBoxRw">
<div class="man">
<img class="rtImg" src="static/home/img/ds_m.png">
<div class="roleBoxBg"><img src="static/home/img/ds_w.png"></div>
</div>
<div class="woman" style="display:none">
<img class="rtImg" src="static/home/img/ds_w.png">
<div class="roleBoxBg"><img src="static/home/img/ds_m.png"></div>
</div>
</div>
</div>
</div>
</div>
<div class="wrapperNav">
<a href="javascript:;" class="nZ act"></a>
<a href="javascript:;" class="nF"></a>
<a href="javascript:;" class="nD"></a>
</div>
</div>
</div>
</div>
</div>
<div class="container clearfix">
<div class="ctZl clearfix">
<!-- 游戏资料 -->
<div class="yxzl fl">
<div class="i-t_yxzl">游戏资料</div>
<div class="i-bc_m">
<div class="clearfix wfjs">
<div class="link fl">
&nbsp;&gt;&nbsp;<a href="javascript:void(0);">攻城篇</a>
&nbsp;&gt;&nbsp;<a href="javascript:void(0);">熔炉</a>
&nbsp;&gt;&nbsp;<a href="javascript:void(0);">拍卖行</a><br>
&nbsp;&gt;&nbsp;<a href="javascript:void(0);">行会</a>
&nbsp;&gt;&nbsp;<a href="javascript:void(0);">封号系统</a>
&nbsp;&gt;&nbsp;<a href="javascript:void(0);">神盾系统</a><br>
&nbsp;&gt;&nbsp;<a href="javascript:void(0);">法阵系统</a>
&nbsp;&gt;&nbsp;<a href="javascript:void(0);" class="linkMore">MORE +</a><br>
</div>
</div>
<div class="clearfix xtjs">
<div class="link fl">
&nbsp;&gt;&nbsp;<a href="javascript:void(0);">封号系统</a>
&nbsp;&gt;&nbsp;<a href="javascript:void(0);">神盾系统</a>
&nbsp;&gt;&nbsp;<a href="javascript:void(0);">法阵系统</a><br>
&nbsp;&gt;&nbsp;<a href="javascript:void(0);">玉佩系统</a>
&nbsp;&gt;&nbsp;<a href="javascript:void(0);">生肖系统</a>
&nbsp;&gt;&nbsp;<a href="javascript:void(0);" class="linkMore">MORE +</a><br>
</div>
</div>
</div>
</div>
<!-- 游戏攻略 -->
<div class="yxgl fr">
<a class="i-more2 more" href="javascript:void(0);"></a>
<div class="i-t_yxgl">游戏攻略</div>
<div class="i-bc_m">
<!-- 新闻公告 -->
<div class="tab">
<a href="javascript:;" class="act">最新攻略</a>
</div>
<div class="slide">
<ul>
<li>
<a href="javascript:void(0);">
<span>05-06</span>[新闻] | 《传奇霸主》疗伤石怎么合成?在哪打疗伤石 </a>
</li>
<li>
<a href="javascript:void(0);">
<span>05-06</span>[新闻] | 《传奇霸主》战士5级技能什么比较好 </a>
</li>
<li>
<a href="javascript:void(0);">
<span>05-06</span>[新闻] | 《传奇霸主》道士的月灵怎么召唤?技能获得方法 </a>
</li>
<li>
<a href="javascript:void(0);">
<span>05-06</span>[新闻] | 《传奇霸主》法师灭天火6级雷电哪个好技能伤害对比 </a>
</li>
<li>
<a href="javascript:void(0);">
<span>05-06</span>[新闻] | 《传奇霸主》灭天火怎么获得?技能获取途径说明 </a>
</li>
<li>
<a href="javascript:void(0);">
<span>05-06</span>[新闻] | 《传奇霸主》转职技能和装备跟着转吗?技能对照表 </a>
</li>
<li>
<a href="javascript:void(0);">
<span>05-06</span>[新闻] | 《传奇霸主》创造宝石怎么获得?哪里打爆率高 </a>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="ctZl clearfix">
<!-- 影音中心 -->
<div class="yyzx fl">
<a class="i-more2" href="javascript:void(0);">查看更多</a>
<div class="i-t_yyzx">影音中心</div>
<div class="video_box">
<div class="video">
<img src="static/home/img/img202101111746210.png">
<div class="i-mask"></div>
<a class="i-b_player" href="javascript:void(0);"></a>
<p class="descrip">[游戏视频]盛世新年服首次龙城激情pk解说</p>
</div>
</div>
</div>
<!-- 名人堂 -->
<div class="mrt fl">
<a class="i-more2" href="javascript:void(0);">查看更多</a>
<div class="i-t_mrt">名人堂</div>
<div class="player">
<ul>
<li>
<a href="javascript:void(0);">
<img src="static/home/img/img202101271114290.jpeg" style="height: 100%;width: 100%;cursor: pointer;">
<p class="descrip">[名人堂]盛世沙城</p>
</a>
</li>
<li>
<a href="javascript:void(0);">
<img src="static/home/img/img202101271115480.jpeg" style="height: 100%;width: 100%;cursor: pointer;">
<p class="descrip">[名人堂]盛世新年</p>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 弹窗 -->
<div class="mask" id="mask">
<div class="message_mask">
<a class="close"><span class="i-close"></span></a>
<div class="content">
<span class="tl"></span>
<span class="tr"></span>
<span class="bl"></span>
<span class="br"></span>
<p>您的意见非常宝贵,请在这里留下给我们的建议,</p>
<p>我们将在后续做出相关改进。</p>
<textarea name="textarea" id="message" cols="20" rows="8" placeholder=""></textarea>
<a class="i-b_submit" onclick="send_message();"></a>
</div>
</div>
</div>
<script type="text/javascript" src="static/home/js/index.js"></script>
<script>
var host = window.location.host;
$(function () {
//新闻公告切换
var news_base_url1 = host + 'news/',
news_params1 = ['', 'hd/', 'gg/', 'news/'];
$('.newSlide').eq(0).show();
$('.news .newsTab a').on('mouseenter', function () {
var idx = $(this).index();
$(this).addClass('act').siblings().removeClass('act');
$(".newSlide").hide().eq(idx).show();
});
//攻略切换
var news_base_url2 = host + 'yxgl/',
news_params2 = ['', 'xsgl/', 'jjgl/', 'hdgl/'];
$(".yxgl .slide").eq(0).show();
$('.yxgl .tab a').on('mouseenter', function () {
var idx = $(this).index();
$(this).addClass('act').siblings().removeClass('act');
$(".yxgl .slide").hide().eq(idx).show();
});
});
function send_message() {
if ($('#message').val() != '') {
alert('意见提交成功!');
$('#mask').fadeOut();
$('#message').val('');
} else {
$('#mask').fadeOut();
$('#message').val('');
}
}
</script>
</body>
</html>

162
index.html Normal file
View File

@@ -0,0 +1,162 @@
<!--
* 冰雪传奇H5
* 2022 XX信息科技有限公司
*
* @author 123456
* @wx 123456
* @qq 123456
-->
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta content="yes" name="apple-mobile-web-app-capable">
<meta content="black" name="apple-mobile-web-app-status-bar-style">
<meta content="telephone=no" name="format-detection">
<meta content="email=no" name="format-detection">
<meta name="screen-orientation" content="portrait">
<meta name="x5-orientation" content="portrait">
<meta name="full-screen" content="yes">
<meta name="x5-fullscreen" content="true">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="renderer" content="webkit">
<title>清渊传奇 经典复古 轻松打金</title>
<meta name="description" content="传奇霸主 1.76复古版本,刀刀切割,炫酷时装">
<meta name="keywords" content="传奇霸主1.76复古版本 刀刀切割 炫酷时装">
<style type="text/css">
body,html,p,a,div,img{margin:0px;padding:0px}
body{background:#000}
ul, li { list-style: none; }
img{border:none;display:block;width:100%;}
a{text-decoration:none;display:block}
body { font-size:14px; }
.wrap{width:100%;margin:0 auto}
.top{ display: none; /*width:600px;position:fixed;top:0;z-index:999;left:0*/}
.container { position: relative; }
.logo {
position: absolute;
width: 200px;
left: 50%;
transform: translate(-50%, -50%);
top: 8%;
}
.menu-list {
position: absolute;
top: 0;
left: 0;
}
.menu-list li {width: 95px; float: left; text-align: center;}
.menu-list a { color: #ccc; font-size: 12px; text-align: center;}
.menu-list a:hover{ color: #e1bc98; }
.menu-list span{ font-family: Arial; color: #999; font-size: 12px; text-align: center; }
.enter_game {
background: transparent url(static/img/enter_game.png) no-repeat;
background-size: 100%;
display: block;
width: 54%;
height: 20%;
position: absolute;
bottom: 13%;
left: 23%;
transform: translate(-50%, -50%);
text-align: center;
}
.enter_game:active {
background-size: 98%;
background-position-x: 3px;
}
.enter_game{
-webkit-animation: enter_game_eff 1s linear alternate infinite;
animation: enter_game_eff 1s linear alternate infinite;
}
@-webkit-keyframes enter_game_eff{
0%{-webkit-transform:scale(0.9);}
100%{-webkit-transform:scale(1);}
}
@keyframes enter_game_eff{
0%{transform:scale(0.9);}
100%{transform:scale(1);}
}
.pr{position:relative}
.dw{position:absolute;right:3%;width:28%;height:100%;top:0}
.dw1{position:absolute;left:50%;width:30%;top:2%;margin-left:-15%;height:32%}
.dw2{position:absolute;left:50%;width:50%;bottom:40%;margin-left:-25%;height:60%}
.footer { text-align:center;color:#6b6b6b; padding: 20px 0 50px; }
@media screen and (max-width:600px) {
.wrap{width:100%;}
}
@media screen and (min-width:600px) {
body { background: url(static/mobile/img/bg.jpg) no-repeat center top; background-attachment: fixed; background-size: cover; }
.wrap{width:580px;}
.menu-list { top: 75px; }
.menu-list li {width: 129px;}
.menu-list a { font-size: 14px; }
}
</style>
<script>
document.onkeydown = document.onkeyup = document.onkeypress = function(event) {
var e = event || window.event || arguments.callee.caller.arguments[0];
if (e && e.keyCode == 123) {
e.returnValue = false;
return (false);
}
}
</script>
</head>
<body oncontextmenu="return false" onselectstart="return false" ondragstart="return false">
<div class="wrap">
<div class="top">
<img src="static/mobile/img/top.jpeg">
<a href="/play" class="dw"></a>
</div>
<div class="container">
<img src="static/mobile/img/01.jpeg" alt="">
<img src="static/img/logo.png" class="logo">
<ul class="menu-list" id="menu" style="display: none;">
<li><a href="home.html" target="_blank">官网首页<br><span>HOME</span></a></li>
<li><a href="play" target="_blank">开始游戏<br><span>PLAY</span></a></li>
<li><a href="javascript:void(0);" id="kf">在线客服<br><span>QQ</span></a></li>
</ul>
<a href="/play" target="_blank" class="enter_game"></a>
</div>
<img src="static/mobile/img/03.gif" alt="">
<div class="pr">
<img src="static/mobile/img/02.gif" alt="">
<a href="/ios/" class="dw1"></a>
</div>
<div class="pr">
<img src="static/mobile/img/04.gif" alt="">
<a href="/ios/" class="dw2"></a>
</div>
</div>
<div class="footer">
<p>2022 &copy; XX信息技术有限公司</p>
</div>
<script src="static/js/jquery.js"></script>
<script src="static/js/common.js?v=1"></script>
<script>
$(function() {
$('#kf').click(function() {
if(isMobile()) {
var qqUrl = 'http://wpa.qq.com/msgrd?v=3&uin=123456&site=qq';
window.location.href = qqUrl;
} else {
window.open('http://wpa.qq.com/msgrd?v=3&uin=123456&site=qq');
}
});
/*setTimeout(function() {
$('#menu').show();
}, 1e3);*/
});
</script>
</body>
</html>

25
index.nginx-debian.html Normal file
View File

@@ -0,0 +1,25 @@
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>

33
ios.html Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

411
js/default.thm_a7013eeb.js Normal file
View File

@@ -0,0 +1,411 @@
var __reflect = (this && this.__reflect) || function (p, c, t) {
p.__class__ = c, t ? t.push(c) : t = [c], p.__types__ = p.__types__ ? t.concat(p.__types__) : t;
};
var __extends = this && this.__extends || function __extends(t, e) {
function r() {
this.constructor = t;
}
for (var i in e)
e.hasOwnProperty(i) && (t[i] = e[i]);
r.prototype = e.prototype, t.prototype = new r();
};
var JSONParseClass = /** @class */ (function () {
function JSONParseClass() {
this.skinClass = {};
this.euiNormalizeNames = {
"$eBL": "eui.BitmapLabel",
"$eB": "eui.Button",
"$eCB": "eui.CheckBox",
"$eC": "eui.Component",
"$eDG": "eui.DataGroup",
"$eET": "eui.EditableText",
"$eG": "eui.Group",
"$eHL": "eui.HorizontalLayout",
"$eHSB": "eui.HScrollBar",
"$eHS": "eui.HSlider",
"$eI": "eui.Image",
"$eL": "eui.Label",
"$eLs": "eui.List",
"$eP": "eui.Panel",
"$ePB": "eui.ProgressBar",
"$eRB": "eui.RadioButton",
"$eRBG": "eui.RadioButtonGroup",
"$eRa": "eui.Range",
"$eR": "eui.Rect",
"$eRAl": "eui.RowAlign",
"$eS": "eui.Scroller",
"$eT": "eui.TabBar",
"$eTI": "eui.TextInput",
"$eTL": "eui.TileLayout",
"$eTB": "eui.ToggleButton",
"$eTS": "eui.ToggleSwitch",
"$eVL": "eui.VerticalLayout",
"$eV": "eui.ViewStack",
"$eVSB": "eui.VScrollBar",
"$eVS": "eui.VSlider",
"$eSk": "eui.Skin"
};
}
JSONParseClass.prototype.setData = function (data) {
if (!this.json) {
this.json = data;
this.parseSkinMap(this.json);
}
else {
this.parseSkinMap(data);
for (var a in data) {
this.json[a] = data[a];
}
}
};
JSONParseClass.prototype.generateSkinClass = function (skinData, className, superName) {
if (!skinData)
return null;
var paths = superName.split(".");
var target = window;
for (var _i = 0, paths_1 = paths; _i < paths_1.length; _i++) {
var p = paths_1[_i];
target = target[p];
}
function __SkinClass() {
target.call(this);
window["JSONParseClass"].create(className, this);
}
__extends(__SkinClass, target);
__reflect(__SkinClass, className, [superName]);
return __SkinClass;
};
JSONParseClass.prototype.parseSkinMap = function (skinMap) {
var skinResult = {};
for (var exml in skinMap) {
var skinData = skinMap[exml];
if (!skinData)
continue;
var paths = exml.split(".");
var target = window;
for (var _i = 0, paths_2 = paths; _i < paths_2.length; _i++) {
var p = paths_2[_i];
var parent = target;
if (p !== paths[paths.length - 1]) {
target = target[p];
if (target == undefined) {
target = {};
parent[p] = target;
}
}
}
var superName = this.euiNormalizeNames[skinData["$sC"]] == undefined ? skinData["$sC"] : this.euiNormalizeNames[skinData["$sC"]];
skinResult[exml] = target[paths[paths.length - 1]] = this.generateSkinClass(skinData, exml, superName);
if (skinMap[exml]["$path"]) {
generateEUI2["paths"][skinMap[exml]["$path"]] = skinResult[exml];
}
}
return skinResult;
};
JSONParseClass.prototype.create = function (skinName, target) {
if (!this.json) {
console.log("Missing json defined by eui resource, please modify the theme adapter");
console.log("缺少eui资源定义的json请修改主题适配器");
return;
}
//console.log('skinName=' + skinName);
/** 先解析对应名字的的 */
this.target = target;
this.skinName = skinName;
this.skinClass = this.json[skinName];
//开始生成
this.applyBase();
this.applySkinParts();
this.applyState();
this.applyBinding();
//skinParts 只能最后赋值在comp中引用问题
if (this.skinClass["$sP"] == undefined)
this.target["skinParts"] = [];
else
this.target["skinParts"] = this.skinClass["$sP"];
};
JSONParseClass.prototype.applySkinParts = function () {
if (this.skinClass["$sP"] == undefined)
return;
for (var _i = 0, _a = this.skinClass["$sP"]; _i < _a.length; _i++) {
var component = _a[_i];
if (this.target[component] == undefined)
this.createElementContentOrViewport(component);
}
};
JSONParseClass.prototype.applyBase = function () {
if (this.skinClass["$bs"] == undefined)
return;
this.addCommonProperty("$bs", this.target);
};
JSONParseClass.prototype.createElementContentOrViewport = function (component) {
var result;
var typeStr = this.getNormalizeEuiName(this.skinClass[component].$t);
if (typeStr == "egret.tween.TweenGroup") {
result = this.creatsEgretTweenGroup(component);
}
else {
/** 有可能对象是从外面一定义的皮肤 */
var type_1 = egret.getDefinitionByName(typeStr);
this.$createNewObject(function () {
result = new type_1();
});
this.addCommonProperty(component, result);
}
this.target[component] = result;
return result;
};
/**
* 生成单位有可能会跳出当前皮肤所以统一维护target和skin
* @param callback 创建对象的真实逻辑
*/
JSONParseClass.prototype.$createNewObject = function (callback) {
var skinName = this.skinName;
var target = this.target;
callback();
this.skinName = skinName;
this.skinClass = this.json[this.skinName];
this.target = target;
};
/**
* 生成对应的缓动组
* @param component 名字索引
*/
JSONParseClass.prototype.creatsEgretTweenGroup = function (component) {
var result = this.createTypeObject(component);
var items = [];
for (var _i = 0, _a = this.skinClass[component]["items"]; _i < _a.length; _i++) {
var item = _a[_i];
items.push(this.createEgretTweenItem(item));
}
result["items"] = items;
return result;
};
/**
* 生成对应的缓动单位
* @param tweenItem 名字索引
*/
JSONParseClass.prototype.createEgretTweenItem = function (tweenItem) {
var _this = this;
var result = this.createTypeObject(tweenItem);
var paths = [];
var _loop_1 = function (prop) {
var property = this_1.skinClass[tweenItem][prop];
if (prop == "$t" || prop == "target") {
}
else if (prop == "paths") {
for (var _i = 0, property_1 = property; _i < property_1.length; _i++) {
var path = property_1[_i];
paths.push(this_1.createSetOrTo(path));
}
}
else if (prop == "target") {
this_1.$createNewObject(function () {
result[prop] = _this.createElementContentOrViewport(property);
_this.target[property] = result[prop];
});
}
else {
result[prop] = property;
}
};
var this_1 = this;
for (var prop in this.skinClass[tweenItem]) {
_loop_1(prop);
}
result["paths"] = paths;
this.target[tweenItem] = result;
return result;
};
JSONParseClass.prototype.createSetOrTo = function (key) {
var result = this.createTypeObject(key);
for (var prop in this.skinClass[key]) {
var property = this.skinClass[key][prop];
if (prop == "$t" || prop == "target") {
}
else if (prop == "props") {
result[prop] = this.createObject(property);
this.target[property] = result[prop];
}
else {
result[prop] = property;
}
}
return result;
};
JSONParseClass.prototype.createObject = function (name) {
var result = {};
for (var prop in this.skinClass[name]) {
if (prop == "$t" || prop == "target") {
}
else {
result[prop] = this.skinClass[name][prop];
}
}
return result;
};
JSONParseClass.prototype.addCommonProperty = function (componentName, target) {
var eleC;
var sId;
var _loop_2 = function (prop) {
var property = this_2.skinClass[componentName][prop];
if (prop == "$t") {
}
else if (prop == "layout") {
target[prop] = this_2.createLayout(property);
}
else if (prop == "$eleC") {
eleC = property;
}
else if (prop == "$sId") {
sId = property;
}
else if (prop == "scale9Grid") {
target[prop] = this_2.getScale9Grid(property);
}
else if (prop == "skinName") {
this_2.$createNewObject(function () {
target[prop] = property;
});
}
else if (prop == "itemRendererSkinName") {
this_2.$createNewObject(function () {
var dirPath = property.split(".");
var t = window;
for (var _i = 0, dirPath_1 = dirPath; _i < dirPath_1.length; _i++) {
var p = dirPath_1[_i];
t = t[p];
}
target[prop] = t;
});
}
else if (prop == "itemRenderer") {
target[prop] = egret.getDefinitionByName(property);
}
else if (prop == "dataProvider") {
target[prop] = this_2.createDataProvider(property);
}
else if (prop == "viewport") {
target[prop] = this_2.createElementContentOrViewport(property);
}
else {
target[prop] = property;
}
};
var this_2 = this;
for (var prop in this.skinClass[componentName]) {
_loop_2(prop);
}
var ele = [];
if (eleC && eleC.length > 0) {
for (var _i = 0, eleC_1 = eleC; _i < eleC_1.length; _i++) {
var element = eleC_1[_i];
var e = this.createElementContentOrViewport(element);
ele.push(e);
}
}
target["elementsContent"] = ele;
if (sId && sId.length > 0) {
for (var _a = 0, sId_1 = sId; _a < sId_1.length; _a++) {
var element = sId_1[_a];
this.createElementContentOrViewport(element);
}
}
return target;
};
JSONParseClass.prototype.createLayout = function (componentName) {
var result = this.createTypeObject(componentName);
var component = this.skinClass[componentName];
for (var property in component) {
if (property !== "$t") {
result[property] = component[property];
}
}
this.target[componentName] = result;
return result;
};
JSONParseClass.prototype.applyState = function () {
if (this.skinClass["$s"] == undefined)
return;
var states = [];
for (var state in this.skinClass["$s"]) {
var setProperty = [];
var tempState = this.skinClass["$s"][state];
if (tempState["$saI"]) {
for (var _i = 0, _a = tempState["$saI"]; _i < _a.length; _i++) {
var property = _a[_i];
setProperty.push(new eui.AddItems(property["target"], property["property"], property["position"], property["relativeTo"]));
}
}
if (tempState["$ssP"]) {
for (var _b = 0, _c = tempState["$ssP"]; _b < _c.length; _b++) {
var property = _c[_b];
if (property["name"]) {
var value = property["value"];
if (property["name"] == "scale9Grid") {
value = this.getScale9Grid(property["value"]);
}
setProperty.push(new eui.SetProperty(property["target"], property["name"], value));
}
else {
setProperty.push(new eui.SetStateProperty(this.target, property["templates"], property["chainIndex"], this.target[property["target"]], property["property"]));
}
}
}
states.push(new eui.State(state, setProperty));
}
this.target["states"] = states;
};
JSONParseClass.prototype.applyBinding = function () {
if (this.skinClass["$b"] == undefined)
return;
for (var _i = 0, _a = this.skinClass["$b"]; _i < _a.length; _i++) {
var bindingDate = _a[_i];
if (bindingDate["$bc"] !== undefined) {
eui.Binding.$bindProperties(this.target, bindingDate["$bd"], bindingDate["$bc"], this.target[bindingDate["$bt"]], bindingDate["$bp"]);
}
else {
eui.Binding.bindProperty(this.target, bindingDate["$bd"][0].split("."), this.target[bindingDate["$bt"]], bindingDate["$bp"]);
}
}
};
JSONParseClass.prototype.createDataProvider = function (component) {
if (component == "")
return undefined;
var result = this.createTypeObject(component);
var source = [];
for (var _i = 0, _a = this.skinClass[component]["source"]; _i < _a.length; _i++) {
var sour = _a[_i];
source.push(this.createItemRender(sour));
}
result["source"] = source;
return result;
};
JSONParseClass.prototype.createItemRender = function (itemName) {
var result = this.createTypeObject(itemName);
for (var property in this.skinClass[itemName]) {
if (property != "$t") {
result[property] = this.skinClass[itemName][property];
}
}
return result;
};
JSONParseClass.prototype.getNormalizeEuiName = function (str) {
return this.euiNormalizeNames[str] ? this.euiNormalizeNames[str] : str;
};
JSONParseClass.prototype.createTypeObject = function (component) {
var typestr = this.getNormalizeEuiName(this.skinClass[component].$t);
var type = egret.getDefinitionByName(typestr);
return new type();
};
JSONParseClass.prototype.getScale9Grid = function (data) {
var datalist = data.split(",");
return new egret.Rectangle(parseFloat(datalist[0]), parseFloat(datalist[1]), parseFloat(datalist[2]), parseFloat(datalist[3]));
};
return JSONParseClass;
}());
window["JSONParseClass"] = new JSONParseClass();
window.generateEUI2 = window.generateEUI2||{};
generateEUI2.paths = generateEUI2.paths||{};
generateEUI2.styles = undefined;
generateEUI2.skins = {"eui.Button":"resource/eui_skins/ButtonSkin.exml","eui.CheckBox":"resource/eui_skins/CheckBoxSkin.exml","eui.HScrollBar":"resource/eui_skins/HScrollBarSkin.exml","eui.HSlider":"resource/eui_skins/HSliderSkin.exml","eui.Panel":"resource/eui_skins/PanelSkin.exml","eui.TextInput":"resource/eui_skins/TextInputSkin.exml","eui.ProgressBar":"resource/eui_skins/ProgressBarSkin.exml","eui.RadioButton":"resource/eui_skins/RadioButtonSkin.exml","eui.Scroller":"resource/eui_skins/ScrollerSkin.exml","eui.ToggleSwitch":"resource/eui_skins/ToggleSwitchSkin.exml","eui.VScrollBar":"resource/eui_skins/VScrollBarSkin.exml","eui.VSlider":"resource/eui_skins/VSliderSkin.exml","eui.ItemRenderer":"resource/eui_skins/ItemRendererSkin.exml","app.RuleTipsButton":"resource/eui_skins/web/common/RuleButton.exml","app.RedDotControl":"resource/eui_skins/web/common/RedDotSkin.exml"};

7
js/egret.min_cc7ab31a.js Normal file

File diff suppressed because one or more lines are too long

5231
js/egret.web.min_f6a09338.js Normal file

File diff suppressed because it is too large Load Diff

7
js/eui.min_493403ce.js Normal file

File diff suppressed because one or more lines are too long

2
js/game.min_fc12b653.js Normal file

File diff suppressed because one or more lines are too long

529
js/index.js Normal file
View File

@@ -0,0 +1,529 @@
/**
* 冰雪传奇H5
* 2022 XX信息科技有限公司
*
* @author 123456
* @wx 123456
* @qq 123456
*/
let host = window.location.hostname||'100.88.157.105';
let port = 80;
var webUrl = getHttp() + host + (port && 80 != port ? ':' + port : ''),
account = getQueryString('account'),
token = getQueryString('token'),
noLogin = !account || !token;
if (noLogin) {
setTimeout(function() {
loadBarClear();
loadBarFull();
setTimeout(function() {
window.location.href = webUrl + '/login';
}, randomRange(250, 500));
}, 1e3);
}
window['gameName'] = '夜风冰雪';
window['gameLogo'] = 'LOGO6';
// 请勿更改
window['game'] = 'YFBX';
window['pf'] = 'yfbx';
window['pfID'] = 10001;
window['userInfo'] = {
'account': account,
'token': token,
'openID': md5(account + window['game'] + window['pfID']).toUpperCase(),
'cm': 1,
'adult': 0
};
// 检测 Tampermonkey 插件
function checkTampermonkey() {
setTimeout(() => {
const TampermonkeyVars = ["unsafeWindow", "GM_info"]
if (!TampermonkeyVars.every(e => typeof window[e] == 'undefined')) {
// 如果检测到 Tampermonkey 插件,执行以下代码
alert('检测到您正在使用 Tampermonkey 插件,本网站禁止使用此类插件!');
// 可以选择阻止页面访问或其他操作
window.location.href = '/login'; // 将用户重定向到空白页
} else checkTampermonkey()
}, 5000)
}
checkTampermonkey()
// 游戏个性设置: 设备/版本/界面/NPC参数
window['device'] = 0; // 客户端设备(一般无需更改): 0=自适应, 1=PC端界面, 2=移动端界面
window['gameMode'] = 0; // 版本玩法: 0=三职业, 1=单职业(游戏内仅出现战士职业装备)
window['uiStyle'] = 1; // 血球特效: 0=默认, 1=龙头动态火焰特效
window['npcStyle'] = 1; // NPC特效: 0=默认, 1=微变版本NPC动态特效
window['specialId'] = 2; // 打金服ID
window['withdraw'] = {'sid': 1, 'type': 3, 'ratio': 10000}; // 提现
window['isShowGongGao'] = true;
window['isAutoShowGongGao'] = !getCookie('auto_show_notice') ? (setCookie('auto_show_notice', 1, 1), true) : false;
window['isMicro'] = window['pfID'];
window['selectServer'] = true;
window['fontFamily'] = 'Arial';
window['loginType'] = 1; // 登录类型 0:测试 1:正式
window['loginWay'] = 1;
window['isReport'] = 0; // 是否上报后台
window['isReportPF'] = 0; // 是否上报渠道
window['isDisablePay'] = 0; // 是否关闭充值
window['loginView'] = 'app.MainLoginView';
// 相关URL
window['webHost'] = host;
window['webUrl'] = webUrl;
window['serviceListdUrl'] = webUrl + '/server';
window['setServiceListdUrl'] = webUrl + '/server';
window['payUrl'] = webUrl + '/pay';
window['apiUrl'] = webUrl + '/api';
window['orderUrl'] = webUrl + '/api?act=order';
window['reportUrl'] = webUrl + '/api?act=report'; // 上报接口
window['errorReportUrl'] = webUrl + '/api?act=report&do=error';// 错误上报接口
window['checkUrl'] = webUrl + '/api?act=check'; // 验证URL
window['versionUrl'] = webUrl + '/api?act=version'; // 请求客户端版本
window['getActorInfoUrl'] = webUrl + '/api?act=actor';
window['roleInfoUrl'] = webUrl + '/api?act=role';
window['gongGaoUrl'] = webUrl + '/notice.txt';
// 客服信息
window['kfQQ'] = '123456';
window['kfWX'] = '123456';
window['kfQQUrl'] = 'https://127.0.0.1';
window['kfQQGroupUrl'] = 'https://127.0.0.1';
window['gameVerTxt1'] = '审批文号:新广出审[2022]007号 出版物号ISBN 001-1-0001-0001-1 著作权人XX信息科技有限公司';
window['gameVerTxt2'] = '出版单位XX信息科技有限公司 运营单位XX信息科技有限公司';
window['gameVerTxt3'] = '健康游戏忠告:抵制不良游戏,拒绝盗版游戏。注意自我保护,谨防受骗上当。适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。';
window['publicRes'] = 'https://cdn-cq-res.kubbo.cn/';
var arr = ['loading_1_jpg', 'loading_1_jpg', 'mp_jzjm_png', 'mp_jzjm2_png'];
window['gameLoadImg'] = !getCookie('first_loading') ? (setCookie('first_loading', 1), arr[0]) : arr[randomRange(0, 4)];
window['version1'] = 'zjt1_png';
window['version2'] = 'zjt2_png';
window['version3'] = 'zjt3_png';
window['resVersion'] = '1';
window['thmVersion'] = '1';
window['tableVersion'] = '1.2.80';
window['mainVersion'] = '1.2.2';
window['isDebug'] = false;
var isJsDebug = false;
// 设置标题
//document.title = window['gameName'];
function reporting(type, result) {
if(noLogin) return;
if (window['isReport'] && window['reportUrl']) {
let loginType = window['loginWay'] ? 1 : 0;
let msgInfo = {
type: type,
counter: window['pfID'],
env: window['game'] + '|' + loginType,
time: Date.parse(new Date().toString()) / 1000,
result: result
};
msgInfo['data'] = {
uid: window['userInfo']['uid'],
serverAlias: window['userInfo']['server']
};
var str = JSON.stringify(msgInfo);
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() { //服务器返回值的处理函数,此处使用匿名函数进行实现
if (xhr.readyState == 4 && xhr.status == 200) {
//
}
};
xhr.open('GET', window['reportUrl'] + '&msg=' + str, true); //提交get请求到服务器
xhr.send(null);
}
}
function onerrorFunction(error, uid) {
var xhr = new XMLHttpRequest();
xhr.open('POST', window['checkUrl'] + window.location.search, true);//提交get请求到服务器
xhr.setRequestHeader('Content-Type', 'application/json');
let params = 'pfID=' + window['pfID'] + '&uid=' + uid + '&error=' + error;
xhr.open('GET', window['errorReportUrl'] + '&' + params, true);//提交get请求到服务器
xhr.send(null);
}
window.onerror = function(message, url, line) {
let str = "Message : " + message + "\nURL : " + url + "\nLine Number : " + line;
this.onerrorFunction(str, 0);
alert(str);
}
//1.平台参数格式化
if(!noLogin) {
if (window['loginType']) {
switch (window['pfID']) {
case 10001:
var urlData = window.location.search;
if (urlData.indexOf('?') != -1) {
urlData = urlData.substr(1);
var strs = urlData.split('&');
for (var i = 0; i < strs.length; i++) {
window['userInfo'][strs[i].split('=')[0]] = unescape(strs[i].split('=')[1]);
}
}
break;
default:
// 测试
}
} else {
var urlData = window.location.search;
if (urlData.indexOf('?') != -1) {
urlData = urlData.substr(1);
var strs = urlData.split('&');
for (var i = 0; i < strs.length; i++) {
window['userInfo'][strs[i].split('=')[0]] = unescape(strs[i].split('=')[1]);
}
}
}
}
//2.登录验证
function loginFunction() {
//alert('维护中');
//return;
if(noLogin) return;
// window['userInfo']['serverInfo'] = serverInfo;
//1.平台验证
if (window['loginType']) {
switch (window['pfID']) {
case 10001:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() { // 服务器返回值的处理函数,此处使用匿名函数进行实现
if (xhr.readyState == 4 && xhr.status == 200) {
//console.log(xhr.responseText);
var obj = JSON.parse(xhr.responseText);
//验证成功
if (0 == obj.code) {
reporting(10001, 1);
start();
} else {
loadError = true;
reporting(10001, 0);
var errorMsg = obj.msg ? obj.msg : '通行证验证失败!',
label = document.getElementById('label');
if(label) {
var linkHtml = '<span class="font_small"><a onClick="window.history.back()" class="link_color">点击返回</a> / <a onClick="window.location.reload()" class="link_color">尝试刷新</a></span>';
label.innerHTML = errorMsg + linkHtml;
} else {
alert(filterHTML(errorMsg));
}
}
}
};
xhr.open('GET', window['checkUrl'] + '&do=verify&' + window.location.search.substr(1), true); //提交get请求到服务器
xhr.send(null);
break;
}
} else {
reporting(10001, 1);
start();
// window['checkFunction']();//检测上报
// window['checkSuccess']();
}
}
//3.支付
function payFunction(param) {
console.log(param);
window.open('./pay/?productId=' + param.productId + '&productName=' + param.productName + '&amount=' + param.amount + '&actorid=' + param.gameExtra + '&serverId=' + param.serverId, '_blank');
}
//4.工具类
function callJsFunction(msg) {
if (msg && msg['type']) {
switch (msg['type']) {
case 'showGame':
showGame();
break;
case 'showLoadProgress':
showLoadProgress(msg['progress'], msg['des']);
break;
default:
//测试
}
}
}
let jobAry = ['', '战士', '法师', '战士']
function ReportingFunction(msg) {
if (msg && msg) {
if (msg['type'] == 12 || msg['type'] == 1000) { //等级上报
//创建xhr对象
let reportingUrl = window['reportUrl'];
reportingUrl += '&do=' + encodeURIComponent('game_profile');
reportingUrl += '&udbid=' + encodeURIComponent(1024009155 + '');
reportingUrl += '&gam=' + encodeURIComponent(window['game'] + '');
reportingUrl += '&pas=';
reportingUrl += '&gse=' + encodeURIComponent('s1');
reportingUrl += '&pro=' + encodeURIComponent('logingame');
reportingUrl += '&ya_appid=' + encodeURIComponent('udblogin');
let json_data = {
game_event: msg['type'] == 12 ? 'new_role': 'level_change',
role_name: msg.data['roleName'],
role_level: msg.data['level'] + '',
fight_cap: '',
sex: msg.data['sex'] > 0 ? 'f': 'm',
job: jobAry[msg.data['job']],
partner: '',
equip: msg.data['guildName']
}
json_data = JSON.stringify(json_data);
reportingUrl += '&json_data=' + encodeURIComponent(json_data);
// json_data = { "role_level": "11", "role_name": "s1.虞鹏天", "game_event": "level_change", "fight_cap": "1371", "job": "1" }
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() { //服务器返回值的处理函数,此处使用匿名函数进行实现
if (xhr.readyState == 4 && xhr.status == 200) { //
//var obj = JSON.parse(xhr.responseText);
}
};
xhr.open('GET', reportingUrl, true); //提交get请求到服务器
xhr.send(null);
}
}
}
//6.屏蔽右键
document.onkeydown = function() {
// var e = window.event || arguments[0];
//F12
// if (e.keyCode == 123) {
// return false;
// //Ctrl+Shift+I
// } else if ((e.ctrlKey) && (e.shiftKey) && (e.keyCode == 73)) {
// return false;
// //Shift+F10
// } else if ((e.shiftKey) && (e.keyCode == 121)) {
// return false;
// //Ctrl+U
// } else if ((e.ctrlKey) && (e.keyCode == 85)) {
// return false;
// }
};
/**
* 反馈
*/
function feedbackFunction(info) {
removeIfram();
let msgInfo = {
act: 'feedback',
game: window['game'],
platform: window['pf'],
server: window['userInfo']['server'],
uid: info['uid'],
rolename: info['rolename'],
ts: Date.parse(new Date().toString()) / 1000
};
msgInfo['sign'] = new md5().hex_md5((msgInfo.game + msgInfo.platform + msgInfo.server + msgInfo.uid + msgInfo.rolename + msgInfo.ts + 123456));
let param = '';
for (let key in msgInfo) {
param += key + '=' + msgInfo[key] + '&'
}
param = param.substring(0, param.length - 1)
let srcStr = webUrl + '/api?' + param;
var div = document.createElement('div');
div.id = 'iframDiv';
div.innerHTML = '<iframe id="main" scrolling="no" noresize="true" frameborder="0" style="width: 90%;height: 90%;padding-left:5%;padding-top:2%;" src=' + srcStr + '></iframe>';
// div.style = 'position: relative; width:100%; height:100%;background: rgba(0, 0, 0, 0.5);';
div.style.position = 'relative';
div.style.width = '100%';
div.style.height = '100%';
div.style.background = 'rgba(0, 0, 0, 0.5)';
document.body.appendChild(div);
//创建关闭按钮
let div2 = document.createElement('div');
div2.id = 'btnDiv';
div2.innerHTML = '<img id="closeImg" src="static/img/close_btn.jpg?v=1" height="50" width="50" />'
// div2.style = 'position: absolute;right:0px;top:0px;width:50px;height:50px';
div2.style.position = 'absolute';
div2.style.right = '0px';
div2.style.top = '0px';
div2.style.width = '50px';
div2.style.height = '50px';
div.appendChild(div2);
var closeImg = document.getElementById('closeImg');
closeImg.onclick = removeIfram;
// onloadFunction();
}
// 防沉迷
function IdCardFunction() {
window.open(webUrl);
}
function addQQGrp() {
window.open(window['kfQQGroupUrl']);
}
//下载YY游戏大厅
function downYYGameHallFun() {
window.open(webUrl);
}
//开通会员
function openYYVip() {
window.open(webUrl);
}
//开超玩会员
function openChaoWanVip() {
window.open(webUrl);
}
function removeIfram() {
var div = document.getElementById('iframDiv');
if (div) {
document.body.removeChild(div);
}
div = document.getElementById('btnDiv');
if (div) {
document.body.removeChild(div);
}
}
function bannerNight() {}
/**
* 屏蔽右键
*/
function stop() {
return false;
}
document.oncontextmenu = stop;
//监听屏幕 方向--暂时不用
window.onorientationchange = function(e) {
// var d = document.getElementById('screenHint');
// if (window.orientation == 180 || window.orientation == 0) {
// //竖屏状态
// d.style.display = 'none';
// }
// if (window.orientation == 90 || window.orientation == -90) {
// //横屏状态
// d.style.display = 'block';
// }
}
//断开游戏链接
function closeSocket() {
Main.closesocket();
}
//加载项目工程
var loadScript = function(list, callback) {
var loaded = 0;
var loadNext = function() {
loadSingleScript(list[loaded], function() {
loaded++;
if (loaded >= list.length) {
callback();
} else {
loadNext();
}
});
};
loadNext();
};
var loadTimes = 0;
var jsScr = '';
window['loadScript'] = loadScript;
var loadSingleScript = function(src, callback) {
if (jsScr != src) {
loadTimes = 0;
}
if(src.indexOf('lib') > -1 || src.indexOf('main') > -1) {
var mainSuffix = getQueryString('mainSuffix');
if(mainSuffix) {
src = src.replace('.js', mainSuffix + '.js');
}
src += '?v=' + (isJsDebug ? Math.random() : window['mainVersion']);
}
jsScr = src;
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = false;
s.src = src;
s.addEventListener('load', function() {
s.parentNode.removeChild(s);
s.removeEventListener('load', arguments.callee, false);
callback();
}, false);
s.addEventListener('error', function() {
s.parentNode.removeChild(s);
s.removeEventListener('load', arguments.callee, false);
loadTimes++;
if (loadTimes > 5) {
alert("主程序文件加载失败,请检测网络刷新游戏!\n " + src);
} else {
setTimeout(function() {
loadSingleScript(src, callback);
}, 2000);
}
}, false);
document.body.appendChild(s);
};
//开始启动游戏
function start() {
//alert('维护中');
//return;
var xhr = new XMLHttpRequest();
xhr.open('GET', './manifest.json?v=1.1.1.2', true); // '?v=' + Math.random()
xhr.addEventListener('load', function() {
var manifest = JSON.parse(xhr.response);
var list = manifest.initial.concat(manifest.game);
window['gameAppJS'] = manifest['gameAppJS'];
loadScript(list, function() {
egret.runEgret({
renderMode: 'webgl',
audioType: 0,
calculateCanvasScaleFactor: function(context) {
var backingStore = context.backingStorePixelRatio ||
context.webkitBackingStorePixelRatio ||
context.mozBackingStorePixelRatio ||
context.msBackingStorePixelRatio ||
context.oBackingStorePixelRatio ||
context.backingStorePixelRatio || 1;
return (window.devicePixelRatio || 1) / backingStore;
}
});
});
});
xhr.send(null);
}
//上报
reporting(10000, 1);
loginFunction();

7
js/jszip.min_3648741c.js Normal file

File diff suppressed because one or more lines are too long

5246
js/lib.min_jocw9Tu2.js Normal file

File diff suppressed because one or more lines are too long

91545
js/main.min_jocw9Tu2.js Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

1
js/socket.min_afab9be.js Normal file
View File

@@ -0,0 +1 @@
var __reflect=this&&this.__reflect||function(t,e,n){t.__class__=e,n?n.push(e):n=[e],t.__types__=t.__types__?n.concat(t.__types__):n},__extends=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var o in e)e.hasOwnProperty(o)&&(t[o]=e[o]);n.prototype=e.prototype,t.prototype=new n},egret;!function(t){}(egret||(egret={}));var egret;!function(t){var e=function(e){function n(o,i){void 0===o&&(o=""),void 0===i&&(i=0);var s=e.call(this)||this;return s._writeMessage="",s._readMessage="",s._connected=!1,s._connecting=!1,s._isReadySend=!1,s._bytesWrite=!1,s._type=n.TYPE_STRING,s._connected=!1,s._writeMessage="",s._readMessage="",s.socket=new t.ISocket,s.socket.addCallBacks(s.onConnect,s.onClose,s.onSocketData,s.onError,s),s}return __extends(n,e),n.prototype.connect=function(t,e){this._connecting||this._connected||(this._connecting=!0,this.socket.connect(t,e))},n.prototype.connectByUrl=function(t){this._connecting||this._connected||(this._connecting=!0,this.socket.connectByUrl(t))},n.prototype.close=function(){this._connected&&this.socket.close()},n.prototype.onConnect=function(){this._connected=!0,this._connecting=!1,this.dispatchEventWith(t.Event.CONNECT)},n.prototype.onClose=function(){this._connected=!1,this.dispatchEventWith(t.Event.CLOSE)},n.prototype.onError=function(){this._connecting&&(this._connecting=!1),this.dispatchEventWith(t.IOErrorEvent.IO_ERROR)},n.prototype.onSocketData=function(e){"string"==typeof e?this._readMessage+=e:this._readByte._writeUint8Array(new Uint8Array(e)),t.ProgressEvent.dispatchProgressEvent(this,t.ProgressEvent.SOCKET_DATA)},n.prototype.flush=function(){return this._connected?(this._writeMessage&&(this.socket.send(this._writeMessage),this._writeMessage=""),this._bytesWrite&&(this.socket.send(this._writeByte.buffer),this._bytesWrite=!1,this._writeByte.clear()),void(this._isReadySend=!1)):void t.$warn(3101)},n.prototype.writeUTF=function(e){return this._connected?(this._type==n.TYPE_BINARY?(this._bytesWrite=!0,this._writeByte.writeUTF(e)):this._writeMessage+=e,void this.flush()):void t.$warn(3101)},n.prototype.readUTF=function(){var t;return this._type==n.TYPE_BINARY?(this._readByte.position=0,t=this._readByte.readUTF(),this._readByte.clear()):(t=this._readMessage,this._readMessage=""),t},n.prototype.writeBytes=function(e,n,o){return void 0===n&&(n=0),void 0===o&&(o=0),this._connected?this._writeByte?(this._bytesWrite=!0,this._writeByte.writeBytes(e,n,o),void this.flush()):void t.$warn(3102):void t.$warn(3101)},n.prototype.readBytes=function(e,n,o){return void 0===n&&(n=0),void 0===o&&(o=0),this._readByte?(this._readByte.position=0,this._readByte.readBytes(e,n,o),void this._readByte.clear()):void t.$warn(3102)},Object.defineProperty(n.prototype,"connected",{get:function(){return this._connected},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"type",{get:function(){return this._type},set:function(e){this._type=e,e!=n.TYPE_BINARY||this._writeByte||(this._readByte=new t.ByteArray,this._writeByte=new t.ByteArray)},enumerable:!0,configurable:!0}),n.TYPE_STRING="webSocketTypeString",n.TYPE_BINARY="webSocketTypeBinary",n}(t.EventDispatcher);t.WebSocket=e,__reflect(e.prototype,"egret.WebSocket")}(egret||(egret={}));var egret;!function(t){var e;!function(e){var n=function(){function e(){this.host="",this.port=0,window.WebSocket||t.$error(3100)}return e.prototype.addCallBacks=function(t,e,n,o,i){this.onConnect=t,this.onClose=e,this.onSocketData=n,this.onError=o,this.thisObject=i},e.prototype.connect=function(t,e){this.host=t,this.port=e;var n="ws://"+this.host+this.port==443?"":":"+this.port;this.socket=new window.WebSocket(n),this.socket.binaryType="arraybuffer",this._bindEvent()},e.prototype.connectByUrl=function(t){this.socket=new window.WebSocket(t),this.socket.binaryType="arraybuffer",this._bindEvent()},e.prototype._bindEvent=function(){var t=this,e=this.socket;e.onopen=function(){t.onConnect&&t.onConnect.call(t.thisObject)},e.onclose=function(e){t.onClose&&t.onClose.call(t.thisObject)},e.onerror=function(e){t.onError&&t.onError.call(t.thisObject)},e.onmessage=function(e){t.onSocketData&&(e.data?t.onSocketData.call(t.thisObject,e.data):t.onSocketData.call(t.thisObject,e))}},e.prototype.send=function(t){this.socket.send(t)},e.prototype.close=function(){this.socket.close()},e.prototype.disconnect=function(){this.socket.disconnect&&this.socket.disconnect()},e}();e.HTML5WebSocket=n,__reflect(n.prototype,"egret.web.HTML5WebSocket",["egret.ISocket"]),t.ISocket=n}(e=t.web||(t.web={}))}(egret||(egret={}));

1
js/tween.min_6c5a88f9.js Normal file

File diff suppressed because one or more lines are too long

187
linuxdo.php Normal file
View File

@@ -0,0 +1,187 @@
<?php
// LINUXDO三方登录
$_LINUXDO_CONNECT = [
'client_id' => 'tfKevot5lSwB5A5gcqPQMMhaXDLjib0P',
'client_secret' => '95KWP8sbRIUu5df7gBo5fIztz6ISmvfa'
];
// cURL 函数
function get_curl($url, $post = 0, $referer = 0, $cookie = 0, $header = 0, $ua = 0, $nobaody = 0, $addheader = 0)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
$httpheader[] = "Accept: */*";
$httpheader[] = "Accept-Encoding: gzip,deflate,sdch";
$httpheader[] = "Accept-Language: zh-CN,zh;q=0.8";
$httpheader[] = "Connection: close";
if ($header) {
$httpheader = array_merge($httpheader, $header);
}
curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader);
if ($post) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
if ($header) {
curl_setopt($ch, CURLOPT_HEADER, false);
}
if ($cookie) {
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
}
if ($referer) {
if ($referer == 1) {
curl_setopt($ch, CURLOPT_REFERER, '');
} else {
curl_setopt($ch, CURLOPT_REFERER, $referer);
}
}
if ($ua) {
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
} else {
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36");
}
if ($nobaody) {
curl_setopt($ch, CURLOPT_NOBODY, 1);
}
curl_setopt($ch, CURLOPT_ENCODING, "gzip");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$ret = curl_exec($ch);
curl_close($ch);
return $ret;
}
$code = $_GET['code'];
$key = base64_encode($_LINUXDO_CONNECT['client_id'] . ':' . $_LINUXDO_CONNECT['client_secret']);
$header = [
'Authorization: Basic ' . $key
];
$post = http_build_query([
'grant_type' => 'authorization_code',
'code' => $code,
'redirect_uri' => ''
]);
$getTokenRes = get_curl('https://connect.linux.do/oauth2/token', $post, 0, 0, $header);
$getTokenArr = json_decode($getTokenRes, true);
if (isset($getTokenArr['access_token'])) {
$access_token = $getTokenArr['access_token'];
$header = [
'Authorization: Bearer ' . $access_token
];
$getUserRes = get_curl('https://connect.linux.do/api/user', 0, 0, 0, $header);
$getUserArr = json_decode($getUserRes, true);
} else {
$err = json_encode($getTokenArr);
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport"
content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="applicable-device" content="mobile">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="full-screen" content="yes" />
<meta name="x5-fullscreen" content="true" />
<meta name="360-fullscreen" content="true" />
<meta name="screen-orientation" content="portrait">
<meta name="x5-orientation" content="portrait">
<meta name="x5-page-mode" content="app">
<title><?= $_CONFIG['game_name'] ?> <?= $_CONFIG['game_description'] ?></title>
<meta name="description" content="<?= $_CONFIG['game_name'] ?> <?= $_CONFIG['game_description'] ?>">
<meta name="keywords" content="<?= $_CONFIG['game_name'] ?>,<?= $_CONFIG['game_description'] ?>">
<link rel="stylesheet" href="static/css/login.css?v=1.1.6" />
<script>
function request(url, params) {
return fetch(url, params).then(res => res.json())
}
function handleBind(account, linuxdo_account) {
return request("/api?act=bind&account=" + account + "&connect_id=" + linuxdo_account).then(res => {
if (res.password) {
alert("绑定成功,请点击确定开始游戏!")
location.href = "/play?account=" + account + "&token=" + res.password;
}
})
}
function processLogin(params = {}, connect_id) {
const formData = new FormData();
formData.append("serverId", "1");
Object.entries(params).forEach(([key, value]) => formData.append(key, value));
request("/api?act=reg", { method: "POST", body: formData }).then(res => {
if (res.code == '0') {
handleBind(params.account, connect_id)
} else {
document.body.innerHTML = "授权失败"
return
}
})
}
function registerDirect() {
const linuxdo_account = document.getElementById("linuxdo").value;
processLogin({ type: "1", account: linuxdo_account, password: "linuxdo", password2: "linuxdo" }, linuxdo_account)
}
function linkAccount() {
const account = document.getElementById("account").value;
const password = document.getElementById("password").value;
const linuxdo_account = document.getElementById("linuxdo").value;
processLogin({ type: "0", account, password, }, linuxdo_account)
}
</script>
</head>
<body>
<input type="hidden" id="linuxdo" value="<?= $getUserArr['username'] ?>">
<?php if (!empty($getUserArr['username'])) { ?>
<script>
const connectId = document.getElementById('linuxdo').value
request("/api?act=link&connect_id=" + connectId, { method: "POST" }).then(res => {
if (res.code == '0') {
location.href = "/play?account=" + res.data.username + "&token=" + res.data.password;
} else {
document.getElementById("bindBox").style.display = "block"
const linkAccountBtn = document.getElementById("linkAccount");
linkAccountBtn.addEventListener("click", linkAccount)
const registerDirectBtn = document.getElementById("registerDirect");
registerDirectBtn.addEventListener("click", registerDirect)
}
})
</script>
<div id="bindBox"
style="width:400px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;justify-content:center;align-items:center;flex-direction:column;display:none;">
<div>当前尚未有你的游戏账号,请选择</div><br>
<a id="registerDirect" onclick="registerDirect" style="cursor:pointer;font-weight:bold">Linuxdo账号绑定</a><br>
<div>如果已有账号,请输入账号和密码</div><br>
<input type="text" id="account" placeholder="请输入账号" onKeyUp="value = value.replace(/[\W]/g, '')"
autocomplete="off" disableautocomplete><br>
<input type="password" id="password" placeholder="请输入密码"><br>
<button id="linkAccount">绑定并登录</button>
</div>
<?php } ?>
<?php if (!empty($err)) { ?>
授权发生异常:<?= $err ?>
<?php } ?>
</body>
</html>

736
login.php Normal file
View File

@@ -0,0 +1,736 @@
<!--
* 冰雪传奇H5
* 2022 XX信息科技有限公司
*
* @author 123456
* @wx 123456
* @qq 123456
-->
<?php
include 'config.php';
// 连接数据库
$mySQLi = new mysqli($_CONFIG_DB['db_host'], $_CONFIG_DB['db_user'], $_CONFIG_DB['db_password'], $_CONFIG_DB['db_name'], $_CONFIG_DB['db_port']);
if($mySQLi->connect_errno) returnJson(['code' => 1, 'msg' => $mySQLi->connect_error]);
$mySQLi->set_charset($_CONFIG_DB['db_charset']);
// 查询
$status = 1;
$stmt = $mySQLi->prepare('select server_id from server where status >= ? order by server_id asc limit 1000');
$stmt->bind_param('d', $status);
$stmt->bind_result($server_id);
$stmt->execute();
$stmt->store_result();
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<meta name="applicable-device" content="mobile">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="full-screen" content="yes"/>
<meta name="x5-fullscreen" content="true"/>
<meta name="360-fullscreen" content="true"/>
<meta name="screen-orientation" content="portrait">
<meta name="x5-orientation" content="portrait">
<meta name="x5-page-mode" content="app">
<title><?=$_CONFIG['game_name']?> <?=$_CONFIG['game_description']?></title>
<meta name="description" content="<?=$_CONFIG['game_name']?> <?=$_CONFIG['game_description']?>">
<meta name="keywords" content="<?=$_CONFIG['game_name']?>,<?=$_CONFIG['game_description']?>">
<link rel="stylesheet" href="static/css/login.css?v=1.1.6"/>
<script>
document.onkeydown = document.onkeyup = document.onkeypress = function(event) {
var e = event || window.event || arguments.callee.caller.arguments[0];
if (e && e.keyCode == 123) {
e.returnValue = false;
return false;
}
}
</script>
<script src="static/js/jquery.js"></script>
<script src="static/layer/layer.js"></script>
<!--<script src="static/js/cookie.js"></script>-->
<script src="static/js/md5.js"></script>
<script src="static/js/common.js?v=1"></script>
<script>
//全局ajax loading事件
// var layer_loading;
// $(document).ajaxStart(function() {
// layer_loading = layer.load(0, {shade: 0.8});
// });
// $(document).ajaxSuccess(function() {
// layer.close(layer_loading);
// });
layer.config({skin: 'dialogs'});
</script>
</head>
<body oncontextmenu="return false" onselectstart="return false" ondragstart="return false">
<div class="wrapper pagebg">
<div class="dialog account" id="account-login">
<h2 class="title"><?=$_CONFIG['game_name']?> <?=$_CONFIG['game_description']?></h2>
<input type="text" id="account" value="<?=isset($_COOKIE['account']) ? $_COOKIE['account'] : ''?>" placeholder="请输入<?=$_CONFIG['account_name']?><?=$_CONFIG['account_name_suffix']?>" onKeyUp="value = value.replace(/[\W]/g, '')" autocomplete="off" disableautocomplete>
<input type="password" id="password" value="<?=isset($_COOKIE['password']) ? $_COOKIE['password'] : ''?>" placeholder="请输入<?=$_CONFIG['account_name']?><?=$_CONFIG['password_name_suffix']?>">
<input type="password" id="password2" placeholder="请再次输入<?=$_CONFIG['account_name']?><?=$_CONFIG['password_name_suffix']?>" style="display: none;">
<select id="serverId" style="border: none; display: none; margin-bottom: 10px;">
<option value="0">请选择区服</option>
<?php while($stmt->fetch()) { ?>
<option value="<?=$server_id?>"><?=$server_id?>区</option>
<?php } ?>
</select>
<input type="text" id="email" placeholder="<?php if($_CONFIG['reg_code_open']): ?>请输入<?php if('email' == $_CONFIG['code_type']): ?>邮箱地址<?php else: ?>手机号<?php endif; ?><?php else: ?><?php if('email' == $_CONFIG['code_type']): ?>邮箱地址<?php else: ?>手机号<?php endif; ?>(选填)<?php endif; ?>,用于找回密码" style="display: none;" title="用于找回密码">
<div class="code" id="codeBox" style="display: none;">
<input type="text" id="code" placeholder="请输入验证码">
<a href="javascript:void(0);" id="getCode">获取验证码</a>
</div>
<div id="agree" class="agree">
<span><img data-v-427e1e01="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAVFBMVEWeICicICedISidISibIiadISeeISiOOTmdISeeISj///+aGSGcHiT68vOYFByhKjHRmZzqz9CzVlvx4OG4YWXJh4qpPUPkw8WkMjjdsrS/cXatR00P5JiiAAAACnRSTlPuTT//Gq+6A9iEOAr7KAAAAbBJREFUSMeVlte2gyAQRTHYcBBQiu3///OOMdZALvCUrHX2mYYAqao8Y2VN/l11ybK8qkiVv1hR04hVF+yVVwT1NaFRi9RIkIzVNHrVLCOsIPEAKRgpEwJgiJIk6ZEgUQlxAP5JKhLgnCYAHOg4ygQAwBnjEIsDAEDOSvUgooHRTHowkQCseqWbLh546wPA2e6r/4T6xp8SP/t9+M9vfQCQEtt9MnDqfSlxLpfe9OMVcLveB6x2StllG9D6n5/6dvqeg4BFaT3M46eQm76zywPgHAMMTaOVkQAf/6Hd9QpTvW8N4LJf+41ETwEbzJ296uVzewtwtnsLMDoVgi53PcADAGmmTdAO1gnxpb9H4HtCW0dmF/A/AOz4ocAyJqv8/geALbXdrm9a3Wm//xlh7Xl7EvvPp/+1hgWndCIB/+ukpTOXMgL+90nLxd6CePyvEfDjoc6orv3l//ge8Hjo7aB/+D8BgWnN2wD9/l+HAO65cU2rDfh7ANy1WHs3+P19x8y6sWdrzejz9wOCusWN1OcfOMg4B786CGC7QgRJv7KSL8Xkazf5Yk9+OiQ/TlKfP3/iYTk/HuYxLgAAAABJRU5ErkJggg=="></span>
我已阅读并同意 <a href="javascript:void(0);" id="agree_btn">用户协议及隐私协议<a/>
</div>
<a href="javascript:process_login();" id="submitButton" class="button fit">登 录</a>
<div style="display:flex;justify-content:center;gap:8px;font-size:12px" >
<div style="display:flex;align-items:center;flex-direction:column;gap:4px;cursor:pointer" id="linuxdoConnect">
<img src="static/img/linuxdo_logo.png" style="width:60px;height:60px" alt="Linux.Do登录"/>
<div>Linux.do</div>
</div>
<div style="display:flex;align-items:center;flex-direction:column;gap:4px;cursor:pointer" id="naixiConnect">
<img src="https://forum.naixi.net/favicon.ico" style="width:60px;height:60px" alt="奶昔登录"/>
<div>奶昔登录</div>
</div>
</div>
<div class="forget_password">
<a href="javascript:void(0);" id="forgetPassword" data-type="2">忘记密码?</a>
<a href="javascript:void(0);" class="pull-right" id="switchBtn" data-type="1">注册</a>
</div>
</div>
<div id="bg" class="gamebg" style="background-image: url(static/img/login_bg.jpg);"></div>
</div>
<script>
var loginBox = $('#account-login'),
accountObj = $('#account'),
passwordObj = $('#password'),
password2Obj = $('#password2'),
serverObj = $('#serverId'),
emailObj = $('#email'),
codeBoxObj = $('#codeBox'),
codeObj = $('#code'),
getCodeBtn = $('#getCode'),
agree = $('#agree'),
submitButton = $('#submitButton'),
forgetPassword = $('#forgetPassword'),
switchBtn = $('#switchBtn');
const linuxdoConnect = $("#linuxdoConnect")
linuxdoConnect.click(()=>{
location.href="https://connect.linux.do/oauth2/authorize?response_type=code&client_id=tfKevot5lSwB5A5gcqPQMMhaXDLjib0P"
})
const naixiConnect = $("#naixiConnect")
naixiConnect.click(()=>{
location.href="https://auth.naixi.net/login/oauth/authorize?client_id=6c597d1551b868dce9fe&redirect_uri=http://cq.eb.cx/naixi_callback&response_type=code&scope=profile&state=STATE"
})
var isPhone = isMobile(),
agent_id = getQueryString('agent_id'),
codeOpen = <?=$_CONFIG['code_open']?>,
regCodeOpen = <?=$_CONFIG['reg_code_open']?>,
codeType = '<?=$_CONFIG['code_type']?>',
type = 0,
codeTime = 0,
getCodeTimer = 0;
var saveAccount = '',
savePassword = '',
codeBtnTxt = getCodeBtn.html(),
curBtnTxt = '',
accountName = '<?=$_CONFIG['account_name']?>',
accountNameLast = '<?=$_CONFIG['account_name_suffix']?>',
passwordNameLast = '<?=$_CONFIG['password_name_suffix']?>';
$(window).load(function() {
var copyright = $('#copyright'),
firstChangeBg = getCookie('first_change_bg'),
bgImgPath = 'static/img/',
bgImgs = ['login_bg.jpg', 'login_bg.jpg', 'login_bg2.jpg', 'login_bg.jpg', 'login_bg.jpg'],
randomBg = !firstChangeBg ? (setCookie('first_change_bg', 1), 0) : randomRange(0, 4),
bgImg = bgImgs[randomBg];
$('#bg').css('background-image', 'url(' + bgImgPath + bgImg + ')');
setTimeout(function() {
layer.open({
type: 1,
content: loginBox,
skin: 'loginbox',
closeBtn: 0,
shade: .2,
title: false
});
if(!isPhone) {
if(accountObj.val() == '') {
accountObj.focus();
} else if(passwordObj.val() == '') {
passwordObj.focus();
}
}
}, 300);
setTimeout(function() {
copyright.fadeIn();
}, 750);
if(isPhone) {
$('input').focus(function() {
copyright.hide();
}).blur(function() {
copyright.fadeIn();
});
} else {
$(window).resize(function() {
if(125 >= loginBox.offset().top) {
copyright.hide();
} else{
copyright.show();
}
});
}
});
$(function() {
document.documentElement.addEventListener('touchstart', function (event) {
if (event.touches.length > 1) {
event.preventDefault();
}
}, false);
if(!isPhone) {
$(document).keydown(function() {
if (event.keyCode == 13) {
process_login();
}
});
}
if(agent_id) {
changePage(1);
}
forgetPassword.click(function(t) {
var _type = $(t.currentTarget).attr('data-type');
changePage(_type);
});
switchBtn.click(function(t) {
var _type = $(t.currentTarget).attr('data-type');
changePage(_type);
});
getCodeBtn.click(function(t) {
var t = $(t.currentTarget),
ret;
if(t.hasClass('disabled')) return;
var account = accountObj.val(),
emailVal = emailObj.val();
ret = checkAccountLength(account, accountName + accountNameLast);
//console.log(ret);
if(true !== ret) {
showTips(ret, accountObj, 'error');
return;
}
ret = funcChina(account, accountName + accountNameLast);
//console.log(ret);
if(true !== ret) {
showTips(ret, accountObj, 'error');
return;
}
ret = checkAccount(account, accountName + accountNameLast);
//console.log(ret);
if(true !== ret) {
showTips(ret, accountObj, 'error');
return;
}
ret = checkEmail(emailVal);
//console.log(ret);
if(true !== ret) {
showTips(ret, emailObj, 'error');
return;
}
t.addClass('disabled').html('正在发送..');
let fm = new FormData();
fm.append('type', type);
fm.append('account', account);
fm.append('email', emailVal);
$.ajax({
url: '/api?act=getCode',
type: 'post',
data: fm,
contentType: false,
processData: false,
dataType: 'json',
success: function(res) {
if(0 == res.code) {
codeTime = res.time;
clearInterval(getCodeTimer);
getCodeTimer = setInterval(function() {
updateCodeTime(res.time);
}, 1e3);
layer.alert(res.msg, {icon: 6, title: false});
} else {
showTips(res.msg, 'error');
if(res.time) {
codeTime = res.time;
clearInterval(getCodeTimer);
getCodeTimer = setInterval(function() {
updateCodeTime(res.time);
}, 1e3);
} else {
setTimeout(function() {
t.html(codeBtnTxt).removeClass('disabled');
}, 3e3);
}
}
return false;
},
error: function(e) {
showTips('系统错误,请稍候重试。', 6, 'error');
setTimeout(function() {
t.html(codeBtnTxt).removeClass('disabled');
}, 3e3);
return false;
}
});
});
$('#kfqq').click(function() {
var callFunc;
if(isPhone) {
callFunc = function() {
window.location.href = 'http://wpa.qq.com/msgrd?v=3&uin=123456&site=qq';
};
} else {
callFunc = function() {
window.open('http://wpa.qq.com/msgrd?v=3&uin=123456&site=qq');
};
}
layer.alert('开始发起QQ客服聊天', {
title: false,
icon: 6,
anim: 2,
shadeClose: true,
btn: ['确定', '取消'],
yes: function() {
callFunc();
}
});
});
$('#agree_btn').click(function() {
layer.open({
type: 2,
anim: 2,
content: 'api?act=misc&do=agree',
skin: 'agree_content',
area: isPhone ? [$(document).width() + 'px', $(document).height() + 'px'] : ['700px', '800px'],
closeBtn: isPhone ? 1 : 2,
shade: 0.3,
shadeClose: true,
title: '用户协议及隐私协议',
//maxmin: true
});
});
});
function changePage(t) {
if(1 == t || 2 == t) {
saveAccount = accountObj.val();
savePassword = passwordObj.val();
} else {
accountObj.val(saveAccount);
passwordObj.val(savePassword);
}
if(1 == t) {
accountObj.val('');
passwordObj.val('');
password2Obj.val('');
codeOpen && emailObj.val('');
} else if(2 == t) {
passwordObj.val('');
password2Obj.val('');
}
if(codeOpen && (1 == t || 2 == t)) {
codeObj.val('');
}
if(0 == t || 1 == t) {
var txt = '',
txt2 = '',
regTxt = '注 册',
loginTxt = '登 录';
if(1 == t) {
passwordObj.attr('placeholder', '请输入' + accountName + passwordNameLast);
password2Obj.attr('placeholder', '请再次输入' + accountName + passwordNameLast);
password2Obj.show();
serverObj.show();
codeOpen && emailObj.show();
codeOpen && regCodeOpen && codeBoxObj.show();
txt = regTxt;
txt2 = loginTxt;
switchBtn.attr('data-type', 0);
forgetPassword.hide();
} else if(0 == t) {
passwordObj.attr('placeholder', '请输入' + accountName + passwordNameLast);
password2Obj.hide();
serverObj.hide();
emailObj.hide();
codeBoxObj.hide();
txt = loginTxt;
txt2 = regTxt;
switchBtn.attr('data-type', 1);
forgetPassword.show();
} else {
showTips('参数错误!请刷新页面重试~', 'error');
return;
}
agree.show();
type = t;
curBtnTxt = txt;
switchBtn.html(txt2.replace(' ', ''));
submitButton.html(txt);
} else {
if(!codeOpen) {
showTips('验证码系统尚未开启找回密码请联系QQ客服。', 'error');
return;
}
var txt = '修改' + accountName + passwordNameLast,
txt2 = '登 录';
passwordObj.attr('placeholder', '请输入新的' + accountName + passwordNameLast);
password2Obj.attr('placeholder', '请再次输入新的' + accountName + passwordNameLast);
password2Obj.show();
codeOpen && emailObj.show();
codeOpen && codeBoxObj.show();
agree.hide();
forgetPassword.hide();
type = t;
curBtnTxt = txt;
switchBtn.attr('data-type', 0);
switchBtn.html(txt2.replace(' ', ''));
submitButton.html(txt);
}
setFocus();
}
function setFocus() {
if(isPhone) return;
var e,
inputType = '';
loginBox.find('input').each(function(_, elem) {
e = $(elem);
inputType = e.attr('type');
if(e && e.is(':visible') && !e.attr('disabled') && !e.hasClass('disabled') && inputType && ('text' == inputType || 'password' == inputType) && '' == e.val()) {
//console.log(elem);
if(!e.is(':focus')) {
e.focus();
return false;
}
}
});
}
function updateCodeTime(time) {
if(0 < codeTime) {
codeTime--;
getCodeBtn.html('已发送(' + codeTime + ')');
} else {
codeTime = 0;
clearInterval(getCodeTimer);
getCodeBtn.html(codeBtnTxt).removeClass('disabled');
}
}
function checkAllInputFocus() {
return passwordObj.is(':focus');
}
function recoveryBtnStatus() {
submitButton.html(curBtnTxt).removeClass('disabled');
}
function showTips(msg, param2, status) {
var callFunc = null,
msgNewParam = {};
if('string' === typeof param2) {
//console.log('param2 is string');
if('function' === typeof status) {
//console.log('status is function');
callFunc = status;
} else if('object' === typeof status) {
//console.log('status is object');
msgNewParam = status;
} else {
//console.log('[!] status is unknown type: ' + typeof status);
}
status = param2;
} else {
//console.log('param2 no is string');
status = !status ? 'success' : status;
}
//console.log(loginBox.offset().top);
var icons = {'error': 0, 'success': 6},
params = {
icon: status && icons[status] ? icons[status] : icons['error'],
offset: msgNewParam['offset'] ? loginBox.offset().top - 100 : 't',
shift: 1
};
if('number' === typeof param2) {
params['shift'] = param2;
}
if(!$.isEmptyObject(msgNewParam)) {
/*for(var k in params) {
if(!msgNewParam[k]) {
params.push(msgNewParam[k]);
//console.log('push msgNewParam[' + k + '] to params, k=' + k, msgNewParam[k]);
}
}*/
//console.log('old params and msgNewParam', params, msgNewParam);
params = Object.assign(params, msgNewParam);
//console.log('merge params and msgNewParam', params, msgNewParam);
}
!isPhone && param2 instanceof jQuery && 'object' === typeof param2 && param2.focus();
layer.msg(msg ? msg : '操作成功!', params, function() {
callFunc && callFunc();
});
}
function process_login() {
if(submitButton.hasClass('disabled')) return;
var account = $.trim(accountObj.val()),
password = passwordObj.val(),
ret;
ret = checkAccountLength(account, accountName + accountNameLast);
//console.log(ret);
if(true !== ret) {
showTips(ret, accountObj, 'error');
return;
}
ret = funcChina(account, accountName + accountNameLast);
//console.log(ret);
if(true !== ret) {
showTips(ret, accountObj, 'error');
return;
}
ret = checkAccount(account, accountName + accountNameLast);
//console.log(ret);
if(true !== ret) {
showTips(ret, accountObj, 'error');
return;
}
ret = checkAccountLength(password, accountName + passwordNameLast);
//console.log(ret);
if(true !== ret) {
showTips(ret, passwordObj, 'error');
return;
}
ret = checkPassword(password, accountName + passwordNameLast);
//console.log(ret);
if(true !== ret) {
showTips(ret, passwordObj, 'error');
return;
}
if(1 == type || 2 == type) {
var password2 = password2Obj.val();
ret = checkAccountLength(password2, accountName + passwordNameLast);
//console.log(ret);
if(true !== ret) {
showTips(ret, password2Obj, 'error');
return;
}
ret = checkPassword(password2, accountName + passwordNameLast);
//console.log(ret);
if(true !== ret) {
showTips(ret, password2Obj, 'error');
return;
}
if(password2 != password) {
showTips('两次输入的' + (accountName + passwordNameLast) + '不一致!', password2Obj, 'error');
return;
}
if(codeOpen) {
var emailVal = emailObj.val(),
codeVal = codeObj.val();
if(2 == type || 1 == type && (regCodeOpen || '' != emailVal)) {
if('email' == codeType) {
ret = checkEmail(emailVal);
//console.log(ret);
if(true !== ret) {
showTips(ret, emailObj, 'error');
return;
}
} else {
// TODO: check mobile
showTips('未开启手机验证码!', 'error');
return;
}
}
if(2 == type || 1 == type && regCodeOpen) {
if('' == codeVal) {
showTips('请输入验证码!', codeObj, 'error');
return;
}
if(6 != codeVal.length) {
showTips('验证码长度为6位数字', codeObj, 'error');
return;
}
}
}
}
curBtnTxt = submitButton.html();
submitButton.addClass('disabled').html('正在探索..');
let fm = new FormData();
fm.append('type', type);
fm.append('account', account);
fm.append('password', password);
if(1 == type || 2 == type) {
fm.append('password2', password2);
if(1 == type) {
fm.append('serverId', serverObj.val());
}
if(codeOpen) {
if('email' == codeType) {
fm.append('email', emailVal);
}
if(2 == type || 1 == type && regCodeOpen) {
fm.append('code', codeVal);
}
}
}
if(1 == type && agent_id) {
fm.append('agent_id', agent_id);
}
$.ajax({
url: '/api?act=reg',
type: 'post',
data: fm,
contentType: false,
processData: false,
dataType: 'json',
success: function(res) {
var _reTime = 0,
jumpUrl = '';
if(res.code == 0) { // success
_reTime = 8e3;
updateCodeTime(0);
jumpUrl = '/play?account=' + account + '&token=' + res.token;
if(0 == type) { // login
//showTips(res.msg, 'success', {offset: true, shade: .5, shadeClose: false, time: 10e3});
layer.alert(res.msg, {
title: false,
icon: 6,
shade: .5,
shadeClose: false,
anim: 1,
closeBtn: false,
btn: false,
time: 10e3
});
setTimeout(function() {
layer.close(layer.index);
window.location.href = jumpUrl;
}, 2e3);
} else if(1 == type) { // register
/*showTips(res.msg, 'success', {time: 5e3, shadeClose: false});
setTimeout(function() {
layer.closeAll();
window.location.href = jumpUrl;
}, 5e3);*/
layer.alert(res.msg, {
title: false,
icon: 6,
shade: .5,
anim: 1,
closeBtn: false,
btn: ['传送'],
yes: function(i) {
layer.close(i);
recoveryBtnStatus();
window.location.href = jumpUrl;
}
});
} else if(2 == type) {
savePassword = passwordObj.val();
layer.alert(res.msg, {
icon: 6,
title: false,
shade: .5,
anim: 2,
closeBtn: false,
yes: function(i) {
layer.close(i);
codeObj.val('');
recoveryBtnStatus();
changePage(0);
}
});
return;
}
} else { // failed
_reTime = 2e3;
showTips(res.msg, 6, 'error');
}
setTimeout(function() {
//console.log('can submit');
recoveryBtnStatus();
}, _reTime);
return false;
},
error: function(e) {
showTips('系统错误,请稍候重试。', 6, 'error');
setTimeout(function() {
recoveryBtnStatus();
}, 3e3);
return false;
}
});
}
</script>
</body>
</html>

18
manifest.json Normal file
View File

@@ -0,0 +1,18 @@
{
"initial": [
"js/egret.min_cc7ab31a.js?v=1.2",
"js/egret.web.min_f6a09338.js",
"js/eui.min_493403ce.js",
"js/assetsmanager.min_f5f8ba18.js",
"js/game.min_fc12b653.js",
"js/socket.min_afab9be.js",
"js/tween.min_6c5a88f9.js",
"js/promise.min_83a6a5d.js",
"js/jszip.min_3648741c.js",
"js/lib.min_jocw9Tu2.js"
],
"game": [
"js/default.thm_a7013eeb.js",
"js/main.min_jocw9Tu2.js"
]
}

13
notice.txt Normal file
View File

@@ -0,0 +1,13 @@
[
{
"title":"公告",
"text":"<font size=28 color=\"#28ee01\">【开服转生礼包】</font>\n<font size=24 color=\"#e50000\" bold=\"true\">★ 2转送特权令*2可提升会员等级尊享更高特权 ★</font>\n<font size=24 color=\"#eee104\">★ 3转送金玫瑰时装详见【精彩活动】-【开服转生】★</font>\n<font size=20 color=\"#eee104\">仅限开服前3天</font>\n\n<font size=28 color=\"#28ee01\">【VIP专属礼包】</font>\n<font size=24 color=\"#eee104\">仅限该账号当日尊享,福利大厅-激活码-兑换使用:</font>\n<font size=20 color=\"#e0ae75\">1、VIP666</font><font size=20 color=\"#28ee01\">绑定金币*50w、洗炼石*20、神魔结晶*5</font>\n<font size=20 color=\"#e0ae75\">2、VIP888</font><font size=20 color=\"#28ee01\">狂风碎片*3、九品证明*3、祝福油*5</font>\n<font size=20 color=\"#e0ae75\">3、VIP999</font><font size=20 color=\"#28ee01\">初阶秘籍*20、暴击碎片*5、星之碎片*10</font>"
},
{
"title":"充值公告",
"text":"<b>真诚、友善、团结、专业</b>,共建你我和谐之游戏氛围。\n\n凭自己的努力开始努力把!本服谢绝任何充值!"
},{
"title":"更新说明",
"text":"1.增加机缘宝箱,用于补偿合服造成的损失,使用激活码 tiancijiyuan (天赐机缘),能获得什么全靠脸\n奖品池:魔器盒子(2%),刈鹿刀(2%),不争(2%),霜华(2%),辉金甲(2%),天命之子(2%),黄金宸龙(2%),披风盒子*3(10%),5w真充元宝券(6%),金牛炎盒子(30%),金牛盒子(40%)\n2.修改披风的掉落,牛魔追加披风掉落\n3.调整披风的合成方案,由原来的5个改成3个\n4.修改了部分物品的堆叠,比如银两等调整为99999\n5.增加了炎之战神凭证的合成方案和星王凭证的合成方案"
}
]

75
pay/api.php Normal file
View File

@@ -0,0 +1,75 @@
<?php
/**
天天支付 www.ttfk.cc
亲手写的代码。请保留信息!
对得起自己的职业操守!
**/
require_once("config.php");
require_once("lib/sub.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>支付中心</title>
</head>
<?php
/**************************请求参数**************************/
$notify_url = "http://".$_SERVER['HTTP_HOST']."/pay/notify_url.php";
//需http://格式的完整路径,不能加?id=123这类自定义参数
//页面跳转同步通知页面路径
$return_url = "https://www.youtube.com";
//需http://格式的完整路径,不能加?id=123这类自定义参数不能写成http://localhost/
//商户订单号
$out_trade_no = 'zs_'.$_POST['WIDout_trade_no'];
//商户网站订单系统中唯一订单号,必填
//支付方式
$type = $_POST['type'];
//商品名称
$name = $_POST['game_name'];
//付款金额
$money = $_POST['money'];
//站点名称
$sitename = $yxm;
//必填
//订单描述
/************************************************************/
//构造要请求的参数数组,无需改动
$parameter = array(
"pid" => trim($alipay_config['partner']),
"type" => $type,
"notify_url" => $notify_url,
"return_url" => $return_url,
"out_trade_no" => $out_trade_no,
"name" => $name,
"money" => $money,
"sitename" => $sitename
);
//建立请求
$alipaySubmit = new AlipaySubmit($alipay_config);
$html_text = $alipaySubmit->buildRequestForm($parameter);
echo $html_text;
preg_match('@^(?:https://)?([^/]+)@i',
$alipay_config['apiurl'], $matches);
$host = $matches[1];
preg_match('/[^.]+\.[^.]+$/', $host, $matches);
if ($matches[0] !=$copy)
{
exit("&#24403;&#21069;&#97;&#112;&#105;&#26410;&#25480;&#26435;&#65281;&#35831;&#20351;&#29992;&#119;&#119;&#119;&#46;&#116;&#116;&#102;&#107;&#46;&#99;&#99;");
}
?>
</body>
</html>

34
pay/config.php Normal file
View File

@@ -0,0 +1,34 @@
<?php
require '../config.php';
$id = '10328'; //商户id www.ttfk.cc 获取
$apikey = 'wjxrfmjxgm8ngmtn4w0th9luk21rpki9'; //商户密钥 www.ttfk.cc 获取
$yxm = $_CONFIG['game_name'];
$bili = '1'; // 写2 就是双倍领取
$pfid = $_CONFIG['pf_id'];
$wupin = array(
//'1' => 'com.game191.icelegend10', // test
'10' => 'com.game191.icelegend10',
'30' => 'com.game191.icelegend30',
'50' => 'com.game191.icelegend50',
'100' => 'com.game191.icelegend100',
'300' => 'com.game191.icelegend300',
'500' => 'com.game191.icelegend500',
'1000' => 'com.game191.icelegend1000',
'3000' => 'com.game191.icelegend3000',
);
$alipay_config['partner'] = $id;
$alipay_config['key'] = $apikey;
//签名方式 不需修改
$alipay_config['sign_type'] = strtoupper('MD5');
//字符编码格式 目前支持 gbk 或 utf-8
$alipay_config['input_charset'] = strtolower('utf-8');
//访问模式,根据自己的服务器是否支持ssl访问若支持请选择https若不支持请选择http
$alipay_config['transport'] = 'http';
$alipay_config['apiurl'] = 'https://www.ttfk.cc/';

43
pay/img/css/style.css Normal file
View File

@@ -0,0 +1,43 @@
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,legend,button,form,fieldset,input,textarea,p,blockquote,th,td{padding:0;margin:0;}
q:before,q:after{content:'';}
fieldset,img,abbr,acronym{border:0 none;}
abbr,acronym{font-variant:normal;}
legend{color:#000;}
address,caption,cite,code,dfn,em,strong,th,var{font-weight:normal;font-style:normal;}
sup{vertical-align:text-top;}
sub{vertical-align:text-bottom;}
table{border-collapse:collapse;border-spacing:0;}
caption,th{text-align:left;}
input,img,select{vertical-align:middle;}
ol,ul{list-style:none;}
input,button,textarea,select,optgroup,option{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;}
h1,h2,h3,h4,h5,h6{font-weight:normal;font-size:100%;}
del,ins,a{text-decoration:none;}
a:link{}
a:visited{}
input[type="submit"]{cursor:pointer;}
.content{width: 100%;float: left;}
button{cursor:pointer;}
input::-moz-focus-inner{border:0;padding:0;}
.clear{clear:both;}
.aaa,.aaaa{ border-radius: 5px; display: block;width: 30%;float: left;margin: 1% 0.5%;text-align: center;height: 2.5rem;line-height: 2.5rem;border: 1px solid #3369ff;color: #3369ff;}
.aaamoney{border-radius: 5px;border: none;width:100%;text-align: center;line-height: 2.5rem;}
.text-center{width: 80%;margin: 0 auto;}
p{color: #6262ff;font-weight: 800;}
.game_name{border-radius: 5px;height: 2.5rem;text-indent: 0.5rem;width: 100%;border: solid #627bff 1px;background: #fff;margin: 10px 0px;line-height: 2.5rem;}
.serverlist{border-radius: 5px;text-indent: 0.5rem;height: 2.5rem;width: 100%;border: solid #627bff 1px;background: #fff;margin: 10px 0px;color:#f46262;font-weight: 800;line-height: 2.5rem;}
.top_center{font-size: 2rem;margin: 1rem 1rem;color: #ff6767;font-weight: 800;}
.bottom{float: left;width: 100%;}
.bottom p{height:3rem;height: 3rem;width: 45%;float: left;background: #f8f8f8;margin: 10px 0px 10px 13px;line-height: 3rem;border-radius: 5px;}
.wxpay{background: url(/pay/img/wx.png) 50% 50% no-repeat;}
.alipay{ background: url(/pay/img/zfb.png) 40% 50% no-repeat;}
.bottom button{height: 3rem;width: 100%;border: solid 1px #3369ff;border-radius: 5px;}
input:-webkit-autofill {-webkit-box-shadow: 0 0 0px 1000px white inset !important;}
#autoBox{display:none; border: solid #627bff 1px;border-radius: 5px;}
#autoBox li{ border-bottom: dashed #627bff 1px; margin: 2% 5%; font-size: 1.1rem;height: 1.5rem;font-weight: 800;line-height: 1.5rem;}
#autoBox li span{float: right;color:#ff4141;}
form {width: 100%;height: 100%;float: left;}
.footer{float: left;margin: 0 auto;height: 3rem;width: 100%;
}
.footer p{text-align:center;margin-top:5%;}
.footer a{color: #f97474;}

BIN
pay/img/wx.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

BIN
pay/img/zfb.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

69
pay/index.php Normal file
View File

@@ -0,0 +1,69 @@
<?php
/**
天天支付 www.ttfk.cc
亲手写的代码。请保留信息!
对得起自己的职业操守!
**/
require 'config.php';
$serverid = htmlspecialchars(trim($_GET['serverId']));
$actorid = htmlspecialchars(trim($_GET['actorid']));
$money = htmlspecialchars(trim($_GET['amount']));
if(0 >= $money) exit('金额错误!');
if(!isset($serverid) || !isset($actorid)) exit('参数错误!');
$sid = intval(str_replace('s', '', $serverid));
$db_name = 'mir_actor_s'.$sid;
if(0 >= $sid) exit('区服ID错误');
$conn = new mysqli($_CONFIG_DB['db_host'], $_CONFIG_DB['db_user'], $_CONFIG_DB['db_password'], $db_name, $_CONFIG_DB['db_port']);
// 检测连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$stmt = $conn->prepare('SELECT actorname FROM `actors` WHERE actorid = ? limit 1');
$stmt->bind_param('s', $actorid);
$stmt->execute();
$result = $stmt->get_result();
$row = mysqli_fetch_assoc($result);
if(empty($row)) exit('找不到角色!');
$username = isset($row) ? $row['actorname'] : '';
$out_trade_no = date("YmdHis").mt_rand(100,999);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<link type="text/css" rel="stylesheet" href="./img/css/style.css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>赞助中心-<?=$_CONFIG['game_name']?></title>
</head>
<body >
<!-- <center class="top_center" ><?php echo $yxm?></center>
<form method="post" action="api.php" role="form">
<div class="text-center">
<p class="serverlist">区服 : <?php echo $serverid?></p>
<p class="serverlist">昵称 : <?php echo $username?></p>
<p class="serverlist">金额 : <?php echo $money?></p>
</div>
<div class="content">
<input type="hidden" class="game_name" id="game_name" value="<?php echo $serverid."_".$actorid."_".$username?>" autocomplete="off" name="game_name"/>
<input type="hidden" name="pid" value="<?php echo $id?>" />
<input class="form-control" placeholder="商户订单号" type="hidden" value="h5<?php echo $out_trade_no ?>" name="WIDout_trade_no" type="text" readonly="readonly">
<input type="hidden" class="aaa" autocomplete="off" value="<?php echo $money;?>" name="money"/>
</div>
<div class="bottom">
<p><button type="radio" value="wxpay" name="type" class="btn wxpay btn-success my-3"></button></p>
<p><button type="radio" value="alipay" name="type" class="btn alipay btn-success my-3"></button></p>
</div>
</form>-->
<div class="footer">
<p>想充值!没门儿~ 看游戏公告,免费后台充值哈~</p>
</div>
</body>
</html>

176
pay/lib/core.php Normal file
View File

@@ -0,0 +1,176 @@
<?php
/* *
* 支付宝接口公用函数
* 详细:该类是请求、通知返回两个文件所调用的公用函数核心处理文件
* 版本3.3
* 日期2019-07-19
* 说明:
* 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
* 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
*/
/**
* 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
* @param $para 需要拼接的数组
* return 拼接完成以后的字符串
*/
function createLinkstring($para) {
$arg = "";
foreach ($para as $key => $val) {
$arg.=$key."=".$val."&";
}
//去掉最后一个&字符
$arg = substr($arg,0,count((array)$arg)-2);
//如果存在转义字符,那么去掉转义
if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()){$arg = stripslashes($arg);}
return $arg;
}
/**
* 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串并对字符串做urlencode编码
* @param $para 需要拼接的数组
* return 拼接完成以后的字符串
*/
function createLinkstringUrlencode($para) {
$arg = "";
foreach ($para as $key => $val) {
$arg.=$key."=".urlencode($val)."&";
}
//去掉最后一个&字符
$arg = substr($arg,0,count($arg)-2);
//如果存在转义字符,那么去掉转义
if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()){$arg = stripslashes($arg);}
return $arg;
}
/**
* 除去数组中的空值和签名参数
* @param $para 签名参数组
* return 去掉空值与签名参数后的新签名参数组
*/
function paraFilter($para) {
$para_filter = array();
foreach ($para as $key => $val) {
if($key == "sign" || $key == "sign_type" || $val == "")continue;
else $para_filter[$key] = $para[$key];
}
return $para_filter;
}
/**
* 对数组排序
* @param $para 排序前的数组
* return 排序后的数组
*/
function argSort($para) {
ksort($para);
reset($para);
return $para;
}
/**
* 写日志,方便测试(看网站需求,也可以改成把记录存入数据库)
* 注意服务器需要开通fopen配置
* @param $word 要写入日志里的文本内容 默认值:空值
*/
function logResult($word='') {
$fp = fopen("log.txt","a");
flock($fp, LOCK_EX) ;
fwrite($fp,"执行日期:".strftime("%Y%m%d%H%M%S",time())."\n".$word."\n");
flock($fp, LOCK_UN);
fclose($fp);
}
/**
* 远程获取数据POST模式
* 注意:
* 1.使用Crul需要修改服务器中php.ini文件的设置找到php_curl.dll去掉前面的";"就行了
* 2.文件夹中cacert.pem是SSL证书请保证其路径有效目前默认路径是getcwd().'\\cacert.pem'
* @param $url 指定URL完整路径地址
* @param $cacert_url 指定当前工作目录绝对路径
* @param $para 请求的数据
* @param $input_charset 编码格式。默认值:空值
* return 远程输出的数据
*/
function getHttpResponsePOST($url, $cacert_url, $para, $input_charset = '') {
if (trim($input_charset) != '') {
$url = $url."_input_charset=".$input_charset;
}
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL证书认证
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//严格认证
curl_setopt($curl, CURLOPT_CAINFO,$cacert_url);//证书地址
curl_setopt($curl, CURLOPT_HEADER, 0 ); // 过滤HTTP头
curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 显示输出结果
curl_setopt($curl,CURLOPT_POST,true); // post传输数据
curl_setopt($curl,CURLOPT_POSTFIELDS,$para);// post传输数据
$responseText = curl_exec($curl);
//var_dump( curl_error($curl) );//如果执行curl过程中出现异常可打开此开关以便查看异常内容
curl_close($curl);
return $responseText;
}
/**
* 远程获取数据GET模式
* 注意:
* 1.使用Crul需要修改服务器中php.ini文件的设置找到php_curl.dll去掉前面的";"就行了
* 2.文件夹中cacert.pem是SSL证书请保证其路径有效目前默认路径是getcwd().'\\cacert.pem'
* @param $url 指定URL完整路径地址
* @param $cacert_url 指定当前工作目录绝对路径
* return 远程输出的数据
*/
function getHttpResponseGET($url,$cacert_url) {
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, 0 ); // 过滤HTTP头
curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 显示输出结果
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL证书认证
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//严格认证
curl_setopt($curl, CURLOPT_CAINFO,$cacert_url);//证书地址
$responseText = curl_exec($curl);
//var_dump( curl_error($curl) );//如果执行curl过程中出现异常可打开此开关以便查看异常内容
curl_close($curl);
return $responseText;
}
/**
* 实现多种字符编码方式
* @param $input 需要编码的字符串
* @param $_output_charset 输出的编码格式
* @param $_input_charset 输入的编码格式
* return 编码后的字符串
*/
function charsetEncode($input,$_output_charset ,$_input_charset) {
$output = "";
if(!isset($_output_charset) )$_output_charset = $_input_charset;
if($_input_charset == $_output_charset || $input ==null ) {
$output = $input;
} elseif (function_exists("mb_convert_encoding")) {
$output = mb_convert_encoding($input,$_output_charset,$_input_charset);
} elseif(function_exists("iconv")) {
$output = iconv($_input_charset,$_output_charset,$input);
} else die("sorry, you have no libs support for charset change.");
return $output;
}
/**
* 实现多种字符解码方式
* @param $input 需要解码的字符串
* @param $_output_charset 输出的解码格式
* @param $_input_charset 输入的解码格式
* return 解码后的字符串
*/
function charsetDecode($input,$_input_charset ,$_output_charset) {
$output = "";
if(!isset($_input_charset) )$_input_charset = $_input_charset ;
if($_input_charset == $_output_charset || $input ==null ) {
$output = $input;
} elseif (function_exists("mb_convert_encoding")) {
$output = mb_convert_encoding($input,$_output_charset,$_input_charset);
} elseif(function_exists("iconv")) {
$output = iconv($_input_charset,$_output_charset,$input);
} else die("sorry, you have no libs support for charset changes.");
return $output;
}
?>

41
pay/lib/md5.php Normal file
View File

@@ -0,0 +1,41 @@
<?php
/* *
* MD5
* 详细MD5加密
* 版本3.3
* 日期2019-07-19
* 说明:
* 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
* 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
*/
/**
* 签名字符串
* @param $prestr 需要签名的字符串
* @param $key 私钥
* return 签名结果
*/
function md5Sign($prestr, $key) {
$prestr = $prestr . $key;
return md5($prestr);
}
/**
* 验证签名
* @param $prestr 需要签名的字符串
* @param $sign 签名结果
* @param $key 私钥
* return 签名结果
*/
function md5Verify($prestr, $sign, $key) {
$prestr = $prestr . $key;
$mysgin = md5($prestr);
if($mysgin == $sign) {
return true;
}
else {
return false;
}
}
?>

120
pay/lib/notify.php Normal file
View File

@@ -0,0 +1,120 @@
<?php
/* *
* 功能:天天支付通知处理类
* 详细:处理易支付接口通知返回
*/
require_once("core.php");
require_once("md5.php");
class AlipayNotify {
var $alipay_config;
function __construct($alipay_config){
$this->alipay_config = $alipay_config;
$this->http_verify_url = $this->alipay_config['apiurl'].'api.php?';
}
function AlipayNotify($alipay_config) {
$this->__construct($alipay_config);
}
/**
* 针对notify_url验证消息是否是支付宝发出的合法消息
* @return 验证结果
*/
function verifyNotify(){
if(empty($_POST)) {//判断POST来的数组是否为空
return false;
}
else {
//生成签名结果
$isSign = $this->getSignVeryfy($_POST, $_POST["sign"]);
//获取支付宝远程服务器ATN结果验证是否是支付宝发来的消息
$responseTxt = 'true';
//if (! empty($_POST["notify_id"])) {$responseTxt = $this->getResponse($_POST["notify_id"]);}
//验证
//$responsetTxt的结果不是true与服务器设置问题、合作身份者ID、notify_id一分钟失效有关
//isSign的结果不是true与安全校验码、请求时的参数格式带自定义参数等、编码格式有关
if (preg_match("/true$/i",$responseTxt) && $isSign) {
return true;
} else {
return false;
}
}
}
/**
* 针对return_url验证消息是否是支付宝发出的合法消息
* @return 验证结果
*/
function verifyReturn(){
if(empty($_POST)) {//判断POST来的数组是否为空
return false;
}
else {
//生成签名结果
$isSign = $this->getSignVeryfy($_POST, $_POST["sign"]);
//获取支付宝远程服务器ATN结果验证是否是支付宝发来的消息
$responseTxt = 'true';
//if (! empty($_POST["notify_id"])) {$responseTxt = $this->getResponse($_POST["notify_id"]);}
//验证
//$responsetTxt的结果不是true与服务器设置问题、合作身份者ID、notify_id一分钟失效有关
//isSign的结果不是true与安全校验码、请求时的参数格式带自定义参数等、编码格式有关
if (preg_match("/true$/i",$responseTxt) && $isSign) {
return true;
} else {
return false;
}
}
}
/**
* 获取返回时的签名验证结果
* @param $para_temp 通知返回来的参数数组
* @param $sign 返回的签名结果
* @return 签名验证结果
*/
function getSignVeryfy($para_temp, $sign) {
//除去待签名参数数组中的空值和签名参数
$para_filter = paraFilter($para_temp);
//对待签名参数数组排序
$para_sort = argSort($para_filter);
//把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
$prestr = createLinkstring($para_sort);
$isSgin = false;
$isSgin = md5Verify($prestr, $sign, $this->alipay_config['key']);
return $isSgin;
}
/**
* 获取远程服务器ATN结果,验证返回URL
* @param $notify_id 通知校验ID
* @return 服务器ATN结果
* 验证结果集:
* invalid命令参数不对 出现这个错误请检测返回处理中partner和key是否为空
* true 返回正确信息
* false 请检查防火墙或者是服务器阻止端口问题以及验证时间是否超过一分钟
*/
function getResponse($notify_id) {
$transport = strtolower(trim($this->alipay_config['transport']));
$partner = trim($this->alipay_config['partner']);
$veryfy_url = '';
if($transport == 'https') {
$veryfy_url = $this->https_verify_url;
}
else {
$veryfy_url = $this->http_verify_url;
}
$veryfy_url = $veryfy_url."partner=" . $partner . "&notify_id=" . $notify_id;
$responseTxt = getHttpResponseGET($veryfy_url, $this->alipay_config['cacert']);
return $responseTxt;
}
}
?>

103
pay/lib/sub.php Normal file
View File

@@ -0,0 +1,103 @@
<?php
$copy = "ttfk.cc";
preg_match('@^(?:https://)?([^/]+)@i',
$alipay_config['apiurl'], $matches);
$host = $matches[1];
preg_match('/[^.]+\.[^.]+$/', $host, $matches);
if ($matches[0] !=$copy)
{
exit("&#24403;&#21069;&#97;&#112;&#105;&#26410;&#25480;&#26435;&#65281;&#35831;&#20351;&#29992;&#119;&#119;&#119;&#46;&#116;&#116;&#102;&#107;&#46;&#99;&#99;");
}
require_once("core.php");
require_once("md5.php");
class AlipaySubmit {
var $alipay_config;
function __construct($alipay_config){
$this->alipay_config = $alipay_config;
$this->alipay_gateway_new = $this->alipay_config['apiurl'].'submit.php?';
}
function AlipaySubmit($alipay_config) {
$this->__construct($alipay_config);
}
/**
* 生成签名结果
* @param $para_sort 已排序要签名的数组
* return 签名结果字符串
*/
function buildRequestMysign($para_sort) {
//把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
$prestr = createLinkstring($para_sort);
$mysign = md5Sign($prestr, $this->alipay_config['key']);
return $mysign;
}
/**
* 生成要请求给支付宝的参数数组
* @param $para_temp 请求前的参数数组
* @return 要请求的参数数组
*/
function buildRequestPara($para_temp) {
//除去待签名参数数组中的空值和签名参数
$para_filter = paraFilter($para_temp);
//对待签名参数数组排序
$para_sort = argSort($para_filter);
//生成签名结果
$mysign = $this->buildRequestMysign($para_sort);
//签名结果与签名方式加入请求提交参数组中
$para_sort['sign'] = $mysign;
$para_sort['sign_type'] = strtoupper(trim($this->alipay_config['sign_type']));
return $para_sort;
}
/**
* 生成要请求给支付宝的参数数组
* @param $para_temp 请求前的参数数组
* @return 要请求的参数数组字符串
*/
function buildRequestParaToString($para_temp) {
//待请求参数数组
$para = $this->buildRequestPara($para_temp);
//把参数组中所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串并对字符串做urlencode编码
$request_data = createLinkstringUrlencode($para);
return $request_data;
}
/**
* 建立请求以表单HTML形式构造默认
* @param $para_temp 请求参数数组
* @param $method 提交方式。两个值可选post、get
* @param $button_name 确认按钮显示文字
* @return 提交表单HTML文本
*/
function buildRequestForm($para_temp, $method='POST', $button_name='正在跳转') {
//待请求参数数组
$para = $this->buildRequestPara($para_temp);
$sHtml = "<form id='alipaysubmit' name='alipaysubmit' action='".$this->alipay_gateway_new."_input_charset=".trim(strtolower($this->alipay_config['input_charset']))."' method='".$method."'>";
foreach ($para as $key => $val) {
$sHtml.= "<input type='hidden' name='".$key."' value='".$val."'/>";
}
//submit按钮控件请不要含有name属性
$sHtml = $sHtml."<input type='submit' value='".$button_name."'></form>";
$sHtml = $sHtml."<script>document.forms['alipaysubmit'].submit();</script>";
return $sHtml;
}
}
?>

137
pay/notify_url.php Normal file
View File

@@ -0,0 +1,137 @@
<?php
/* 支付回调 */
require_once 'config.php';
require_once 'lib/notify.php';
error_reporting(E_ALL & ~E_NOTICE);
function payLog($exit = false, $msg = '') {
global $_POST;
$date = date('Y-m-d');
// 创建日志目录
$path = '../log/';
if(!is_dir($path)) {
@mkdir($path, 0777, true);
}
$file = 'pay_'.$date.'_'.md5($date.BASE_KEY).'.log';
$logFile = $path.$file;
file_put_contents($logFile, '['.date('Y-m-d H:i:s').'] '.$msg.PHP_EOL.(isset($_POST) && !empty($_POST) ? print_r($_POST, true).PHP_EOL : ''), FILE_APPEND);
if($exit) exit($msg);
}
$time = time();
if(get_extension_funcs('mysqli') == false) payLog(true, 'mysqli扩展未启用');
// 检查参数
if(!isset($_POST['sign'])) {
$_POST = $_GET;
}
if(!isset($_POST) || empty($_POST)) payLog(true, 'POST参数错误');
$money = floatval($_POST['money']);
if(0 >= $money) payLog(true, '金额错误!');
$arr = explode('_', $_POST['name']);
$serverId = $arr['0'];
$roleId = $arr['1'];
$username = $arr['2'];
if(!isset($serverId) || !isset($roleId) || !isset($username)) payLog(true, 'serverId/roleId/username参数错误');
$sid = intval(str_replace('s', '', $serverId));
$db_name = 'mir_actor_s'.$sid;
if(0 >= $sid) payLog(true, '区服ID错误');
// 计算得出通知验证结果
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyNotify();
if(!$verify_result) {
payLog(true, '签名验证失败');
}
// 连接区服数据库
$actorDB = new mysqli($_CONFIG_DB['db_host'], $_CONFIG_DB['db_user'], $_CONFIG_DB['db_password'], $db_name, $_CONFIG_DB['db_port']);
if ($actorDB->connect_error) payLog(true, '区服数据库连接失败: '.$actorDB->connect_error);
$feeSQL = "INSERT INTO `feecallback` (`pfid`, `serverid`, `actorid`, `account`, `prodid`, `num`, `oldserverid`) VALUES ('$pfid', '$sid', '$roleId', '$username', '{$wupin["$money"]}', '$bili', '1')";
// FEE插入成功
if (TRUE === $actorDB->query($feeSQL)) {
payLog(false, 'fee insert success'.PHP_EOL.$feeSQL);
// 连接订单数据库
$orderDB = new mysqli($_CONFIG_DB['db_host'], $_CONFIG_DB['db_user'], $_CONFIG_DB['db_password'], $_CONFIG_DB['db_name'], $_CONFIG_DB['db_port']);
if ($orderDB->connect_error) {
$actorDB->close();
payLog(true, '订单数据库连接失败: '.$orderDB->connect_error);
}
// test
//payLog(false, 'fee insert success 1');
// 根据角色ID获取帐号ID
$actorRes = $actorDB->query("SELECT accountid, actorname FROM `actors` WHERE actorid = $roleId LIMIT 1");
$actor = $actorRes->fetch_array(MYSQLI_ASSOC);
$actorRes->free();
if(empty($actor)) {
$orderDB->close();
$actorDB->close();
payLog(true, '获取accountid失败');
}
$accountId = $actor['accountid'];
$roleName = $actor['actorname'];
// test
//payLog(false, 'fee insert success 2');
// 连接帐号数据库
$accountDB = new mysqli($_CONFIG_DB['db_host'], $_CONFIG_DB['db_user'], $_CONFIG_DB['db_password'], 'mir_account', $_CONFIG_DB['db_port']);
if ($accountDB->connect_error) {
$orderDB->close();
$actorDB->close();
payLog(true, '帐号数据库连接失败: '.$accountDB->connect_error);
}
// test
//payLog(false, 'fee insert success 3');
// 根据帐号ID获取帐号
$accountRes = $accountDB->query("SELECT account FROM `globaluser` WHERE userid = $accountId LIMIT 1");
$accountData = $accountRes->fetch_array(MYSQLI_ASSOC);
$accountRes->free();
if(empty($accountData)) {
$orderDB->close();
$actorDB->close();
$accountDB->close();
payLog(true, '获取account失败');
}
$account = $accountData['account'];
// test
//payLog(false, 'fee insert success 4');
// 创建订单记录
$orderSQL = "INSERT INTO `order` (`account`, `server_id`, `role_id`, `role_name`, `product`, `money`, `time`) VALUES ('$account', '$sid', '$roleId', '$roleName', '{$wupin["$money"]}', '$money', '$time')";
if (FALSE === $orderDB->query($orderSQL)) {
payLog(false, 'order create fail'.PHP_EOL.$orderSQL.PHP_EOL.'sql error: '.$orderDB->error);
}
// test
//payLog(false, 'fee insert success 5');
$actorDB->close();
$orderDB->close();
$accountDB->close();
exit('success');
} else {
$actorDB->close();
payLog(false, 'fee insert fail'.PHP_EOL.$feeSQL.PHP_EOL.'sql error: '.$actorDB->error);
exit('Error: '.$feeSQL.'<br>'.$actorDB->error);
}

View File

@@ -0,0 +1,46 @@
GPL Cooperation Commitment
Version 1.0
Before filing or continuing to prosecute any legal proceeding or claim
(other than a Defensive Action) arising from termination of a Covered
License, we commit to extend to the person or entity ('you') accused
of violating the Covered License the following provisions regarding
cure and reinstatement, taken from GPL version 3. As used here, the
term 'this License' refers to the specific Covered License being
enforced.
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly
and finally terminates your license, and (b) permanently, if the
copyright holder fails to notify you of the violation by some
reasonable means prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you
have received notice of violation of this License (for any work)
from that copyright holder, and you cure the violation prior to 30
days after your receipt of the notice.
We intend this Commitment to be irrevocable, and binding and
enforceable against us and assignees of or successors to our
copyrights.
Definitions
'Covered License' means the GNU General Public License, version 2
(GPLv2), the GNU Lesser General Public License, version 2.1
(LGPLv2.1), or the GNU Library General Public License, version 2
(LGPLv2), all as published by the Free Software Foundation.
'Defensive Action' means a legal proceeding or claim that We bring
against you in response to a prior proceeding or claim initiated by
you or your affiliate.
'We' means each contributor to this repository as of the date of
inclusion of this file, including subsidiaries of a corporate
contributor.
This work is available under a Creative Commons Attribution-ShareAlike
4.0 International license (https://creativecommons.org/licenses/by-sa/4.0/).

502
php/PHPMailer/#/LICENSE Normal file
View File

@@ -0,0 +1,502 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

229
php/PHPMailer/#/README.md Normal file
View File

@@ -0,0 +1,229 @@
[![SWUbanner](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner2-direct.svg)](https://supportukrainenow.org/)
![PHPMailer](https://raw.github.com/PHPMailer/PHPMailer/master/examples/images/phpmailer.png)
# PHPMailer A full-featured email creation and transfer class for PHP
[![Test status](https://github.com/PHPMailer/PHPMailer/workflows/Tests/badge.svg)](https://github.com/PHPMailer/PHPMailer/actions)
[![codecov.io](https://codecov.io/gh/PHPMailer/PHPMailer/branch/master/graph/badge.svg?token=iORZpwmYmM)](https://codecov.io/gh/PHPMailer/PHPMailer)
[![Latest Stable Version](https://poser.pugx.org/phpmailer/phpmailer/v/stable.svg)](https://packagist.org/packages/phpmailer/phpmailer)
[![Total Downloads](https://poser.pugx.org/phpmailer/phpmailer/downloads)](https://packagist.org/packages/phpmailer/phpmailer)
[![License](https://poser.pugx.org/phpmailer/phpmailer/license.svg)](https://packagist.org/packages/phpmailer/phpmailer)
[![API Docs](https://github.com/phpmailer/phpmailer/workflows/Docs/badge.svg)](https://phpmailer.github.io/PHPMailer/)
## Features
- Probably the world's most popular code for sending email from PHP!
- Used by many open-source projects: WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomla! and many more
- Integrated SMTP support send without a local mail server
- Send emails with multiple To, CC, BCC and Reply-to addresses
- Multipart/alternative emails for mail clients that do not read HTML email
- Add attachments, including inline
- Support for UTF-8 content and 8bit, base64, binary, and quoted-printable encodings
- SMTP authentication with LOGIN, PLAIN, CRAM-MD5, and XOAUTH2 mechanisms over SMTPS and SMTP+STARTTLS transports
- Validates email addresses automatically
- Protects against header injection attacks
- Error messages in over 50 languages!
- DKIM and S/MIME signing support
- Compatible with PHP 5.5 and later, including PHP 8.1
- Namespaced to prevent name clashes
- Much more!
## Why you might need it
Many PHP developers need to send email from their code. The only PHP function that supports this directly is [`mail()`](https://www.php.net/manual/en/function.mail.php). However, it does not provide any assistance for making use of popular features such as encryption, authentication, HTML messages, and attachments.
Formatting email correctly is surprisingly difficult. There are myriad overlapping (and conflicting) standards, requiring tight adherence to horribly complicated formatting and encoding rules the vast majority of code that you'll find online that uses the `mail()` function directly is just plain wrong, if not unsafe!
The PHP `mail()` function usually sends via a local mail server, typically fronted by a `sendmail` binary on Linux, BSD, and macOS platforms, however, Windows usually doesn't include a local mail server; PHPMailer's integrated SMTP client allows email sending on all platforms without needing a local mail server. Be aware though, that the `mail()` function should be avoided when possible; it's both faster and [safer](https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html) to use SMTP to localhost.
*Please* don't be tempted to do it yourself if you don't use PHPMailer, there are many other excellent libraries that
you should look at before rolling your own. Try [SwiftMailer](https://swiftmailer.symfony.com/)
, [Laminas/Mail](https://docs.laminas.dev/laminas-mail/), [ZetaComponents](https://github.com/zetacomponents/Mail) etc.
## License
This software is distributed under the [LGPL 2.1](http://www.gnu.org/licenses/lgpl-2.1.html) license, along with the [GPL Cooperation Commitment](https://gplcc.github.io/gplcc/). Please read [LICENSE](https://github.com/PHPMailer/PHPMailer/blob/master/LICENSE) for information on the software availability and distribution.
## Installation & loading
PHPMailer is available on [Packagist](https://packagist.org/packages/phpmailer/phpmailer) (using semantic versioning), and installation via [Composer](https://getcomposer.org) is the recommended way to install PHPMailer. Just add this line to your `composer.json` file:
```json
"phpmailer/phpmailer": "^6.5"
```
or run
```sh
composer require phpmailer/phpmailer
```
Note that the `vendor` folder and the `vendor/autoload.php` script are generated by Composer; they are not part of PHPMailer.
If you want to use the Gmail XOAUTH2 authentication class, you will also need to add a dependency on the `league/oauth2-client` package in your `composer.json`.
Alternatively, if you're not using Composer, you
can [download PHPMailer as a zip file](https://github.com/PHPMailer/PHPMailer/archive/master.zip), (note that docs and examples are not included in the zip file), then copy the contents of the PHPMailer folder into one of the `include_path` directories specified in your PHP configuration and load each class file manually:
```php
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'path/to/PHPMailer/src/Exception.php';
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';
```
If you're not using the `SMTP` class explicitly (you're probably not), you don't need a `use` line for the SMTP class. Even if you're not using exceptions, you do still need to load the `Exception` class as it is used internally.
## Legacy versions
PHPMailer 5.2 (which is compatible with PHP 5.0 — 7.0) is no longer supported, even for security updates. You will find the latest version of 5.2 in the [5.2-stable branch](https://github.com/PHPMailer/PHPMailer/tree/5.2-stable). If you're using PHP 5.5 or later (which you should be), switch to the 6.x releases.
### Upgrading from 5.2
The biggest changes are that source files are now in the `src/` folder, and PHPMailer now declares the namespace `PHPMailer\PHPMailer`. This has several important effects [read the upgrade guide](https://github.com/PHPMailer/PHPMailer/tree/master/UPGRADING.md) for more details.
### Minimal installation
While installing the entire package manually or with Composer is simple, convenient, and reliable, you may want to include only vital files in your project. At the very least you will need [src/PHPMailer.php](https://github.com/PHPMailer/PHPMailer/tree/master/src/PHPMailer.php). If you're using SMTP, you'll need [src/SMTP.php](https://github.com/PHPMailer/PHPMailer/tree/master/src/SMTP.php), and if you're using POP-before SMTP (*very* unlikely!), you'll need [src/POP3.php](https://github.com/PHPMailer/PHPMailer/tree/master/src/POP3.php). You can skip the [language](https://github.com/PHPMailer/PHPMailer/tree/master/language/) folder if you're not showing errors to users and can make do with English-only errors. If you're using XOAUTH2 you will need [src/OAuth.php](https://github.com/PHPMailer/PHPMailer/tree/master/src/OAuth.php) as well as the Composer dependencies for the services you wish to authenticate with. Really, it's much easier to use Composer!
## A Simple Example
```php
<?php
//Import PHPMailer classes into the global namespace
//These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
//Load Composer's autoloader
require 'vendor/autoload.php';
//Create an instance; passing `true` enables exceptions
$mail = new PHPMailer(true);
try {
//Server settings
$mail->SMTPDebug = SMTP::DEBUG_SERVER; //Enable verbose debug output
$mail->isSMTP(); //Send using SMTP
$mail->Host = 'smtp.example.com'; //Set the SMTP server to send through
$mail->SMTPAuth = true; //Enable SMTP authentication
$mail->Username = 'user@example.com'; //SMTP username
$mail->Password = 'secret'; //SMTP password
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //Enable implicit TLS encryption
$mail->Port = 465; //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`
//Recipients
$mail->setFrom('from@example.com', 'Mailer');
$mail->addAddress('joe@example.net', 'Joe User'); //Add a recipient
$mail->addAddress('ellen@example.com'); //Name is optional
$mail->addReplyTo('info@example.com', 'Information');
$mail->addCC('cc@example.com');
$mail->addBCC('bcc@example.com');
//Attachments
$mail->addAttachment('/var/tmp/file.tar.gz'); //Add attachments
$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); //Optional name
//Content
$mail->isHTML(true); //Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
```
You'll find plenty to play with in the [examples](https://github.com/PHPMailer/PHPMailer/tree/master/examples) folder, which covers many common scenarios including sending through gmail, building contact forms, sending to mailing lists, and more.
If you are re-using the instance (e.g. when sending to a mailing list), you may need to clear the recipient list to avoid sending duplicate messages. See [the mailing list example](https://github.com/PHPMailer/PHPMailer/blob/master/examples/mailing_list.phps) for further guidance.
That's it. You should now be ready to use PHPMailer!
## Localization
PHPMailer defaults to English, but in the [language](https://github.com/PHPMailer/PHPMailer/tree/master/language/) folder you'll find many translations for PHPMailer error messages that you may encounter. Their filenames contain [ISO 639-1](http://en.wikipedia.org/wiki/ISO_639-1) language code for the translations, for example `fr` for French. To specify a language, you need to tell PHPMailer which one to use, like this:
```php
//To load the French version
$mail->setLanguage('fr', '/optional/path/to/language/directory/');
```
We welcome corrections and new languages if you're looking for corrections, run the [PHPMailerLangTest.php](https://github.com/PHPMailer/PHPMailer/tree/master/test/PHPMailerLangTest.php) script in the tests folder and it will show any missing translations.
## Documentation
Start reading at the [GitHub wiki](https://github.com/PHPMailer/PHPMailer/wiki). If you're having trouble, head for [the troubleshooting guide](https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting) as it's frequently updated.
Examples of how to use PHPMailer for common scenarios can be found in the [examples](https://github.com/PHPMailer/PHPMailer/tree/master/examples) folder. If you're looking for a good starting point, we recommend you start with [the Gmail example](https://github.com/PHPMailer/PHPMailer/tree/master/examples/gmail.phps).
To reduce PHPMailer's deployed code footprint, examples are not included if you load PHPMailer via Composer or via [GitHub's zip file download](https://github.com/PHPMailer/PHPMailer/archive/master.zip), so you'll need to either clone the git repository or use the above links to get to the examples directly.
Complete generated API documentation is [available online](https://phpmailer.github.io/PHPMailer/).
You can generate complete API-level documentation by running `phpdoc` in the top-level folder, and documentation will appear in the `docs` folder, though you'll need to have [PHPDocumentor](http://www.phpdoc.org) installed. You may find [the unit tests](https://github.com/PHPMailer/PHPMailer/blob/master/test/PHPMailerTest.php) a good reference for how to do various operations such as encryption.
If the documentation doesn't cover what you need, search the [many questions on Stack Overflow](http://stackoverflow.com/questions/tagged/phpmailer), and before you ask a question about "SMTP Error: Could not connect to SMTP host.", [read the troubleshooting guide](https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting).
## Tests
[PHPMailer tests](https://github.com/PHPMailer/PHPMailer/tree/master/test/) use PHPUnit 9, with [a polyfill](https://github.com/Yoast/PHPUnit-Polyfills) to let 9-style tests run on older PHPUnit and PHP versions.
[![Test status](https://github.com/PHPMailer/PHPMailer/workflows/Tests/badge.svg)](https://github.com/PHPMailer/PHPMailer/actions)
If this isn't passing, is there something you can do to help?
## Security
Please disclose any vulnerabilities found responsibly report security issues to the maintainers privately.
See [SECURITY](https://github.com/PHPMailer/PHPMailer/tree/master/SECURITY.md) and [PHPMailer's security advisories on GitHub](https://github.com/PHPMailer/PHPMailer/security).
## Contributing
Please submit bug reports, suggestions and pull requests to the [GitHub issue tracker](https://github.com/PHPMailer/PHPMailer/issues).
We're particularly interested in fixing edge-cases, expanding test coverage and updating translations.
If you found a mistake in the docs, or want to add something, go ahead and amend the wiki anyone can edit it.
If you have git clones from prior to the move to the PHPMailer GitHub organisation, you'll need to update any remote URLs referencing the old GitHub location with a command like this from within your clone:
```sh
git remote set-url upstream https://github.com/PHPMailer/PHPMailer.git
```
Please *don't* use the SourceForge or Google Code projects any more; they are obsolete and no longer maintained.
## Sponsorship
Development time and resources for PHPMailer are provided by [Smartmessages.net](https://info.smartmessages.net/), the world's only privacy-first email marketing system.
<a href="https://info.smartmessages.net/"><img src="https://www.smartmessages.net/img/smartmessages-logo.svg" width="550" alt="Smartmessages.net privacy-first email marketing logo"></a>
Donations are very welcome, whether in beer 🍺, T-shirts 👕, or cold, hard cash 💰. Sponsorship through GitHub is a simple and convenient way to say "thank you" to PHPMailer's maintainers and contributors just click the "Sponsor" button [on the project page](https://github.com/PHPMailer/PHPMailer). If your company uses PHPMailer, consider taking part in Tidelift's enterprise support programme.
## PHPMailer For Enterprise
Available as part of the Tidelift Subscription.
The maintainers of PHPMailer and thousands of other packages are working with Tidelift to deliver commercial
support and maintenance for the open source packages you use to build your applications. Save time, reduce risk, and
improve code health, while paying the maintainers of the exact packages you
use. [Learn more.](https://tidelift.com/subscription/pkg/packagist-phpmailer-phpmailer?utm_source=packagist-phpmailer-phpmailer&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
## Changelog
See [changelog](changelog.md).
## History
- PHPMailer was originally written in 2001 by Brent R. Matzelle as a [SourceForge project](http://sourceforge.net/projects/phpmailer/).
- [Marcus Bointon](https://github.com/Synchro) (`coolbru` on SF) and Andy Prevost (`codeworxtech`) took over the project in 2004.
- Became an Apache incubator project on Google Code in 2010, managed by Jim Jagielski.
- Marcus created [his fork on GitHub](https://github.com/Synchro/PHPMailer) in 2008.
- Jim and Marcus decide to join forces and use GitHub as the canonical and official repo for PHPMailer in 2013.
- PHPMailer moves to [the PHPMailer organisation](https://github.com/PHPMailer) on GitHub in 2013.
### What's changed since moving from SourceForge?
- Official successor to the SourceForge and Google Code projects.
- Test suite.
- Continuous integration with Github Actions.
- Composer support.
- Public development.
- Additional languages and language strings.
- CRAM-MD5 authentication support.
- Preserves full repo history of authors, commits and branches from the original SourceForge project.

View File

@@ -0,0 +1,37 @@
# Security notices relating to PHPMailer
Please disclose any security issues or vulnerabilities found through [Tidelift's coordinated disclosure system](https://tidelift.com/security) or to the maintainers privately.
PHPMailer 6.4.1 and earlier contain a vulnerability that can result in untrusted code being called (if such code is injected into the host project's scope by other means). If the `$patternselect` parameter to `validateAddress()` is set to `'php'` (the default, defined by `PHPMailer::$validator`), and the global namespace contains a function called `php`, it will be called in preference to the built-in validator of the same name. Mitigated in PHPMailer 6.5.0 by denying the use of simple strings as validator function names. Recorded as [CVE-2021-3603](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2021-3603). Reported by [Vikrant Singh Chauhan](mailto:vi@hackberry.xyz) via [huntr.dev](https://www.huntr.dev/).
PHPMailer versions 6.4.1 and earlier contain a possible remote code execution vulnerability through the `$lang_path` parameter of the `setLanguage()` method. If the `$lang_path` parameter is passed unfiltered from user input, it can be set to [a UNC path](https://docs.microsoft.com/en-us/dotnet/standard/io/file-path-formats#unc-paths), and if an attacker is also able to persuade the server to load a file from that UNC path, a script file under their control may be executed. This vulnerability only applies to systems that resolve UNC paths, typically only Microsoft Windows.
PHPMailer 6.5.0 mitigates this by no longer treating translation files as PHP code, but by parsing their text content directly. This approach avoids the possibility of executing unknown code while retaining backward compatibility. This isn't ideal, so the current translation format is deprecated and will be replaced in the next major release. Recorded as [CVE-2021-34551](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2021-34551). Reported by [Jilin Diting Information Technology Co., Ltd](https://listensec.com) via Tidelift.
PHPMailer versions between 6.1.8 and 6.4.0 contain a regression of the earlier CVE-2018-19296 object injection vulnerability as a result of [a fix for Windows UNC paths in 6.1.8](https://github.com/PHPMailer/PHPMailer/commit/e2e07a355ee8ff36aba21d0242c5950c56e4c6f9). Recorded as [CVE-2020-36326](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2020-36326). Reported by Fariskhi Vidyan via Tidelift. 6.4.1 fixes this issue, and also enforces stricter checks for URL schemes in local path contexts.
PHPMailer versions 6.1.5 and earlier contain an output escaping bug that occurs in `Content-Type` and `Content-Disposition` when filenames passed into `addAttachment` and other methods that accept attachment names contain double quote characters, in contravention of RFC822 3.4.1. No specific vulnerability has been found relating to this, but it could allow file attachments to bypass attachment filters that are based on matching filename extensions. Recorded as [CVE-2020-13625](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2020-13625). Reported by Elar Lang of Clarified Security.
PHPMailer versions prior to 6.0.6 and 5.2.27 are vulnerable to an object injection attack by passing `phar://` paths into `addAttachment()` and other functions that may receive unfiltered local paths, possibly leading to RCE. Recorded as [CVE-2018-19296](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2018-19296). See [this article](https://knasmueller.net/5-answers-about-php-phar-exploitation) for more info on this type of vulnerability. Mitigated by blocking the use of paths containing URL-protocol style prefixes such as `phar://`. Reported by Sehun Oh of cyberone.kr.
PHPMailer versions prior to 5.2.24 (released July 26th 2017) have an XSS vulnerability in one of the code examples, [CVE-2017-11503](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-11503). The `code_generator.phps` example did not filter user input prior to output. This file is distributed with a `.phps` extension, so it it not normally executable unless it is explicitly renamed, and the file is not included when PHPMailer is loaded through composer, so it is safe by default. There was also an undisclosed potential XSS vulnerability in the default exception handler (unused by default). Patches for both issues kindly provided by Patrick Monnerat of the Fedora Project.
PHPMailer versions prior to 5.2.22 (released January 9th 2017) have a local file disclosure vulnerability, [CVE-2017-5223](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-5223). If content passed into `msgHTML()` is sourced from unfiltered user input, relative paths can map to absolute local file paths and added as attachments. Also note that `addAttachment` (just like `file_get_contents`, `passthru`, `unlink`, etc) should not be passed user-sourced params either! Reported by Yongxiang Li of Asiasecurity.
PHPMailer versions prior to 5.2.20 (released December 28th 2016) are vulnerable to [CVE-2016-10045](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-10045) a remote code execution vulnerability, responsibly reported by [Dawid Golunski](https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10045-Vuln-Patch-Bypass.html), and patched by Paul Buonopane (@Zenexer).
PHPMailer versions prior to 5.2.18 (released December 2016) are vulnerable to [CVE-2016-10033](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-10033) a remote code execution vulnerability, responsibly reported by [Dawid Golunski](http://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html).
PHPMailer versions prior to 5.2.14 (released November 2015) are vulnerable to [CVE-2015-8476](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-8476) an SMTP CRLF injection bug permitting arbitrary message sending.
PHPMailer versions prior to 5.2.10 (released May 2015) are vulnerable to [CVE-2008-5619](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2008-5619), a remote code execution vulnerability in the bundled html2text library. This file was removed in 5.2.10, so if you are using a version prior to that and make use of the html2text function, it's vitally important that you upgrade and remove this file.
PHPMailer versions prior to 2.0.7 and 2.2.1 are vulnerable to [CVE-2012-0796](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-0796), an email header injection attack.
Joomla 1.6.0 uses PHPMailer in an unsafe way, allowing it to reveal local file paths, reported in [CVE-2011-3747](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-3747).
PHPMailer didn't sanitise the `$lang_path` parameter in `SetLanguage`. This wasn't a problem in itself, but some apps (PHPClassifieds, ATutor) also failed to sanitise user-provided parameters passed to it, permitting semi-arbitrary local file inclusion, reported in [CVE-2010-4914](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2010-4914), [CVE-2007-2021](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2007-2021) and [CVE-2006-5734](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2006-5734).
PHPMailer 1.7.2 and earlier contained a possible DDoS vulnerability reported in [CVE-2005-1807](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2005-1807).
PHPMailer 1.7 and earlier (June 2003) have a possible vulnerability in the `SendmailSend` method where shell commands may not be sanitised. Reported in [CVE-2007-3215](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2007-3215).

1
php/PHPMailer/#/VERSION Normal file
View File

@@ -0,0 +1 @@
6.6.0

View File

@@ -0,0 +1,76 @@
{
"name": "phpmailer/phpmailer",
"type": "library",
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
"authors": [
{
"name": "Marcus Bointon",
"email": "phpmailer@synchromedia.co.uk"
},
{
"name": "Jim Jagielski",
"email": "jimjag@gmail.com"
},
{
"name": "Andy Prevost",
"email": "codeworxtech@users.sourceforge.net"
},
{
"name": "Brent R. Matzelle"
}
],
"funding": [
{
"url": "https://github.com/Synchro",
"type": "github"
}
],
"config": {
"allow-plugins": {
"dealerdirect/phpcodesniffer-composer-installer": true
}
},
"require": {
"php": ">=5.5.0",
"ext-ctype": "*",
"ext-filter": "*",
"ext-hash": "*"
},
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
"doctrine/annotations": "^1.2",
"php-parallel-lint/php-console-highlighter": "^0.5.0",
"php-parallel-lint/php-parallel-lint": "^1.3.1",
"phpcompatibility/php-compatibility": "^9.3.5",
"roave/security-advisories": "dev-latest",
"squizlabs/php_codesniffer": "^3.6.2",
"yoast/phpunit-polyfills": "^1.0.0"
},
"suggest": {
"ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses",
"hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication",
"league/oauth2-google": "Needed for Google XOAUTH2 authentication",
"psr/log": "For optional PSR-3 debug logging",
"stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication",
"symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)"
},
"autoload": {
"psr-4": {
"PHPMailer\\PHPMailer\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"PHPMailer\\Test\\": "test/"
}
},
"license": "LGPL-2.1-only",
"scripts": {
"check": "./vendor/bin/phpcs",
"test": "./vendor/bin/phpunit --no-coverage",
"coverage": "./vendor/bin/phpunit",
"lint": [
"@php ./vendor/php-parallel-lint/php-parallel-lint/parallel-lint . -e php,phps --exclude vendor --exclude .git --exclude build"
]
}
}

View File

@@ -0,0 +1,146 @@
<?php
/**
* PHPMailer - PHP email creation and transport class.
* PHP Version 5.5
* @package PHPMailer
* @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
* @author Brent R. Matzelle (original founder)
* @copyright 2012 - 2020 Marcus Bointon
* @copyright 2010 - 2012 Jim Jagielski
* @copyright 2004 - 2009 Andy Prevost
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @note This program is distributed in the hope that it will be useful - WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*/
/**
* Get an OAuth2 token from an OAuth2 provider.
* * Install this script on your server so that it's accessible
* as [https/http]://<yourdomain>/<folder>/get_oauth_token.php
* e.g.: http://localhost/phpmailer/get_oauth_token.php
* * Ensure dependencies are installed with 'composer install'
* * Set up an app in your Google/Yahoo/Microsoft account
* * Set the script address as the app's redirect URL
* If no refresh token is obtained when running this file,
* revoke access to your app and run the script again.
*/
namespace PHPMailer\PHPMailer;
/**
* Aliases for League Provider Classes
* Make sure you have added these to your composer.json and run `composer install`
* Plenty to choose from here:
* @see http://oauth2-client.thephpleague.com/providers/thirdparty/
*/
//@see https://github.com/thephpleague/oauth2-google
use League\OAuth2\Client\Provider\Google;
//@see https://packagist.org/packages/hayageek/oauth2-yahoo
use Hayageek\OAuth2\Client\Provider\Yahoo;
//@see https://github.com/stevenmaguire/oauth2-microsoft
use Stevenmaguire\OAuth2\Client\Provider\Microsoft;
if (!isset($_GET['code']) && !isset($_GET['provider'])) {
?>
<html>
<body>Select Provider:<br>
<a href='?provider=Google'>Google</a><br>
<a href='?provider=Yahoo'>Yahoo</a><br>
<a href='?provider=Microsoft'>Microsoft/Outlook/Hotmail/Live/Office365</a><br>
</body>
</html>
<?php
exit;
}
require 'vendor/autoload.php';
session_start();
$providerName = '';
if (array_key_exists('provider', $_GET)) {
$providerName = $_GET['provider'];
$_SESSION['provider'] = $providerName;
} elseif (array_key_exists('provider', $_SESSION)) {
$providerName = $_SESSION['provider'];
}
if (!in_array($providerName, ['Google', 'Microsoft', 'Yahoo'])) {
exit('Only Google, Microsoft and Yahoo OAuth2 providers are currently supported in this script.');
}
//These details are obtained by setting up an app in the Google developer console,
//or whichever provider you're using.
$clientId = 'RANDOMCHARS-----duv1n2.apps.googleusercontent.com';
$clientSecret = 'RANDOMCHARS-----lGyjPcRtvP';
//If this automatic URL doesn't work, set it yourself manually to the URL of this script
$redirectUri = (isset($_SERVER['HTTPS']) ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
//$redirectUri = 'http://localhost/PHPMailer/redirect';
$params = [
'clientId' => $clientId,
'clientSecret' => $clientSecret,
'redirectUri' => $redirectUri,
'accessType' => 'offline'
];
$options = [];
$provider = null;
switch ($providerName) {
case 'Google':
$provider = new Google($params);
$options = [
'scope' => [
'https://mail.google.com/'
]
];
break;
case 'Yahoo':
$provider = new Yahoo($params);
break;
case 'Microsoft':
$provider = new Microsoft($params);
$options = [
'scope' => [
'wl.imap',
'wl.offline_access'
]
];
break;
}
if (null === $provider) {
exit('Provider missing');
}
if (!isset($_GET['code'])) {
//If we don't have an authorization code then get one
$authUrl = $provider->getAuthorizationUrl($options);
$_SESSION['oauth2state'] = $provider->getState();
header('Location: ' . $authUrl);
exit;
//Check given state against previously stored one to mitigate CSRF attack
} elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) {
unset($_SESSION['oauth2state']);
unset($_SESSION['provider']);
exit('Invalid state');
} else {
unset($_SESSION['provider']);
//Try to get an access token (using the authorization code grant)
$token = $provider->getAccessToken(
'authorization_code',
[
'code' => $_GET['code']
]
);
//Use this to interact with an API on the users behalf
//Use this to get a new access token if the old one expires
echo 'Refresh Token: ', $token->getRefreshToken();
}

View File

@@ -0,0 +1,26 @@
<?php
/**
* Afrikaans PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP-fout: kon nie geverifieer word nie.';
$PHPMAILER_LANG['connect_host'] = 'SMTP-fout: kon nie aan SMTP-verbind nie.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP-fout: data nie aanvaar nie.';
$PHPMAILER_LANG['empty_message'] = 'Boodskapliggaam leeg.';
$PHPMAILER_LANG['encoding'] = 'Onbekende kodering: ';
$PHPMAILER_LANG['execute'] = 'Kon nie uitvoer nie: ';
$PHPMAILER_LANG['file_access'] = 'Kon nie lêer oopmaak nie: ';
$PHPMAILER_LANG['file_open'] = 'Lêerfout: Kon nie lêer oopmaak nie: ';
$PHPMAILER_LANG['from_failed'] = 'Die volgende Van adres misluk: ';
$PHPMAILER_LANG['instantiate'] = 'Kon nie posfunksie instansieer nie.';
$PHPMAILER_LANG['invalid_address'] = 'Ongeldige adres: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer word nie ondersteun nie.';
$PHPMAILER_LANG['provide_address'] = 'U moet ten minste een ontvanger e-pos adres verskaf.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP-fout: Die volgende ontvangers het misluk: ';
$PHPMAILER_LANG['signing'] = 'Ondertekening Fout: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP-verbinding () misluk.';
$PHPMAILER_LANG['smtp_error'] = 'SMTP-bediener fout: ';
$PHPMAILER_LANG['variable_set'] = 'Kan nie veranderlike instel of herstel nie: ';
$PHPMAILER_LANG['extension_missing'] = 'Uitbreiding ontbreek: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Arabic PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author bahjat al mostafa <bahjat983@hotmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'خطأ SMTP : لا يمكن تأكيد الهوية.';
$PHPMAILER_LANG['connect_host'] = 'خطأ SMTP: لا يمكن الاتصال بالخادم SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'خطأ SMTP: لم يتم قبول المعلومات .';
$PHPMAILER_LANG['empty_message'] = 'نص الرسالة فارغ';
$PHPMAILER_LANG['encoding'] = 'ترميز غير معروف: ';
$PHPMAILER_LANG['execute'] = 'لا يمكن تنفيذ : ';
$PHPMAILER_LANG['file_access'] = 'لا يمكن الوصول للملف: ';
$PHPMAILER_LANG['file_open'] = 'خطأ في الملف: لا يمكن فتحه: ';
$PHPMAILER_LANG['from_failed'] = 'خطأ على مستوى عنوان المرسل : ';
$PHPMAILER_LANG['instantiate'] = 'لا يمكن توفير خدمة البريد.';
$PHPMAILER_LANG['invalid_address'] = 'الإرسال غير ممكن لأن عنوان البريد الإلكتروني غير صالح: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' برنامج الإرسال غير مدعوم.';
$PHPMAILER_LANG['provide_address'] = 'يجب توفير عنوان البريد الإلكتروني لمستلم واحد على الأقل.';
$PHPMAILER_LANG['recipients_failed'] = 'خطأ SMTP: الأخطاء التالية فشل في الارسال لكل من : ';
$PHPMAILER_LANG['signing'] = 'خطأ في التوقيع: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() غير ممكن.';
$PHPMAILER_LANG['smtp_error'] = 'خطأ على مستوى الخادم SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'لا يمكن تعيين أو إعادة تعيين متغير: ';
$PHPMAILER_LANG['extension_missing'] = 'الإضافة غير موجودة: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Azerbaijani PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author @mirjalal
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP xətası: Giriş uğursuz oldu.';
$PHPMAILER_LANG['connect_host'] = 'SMTP xətası: SMTP serverinə qoşulma uğursuz oldu.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP xətası: Verilənlər qəbul edilməyib.';
$PHPMAILER_LANG['empty_message'] = 'Boş mesaj göndərilə bilməz.';
$PHPMAILER_LANG['encoding'] = 'Qeyri-müəyyən kodlaşdırma: ';
$PHPMAILER_LANG['execute'] = 'Əmr yerinə yetirilmədi: ';
$PHPMAILER_LANG['file_access'] = 'Fayla giriş yoxdur: ';
$PHPMAILER_LANG['file_open'] = 'Fayl xətası: Fayl açıla bilmədi: ';
$PHPMAILER_LANG['from_failed'] = 'Göstərilən poçtlara göndərmə uğursuz oldu: ';
$PHPMAILER_LANG['instantiate'] = 'Mail funksiyası işə salına bilmədi.';
$PHPMAILER_LANG['invalid_address'] = 'Düzgün olmayan e-mail adresi: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' - e-mail kitabxanası dəstəklənmir.';
$PHPMAILER_LANG['provide_address'] = 'Ən azı bir e-mail adresi daxil edilməlidir.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP xətası: Aşağıdakı ünvanlar üzrə alıcılara göndərmə uğursuzdur: ';
$PHPMAILER_LANG['signing'] = 'İmzalama xətası: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP serverinə qoşulma uğursuz oldu.';
$PHPMAILER_LANG['smtp_error'] = 'SMTP serveri xətası: ';
$PHPMAILER_LANG['variable_set'] = 'Dəyişənin quraşdırılması uğursuz oldu: ';
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Bosnian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Ermin Islamagić <ermin@islamagic.com>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP Greška: Neuspjela prijava.';
$PHPMAILER_LANG['connect_host'] = 'SMTP Greška: Nije moguće spojiti se sa SMTP serverom.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Greška: Podatci nisu prihvaćeni.';
$PHPMAILER_LANG['empty_message'] = 'Sadržaj poruke je prazan.';
$PHPMAILER_LANG['encoding'] = 'Nepoznata kriptografija: ';
$PHPMAILER_LANG['execute'] = 'Nije moguće izvršiti naredbu: ';
$PHPMAILER_LANG['file_access'] = 'Nije moguće pristupiti datoteci: ';
$PHPMAILER_LANG['file_open'] = 'Nije moguće otvoriti datoteku: ';
$PHPMAILER_LANG['from_failed'] = 'SMTP Greška: Slanje sa navedenih e-mail adresa nije uspjelo: ';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Greška: Slanje na navedene e-mail adrese nije uspjelo: ';
$PHPMAILER_LANG['instantiate'] = 'Ne mogu pokrenuti mail funkcionalnost.';
$PHPMAILER_LANG['invalid_address'] = 'E-mail nije poslan. Neispravna e-mail adresa: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer nije podržan.';
$PHPMAILER_LANG['provide_address'] = 'Definišite barem jednu adresu primaoca.';
$PHPMAILER_LANG['signing'] = 'Greška prilikom prijave: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Spajanje na SMTP server nije uspjelo.';
$PHPMAILER_LANG['smtp_error'] = 'SMTP greška: ';
$PHPMAILER_LANG['variable_set'] = 'Nije moguće postaviti varijablu ili je vratiti nazad: ';
$PHPMAILER_LANG['extension_missing'] = 'Nedostaje ekstenzija: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Belarusian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Aleksander Maksymiuk <info@setpro.pl>
*/
$PHPMAILER_LANG['authenticate'] = 'Памылка SMTP: памылка ідэнтыфікацыі.';
$PHPMAILER_LANG['connect_host'] = 'Памылка SMTP: нельга ўстанавіць сувязь з SMTP-серверам.';
$PHPMAILER_LANG['data_not_accepted'] = 'Памылка SMTP: звесткі непрынятыя.';
$PHPMAILER_LANG['empty_message'] = 'Пустое паведамленне.';
$PHPMAILER_LANG['encoding'] = 'Невядомая кадыроўка тэксту: ';
$PHPMAILER_LANG['execute'] = 'Нельга выканаць каманду: ';
$PHPMAILER_LANG['file_access'] = 'Няма доступу да файла: ';
$PHPMAILER_LANG['file_open'] = 'Нельга адкрыць файл: ';
$PHPMAILER_LANG['from_failed'] = 'Няправільны адрас адпраўніка: ';
$PHPMAILER_LANG['instantiate'] = 'Нельга прымяніць функцыю mail().';
$PHPMAILER_LANG['invalid_address'] = 'Нельга даслаць паведамленне, няправільны email атрымальніка: ';
$PHPMAILER_LANG['provide_address'] = 'Запоўніце, калі ласка, правільны email атрымальніка.';
$PHPMAILER_LANG['mailer_not_supported'] = ' - паштовы сервер не падтрымліваецца.';
$PHPMAILER_LANG['recipients_failed'] = 'Памылка SMTP: няправільныя атрымальнікі: ';
$PHPMAILER_LANG['signing'] = 'Памылка подпісу паведамлення: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Памылка сувязі з SMTP-серверам.';
$PHPMAILER_LANG['smtp_error'] = 'Памылка SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'Нельга ўстанавіць або перамяніць значэнне пераменнай: ';
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Bulgarian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Mikhail Kyosev <mialygk@gmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP грешка: Не може да се удостовери пред сървъра.';
$PHPMAILER_LANG['connect_host'] = 'SMTP грешка: Не може да се свърже с SMTP хоста.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP грешка: данните не са приети.';
$PHPMAILER_LANG['empty_message'] = 'Съдържанието на съобщението е празно';
$PHPMAILER_LANG['encoding'] = 'Неизвестно кодиране: ';
$PHPMAILER_LANG['execute'] = 'Не може да се изпълни: ';
$PHPMAILER_LANG['file_access'] = 'Няма достъп до файл: ';
$PHPMAILER_LANG['file_open'] = 'Файлова грешка: Не може да се отвори файл: ';
$PHPMAILER_LANG['from_failed'] = 'Следните адреси за подател са невалидни: ';
$PHPMAILER_LANG['instantiate'] = 'Не може да се инстанцира функцията mail.';
$PHPMAILER_LANG['invalid_address'] = 'Невалиден адрес: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' - пощенски сървър не се поддържа.';
$PHPMAILER_LANG['provide_address'] = 'Трябва да предоставите поне един email адрес за получател.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP грешка: Следните адреси за Получател са невалидни: ';
$PHPMAILER_LANG['signing'] = 'Грешка при подписване: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP провален connect().';
$PHPMAILER_LANG['smtp_error'] = 'SMTP сървърна грешка: ';
$PHPMAILER_LANG['variable_set'] = 'Не може да се установи или възстанови променлива: ';
$PHPMAILER_LANG['extension_missing'] = 'Липсва разширение: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Catalan PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Ivan <web AT microstudi DOT com>
*/
$PHPMAILER_LANG['authenticate'] = 'Error SMTP: No sha pogut autenticar.';
$PHPMAILER_LANG['connect_host'] = 'Error SMTP: No es pot connectar al servidor SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'Error SMTP: Dades no acceptades.';
$PHPMAILER_LANG['empty_message'] = 'El cos del missatge està buit.';
$PHPMAILER_LANG['encoding'] = 'Codificació desconeguda: ';
$PHPMAILER_LANG['execute'] = 'No es pot executar: ';
$PHPMAILER_LANG['file_access'] = 'No es pot accedir a larxiu: ';
$PHPMAILER_LANG['file_open'] = 'Error dArxiu: No es pot obrir larxiu: ';
$PHPMAILER_LANG['from_failed'] = 'La(s) següent(s) adreces de remitent han fallat: ';
$PHPMAILER_LANG['instantiate'] = 'No sha pogut crear una instància de la funció Mail.';
$PHPMAILER_LANG['invalid_address'] = 'Adreça demail invalida: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer no està suportat';
$PHPMAILER_LANG['provide_address'] = 'Sha de proveir almenys una adreça demail com a destinatari.';
$PHPMAILER_LANG['recipients_failed'] = 'Error SMTP: Els següents destinataris han fallat: ';
$PHPMAILER_LANG['signing'] = 'Error al signar: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Ha fallat el SMTP Connect().';
$PHPMAILER_LANG['smtp_error'] = 'Error del servidor SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'No sha pogut establir o restablir la variable: ';
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Chinese PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author LiuXin <http://www.80x86.cn/blog/>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP 错误:身份验证失败。';
$PHPMAILER_LANG['connect_host'] = 'SMTP 错误: 不能连接SMTP主机。';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 错误: 数据不可接受。';
//$PHPMAILER_LANG['empty_message'] = 'Message body empty';
$PHPMAILER_LANG['encoding'] = '未知编码:';
$PHPMAILER_LANG['execute'] = '不能执行: ';
$PHPMAILER_LANG['file_access'] = '不能访问文件:';
$PHPMAILER_LANG['file_open'] = '文件错误:不能打开文件:';
$PHPMAILER_LANG['from_failed'] = '下面的发送地址邮件发送失败了: ';
$PHPMAILER_LANG['instantiate'] = '不能实现mail方法。';
//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' 您所选择的发送邮件的方法并不支持。';
$PHPMAILER_LANG['provide_address'] = '您必须提供至少一个 收信人的email地址。';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP 错误: 下面的 收件人失败了: ';
//$PHPMAILER_LANG['signing'] = 'Signing Error: ';
//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.';
//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: ';
//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: ';
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';

View File

@@ -0,0 +1,28 @@
<?php
/**
* Czech PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
*/
$PHPMAILER_LANG['authenticate'] = 'Chyba SMTP: Autentizace selhala.';
$PHPMAILER_LANG['connect_host'] = 'Chyba SMTP: Nelze navázat spojení se SMTP serverem.';
$PHPMAILER_LANG['data_not_accepted'] = 'Chyba SMTP: Data nebyla přijata.';
$PHPMAILER_LANG['empty_message'] = 'Prázdné tělo zprávy';
$PHPMAILER_LANG['encoding'] = 'Neznámé kódování: ';
$PHPMAILER_LANG['execute'] = 'Nelze provést: ';
$PHPMAILER_LANG['file_access'] = 'Nelze získat přístup k souboru: ';
$PHPMAILER_LANG['file_open'] = 'Chyba souboru: Nelze otevřít soubor pro čtení: ';
$PHPMAILER_LANG['from_failed'] = 'Následující adresa odesílatele je nesprávná: ';
$PHPMAILER_LANG['instantiate'] = 'Nelze vytvořit instanci emailové funkce.';
$PHPMAILER_LANG['invalid_address'] = 'Neplatná adresa: ';
$PHPMAILER_LANG['invalid_hostentry'] = 'Záznam hostitele je nesprávný: ';
$PHPMAILER_LANG['invalid_host'] = 'Hostitel je nesprávný: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer není podporován.';
$PHPMAILER_LANG['provide_address'] = 'Musíte zadat alespoň jednu emailovou adresu příjemce.';
$PHPMAILER_LANG['recipients_failed'] = 'Chyba SMTP: Následující adresy příjemců nejsou správně: ';
$PHPMAILER_LANG['signing'] = 'Chyba přihlašování: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() selhal.';
$PHPMAILER_LANG['smtp_error'] = 'Chyba SMTP serveru: ';
$PHPMAILER_LANG['variable_set'] = 'Nelze nastavit nebo změnit proměnnou: ';
$PHPMAILER_LANG['extension_missing'] = 'Chybí rozšíření: ';

View File

@@ -0,0 +1,29 @@
<?php
/**
* Danish PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author John Sebastian <jms@iwb.dk>
* Rewrite and extension of the work by Mikael Stokkebro <info@stokkebro.dk>
*
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP fejl: Login mislykkedes.';
$PHPMAILER_LANG['connect_host'] = 'SMTP fejl: Forbindelse til SMTP serveren kunne ikke oprettes.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP fejl: Data blev ikke accepteret.';
$PHPMAILER_LANG['empty_message'] = 'Meddelelsen er uden indhold';
$PHPMAILER_LANG['encoding'] = 'Ukendt encode-format: ';
$PHPMAILER_LANG['execute'] = 'Kunne ikke afvikle: ';
$PHPMAILER_LANG['file_access'] = 'Kunne ikke tilgå filen: ';
$PHPMAILER_LANG['file_open'] = 'Fil fejl: Kunne ikke åbne filen: ';
$PHPMAILER_LANG['from_failed'] = 'Følgende afsenderadresse er forkert: ';
$PHPMAILER_LANG['instantiate'] = 'Email funktionen kunne ikke initialiseres.';
$PHPMAILER_LANG['invalid_address'] = 'Udgyldig adresse: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer understøttes ikke.';
$PHPMAILER_LANG['provide_address'] = 'Indtast mindst en modtagers email adresse.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP fejl: Følgende modtagere er forkerte: ';
$PHPMAILER_LANG['signing'] = 'Signeringsfejl: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() fejlede.';
$PHPMAILER_LANG['smtp_error'] = 'SMTP server fejl: ';
$PHPMAILER_LANG['variable_set'] = 'Kunne ikke definere eller nulstille variablen: ';
$PHPMAILER_LANG['extension_missing'] = 'Udvidelse mangler: ';

View File

@@ -0,0 +1,28 @@
<?php
/**
* German PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP-Fehler: Authentifizierung fehlgeschlagen.';
$PHPMAILER_LANG['connect_host'] = 'SMTP-Fehler: Konnte keine Verbindung zum SMTP-Host herstellen.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP-Fehler: Daten werden nicht akzeptiert.';
$PHPMAILER_LANG['empty_message'] = 'E-Mail-Inhalt ist leer.';
$PHPMAILER_LANG['encoding'] = 'Unbekannte Kodierung: ';
$PHPMAILER_LANG['execute'] = 'Konnte folgenden Befehl nicht ausführen: ';
$PHPMAILER_LANG['file_access'] = 'Zugriff auf folgende Datei fehlgeschlagen: ';
$PHPMAILER_LANG['file_open'] = 'Dateifehler: Konnte folgende Datei nicht öffnen: ';
$PHPMAILER_LANG['from_failed'] = 'Die folgende Absenderadresse ist nicht korrekt: ';
$PHPMAILER_LANG['instantiate'] = 'Mail-Funktion konnte nicht initialisiert werden.';
$PHPMAILER_LANG['invalid_address'] = 'Die Adresse ist ungültig: ';
$PHPMAILER_LANG['invalid_hostentry'] = 'Ungültiger Hosteintrag: ';
$PHPMAILER_LANG['invalid_host'] = 'Ungültiger Host: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer wird nicht unterstützt.';
$PHPMAILER_LANG['provide_address'] = 'Bitte geben Sie mindestens eine Empfängeradresse an.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP-Fehler: Die folgenden Empfänger sind nicht korrekt: ';
$PHPMAILER_LANG['signing'] = 'Fehler beim Signieren: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Verbindung zum SMTP-Server fehlgeschlagen.';
$PHPMAILER_LANG['smtp_error'] = 'Fehler vom SMTP-Server: ';
$PHPMAILER_LANG['variable_set'] = 'Kann Variable nicht setzen oder zurücksetzen: ';
$PHPMAILER_LANG['extension_missing'] = 'Fehlende Erweiterung: ';

View File

@@ -0,0 +1,26 @@
<?php
/**
* Greek PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP Σφάλμα: Αδυναμία πιστοποίησης (authentication).';
$PHPMAILER_LANG['connect_host'] = 'SMTP Σφάλμα: Αδυναμία σύνδεσης στον SMTP-Host.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Σφάλμα: Τα δεδομένα δεν έγιναν αποδεκτά.';
$PHPMAILER_LANG['empty_message'] = 'Το E-Mail δεν έχει περιεχόμενο .';
$PHPMAILER_LANG['encoding'] = 'Αγνωστο Encoding-Format: ';
$PHPMAILER_LANG['execute'] = 'Αδυναμία εκτέλεσης ακόλουθης εντολής: ';
$PHPMAILER_LANG['file_access'] = 'Αδυναμία προσπέλασης του αρχείου: ';
$PHPMAILER_LANG['file_open'] = 'Σφάλμα Αρχείου: Δεν είναι δυνατό το άνοιγμα του ακόλουθου αρχείου: ';
$PHPMAILER_LANG['from_failed'] = 'Η παρακάτω διεύθυνση αποστολέα δεν είναι σωστή: ';
$PHPMAILER_LANG['instantiate'] = 'Αδυναμία εκκίνησης Mail function.';
$PHPMAILER_LANG['invalid_address'] = 'Το μήνυμα δεν εστάλη, η διεύθυνση δεν είναι έγκυρη: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer δεν υποστηρίζεται.';
$PHPMAILER_LANG['provide_address'] = 'Παρακαλούμε δώστε τουλάχιστον μια e-mail διεύθυνση παραλήπτη.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Σφάλμα: Οι παρακάτω διευθύνσεις παραλήπτη δεν είναι έγκυρες: ';
$PHPMAILER_LANG['signing'] = 'Σφάλμα υπογραφής: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Αποτυχία σύνδεσης στον SMTP Server.';
$PHPMAILER_LANG['smtp_error'] = 'Σφάλμα από τον SMTP Server: ';
$PHPMAILER_LANG['variable_set'] = 'Αδυναμία ορισμού ή αρχικοποίησης μεταβλητής: ';
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';

View File

@@ -0,0 +1,26 @@
<?php
/**
* Esperanto PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
*/
$PHPMAILER_LANG['authenticate'] = 'Eraro de servilo SMTP : aŭtentigo malsukcesis.';
$PHPMAILER_LANG['connect_host'] = 'Eraro de servilo SMTP : konektado al servilo malsukcesis.';
$PHPMAILER_LANG['data_not_accepted'] = 'Eraro de servilo SMTP : neĝustaj datumoj.';
$PHPMAILER_LANG['empty_message'] = 'Teksto de mesaĝo mankas.';
$PHPMAILER_LANG['encoding'] = 'Nekonata kodoprezento: ';
$PHPMAILER_LANG['execute'] = 'Lanĉi rulumadon ne eblis: ';
$PHPMAILER_LANG['file_access'] = 'Aliro al dosiero ne sukcesis: ';
$PHPMAILER_LANG['file_open'] = 'Eraro de dosiero: malfermo neeblas: ';
$PHPMAILER_LANG['from_failed'] = 'Jena adreso de sendinto malsukcesis: ';
$PHPMAILER_LANG['instantiate'] = 'Genero de retmesaĝa funkcio neeblis.';
$PHPMAILER_LANG['invalid_address'] = 'Retadreso ne validas: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mesaĝilo ne subtenata.';
$PHPMAILER_LANG['provide_address'] = 'Vi devas tajpi almenaŭ unu recevontan retadreson.';
$PHPMAILER_LANG['recipients_failed'] = 'Eraro de servilo SMTP : la jenaj poŝtrecivuloj kaŭzis eraron: ';
$PHPMAILER_LANG['signing'] = 'Eraro de subskribo: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP konektado malsukcesis.';
$PHPMAILER_LANG['smtp_error'] = 'Eraro de servilo SMTP : ';
$PHPMAILER_LANG['variable_set'] = 'Variablo ne pravalorizeblas aŭ ne repravalorizeblas: ';
$PHPMAILER_LANG['extension_missing'] = 'Mankas etendo: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Spanish PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Matt Sturdy <matt.sturdy@gmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'Error SMTP: Imposible autentificar.';
$PHPMAILER_LANG['connect_host'] = 'Error SMTP: Imposible conectar al servidor SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'Error SMTP: Datos no aceptados.';
$PHPMAILER_LANG['empty_message'] = 'El cuerpo del mensaje está vacío.';
$PHPMAILER_LANG['encoding'] = 'Codificación desconocida: ';
$PHPMAILER_LANG['execute'] = 'Imposible ejecutar: ';
$PHPMAILER_LANG['file_access'] = 'Imposible acceder al archivo: ';
$PHPMAILER_LANG['file_open'] = 'Error de Archivo: Imposible abrir el archivo: ';
$PHPMAILER_LANG['from_failed'] = 'La(s) siguiente(s) direcciones de remitente fallaron: ';
$PHPMAILER_LANG['instantiate'] = 'Imposible crear una instancia de la función Mail.';
$PHPMAILER_LANG['invalid_address'] = 'Imposible enviar: dirección de email inválido: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer no está soportado.';
$PHPMAILER_LANG['provide_address'] = 'Debe proporcionar al menos una dirección de email de destino.';
$PHPMAILER_LANG['recipients_failed'] = 'Error SMTP: Los siguientes destinos fallaron: ';
$PHPMAILER_LANG['signing'] = 'Error al firmar: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falló.';
$PHPMAILER_LANG['smtp_error'] = 'Error del servidor SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'No se pudo configurar la variable: ';
$PHPMAILER_LANG['extension_missing'] = 'Extensión faltante: ';

View File

@@ -0,0 +1,28 @@
<?php
/**
* Estonian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Indrek Päri
* @author Elan Ruusamäe <glen@delfi.ee>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP Viga: Autoriseerimise viga.';
$PHPMAILER_LANG['connect_host'] = 'SMTP Viga: Ei õnnestunud luua ühendust SMTP serveriga.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Viga: Vigased andmed.';
$PHPMAILER_LANG['empty_message'] = 'Tühi kirja sisu';
$PHPMAILER_LANG["encoding"] = 'Tundmatu kodeering: ';
$PHPMAILER_LANG['execute'] = 'Tegevus ebaõnnestus: ';
$PHPMAILER_LANG['file_access'] = 'Pole piisavalt õiguseid järgneva faili avamiseks: ';
$PHPMAILER_LANG['file_open'] = 'Faili Viga: Faili avamine ebaõnnestus: ';
$PHPMAILER_LANG['from_failed'] = 'Järgnev saatja e-posti aadress on vigane: ';
$PHPMAILER_LANG['instantiate'] = 'mail funktiooni käivitamine ebaõnnestus.';
$PHPMAILER_LANG['invalid_address'] = 'Saatmine peatatud, e-posti address vigane: ';
$PHPMAILER_LANG['provide_address'] = 'Te peate määrama vähemalt ühe saaja e-posti aadressi.';
$PHPMAILER_LANG['mailer_not_supported'] = ' maileri tugi puudub.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Viga: Järgnevate saajate e-posti aadressid on vigased: ';
$PHPMAILER_LANG["signing"] = 'Viga allkirjastamisel: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() ebaõnnestus.';
$PHPMAILER_LANG['smtp_error'] = 'SMTP serveri viga: ';
$PHPMAILER_LANG['variable_set'] = 'Ei õnnestunud määrata või lähtestada muutujat: ';
$PHPMAILER_LANG['extension_missing'] = 'Nõutud laiendus on puudu: ';

View File

@@ -0,0 +1,28 @@
<?php
/**
* Persian/Farsi PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Ali Jazayeri <jaza.ali@gmail.com>
* @author Mohammad Hossein Mojtahedi <mhm5000@gmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'خطای SMTP: احراز هویت با شکست مواجه شد.';
$PHPMAILER_LANG['connect_host'] = 'خطای SMTP: اتصال به سرور SMTP برقرار نشد.';
$PHPMAILER_LANG['data_not_accepted'] = 'خطای SMTP: داده‌ها نا‌درست هستند.';
$PHPMAILER_LANG['empty_message'] = 'بخش متن پیام خالی است.';
$PHPMAILER_LANG['encoding'] = 'کد‌گذاری نا‌شناخته: ';
$PHPMAILER_LANG['execute'] = 'امکان اجرا وجود ندارد: ';
$PHPMAILER_LANG['file_access'] = 'امکان دسترسی به فایل وجود ندارد: ';
$PHPMAILER_LANG['file_open'] = 'خطای File: امکان بازکردن فایل وجود ندارد: ';
$PHPMAILER_LANG['from_failed'] = 'آدرس فرستنده اشتباه است: ';
$PHPMAILER_LANG['instantiate'] = 'امکان معرفی تابع ایمیل وجود ندارد.';
$PHPMAILER_LANG['invalid_address'] = 'آدرس ایمیل معتبر نیست: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer پشتیبانی نمی‌شود.';
$PHPMAILER_LANG['provide_address'] = 'باید حداقل یک آدرس گیرنده وارد کنید.';
$PHPMAILER_LANG['recipients_failed'] = 'خطای SMTP: ارسال به آدرس گیرنده با خطا مواجه شد: ';
$PHPMAILER_LANG['signing'] = 'خطا در امضا: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'خطا در اتصال به SMTP.';
$PHPMAILER_LANG['smtp_error'] = 'خطا در SMTP Server: ';
$PHPMAILER_LANG['variable_set'] = 'امکان ارسال یا ارسال مجدد متغیر‌ها وجود ندارد: ';
$PHPMAILER_LANG['extension_missing'] = 'افزونه موجود نیست: ';

View File

@@ -0,0 +1,28 @@
<?php
/**
* Finnish PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Jyry Kuukanen
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP-virhe: käyttäjätunnistus epäonnistui.';
$PHPMAILER_LANG['connect_host'] = 'SMTP-virhe: yhteys palvelimeen ei onnistu.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP-virhe: data on virheellinen.';
//$PHPMAILER_LANG['empty_message'] = 'Message body empty';
$PHPMAILER_LANG['encoding'] = 'Tuntematon koodaustyyppi: ';
$PHPMAILER_LANG['execute'] = 'Suoritus epäonnistui: ';
$PHPMAILER_LANG['file_access'] = 'Seuraavaan tiedostoon ei ole oikeuksia: ';
$PHPMAILER_LANG['file_open'] = 'Tiedostovirhe: Ei voida avata tiedostoa: ';
$PHPMAILER_LANG['from_failed'] = 'Seuraava lähettäjän osoite on virheellinen: ';
$PHPMAILER_LANG['instantiate'] = 'mail-funktion luonti epäonnistui.';
//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: ';
$PHPMAILER_LANG['mailer_not_supported'] = 'postivälitintyyppiä ei tueta.';
$PHPMAILER_LANG['provide_address'] = 'Aseta vähintään yksi vastaanottajan sähk&ouml;postiosoite.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP-virhe: seuraava vastaanottaja osoite on virheellinen.';
$PHPMAILER_LANG['encoding'] = 'Tuntematon koodaustyyppi: ';
//$PHPMAILER_LANG['signing'] = 'Signing Error: ';
//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.';
//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: ';
//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: ';
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Faroese PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Dávur Sørensen <http://www.profo-webdesign.dk>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP feilur: Kundi ikki góðkenna.';
$PHPMAILER_LANG['connect_host'] = 'SMTP feilur: Kundi ikki knýta samband við SMTP vert.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP feilur: Data ikki góðkent.';
//$PHPMAILER_LANG['empty_message'] = 'Message body empty';
$PHPMAILER_LANG['encoding'] = 'Ókend encoding: ';
$PHPMAILER_LANG['execute'] = 'Kundi ikki útføra: ';
$PHPMAILER_LANG['file_access'] = 'Kundi ikki tilganga fílu: ';
$PHPMAILER_LANG['file_open'] = 'Fílu feilur: Kundi ikki opna fílu: ';
$PHPMAILER_LANG['from_failed'] = 'fylgjandi Frá/From adressa miseydnaðist: ';
$PHPMAILER_LANG['instantiate'] = 'Kuni ikki instantiera mail funktión.';
//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' er ikki supporterað.';
$PHPMAILER_LANG['provide_address'] = 'Tú skal uppgeva minst móttakara-emailadressu(r).';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Feilur: Fylgjandi móttakarar miseydnaðust: ';
//$PHPMAILER_LANG['signing'] = 'Signing Error: ';
//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.';
//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: ';
//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: ';
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';

View File

@@ -0,0 +1,38 @@
<?php
/**
* French PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* Some French punctuation requires a thin non-breaking space (U+202F) character before it,
* for example before a colon or exclamation mark.
* There is one of these characters between these quotes: ""
* @see http://unicode.org/udhr/n/notes_fra.html
*/
$PHPMAILER_LANG['authenticate'] = 'Erreur SMTP: échec de lauthentification.';
$PHPMAILER_LANG['buggy_php'] = 'Votre version de PHP est affectée par un bug qui peut entraîner des messages corrompus. Pour résoudre ce problème, passez à lenvoi par SMTP, désactivez loption mail.add_x_header dans le fichier php.ini, passez à MacOS ou Linux, ou passez PHP à la version 7.0.17+ ou 7.1.3+.';
$PHPMAILER_LANG['connect_host'] = 'Erreur SMTP: impossible de se connecter au serveur SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'Erreur SMTP: données incorrectes.';
$PHPMAILER_LANG['empty_message'] = 'Corps du message vide.';
$PHPMAILER_LANG['encoding'] = 'Encodage inconnu: ';
$PHPMAILER_LANG['execute'] = 'Impossible de lancer lexécution: ';
$PHPMAILER_LANG['extension_missing'] = 'Extension manquante: ';
$PHPMAILER_LANG['file_access'] = 'Impossible daccéder au fichier: ';
$PHPMAILER_LANG['file_open'] = 'Ouverture du fichier impossible: ';
$PHPMAILER_LANG['from_failed'] = 'Ladresse dexpéditeur suivante a échoué: ';
$PHPMAILER_LANG['instantiate'] = 'Impossible dinstancier la fonction mail.';
$PHPMAILER_LANG['invalid_address'] = 'Adresse courriel non valide: ';
$PHPMAILER_LANG['invalid_header'] = 'Nom ou valeur de len-tête non valide';
$PHPMAILER_LANG['invalid_hostentry'] = 'Entrée dhôte non valide: ';
$PHPMAILER_LANG['invalid_host'] = 'Hôte non valide: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' client de messagerie non supporté.';
$PHPMAILER_LANG['provide_address'] = 'Vous devez fournir au moins une adresse de destinataire.';
$PHPMAILER_LANG['recipients_failed'] = 'Erreur SMTP:les destinataires suivants ont échoué: ';
$PHPMAILER_LANG['signing'] = 'Erreur de signature: ';
$PHPMAILER_LANG['smtp_code'] = 'Code SMTP: ';
$PHPMAILER_LANG['smtp_code_ex'] = 'Informations supplémentaires SMTP: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'La fonction SMTP connect() a échouée.';
$PHPMAILER_LANG['smtp_detail'] = 'Détails: ';
$PHPMAILER_LANG['smtp_error'] = 'Erreur du serveur SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'Impossible dinitialiser ou de réinitialiser une variable: ';
$PHPMAILER_LANG['extension_missing'] = 'Extension manquante: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Galician PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author by Donato Rouco <donatorouco@gmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'Erro SMTP: Non puido ser autentificado.';
$PHPMAILER_LANG['connect_host'] = 'Erro SMTP: Non puido conectar co servidor SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'Erro SMTP: Datos non aceptados.';
$PHPMAILER_LANG['empty_message'] = 'Corpo da mensaxe vacía';
$PHPMAILER_LANG['encoding'] = 'Codificación descoñecida: ';
$PHPMAILER_LANG['execute'] = 'Non puido ser executado: ';
$PHPMAILER_LANG['file_access'] = 'Nob puido acceder ó arquivo: ';
$PHPMAILER_LANG['file_open'] = 'Erro de Arquivo: No puido abrir o arquivo: ';
$PHPMAILER_LANG['from_failed'] = 'A(s) seguinte(s) dirección(s) de remitente(s) deron erro: ';
$PHPMAILER_LANG['instantiate'] = 'Non puido crear unha instancia da función Mail.';
$PHPMAILER_LANG['invalid_address'] = 'Non puido envia-lo correo: dirección de email inválida: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer non está soportado.';
$PHPMAILER_LANG['provide_address'] = 'Debe engadir polo menos unha dirección de email coma destino.';
$PHPMAILER_LANG['recipients_failed'] = 'Erro SMTP: Os seguintes destinos fallaron: ';
$PHPMAILER_LANG['signing'] = 'Erro ó firmar: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() fallou.';
$PHPMAILER_LANG['smtp_error'] = 'Erro do servidor SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'Non puidemos axustar ou reaxustar a variábel: ';
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Hebrew PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Ronny Sherer <ronny@hoojima.com>
*/
$PHPMAILER_LANG['authenticate'] = 'שגיאת SMTP: פעולת האימות נכשלה.';
$PHPMAILER_LANG['connect_host'] = 'שגיאת SMTP: לא הצלחתי להתחבר לשרת SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'שגיאת SMTP: מידע לא התקבל.';
$PHPMAILER_LANG['empty_message'] = 'גוף ההודעה ריק';
$PHPMAILER_LANG['invalid_address'] = 'כתובת שגויה: ';
$PHPMAILER_LANG['encoding'] = 'קידוד לא מוכר: ';
$PHPMAILER_LANG['execute'] = 'לא הצלחתי להפעיל את: ';
$PHPMAILER_LANG['file_access'] = 'לא ניתן לגשת לקובץ: ';
$PHPMAILER_LANG['file_open'] = 'שגיאת קובץ: לא ניתן לגשת לקובץ: ';
$PHPMAILER_LANG['from_failed'] = 'כתובות הנמענים הבאות נכשלו: ';
$PHPMAILER_LANG['instantiate'] = 'לא הצלחתי להפעיל את פונקציית המייל.';
$PHPMAILER_LANG['mailer_not_supported'] = ' אינה נתמכת.';
$PHPMAILER_LANG['provide_address'] = 'חובה לספק לפחות כתובת אחת של מקבל המייל.';
$PHPMAILER_LANG['recipients_failed'] = 'שגיאת SMTP: הנמענים הבאים נכשלו: ';
$PHPMAILER_LANG['signing'] = 'שגיאת חתימה: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.';
$PHPMAILER_LANG['smtp_error'] = 'שגיאת שרת SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'לא ניתן לקבוע או לשנות את המשתנה: ';
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Hindi PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Yash Karanke <mr.karanke@gmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP त्रुटि: प्रामाणिकता की जांच नहीं हो सका। ';
$PHPMAILER_LANG['connect_host'] = 'SMTP त्रुटि: SMTP सर्वर से कनेक्ट नहीं हो सका। ';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP त्रुटि: डेटा स्वीकार नहीं किया जाता है। ';
$PHPMAILER_LANG['empty_message'] = 'संदेश खाली है। ';
$PHPMAILER_LANG['encoding'] = 'अज्ञात एन्कोडिंग प्रकार। ';
$PHPMAILER_LANG['execute'] = 'आदेश को निष्पादित करने में विफल। ';
$PHPMAILER_LANG['file_access'] = 'फ़ाइल उपलब्ध नहीं है। ';
$PHPMAILER_LANG['file_open'] = 'फ़ाइल त्रुटि: फाइल को खोला नहीं जा सका। ';
$PHPMAILER_LANG['from_failed'] = 'प्रेषक का पता गलत है। ';
$PHPMAILER_LANG['instantiate'] = 'मेल फ़ंक्शन कॉल नहीं कर सकता है।';
$PHPMAILER_LANG['invalid_address'] = 'पता गलत है। ';
$PHPMAILER_LANG['mailer_not_supported'] = 'मेल सर्वर के साथ काम नहीं करता है। ';
$PHPMAILER_LANG['provide_address'] = 'आपको कम से कम एक प्राप्तकर्ता का ई-मेल पता प्रदान करना होगा।';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP त्रुटि: निम्न प्राप्तकर्ताओं को पते भेजने में विफल। ';
$PHPMAILER_LANG['signing'] = 'साइनअप त्रुटि:। ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP का connect () फ़ंक्शन विफल हुआ। ';
$PHPMAILER_LANG['smtp_error'] = 'SMTP सर्वर त्रुटि। ';
$PHPMAILER_LANG['variable_set'] = 'चर को बना या संशोधित नहीं किया जा सकता। ';
$PHPMAILER_LANG['extension_missing'] = 'एक्सटेन्षन गायब है: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Croatian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Hrvoj3e <hrvoj3e@gmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP Greška: Neuspjela autentikacija.';
$PHPMAILER_LANG['connect_host'] = 'SMTP Greška: Ne mogu se spojiti na SMTP poslužitelj.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Greška: Podatci nisu prihvaćeni.';
$PHPMAILER_LANG['empty_message'] = 'Sadržaj poruke je prazan.';
$PHPMAILER_LANG['encoding'] = 'Nepoznati encoding: ';
$PHPMAILER_LANG['execute'] = 'Nije moguće izvršiti naredbu: ';
$PHPMAILER_LANG['file_access'] = 'Nije moguće pristupiti datoteci: ';
$PHPMAILER_LANG['file_open'] = 'Nije moguće otvoriti datoteku: ';
$PHPMAILER_LANG['from_failed'] = 'SMTP Greška: Slanje s navedenih e-mail adresa nije uspjelo: ';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Greška: Slanje na navedenih e-mail adresa nije uspjelo: ';
$PHPMAILER_LANG['instantiate'] = 'Ne mogu pokrenuti mail funkcionalnost.';
$PHPMAILER_LANG['invalid_address'] = 'E-mail nije poslan. Neispravna e-mail adresa: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer nije podržan.';
$PHPMAILER_LANG['provide_address'] = 'Definirajte barem jednu adresu primatelja.';
$PHPMAILER_LANG['signing'] = 'Greška prilikom prijave: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Spajanje na SMTP poslužitelj nije uspjelo.';
$PHPMAILER_LANG['smtp_error'] = 'Greška SMTP poslužitelja: ';
$PHPMAILER_LANG['variable_set'] = 'Ne mogu postaviti varijablu niti ju vratiti nazad: ';
$PHPMAILER_LANG['extension_missing'] = 'Nedostaje proširenje: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Hungarian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author @dominicus-75
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP hiba: az azonosítás sikertelen.';
$PHPMAILER_LANG['connect_host'] = 'SMTP hiba: nem lehet kapcsolódni az SMTP-szerverhez.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP hiba: adatok visszautasítva.';
$PHPMAILER_LANG['empty_message'] = 'Üres az üzenettörzs.';
$PHPMAILER_LANG['encoding'] = 'Ismeretlen kódolás: ';
$PHPMAILER_LANG['execute'] = 'Nem lehet végrehajtani: ';
$PHPMAILER_LANG['file_access'] = 'A következő fájl nem elérhető: ';
$PHPMAILER_LANG['file_open'] = 'Fájl hiba: a következő fájlt nem lehet megnyitni: ';
$PHPMAILER_LANG['from_failed'] = 'A feladóként megadott következő cím hibás: ';
$PHPMAILER_LANG['instantiate'] = 'A PHP mail() függvényt nem sikerült végrehajtani.';
$PHPMAILER_LANG['invalid_address'] = 'Érvénytelen cím: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' a mailer-osztály nem támogatott.';
$PHPMAILER_LANG['provide_address'] = 'Legalább egy címzettet fel kell tüntetni.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP hiba: a címzettként megadott következő címek hibásak: ';
$PHPMAILER_LANG['signing'] = 'Hibás aláírás: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Hiba az SMTP-kapcsolatban.';
$PHPMAILER_LANG['smtp_error'] = 'SMTP-szerver hiba: ';
$PHPMAILER_LANG['variable_set'] = 'A következő változók beállítása nem sikerült: ';
$PHPMAILER_LANG['extension_missing'] = 'Bővítmény hiányzik: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Armenian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Hrayr Grigoryan <hrayr@bits.am>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP -ի սխալ: չհաջողվեց ստուգել իսկությունը.';
$PHPMAILER_LANG['connect_host'] = 'SMTP -ի սխալ: չհաջողվեց կապ հաստատել SMTP սերվերի հետ.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP -ի սխալ: տվյալները ընդունված չեն.';
$PHPMAILER_LANG['empty_message'] = 'Հաղորդագրությունը դատարկ է';
$PHPMAILER_LANG['encoding'] = 'Կոդավորման անհայտ տեսակ: ';
$PHPMAILER_LANG['execute'] = 'Չհաջողվեց իրականացնել հրամանը: ';
$PHPMAILER_LANG['file_access'] = 'Ֆայլը հասանելի չէ: ';
$PHPMAILER_LANG['file_open'] = 'Ֆայլի սխալ: ֆայլը չհաջողվեց բացել: ';
$PHPMAILER_LANG['from_failed'] = 'Ուղարկողի հետևյալ հասցեն սխալ է: ';
$PHPMAILER_LANG['instantiate'] = 'Հնարավոր չէ կանչել mail ֆունկցիան.';
$PHPMAILER_LANG['invalid_address'] = 'Հասցեն սխալ է: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' փոստային սերվերի հետ չի աշխատում.';
$PHPMAILER_LANG['provide_address'] = 'Անհրաժեշտ է տրամադրել գոնե մեկ ստացողի e-mail հասցե.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP -ի սխալ: չի հաջողվել ուղարկել հետևյալ ստացողների հասցեներին: ';
$PHPMAILER_LANG['signing'] = 'Ստորագրման սխալ: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP -ի connect() ֆունկցիան չի հաջողվել';
$PHPMAILER_LANG['smtp_error'] = 'SMTP սերվերի սխալ: ';
$PHPMAILER_LANG['variable_set'] = 'Չի հաջողվում ստեղծել կամ վերափոխել փոփոխականը: ';
$PHPMAILER_LANG['extension_missing'] = 'Հավելվածը բացակայում է: ';

View File

@@ -0,0 +1,31 @@
<?php
/**
* Indonesian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Cecep Prawiro <cecep.prawiro@gmail.com>
* @author @januridp
* @author Ian Mustafa <mail@ianmustafa.com>
*/
$PHPMAILER_LANG['authenticate'] = 'Kesalahan SMTP: Tidak dapat mengotentikasi.';
$PHPMAILER_LANG['connect_host'] = 'Kesalahan SMTP: Tidak dapat terhubung ke host SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'Kesalahan SMTP: Data tidak diterima.';
$PHPMAILER_LANG['empty_message'] = 'Isi pesan kosong';
$PHPMAILER_LANG['encoding'] = 'Pengkodean karakter tidak dikenali: ';
$PHPMAILER_LANG['execute'] = 'Tidak dapat menjalankan proses: ';
$PHPMAILER_LANG['file_access'] = 'Tidak dapat mengakses berkas: ';
$PHPMAILER_LANG['file_open'] = 'Kesalahan Berkas: Berkas tidak dapat dibuka: ';
$PHPMAILER_LANG['from_failed'] = 'Alamat pengirim berikut mengakibatkan kesalahan: ';
$PHPMAILER_LANG['instantiate'] = 'Tidak dapat menginisialisasi fungsi surel.';
$PHPMAILER_LANG['invalid_address'] = 'Gagal terkirim, alamat surel tidak sesuai: ';
$PHPMAILER_LANG['invalid_hostentry'] = 'Gagal terkirim, entri host tidak sesuai: ';
$PHPMAILER_LANG['invalid_host'] = 'Gagal terkirim, host tidak sesuai: ';
$PHPMAILER_LANG['provide_address'] = 'Harus tersedia minimal satu alamat tujuan';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer tidak didukung';
$PHPMAILER_LANG['recipients_failed'] = 'Kesalahan SMTP: Alamat tujuan berikut menyebabkan kesalahan: ';
$PHPMAILER_LANG['signing'] = 'Kesalahan dalam penandatangan SSL: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() gagal.';
$PHPMAILER_LANG['smtp_error'] = 'Kesalahan pada pelayan SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'Tidak dapat mengatur atau mengatur ulang variabel: ';
$PHPMAILER_LANG['extension_missing'] = 'Ekstensi PHP tidak tersedia: ';

View File

@@ -0,0 +1,28 @@
<?php
/**
* Italian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Ilias Bartolini <brain79@inwind.it>
* @author Stefano Sabatini <sabas88@gmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP Error: Impossibile autenticarsi.';
$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Impossibile connettersi all\'host SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Dati non accettati dal server.';
$PHPMAILER_LANG['empty_message'] = 'Il corpo del messaggio è vuoto';
$PHPMAILER_LANG['encoding'] = 'Codifica dei caratteri sconosciuta: ';
$PHPMAILER_LANG['execute'] = 'Impossibile eseguire l\'operazione: ';
$PHPMAILER_LANG['file_access'] = 'Impossibile accedere al file: ';
$PHPMAILER_LANG['file_open'] = 'File Error: Impossibile aprire il file: ';
$PHPMAILER_LANG['from_failed'] = 'I seguenti indirizzi mittenti hanno generato errore: ';
$PHPMAILER_LANG['instantiate'] = 'Impossibile istanziare la funzione mail';
$PHPMAILER_LANG['invalid_address'] = 'Impossibile inviare, l\'indirizzo email non è valido: ';
$PHPMAILER_LANG['provide_address'] = 'Deve essere fornito almeno un indirizzo ricevente';
$PHPMAILER_LANG['mailer_not_supported'] = 'Mailer non supportato';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: I seguenti indirizzi destinatari hanno generato un errore: ';
$PHPMAILER_LANG['signing'] = 'Errore nella firma: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() fallita.';
$PHPMAILER_LANG['smtp_error'] = 'Errore del server SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'Impossibile impostare o resettare la variabile: ';
$PHPMAILER_LANG['extension_missing'] = 'Estensione mancante: ';

View File

@@ -0,0 +1,29 @@
<?php
/**
* Japanese PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Mitsuhiro Yoshida <http://mitstek.com/>
* @author Yoshi Sakai <http://bluemooninc.jp/>
* @author Arisophy <https://github.com/arisophy/>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTPエラー: 認証できませんでした。';
$PHPMAILER_LANG['connect_host'] = 'SMTPエラー: SMTPホストに接続できませんでした。';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTPエラー: データが受け付けられませんでした。';
$PHPMAILER_LANG['empty_message'] = 'メール本文が空です。';
$PHPMAILER_LANG['encoding'] = '不明なエンコーディング: ';
$PHPMAILER_LANG['execute'] = '実行できませんでした: ';
$PHPMAILER_LANG['file_access'] = 'ファイルにアクセスできません: ';
$PHPMAILER_LANG['file_open'] = 'ファイルエラー: ファイルを開けません: ';
$PHPMAILER_LANG['from_failed'] = 'Fromアドレスを登録する際にエラーが発生しました: ';
$PHPMAILER_LANG['instantiate'] = 'メール関数が正常に動作しませんでした。';
$PHPMAILER_LANG['invalid_address'] = '不正なメールアドレス: ';
$PHPMAILER_LANG['provide_address'] = '少なくとも1つメールアドレスを 指定する必要があります。';
$PHPMAILER_LANG['mailer_not_supported'] = ' メーラーがサポートされていません。';
$PHPMAILER_LANG['recipients_failed'] = 'SMTPエラー: 次の受信者アドレスに 間違いがあります: ';
$PHPMAILER_LANG['signing'] = '署名エラー: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP接続に失敗しました。';
$PHPMAILER_LANG['smtp_error'] = 'SMTPサーバーエラー: ';
$PHPMAILER_LANG['variable_set'] = '変数が存在しません: ';
$PHPMAILER_LANG['extension_missing'] = '拡張機能が見つかりません: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Georgian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Avtandil Kikabidze aka LONGMAN <akalongman@gmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP შეცდომა: ავტორიზაცია შეუძლებელია.';
$PHPMAILER_LANG['connect_host'] = 'SMTP შეცდომა: SMTP სერვერთან დაკავშირება შეუძლებელია.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP შეცდომა: მონაცემები არ იქნა მიღებული.';
$PHPMAILER_LANG['encoding'] = 'კოდირების უცნობი ტიპი: ';
$PHPMAILER_LANG['execute'] = 'შეუძლებელია შემდეგი ბრძანების შესრულება: ';
$PHPMAILER_LANG['file_access'] = 'შეუძლებელია წვდომა ფაილთან: ';
$PHPMAILER_LANG['file_open'] = 'ფაილური სისტემის შეცდომა: არ იხსნება ფაილი: ';
$PHPMAILER_LANG['from_failed'] = 'გამგზავნის არასწორი მისამართი: ';
$PHPMAILER_LANG['instantiate'] = 'mail ფუნქციის გაშვება ვერ ხერხდება.';
$PHPMAILER_LANG['provide_address'] = 'გთხოვთ მიუთითოთ ერთი ადრესატის e-mail მისამართი მაინც.';
$PHPMAILER_LANG['mailer_not_supported'] = ' - საფოსტო სერვერის მხარდაჭერა არ არის.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP შეცდომა: შემდეგ მისამართებზე გაგზავნა ვერ მოხერხდა: ';
$PHPMAILER_LANG['empty_message'] = 'შეტყობინება ცარიელია';
$PHPMAILER_LANG['invalid_address'] = 'არ გაიგზავნა, e-mail მისამართის არასწორი ფორმატი: ';
$PHPMAILER_LANG['signing'] = 'ხელმოწერის შეცდომა: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'შეცდომა SMTP სერვერთან დაკავშირებისას';
$PHPMAILER_LANG['smtp_error'] = 'SMTP სერვერის შეცდომა: ';
$PHPMAILER_LANG['variable_set'] = 'შეუძლებელია შემდეგი ცვლადის შექმნა ან შეცვლა: ';
$PHPMAILER_LANG['extension_missing'] = 'ბიბლიოთეკა არ არსებობს: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Korean PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author ChalkPE <amato0617@gmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP 오류: 인증할 수 없습니다.';
$PHPMAILER_LANG['connect_host'] = 'SMTP 오류: SMTP 호스트에 접속할 수 없습니다.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 오류: 데이터가 받아들여지지 않았습니다.';
$PHPMAILER_LANG['empty_message'] = '메세지 내용이 없습니다';
$PHPMAILER_LANG['encoding'] = '알 수 없는 인코딩: ';
$PHPMAILER_LANG['execute'] = '실행 불가: ';
$PHPMAILER_LANG['file_access'] = '파일 접근 불가: ';
$PHPMAILER_LANG['file_open'] = '파일 오류: 파일을 열 수 없습니다: ';
$PHPMAILER_LANG['from_failed'] = '다음 From 주소에서 오류가 발생했습니다: ';
$PHPMAILER_LANG['instantiate'] = 'mail 함수를 인스턴스화할 수 없습니다';
$PHPMAILER_LANG['invalid_address'] = '잘못된 주소: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' 메일러는 지원되지 않습니다.';
$PHPMAILER_LANG['provide_address'] = '적어도 한 개 이상의 수신자 메일 주소를 제공해야 합니다.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP 오류: 다음 수신자에서 오류가 발생했습니다: ';
$PHPMAILER_LANG['signing'] = '서명 오류: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP 연결을 실패하였습니다.';
$PHPMAILER_LANG['smtp_error'] = 'SMTP 서버 오류: ';
$PHPMAILER_LANG['variable_set'] = '변수 설정 및 초기화 불가: ';
$PHPMAILER_LANG['extension_missing'] = '확장자 없음: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Lithuanian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Dainius Kaupaitis <dk@sum.lt>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP klaida: autentifikacija nepavyko.';
$PHPMAILER_LANG['connect_host'] = 'SMTP klaida: nepavyksta prisijungti prie SMTP stoties.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP klaida: duomenys nepriimti.';
$PHPMAILER_LANG['empty_message'] = 'Laiško turinys tuščias';
$PHPMAILER_LANG['encoding'] = 'Neatpažinta koduotė: ';
$PHPMAILER_LANG['execute'] = 'Nepavyko įvykdyti komandos: ';
$PHPMAILER_LANG['file_access'] = 'Byla nepasiekiama: ';
$PHPMAILER_LANG['file_open'] = 'Bylos klaida: Nepavyksta atidaryti: ';
$PHPMAILER_LANG['from_failed'] = 'Neteisingas siuntėjo adresas: ';
$PHPMAILER_LANG['instantiate'] = 'Nepavyko paleisti mail funkcijos.';
$PHPMAILER_LANG['invalid_address'] = 'Neteisingas adresas: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' pašto stotis nepalaikoma.';
$PHPMAILER_LANG['provide_address'] = 'Nurodykite bent vieną gavėjo adresą.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP klaida: nepavyko išsiųsti šiems gavėjams: ';
$PHPMAILER_LANG['signing'] = 'Prisijungimo klaida: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP susijungimo klaida';
$PHPMAILER_LANG['smtp_error'] = 'SMTP stoties klaida: ';
$PHPMAILER_LANG['variable_set'] = 'Nepavyko priskirti reikšmės kintamajam: ';
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Latvian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Eduards M. <e@npd.lv>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP kļūda: Autorizācija neizdevās.';
$PHPMAILER_LANG['connect_host'] = 'SMTP Kļūda: Nevar izveidot savienojumu ar SMTP serveri.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Kļūda: Nepieņem informāciju.';
$PHPMAILER_LANG['empty_message'] = 'Ziņojuma teksts ir tukšs';
$PHPMAILER_LANG['encoding'] = 'Neatpazīts kodējums: ';
$PHPMAILER_LANG['execute'] = 'Neizdevās izpildīt komandu: ';
$PHPMAILER_LANG['file_access'] = 'Fails nav pieejams: ';
$PHPMAILER_LANG['file_open'] = 'Faila kļūda: Nevar atvērt failu: ';
$PHPMAILER_LANG['from_failed'] = 'Nepareiza sūtītāja adrese: ';
$PHPMAILER_LANG['instantiate'] = 'Nevar palaist sūtīšanas funkciju.';
$PHPMAILER_LANG['invalid_address'] = 'Nepareiza adrese: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' sūtītājs netiek atbalstīts.';
$PHPMAILER_LANG['provide_address'] = 'Lūdzu, norādiet vismaz vienu adresātu.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP kļūda: neizdevās nosūtīt šādiem saņēmējiem: ';
$PHPMAILER_LANG['signing'] = 'Autorizācijas kļūda: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP savienojuma kļūda';
$PHPMAILER_LANG['smtp_error'] = 'SMTP servera kļūda: ';
$PHPMAILER_LANG['variable_set'] = 'Nevar piešķirt mainīgā vērtību: ';
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Malagasy PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Hackinet <piyushjha8164@gmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'Hadisoana SMTP: Tsy nahomby ny fanamarinana.';
$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Tsy afaka mampifandray amin\'ny mpampiantrano SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP diso: tsy voarakitra ny angona.';
$PHPMAILER_LANG['empty_message'] = 'Tsy misy ny votoaty mailaka.';
$PHPMAILER_LANG['encoding'] = 'Tsy fantatra encoding: ';
$PHPMAILER_LANG['execute'] = 'Tsy afaka manatanteraka ity baiko manaraka ity: ';
$PHPMAILER_LANG['file_access'] = 'Tsy nahomby ny fidirana amin\'ity rakitra ity: ';
$PHPMAILER_LANG['file_open'] = 'Hadisoana diso: Tsy afaka nanokatra ity file manaraka ity: ';
$PHPMAILER_LANG['from_failed'] = 'Ny adiresy iraka manaraka dia diso: ';
$PHPMAILER_LANG['instantiate'] = 'Tsy afaka nanomboka ny hetsika mail.';
$PHPMAILER_LANG['invalid_address'] = 'Tsy mety ny adiresy: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer tsy manohana.';
$PHPMAILER_LANG['provide_address'] = 'Alefaso azafady iray adiresy iray farafahakeliny.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: Tsy mety ireo mpanaraka ireto: ';
$PHPMAILER_LANG['signing'] = 'Error nandritra ny sonia:';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Tsy nahomby ny fifandraisana tamin\'ny server SMTP.';
$PHPMAILER_LANG['smtp_error'] = 'Fahadisoana tamin\'ny server SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'Tsy azo atao ny mametraka na mamerina ny variable: ';
$PHPMAILER_LANG['extension_missing'] = 'Tsy hita ny ampahany: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Malaysian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Nawawi Jamili <nawawi@rutweb.com>
*/
$PHPMAILER_LANG['authenticate'] = 'Ralat SMTP: Tidak dapat pengesahan.';
$PHPMAILER_LANG['connect_host'] = 'Ralat SMTP: Tidak dapat menghubungi hos pelayan SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'Ralat SMTP: Data tidak diterima oleh pelayan.';
$PHPMAILER_LANG['empty_message'] = 'Tiada isi untuk mesej';
$PHPMAILER_LANG['encoding'] = 'Pengekodan tidak diketahui: ';
$PHPMAILER_LANG['execute'] = 'Tidak dapat melaksanakan: ';
$PHPMAILER_LANG['file_access'] = 'Tidak dapat mengakses fail: ';
$PHPMAILER_LANG['file_open'] = 'Ralat Fail: Tidak dapat membuka fail: ';
$PHPMAILER_LANG['from_failed'] = 'Berikut merupakan ralat dari alamat e-mel: ';
$PHPMAILER_LANG['instantiate'] = 'Tidak dapat memberi contoh fungsi e-mel.';
$PHPMAILER_LANG['invalid_address'] = 'Alamat emel tidak sah: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' jenis penghantar emel tidak disokong.';
$PHPMAILER_LANG['provide_address'] = 'Anda perlu menyediakan sekurang-kurangnya satu alamat e-mel penerima.';
$PHPMAILER_LANG['recipients_failed'] = 'Ralat SMTP: Penerima e-mel berikut telah gagal: ';
$PHPMAILER_LANG['signing'] = 'Ralat pada tanda tangan: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() telah gagal.';
$PHPMAILER_LANG['smtp_error'] = 'Ralat pada pelayan SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'Tidak boleh menetapkan atau menetapkan semula pembolehubah: ';
$PHPMAILER_LANG['extension_missing'] = 'Sambungan hilang: ';

View File

@@ -0,0 +1,26 @@
<?php
/**
* Norwegian Bokmål PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP Feil: Kunne ikke autentisere.';
$PHPMAILER_LANG['connect_host'] = 'SMTP Feil: Kunne ikke koble til SMTP tjener.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Feil: Datainnhold ikke akseptert.';
$PHPMAILER_LANG['empty_message'] = 'Meldingsinnhold mangler';
$PHPMAILER_LANG['encoding'] = 'Ukjent koding: ';
$PHPMAILER_LANG['execute'] = 'Kunne ikke utføre: ';
$PHPMAILER_LANG['file_access'] = 'Får ikke tilgang til filen: ';
$PHPMAILER_LANG['file_open'] = 'Fil Feil: Kunne ikke åpne filen: ';
$PHPMAILER_LANG['from_failed'] = 'Følgende Frå adresse feilet: ';
$PHPMAILER_LANG['instantiate'] = 'Kunne ikke initialisere post funksjon.';
$PHPMAILER_LANG['invalid_address'] = 'Ugyldig adresse: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' sender er ikke støttet.';
$PHPMAILER_LANG['provide_address'] = 'Du må opppgi minst en mottakeradresse.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Feil: Følgende mottakeradresse feilet: ';
$PHPMAILER_LANG['signing'] = 'Signering Feil: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP connect() feilet.';
$PHPMAILER_LANG['smtp_error'] = 'SMTP server feil: ';
$PHPMAILER_LANG['variable_set'] = 'Kan ikke skrive eller omskrive variabel: ';
$PHPMAILER_LANG['extension_missing'] = 'Utvidelse mangler: ';

View File

@@ -0,0 +1,34 @@
<?php
/**
* Dutch PHPMailer language file: refer to PHPMailer.php for definitive list.
* @package PHPMailer
* @author Tuxion <team@tuxion.nl>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP-fout: authenticatie mislukt.';
$PHPMAILER_LANG['buggy_php'] = 'PHP versie gededecteerd die onderhavig is aan een bug die kan resulteren in gecorrumpeerde berichten. Om dit te voorkomen, gebruik SMTP voor het verzenden van berichten, zet de mail.add_x_header optie in uw php.ini file uit, gebruik MacOS of Linux, of pas de gebruikte PHP versie aan naar versie 7.0.17+ or 7.1.3+.';
$PHPMAILER_LANG['connect_host'] = 'SMTP-fout: kon niet verbinden met SMTP-host.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP-fout: data niet geaccepteerd.';
$PHPMAILER_LANG['empty_message'] = 'Berichttekst is leeg';
$PHPMAILER_LANG['encoding'] = 'Onbekende codering: ';
$PHPMAILER_LANG['execute'] = 'Kon niet uitvoeren: ';
$PHPMAILER_LANG['extension_missing'] = 'Extensie afwezig: ';
$PHPMAILER_LANG['file_access'] = 'Kreeg geen toegang tot bestand: ';
$PHPMAILER_LANG['file_open'] = 'Bestandsfout: kon bestand niet openen: ';
$PHPMAILER_LANG['from_failed'] = 'Het volgende afzendersadres is mislukt: ';
$PHPMAILER_LANG['instantiate'] = 'Kon mailfunctie niet initialiseren.';
$PHPMAILER_LANG['invalid_address'] = 'Ongeldig adres: ';
$PHPMAILER_LANG['invalid_header'] = 'Ongeldige header naam of waarde';
$PHPMAILER_LANG['invalid_hostentry'] = 'Ongeldige hostentry: ';
$PHPMAILER_LANG['invalid_host'] = 'Ongeldige host: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer wordt niet ondersteund.';
$PHPMAILER_LANG['provide_address'] = 'Er moet minstens één ontvanger worden opgegeven.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP-fout: de volgende ontvangers zijn mislukt: ';
$PHPMAILER_LANG['signing'] = 'Signeerfout: ';
$PHPMAILER_LANG['smtp_code'] = 'SMTP code: ';
$PHPMAILER_LANG['smtp_code_ex'] = 'Aanvullende SMTP informatie: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Verbinding mislukt.';
$PHPMAILER_LANG['smtp_detail'] = 'Detail: ';
$PHPMAILER_LANG['smtp_error'] = 'SMTP-serverfout: ';
$PHPMAILER_LANG['variable_set'] = 'Kan de volgende variabele niet instellen of resetten: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Polish PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
*/
$PHPMAILER_LANG['authenticate'] = 'Błąd SMTP: Nie można przeprowadzić uwierzytelnienia.';
$PHPMAILER_LANG['connect_host'] = 'Błąd SMTP: Nie można połączyć się z wybranym hostem.';
$PHPMAILER_LANG['data_not_accepted'] = 'Błąd SMTP: Dane nie zostały przyjęte.';
$PHPMAILER_LANG['empty_message'] = 'Wiadomość jest pusta.';
$PHPMAILER_LANG['encoding'] = 'Nieznany sposób kodowania znaków: ';
$PHPMAILER_LANG['execute'] = 'Nie można uruchomić: ';
$PHPMAILER_LANG['file_access'] = 'Brak dostępu do pliku: ';
$PHPMAILER_LANG['file_open'] = 'Nie można otworzyć pliku: ';
$PHPMAILER_LANG['from_failed'] = 'Następujący adres Nadawcy jest nieprawidłowy: ';
$PHPMAILER_LANG['instantiate'] = 'Nie można wywołać funkcji mail(). Sprawdź konfigurację serwera.';
$PHPMAILER_LANG['invalid_address'] = 'Nie można wysłać wiadomości, ' .
'następujący adres Odbiorcy jest nieprawidłowy: ';
$PHPMAILER_LANG['provide_address'] = 'Należy podać prawidłowy adres email Odbiorcy.';
$PHPMAILER_LANG['mailer_not_supported'] = 'Wybrana metoda wysyłki wiadomości nie jest obsługiwana.';
$PHPMAILER_LANG['recipients_failed'] = 'Błąd SMTP: Następujący odbiorcy są nieprawidłowi: ';
$PHPMAILER_LANG['signing'] = 'Błąd podpisywania wiadomości: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() zakończone niepowodzeniem.';
$PHPMAILER_LANG['smtp_error'] = 'Błąd SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'Nie można ustawić lub zmodyfikować zmiennej: ';
$PHPMAILER_LANG['extension_missing'] = 'Brakujące rozszerzenie: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Portuguese (European) PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Jonadabe <jonadabe@hotmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'Erro do SMTP: Não foi possível realizar a autenticação.';
$PHPMAILER_LANG['connect_host'] = 'Erro do SMTP: Não foi possível realizar ligação com o servidor SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'Erro do SMTP: Os dados foram rejeitados.';
$PHPMAILER_LANG['empty_message'] = 'A mensagem no e-mail está vazia.';
$PHPMAILER_LANG['encoding'] = 'Codificação desconhecida: ';
$PHPMAILER_LANG['execute'] = 'Não foi possível executar: ';
$PHPMAILER_LANG['file_access'] = 'Não foi possível aceder o ficheiro: ';
$PHPMAILER_LANG['file_open'] = 'Abertura do ficheiro: Não foi possível abrir o ficheiro: ';
$PHPMAILER_LANG['from_failed'] = 'Ocorreram falhas nos endereços dos seguintes remententes: ';
$PHPMAILER_LANG['instantiate'] = 'Não foi possível iniciar uma instância da função mail.';
$PHPMAILER_LANG['invalid_address'] = 'Não foi enviado nenhum e-mail para o endereço de e-mail inválido: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer não é suportado.';
$PHPMAILER_LANG['provide_address'] = 'Tem de fornecer pelo menos um endereço como destinatário do e-mail.';
$PHPMAILER_LANG['recipients_failed'] = 'Erro do SMTP: O endereço do seguinte destinatário falhou: ';
$PHPMAILER_LANG['signing'] = 'Erro ao assinar: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falhou.';
$PHPMAILER_LANG['smtp_error'] = 'Erro de servidor SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'Não foi possível definir ou redefinir a variável: ';
$PHPMAILER_LANG['extension_missing'] = 'Extensão em falta: ';

View File

@@ -0,0 +1,38 @@
<?php
/**
* Brazilian Portuguese PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Paulo Henrique Garcia <paulo@controllerweb.com.br>
* @author Lucas Guimarães <lucas@lucasguimaraes.com>
* @author Phelipe Alves <phelipealvesdesouza@gmail.com>
* @author Fabio Beneditto <fabiobeneditto@gmail.com>
* @author Geidson Benício Coelho <geidsonc@gmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'Erro de SMTP: Não foi possível autenticar.';
$PHPMAILER_LANG['buggy_php'] = 'Sua versão do PHP é afetada por um bug que por resultar em messagens corrompidas. Para corrigir, mude para enviar usando SMTP, desative a opção mail.add_x_header em seu php.ini, mude para MacOS ou Linux, ou atualize seu PHP para versão 7.0.17+ ou 7.1.3+ ';
$PHPMAILER_LANG['connect_host'] = 'Erro de SMTP: Não foi possível conectar ao servidor SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'Erro de SMTP: Dados rejeitados.';
$PHPMAILER_LANG['empty_message'] = 'Mensagem vazia';
$PHPMAILER_LANG['encoding'] = 'Codificação desconhecida: ';
$PHPMAILER_LANG['execute'] = 'Não foi possível executar: ';
$PHPMAILER_LANG['extension_missing'] = 'Extensão não existe: ';
$PHPMAILER_LANG['file_access'] = 'Não foi possível acessar o arquivo: ';
$PHPMAILER_LANG['file_open'] = 'Erro de Arquivo: Não foi possível abrir o arquivo: ';
$PHPMAILER_LANG['from_failed'] = 'Os seguintes remetentes falharam: ';
$PHPMAILER_LANG['instantiate'] = 'Não foi possível instanciar a função mail.';
$PHPMAILER_LANG['invalid_address'] = 'Endereço de e-mail inválido: ';
$PHPMAILER_LANG['invalid_header'] = 'Nome ou valor de cabeçalho inválido';
$PHPMAILER_LANG['invalid_hostentry'] = 'hostentry inválido: ';
$PHPMAILER_LANG['invalid_host'] = 'host inválido: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer não é suportado.';
$PHPMAILER_LANG['provide_address'] = 'Você deve informar pelo menos um destinatário.';
$PHPMAILER_LANG['recipients_failed'] = 'Erro de SMTP: Os seguintes destinatários falharam: ';
$PHPMAILER_LANG['signing'] = 'Erro de Assinatura: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falhou.';
$PHPMAILER_LANG['smtp_code'] = 'Código do servidor SMTP: ';
$PHPMAILER_LANG['smtp_error'] = 'Erro de servidor SMTP: ';
$PHPMAILER_LANG['smtp_code_ex'] = 'Informações adicionais do servidor SMTP: ';
$PHPMAILER_LANG['smtp_detail'] = 'Detalhes do servidor SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'Não foi possível definir ou redefinir a variável: ';

View File

@@ -0,0 +1,33 @@
<?php
/**
* Romanian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
*/
$PHPMAILER_LANG['authenticate'] = 'Eroare SMTP: Autentificarea a eșuat.';
$PHPMAILER_LANG['buggy_php'] = 'Versiunea instalată de PHP este afectată de o problemă care poate duce la coruperea mesajelor Pentru a preveni această problemă, folosiți SMTP, dezactivați opțiunea mail.add_x_header din php.ini, folosiți MacOS/Linux sau actualizați versiunea de PHP la 7.0.17+ sau 7.1.3+.';
$PHPMAILER_LANG['connect_host'] = 'Eroare SMTP: Conectarea la serverul SMTP a eșuat.';
$PHPMAILER_LANG['data_not_accepted'] = 'Eroare SMTP: Datele nu au fost acceptate.';
$PHPMAILER_LANG['empty_message'] = 'Mesajul este gol.';
$PHPMAILER_LANG['encoding'] = 'Encodare necunoscută: ';
$PHPMAILER_LANG['execute'] = 'Nu se poate executa următoarea comandă: ';
$PHPMAILER_LANG['extension_missing'] = 'Lipsește extensia: ';
$PHPMAILER_LANG['file_access'] = 'Nu se poate accesa următorul fișier: ';
$PHPMAILER_LANG['file_open'] = 'Eroare fișier: Nu se poate deschide următorul fișier: ';
$PHPMAILER_LANG['from_failed'] = 'Următoarele adrese From au dat eroare: ';
$PHPMAILER_LANG['instantiate'] = 'Funcția mail nu a putut fi inițializată.';
$PHPMAILER_LANG['invalid_address'] = 'Adresa de email nu este validă: ';
$PHPMAILER_LANG['invalid_header'] = 'Numele sau valoarea header-ului nu este validă: ';
$PHPMAILER_LANG['invalid_hostentry'] = 'Hostentry invalid: ';
$PHPMAILER_LANG['invalid_host'] = 'Host invalid: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer nu este suportat.';
$PHPMAILER_LANG['provide_address'] = 'Trebuie să adăugați cel puțin o adresă de email.';
$PHPMAILER_LANG['recipients_failed'] = 'Eroare SMTP: Următoarele adrese de email au eșuat: ';
$PHPMAILER_LANG['signing'] = 'A aparut o problemă la semnarea emailului. ';
$PHPMAILER_LANG['smtp_code'] = 'Cod SMTP: ';
$PHPMAILER_LANG['smtp_code_ex'] = 'Informații SMTP adiționale: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Conectarea la serverul SMTP a eșuat.';
$PHPMAILER_LANG['smtp_detail'] = 'Detalii SMTP: ';
$PHPMAILER_LANG['smtp_error'] = 'Eroare server SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'Nu se poate seta/reseta variabila. ';

View File

@@ -0,0 +1,28 @@
<?php
/**
* Russian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Alexey Chumakov <alex@chumakov.ru>
* @author Foster Snowhill <i18n@forstwoof.ru>
*/
$PHPMAILER_LANG['authenticate'] = 'Ошибка SMTP: ошибка авторизации.';
$PHPMAILER_LANG['connect_host'] = 'Ошибка SMTP: не удается подключиться к SMTP-серверу.';
$PHPMAILER_LANG['data_not_accepted'] = 'Ошибка SMTP: данные не приняты.';
$PHPMAILER_LANG['encoding'] = 'Неизвестная кодировка: ';
$PHPMAILER_LANG['execute'] = 'Невозможно выполнить команду: ';
$PHPMAILER_LANG['file_access'] = 'Нет доступа к файлу: ';
$PHPMAILER_LANG['file_open'] = 'Файловая ошибка: не удаётся открыть файл: ';
$PHPMAILER_LANG['from_failed'] = 'Неверный адрес отправителя: ';
$PHPMAILER_LANG['instantiate'] = 'Невозможно запустить функцию mail().';
$PHPMAILER_LANG['provide_address'] = 'Пожалуйста, введите хотя бы один email-адрес получателя.';
$PHPMAILER_LANG['mailer_not_supported'] = ' — почтовый сервер не поддерживается.';
$PHPMAILER_LANG['recipients_failed'] = 'Ошибка SMTP: не удалась отправка таким адресатам: ';
$PHPMAILER_LANG['empty_message'] = 'Пустое сообщение';
$PHPMAILER_LANG['invalid_address'] = 'Не отправлено из-за неправильного формата email-адреса: ';
$PHPMAILER_LANG['signing'] = 'Ошибка подписи: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Ошибка соединения с SMTP-сервером';
$PHPMAILER_LANG['smtp_error'] = 'Ошибка SMTP-сервера: ';
$PHPMAILER_LANG['variable_set'] = 'Невозможно установить или сбросить переменную: ';
$PHPMAILER_LANG['extension_missing'] = 'Расширение отсутствует: ';

View File

@@ -0,0 +1,30 @@
<?php
/**
* Slovak PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Michal Tinka <michaltinka@gmail.com>
* @author Peter Orlický <pcmanik91@gmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP Error: Chyba autentifikácie.';
$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Nebolo možné nadviazať spojenie so SMTP serverom.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Dáta neboli prijaté';
$PHPMAILER_LANG['empty_message'] = 'Prázdne telo správy.';
$PHPMAILER_LANG['encoding'] = 'Neznáme kódovanie: ';
$PHPMAILER_LANG['execute'] = 'Nedá sa vykonať: ';
$PHPMAILER_LANG['file_access'] = 'Súbor nebol nájdený: ';
$PHPMAILER_LANG['file_open'] = 'File Error: Súbor sa otvoriť pre čítanie: ';
$PHPMAILER_LANG['from_failed'] = 'Následujúca adresa From je nesprávna: ';
$PHPMAILER_LANG['instantiate'] = 'Nedá sa vytvoriť inštancia emailovej funkcie.';
$PHPMAILER_LANG['invalid_address'] = 'Neodoslané, emailová adresa je nesprávna: ';
$PHPMAILER_LANG['invalid_hostentry'] = 'Záznam hostiteľa je nesprávny: ';
$PHPMAILER_LANG['invalid_host'] = 'Hostiteľ je nesprávny: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' emailový klient nieje podporovaný.';
$PHPMAILER_LANG['provide_address'] = 'Musíte zadať aspoň jednu emailovú adresu príjemcu.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: Adresy príjemcov niesu správne ';
$PHPMAILER_LANG['signing'] = 'Chyba prihlasovania: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() zlyhalo.';
$PHPMAILER_LANG['smtp_error'] = 'SMTP chyba serveru: ';
$PHPMAILER_LANG['variable_set'] = 'Nemožno nastaviť alebo resetovať premennú: ';
$PHPMAILER_LANG['extension_missing'] = 'Chýba rozšírenie: ';

View File

@@ -0,0 +1,36 @@
<?php
/**
* Slovene PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Klemen Tušar <techouse@gmail.com>
* @author Filip Š <projects@filips.si>
* @author Blaž Oražem <blaz@orazem.si>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP napaka: Avtentikacija ni uspela.';
$PHPMAILER_LANG['buggy_php'] = 'Na vašo PHP različico vpliva napaka, ki lahko povzroči poškodovana sporočila. Če želite težavo odpraviti, preklopite na pošiljanje prek SMTP, onemogočite možnost mail.add_x_header v vaši php.ini datoteki, preklopite na MacOS ali Linux, ali nadgradite vašo PHP zaličico na 7.0.17+ ali 7.1.3+.';
$PHPMAILER_LANG['connect_host'] = 'SMTP napaka: Vzpostavljanje povezave s SMTP gostiteljem ni uspelo.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP napaka: Strežnik zavrača podatke.';
$PHPMAILER_LANG['empty_message'] = 'E-poštno sporočilo nima vsebine.';
$PHPMAILER_LANG['encoding'] = 'Nepoznan tip kodiranja: ';
$PHPMAILER_LANG['execute'] = 'Operacija ni uspela: ';
$PHPMAILER_LANG['extension_missing'] = 'Manjkajoča razširitev: ';
$PHPMAILER_LANG['file_access'] = 'Nimam dostopa do datoteke: ';
$PHPMAILER_LANG['file_open'] = 'Ne morem odpreti datoteke: ';
$PHPMAILER_LANG['from_failed'] = 'Neveljaven e-naslov pošiljatelja: ';
$PHPMAILER_LANG['instantiate'] = 'Ne morem inicializirati mail funkcije.';
$PHPMAILER_LANG['invalid_address'] = 'E-poštno sporočilo ni bilo poslano. E-naslov je neveljaven: ';
$PHPMAILER_LANG['invalid_header'] = 'Neveljavno ime ali vrednost glave';
$PHPMAILER_LANG['invalid_hostentry'] = 'Neveljaven vnos gostitelja: ';
$PHPMAILER_LANG['invalid_host'] = 'Neveljaven gostitelj: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer ni podprt.';
$PHPMAILER_LANG['provide_address'] = 'Prosimo, vnesite vsaj enega naslovnika.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP napaka: Sledeči naslovniki so neveljavni: ';
$PHPMAILER_LANG['signing'] = 'Napaka pri podpisovanju: ';
$PHPMAILER_LANG['smtp_code'] = 'SMTP koda: ';
$PHPMAILER_LANG['smtp_code_ex'] = 'Dodatne informacije o SMTP: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Ne morem vzpostaviti povezave s SMTP strežnikom.';
$PHPMAILER_LANG['smtp_detail'] = 'Podrobnosti: ';
$PHPMAILER_LANG['smtp_error'] = 'Napaka SMTP strežnika: ';
$PHPMAILER_LANG['variable_set'] = 'Ne morem nastaviti oz. ponastaviti spremenljivke: ';

View File

@@ -0,0 +1,28 @@
<?php
/**
* Serbian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Александар Јевремовић <ajevremovic@gmail.com>
* @author Miloš Milanović <mmilanovic016@gmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP грешка: аутентификација није успела.';
$PHPMAILER_LANG['connect_host'] = 'SMTP грешка: повезивање са SMTP сервером није успело.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP грешка: подаци нису прихваћени.';
$PHPMAILER_LANG['empty_message'] = 'Садржај поруке је празан.';
$PHPMAILER_LANG['encoding'] = 'Непознато кодирање: ';
$PHPMAILER_LANG['execute'] = 'Није могуће извршити наредбу: ';
$PHPMAILER_LANG['file_access'] = 'Није могуће приступити датотеци: ';
$PHPMAILER_LANG['file_open'] = 'Није могуће отворити датотеку: ';
$PHPMAILER_LANG['from_failed'] = 'SMTP грешка: слање са следећих адреса није успело: ';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP грешка: слање на следеће адресе није успело: ';
$PHPMAILER_LANG['instantiate'] = 'Није могуће покренути mail функцију.';
$PHPMAILER_LANG['invalid_address'] = 'Порука није послата. Неисправна адреса: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' мејлер није подржан.';
$PHPMAILER_LANG['provide_address'] = 'Дефинишите бар једну адресу примаоца.';
$PHPMAILER_LANG['signing'] = 'Грешка приликом пријаве: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Повезивање са SMTP сервером није успело.';
$PHPMAILER_LANG['smtp_error'] = 'Грешка SMTP сервера: ';
$PHPMAILER_LANG['variable_set'] = 'Није могуће задати нити ресетовати променљиву: ';
$PHPMAILER_LANG['extension_missing'] = 'Недостаје проширење: ';

View File

@@ -0,0 +1,28 @@
<?php
/**
* Serbian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Александар Јевремовић <ajevremovic@gmail.com>
* @author Miloš Milanović <mmilanovic016@gmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP greška: autentifikacija nije uspela.';
$PHPMAILER_LANG['connect_host'] = 'SMTP greška: povezivanje sa SMTP serverom nije uspelo.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP greška: podaci nisu prihvaćeni.';
$PHPMAILER_LANG['empty_message'] = 'Sadržaj poruke je prazan.';
$PHPMAILER_LANG['encoding'] = 'Nepoznato kodiranje: ';
$PHPMAILER_LANG['execute'] = 'Nije moguće izvršiti naredbu: ';
$PHPMAILER_LANG['file_access'] = 'Nije moguće pristupiti datoteci: ';
$PHPMAILER_LANG['file_open'] = 'Nije moguće otvoriti datoteku: ';
$PHPMAILER_LANG['from_failed'] = 'SMTP greška: slanje sa sledećih adresa nije uspelo: ';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP greška: slanje na sledeće adrese nije uspelo: ';
$PHPMAILER_LANG['instantiate'] = 'Nije moguće pokrenuti mail funkciju.';
$PHPMAILER_LANG['invalid_address'] = 'Poruka nije poslata. Neispravna adresa: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' majler nije podržan.';
$PHPMAILER_LANG['provide_address'] = 'Definišite bar jednu adresu primaoca.';
$PHPMAILER_LANG['signing'] = 'Greška prilikom prijave: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Povezivanje sa SMTP serverom nije uspelo.';
$PHPMAILER_LANG['smtp_error'] = 'Greška SMTP servera: ';
$PHPMAILER_LANG['variable_set'] = 'Nije moguće zadati niti resetovati promenljivu: ';
$PHPMAILER_LANG['extension_missing'] = 'Nedostaje proširenje: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Swedish PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Johan Linnér <johan@linner.biz>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP fel: Kunde inte autentisera.';
$PHPMAILER_LANG['connect_host'] = 'SMTP fel: Kunde inte ansluta till SMTP-server.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP fel: Data accepterades inte.';
//$PHPMAILER_LANG['empty_message'] = 'Message body empty';
$PHPMAILER_LANG['encoding'] = 'Okänt encode-format: ';
$PHPMAILER_LANG['execute'] = 'Kunde inte köra: ';
$PHPMAILER_LANG['file_access'] = 'Ingen åtkomst till fil: ';
$PHPMAILER_LANG['file_open'] = 'Fil fel: Kunde inte öppna fil: ';
$PHPMAILER_LANG['from_failed'] = 'Följande avsändaradress är felaktig: ';
$PHPMAILER_LANG['instantiate'] = 'Kunde inte initiera e-postfunktion.';
$PHPMAILER_LANG['invalid_address'] = 'Felaktig adress: ';
$PHPMAILER_LANG['provide_address'] = 'Du måste ange minst en mottagares e-postadress.';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer stöds inte.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP fel: Följande mottagare är felaktig: ';
$PHPMAILER_LANG['signing'] = 'Signeringsfel: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() misslyckades.';
$PHPMAILER_LANG['smtp_error'] = 'SMTP serverfel: ';
$PHPMAILER_LANG['variable_set'] = 'Kunde inte definiera eller återställa variabel: ';
$PHPMAILER_LANG['extension_missing'] = 'Tillägg ej tillgängligt: ';

View File

@@ -0,0 +1,28 @@
<?php
/**
* Tagalog PHPMailer language file: refer to English translation for definitive list
*
* @package PHPMailer
* @author Adriane Justine Tan <eidoriantan@gmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP Error: Hindi mapatotohanan.';
$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Hindi makakonekta sa SMTP host.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Ang datos ay hindi naitanggap.';
$PHPMAILER_LANG['empty_message'] = 'Walang laman ang mensahe';
$PHPMAILER_LANG['encoding'] = 'Hindi alam ang encoding: ';
$PHPMAILER_LANG['execute'] = 'Hindi maisasagawa: ';
$PHPMAILER_LANG['file_access'] = 'Hindi ma-access ang file: ';
$PHPMAILER_LANG['file_open'] = 'File Error: Hindi mabuksan ang file: ';
$PHPMAILER_LANG['from_failed'] = 'Ang sumusunod na address ay nabigo: ';
$PHPMAILER_LANG['instantiate'] = 'Hindi maisimulan ang instance ng mail function.';
$PHPMAILER_LANG['invalid_address'] = 'Hindi wasto ang address na naibigay: ';
$PHPMAILER_LANG['mailer_not_supported'] = 'Ang mailer ay hindi suportado.';
$PHPMAILER_LANG['provide_address'] = 'Kailangan mong magbigay ng kahit isang email address na tatanggap.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: Ang mga sumusunod na tatanggap ay nabigo: ';
$PHPMAILER_LANG['signing'] = 'Hindi ma-sign: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Ang SMTP connect() ay nabigo.';
$PHPMAILER_LANG['smtp_error'] = 'Ang server ng SMTP ay nabigo: ';
$PHPMAILER_LANG['variable_set'] = 'Hindi matatakda o ma-reset ang mga variables: ';
$PHPMAILER_LANG['extension_missing'] = 'Nawawala ang extension: ';

View File

@@ -0,0 +1,31 @@
<?php
/**
* Turkish PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Elçin Özel
* @author Can Yılmaz
* @author Mehmet Benlioğlu
* @author @yasinaydin
* @author Ogün Karakuş
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP Hatası: Oturum açılamadı.';
$PHPMAILER_LANG['connect_host'] = 'SMTP Hatası: SMTP sunucusuna bağlanılamadı.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Hatası: Veri kabul edilmedi.';
$PHPMAILER_LANG['empty_message'] = 'Mesajın içeriği boş';
$PHPMAILER_LANG['encoding'] = 'Bilinmeyen karakter kodlama: ';
$PHPMAILER_LANG['execute'] = 'Çalıştırılamadı: ';
$PHPMAILER_LANG['file_access'] = 'Dosyaya erişilemedi: ';
$PHPMAILER_LANG['file_open'] = 'Dosya Hatası: Dosya açılamadı: ';
$PHPMAILER_LANG['from_failed'] = 'Belirtilen adreslere gönderme başarısız: ';
$PHPMAILER_LANG['instantiate'] = 'Örnek e-posta fonksiyonu oluşturulamadı.';
$PHPMAILER_LANG['invalid_address'] = 'Geçersiz e-posta adresi: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' e-posta kütüphanesi desteklenmiyor.';
$PHPMAILER_LANG['provide_address'] = 'En az bir alıcı e-posta adresi belirtmelisiniz.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Hatası: Belirtilen alıcılara ulaşılamadı: ';
$PHPMAILER_LANG['signing'] = 'İmzalama hatası: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP connect() fonksiyonu başarısız.';
$PHPMAILER_LANG['smtp_error'] = 'SMTP sunucu hatası: ';
$PHPMAILER_LANG['variable_set'] = 'Değişken ayarlanamadı ya da sıfırlanamadı: ';
$PHPMAILER_LANG['extension_missing'] = 'Eklenti bulunamadı: ';

View File

@@ -0,0 +1,28 @@
<?php
/**
* Ukrainian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Yuriy Rudyy <yrudyy@prs.net.ua>
* @fixed by Boris Yurchenko <boris@yurchenko.pp.ua>
*/
$PHPMAILER_LANG['authenticate'] = 'Помилка SMTP: помилка авторизації.';
$PHPMAILER_LANG['connect_host'] = 'Помилка SMTP: не вдається під\'єднатися до SMTP-серверу.';
$PHPMAILER_LANG['data_not_accepted'] = 'Помилка SMTP: дані не прийнято.';
$PHPMAILER_LANG['encoding'] = 'Невідоме кодування: ';
$PHPMAILER_LANG['execute'] = 'Неможливо виконати команду: ';
$PHPMAILER_LANG['file_access'] = 'Немає доступу до файлу: ';
$PHPMAILER_LANG['file_open'] = 'Помилка файлової системи: не вдається відкрити файл: ';
$PHPMAILER_LANG['from_failed'] = 'Невірна адреса відправника: ';
$PHPMAILER_LANG['instantiate'] = 'Неможливо запустити функцію mail().';
$PHPMAILER_LANG['provide_address'] = 'Будь ласка, введіть хоча б одну email-адресу отримувача.';
$PHPMAILER_LANG['mailer_not_supported'] = ' - поштовий сервер не підтримується.';
$PHPMAILER_LANG['recipients_failed'] = 'Помилка SMTP: не вдалося відправлення для таких отримувачів: ';
$PHPMAILER_LANG['empty_message'] = 'Пусте повідомлення';
$PHPMAILER_LANG['invalid_address'] = 'Не відправлено через неправильний формат email-адреси: ';
$PHPMAILER_LANG['signing'] = 'Помилка підпису: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Помилка з\'єднання з SMTP-сервером';
$PHPMAILER_LANG['smtp_error'] = 'Помилка SMTP-сервера: ';
$PHPMAILER_LANG['variable_set'] = 'Неможливо встановити або скинути змінну: ';
$PHPMAILER_LANG['extension_missing'] = 'Розширення відсутнє: ';

View File

@@ -0,0 +1,27 @@
<?php
/**
* Vietnamese (Tiếng Việt) PHPMailer language file: refer to English translation for definitive list.
* @package PHPMailer
* @author VINADES.,JSC <contact@vinades.vn>
*/
$PHPMAILER_LANG['authenticate'] = 'Lỗi SMTP: Không thể xác thực.';
$PHPMAILER_LANG['connect_host'] = 'Lỗi SMTP: Không thể kết nối máy chủ SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'Lỗi SMTP: Dữ liệu không được chấp nhận.';
$PHPMAILER_LANG['empty_message'] = 'Không có nội dung';
$PHPMAILER_LANG['encoding'] = 'Mã hóa không xác định: ';
$PHPMAILER_LANG['execute'] = 'Không thực hiện được: ';
$PHPMAILER_LANG['file_access'] = 'Không thể truy cập tệp tin ';
$PHPMAILER_LANG['file_open'] = 'Lỗi Tập tin: Không thể mở tệp tin: ';
$PHPMAILER_LANG['from_failed'] = 'Lỗi địa chỉ gửi đi: ';
$PHPMAILER_LANG['instantiate'] = 'Không dùng được các hàm gửi thư.';
$PHPMAILER_LANG['invalid_address'] = 'Đại chỉ emai không đúng: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' trình gửi thư không được hỗ trợ.';
$PHPMAILER_LANG['provide_address'] = 'Bạn phải cung cấp ít nhất một địa chỉ người nhận.';
$PHPMAILER_LANG['recipients_failed'] = 'Lỗi SMTP: lỗi địa chỉ người nhận: ';
$PHPMAILER_LANG['signing'] = 'Lỗi đăng nhập: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Lỗi kết nối với SMTP';
$PHPMAILER_LANG['smtp_error'] = 'Lỗi máy chủ smtp ';
$PHPMAILER_LANG['variable_set'] = 'Không thể thiết lập hoặc thiết lập lại biến: ';
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';

View File

@@ -0,0 +1,29 @@
<?php
/**
* Traditional Chinese PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author liqwei <liqwei@liqwei.com>
* @author Peter Dave Hello <@PeterDaveHello/>
* @author Jason Chiang <xcojad@gmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP 錯誤:登入失敗。';
$PHPMAILER_LANG['connect_host'] = 'SMTP 錯誤:無法連線到 SMTP 主機。';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 錯誤:無法接受的資料。';
$PHPMAILER_LANG['empty_message'] = '郵件內容為空';
$PHPMAILER_LANG['encoding'] = '未知編碼: ';
$PHPMAILER_LANG['execute'] = '無法執行:';
$PHPMAILER_LANG['file_access'] = '無法存取檔案:';
$PHPMAILER_LANG['file_open'] = '檔案錯誤:無法開啟檔案:';
$PHPMAILER_LANG['from_failed'] = '發送地址錯誤:';
$PHPMAILER_LANG['instantiate'] = '未知函數呼叫。';
$PHPMAILER_LANG['invalid_address'] = '因為電子郵件地址無效,無法傳送: ';
$PHPMAILER_LANG['mailer_not_supported'] = '不支援的發信客戶端。';
$PHPMAILER_LANG['provide_address'] = '必須提供至少一個收件人地址。';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP 錯誤:以下收件人地址錯誤:';
$PHPMAILER_LANG['signing'] = '電子簽章錯誤: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP 連線失敗';
$PHPMAILER_LANG['smtp_error'] = 'SMTP 伺服器錯誤: ';
$PHPMAILER_LANG['variable_set'] = '無法設定或重設變數: ';
$PHPMAILER_LANG['extension_missing'] = '遺失模組 Extension: ';

View File

@@ -0,0 +1,29 @@
<?php
/**
* Simplified Chinese PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author liqwei <liqwei@liqwei.com>
* @author young <masxy@foxmail.com>
* @author Teddysun <i@teddysun.com>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP 错误:登录失败。';
$PHPMAILER_LANG['connect_host'] = 'SMTP 错误:无法连接到 SMTP 主机。';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 错误:数据不被接受。';
$PHPMAILER_LANG['empty_message'] = '邮件正文为空。';
$PHPMAILER_LANG['encoding'] = '未知编码:';
$PHPMAILER_LANG['execute'] = '无法执行:';
$PHPMAILER_LANG['file_access'] = '无法访问文件:';
$PHPMAILER_LANG['file_open'] = '文件错误:无法打开文件:';
$PHPMAILER_LANG['from_failed'] = '发送地址错误:';
$PHPMAILER_LANG['instantiate'] = '未知函数调用。';
$PHPMAILER_LANG['invalid_address'] = '发送失败,电子邮箱地址是无效的:';
$PHPMAILER_LANG['mailer_not_supported'] = '发信客户端不被支持。';
$PHPMAILER_LANG['provide_address'] = '必须提供至少一个收件人地址。';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP 错误:收件人地址错误:';
$PHPMAILER_LANG['signing'] = '登录失败:';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP服务器连接失败。';
$PHPMAILER_LANG['smtp_error'] = 'SMTP服务器出错';
$PHPMAILER_LANG['variable_set'] = '无法设置或重置变量:';
$PHPMAILER_LANG['extension_missing'] = '丢失模块 Extension';

View File

@@ -0,0 +1,40 @@
<?php
/**
* PHPMailer Exception class.
* PHP Version 5.5.
*
* @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
*
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
* @author Brent R. Matzelle (original founder)
* @copyright 2012 - 2020 Marcus Bointon
* @copyright 2010 - 2012 Jim Jagielski
* @copyright 2004 - 2009 Andy Prevost
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @note This program is distributed in the hope that it will be useful - WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*/
namespace PHPMailer\PHPMailer;
/**
* PHPMailer exception handler.
*
* @author Marcus Bointon <phpmailer@synchromedia.co.uk>
*/
class Exception extends \Exception
{
/**
* Prettify error message output.
*
* @return string
*/
public function errorMessage()
{
return '<strong>' . htmlspecialchars($this->getMessage(), ENT_COMPAT | ENT_HTML401) . "</strong><br />\n";
}
}

139
php/PHPMailer/OAuth.php Normal file
View File

@@ -0,0 +1,139 @@
<?php
/**
* PHPMailer - PHP email creation and transport class.
* PHP Version 5.5.
*
* @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
*
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
* @author Brent R. Matzelle (original founder)
* @copyright 2012 - 2020 Marcus Bointon
* @copyright 2010 - 2012 Jim Jagielski
* @copyright 2004 - 2009 Andy Prevost
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @note This program is distributed in the hope that it will be useful - WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*/
namespace PHPMailer\PHPMailer;
use League\OAuth2\Client\Grant\RefreshToken;
use League\OAuth2\Client\Provider\AbstractProvider;
use League\OAuth2\Client\Token\AccessToken;
/**
* OAuth - OAuth2 authentication wrapper class.
* Uses the oauth2-client package from the League of Extraordinary Packages.
*
* @see http://oauth2-client.thephpleague.com
*
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
*/
class OAuth implements OAuthTokenProvider
{
/**
* An instance of the League OAuth Client Provider.
*
* @var AbstractProvider
*/
protected $provider;
/**
* The current OAuth access token.
*
* @var AccessToken
*/
protected $oauthToken;
/**
* The user's email address, usually used as the login ID
* and also the from address when sending email.
*
* @var string
*/
protected $oauthUserEmail = '';
/**
* The client secret, generated in the app definition of the service you're connecting to.
*
* @var string
*/
protected $oauthClientSecret = '';
/**
* The client ID, generated in the app definition of the service you're connecting to.
*
* @var string
*/
protected $oauthClientId = '';
/**
* The refresh token, used to obtain new AccessTokens.
*
* @var string
*/
protected $oauthRefreshToken = '';
/**
* OAuth constructor.
*
* @param array $options Associative array containing
* `provider`, `userName`, `clientSecret`, `clientId` and `refreshToken` elements
*/
public function __construct($options)
{
$this->provider = $options['provider'];
$this->oauthUserEmail = $options['userName'];
$this->oauthClientSecret = $options['clientSecret'];
$this->oauthClientId = $options['clientId'];
$this->oauthRefreshToken = $options['refreshToken'];
}
/**
* Get a new RefreshToken.
*
* @return RefreshToken
*/
protected function getGrant()
{
return new RefreshToken();
}
/**
* Get a new AccessToken.
*
* @return AccessToken
*/
protected function getToken()
{
return $this->provider->getAccessToken(
$this->getGrant(),
['refresh_token' => $this->oauthRefreshToken]
);
}
/**
* Generate a base64-encoded OAuth token.
*
* @return string
*/
public function getOauth64()
{
//Get a new token if it's not available or has expired
if (null === $this->oauthToken || $this->oauthToken->hasExpired()) {
$this->oauthToken = $this->getToken();
}
return base64_encode(
'user=' .
$this->oauthUserEmail .
"\001auth=Bearer " .
$this->oauthToken .
"\001\001"
);
}
}

View File

@@ -0,0 +1,44 @@
<?php
/**
* PHPMailer - PHP email creation and transport class.
* PHP Version 5.5.
*
* @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
*
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
* @author Brent R. Matzelle (original founder)
* @copyright 2012 - 2020 Marcus Bointon
* @copyright 2010 - 2012 Jim Jagielski
* @copyright 2004 - 2009 Andy Prevost
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @note This program is distributed in the hope that it will be useful - WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*/
namespace PHPMailer\PHPMailer;
/**
* OAuthTokenProvider - OAuth2 token provider interface.
* Provides base64 encoded OAuth2 auth strings for SMTP authentication.
*
* @see OAuth
* @see SMTP::authenticate()
*
* @author Peter Scopes (pdscopes)
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
*/
interface OAuthTokenProvider
{
/**
* Generate a base64-encoded OAuth token ensuring that the access token has not expired.
* The string to be base 64 encoded should be in the form:
* "user=<user_email_address>\001auth=Bearer <access_token>\001\001"
*
* @return string
*/
public function getOauth64();
}

Some files were not shown because too many files have changed in this diff Show More