ReUpload
5
.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
./config.inc.php
|
||||
.htaccess
|
||||
.user.ini
|
||||
.nginx.htaccess
|
||||
/.idea/
|
8
.idea/.gitignore
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
# 默认忽略的文件
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# 基于编辑器的 HTTP 客户端请求
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
12
.idea/NW_love.iml
generated
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="WEB_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/.idea/dataSources" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="font_3866622_565tqxxkm4" level="application" />
|
||||
<orderEntry type="library" name="font_3866622_ur298ayiu2" level="application" />
|
||||
</component>
|
||||
</module>
|
33
.idea/dataSources.local.xml
generated
Normal file
@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="dataSourceStorageLocal" created-in="PS-223.8617.59">
|
||||
<data-source name="NW_Love数据库" uuid="f83dd738-9f5a-4eab-933d-52ccf459b20c">
|
||||
<database-info product="MySQL" version="5.7.26" jdbc-version="4.2" driver-name="MySQL Connector/J" driver-version="mysql-connector-java-8.0.25 (Revision: 08be9e9b4cba6aa115f9b27b215887af40b159e0)" dbms="MYSQL" exact-version="5.7.26" exact-driver-version="8.0">
|
||||
<extra-name-characters>#@</extra-name-characters>
|
||||
<identifier-quote-string>`</identifier-quote-string>
|
||||
</database-info>
|
||||
<case-sensitivity plain-identifiers="lower" quoted-identifiers="lower" />
|
||||
<secret-storage>master_key</secret-storage>
|
||||
<user-name>nw_love</user-name>
|
||||
<schema-mapping>
|
||||
<introspection-scope>
|
||||
<node kind="schema" qname="@" />
|
||||
</introspection-scope>
|
||||
</schema-mapping>
|
||||
</data-source>
|
||||
<data-source name="云端数据库" uuid="9864e879-99a5-4c5a-9bed-043684f4b73f">
|
||||
<database-info product="MySQL" version="5.7.34-log" jdbc-version="4.2" driver-name="MySQL Connector/J" driver-version="mysql-connector-java-8.0.25 (Revision: 08be9e9b4cba6aa115f9b27b215887af40b159e0)" dbms="MYSQL" exact-version="5.7.34" exact-driver-version="8.0">
|
||||
<extra-name-characters>#@</extra-name-characters>
|
||||
<identifier-quote-string>`</identifier-quote-string>
|
||||
</database-info>
|
||||
<case-sensitivity plain-identifiers="exact" quoted-identifiers="exact" />
|
||||
<secret-storage>master_key</secret-storage>
|
||||
<user-name>nw_love</user-name>
|
||||
<schema-mapping>
|
||||
<introspection-scope>
|
||||
<node kind="schema" negative="1" />
|
||||
</introspection-scope>
|
||||
</schema-mapping>
|
||||
</data-source>
|
||||
</component>
|
||||
</project>
|
20
.idea/dataSources.xml
generated
Normal file
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||
<data-source source="LOCAL" name="NW_Love数据库" uuid="f83dd738-9f5a-4eab-933d-52ccf459b20c">
|
||||
<driver-ref>mysql.8</driver-ref>
|
||||
<synchronize>true</synchronize>
|
||||
<remarks>关系数据库</remarks>
|
||||
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
|
||||
<jdbc-url>jdbc:mysql://localhost:3306/nw_love</jdbc-url>
|
||||
<working-dir>$ProjectFileDir$</working-dir>
|
||||
</data-source>
|
||||
<data-source source="LOCAL" name="云端数据库" uuid="9864e879-99a5-4c5a-9bed-043684f4b73f">
|
||||
<driver-ref>mysql.8</driver-ref>
|
||||
<synchronize>true</synchronize>
|
||||
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
|
||||
<jdbc-url>jdbc:mysql://sz.aliyun.x-lf.cn:3306</jdbc-url>
|
||||
<working-dir>$ProjectFileDir$</working-dir>
|
||||
</data-source>
|
||||
</component>
|
||||
</project>
|
4368
.idea/dataSources/9864e879-99a5-4c5a-9bed-043684f4b73f.xml
generated
Normal file
@ -0,0 +1,2 @@
|
||||
#n:information_schema
|
||||
!<md> [null, 0, null, null, -2147483648, -2147483648]
|
782
.idea/dataSources/f83dd738-9f5a-4eab-933d-52ccf459b20c.xml
generated
Normal file
@ -0,0 +1,782 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<dataSource name="NW_Love数据库">
|
||||
<database-model serializer="dbm" dbms="MYSQL" family-id="MYSQL" format-version="4.45">
|
||||
<root id="1">
|
||||
<DefaultCasing>lower/lower</DefaultCasing>
|
||||
<DefaultEngine>MyISAM</DefaultEngine>
|
||||
<DefaultTmpEngine>InnoDB</DefaultTmpEngine>
|
||||
<Grants>nw\\_love|schema||nw_love|localhost|ALTER|G
|
||||
nw\\_love|schema||nw_love|localhost|ALTER ROUTINE|G
|
||||
nw\\_love|schema||nw_love|localhost|CREATE|G
|
||||
nw\\_love|schema||nw_love|localhost|CREATE ROUTINE|G
|
||||
nw\\_love|schema||nw_love|localhost|CREATE TEMPORARY TABLES|G
|
||||
nw\\_love|schema||nw_love|localhost|CREATE VIEW|G
|
||||
nw\\_love|schema||nw_love|localhost|DELETE|G
|
||||
nw\\_love|schema||nw_love|localhost|DROP|G
|
||||
nw\\_love|schema||nw_love|localhost|EVENT|G
|
||||
nw\\_love|schema||nw_love|localhost|EXECUTE|G
|
||||
nw\\_love|schema||nw_love|localhost|INDEX|G
|
||||
nw\\_love|schema||nw_love|localhost|INSERT|G
|
||||
nw\\_love|schema||nw_love|localhost|LOCK TABLES|G
|
||||
nw\\_love|schema||nw_love|localhost|REFERENCES|G
|
||||
nw\\_love|schema||nw_love|localhost|SELECT|G
|
||||
nw\\_love|schema||nw_love|localhost|SHOW VIEW|G
|
||||
nw\\_love|schema||nw_love|localhost|TRIGGER|G
|
||||
nw\\_love|schema||nw_love|localhost|UPDATE|G
|
||||
nw\\_love|schema||nw_love|localhost|grant option|G</Grants>
|
||||
<ServerVersion>5.7.26</ServerVersion>
|
||||
</root>
|
||||
<collation id="2" parent="1" name="armscii8_bin">
|
||||
<Charset>armscii8</Charset>
|
||||
</collation>
|
||||
<collation id="3" parent="1" name="armscii8_general_ci">
|
||||
<Charset>armscii8</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="4" parent="1" name="ascii_bin">
|
||||
<Charset>ascii</Charset>
|
||||
</collation>
|
||||
<collation id="5" parent="1" name="ascii_general_ci">
|
||||
<Charset>ascii</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="6" parent="1" name="big5_bin">
|
||||
<Charset>big5</Charset>
|
||||
</collation>
|
||||
<collation id="7" parent="1" name="big5_chinese_ci">
|
||||
<Charset>big5</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="8" parent="1" name="binary">
|
||||
<Charset>binary</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="9" parent="1" name="cp1250_bin">
|
||||
<Charset>cp1250</Charset>
|
||||
</collation>
|
||||
<collation id="10" parent="1" name="cp1250_croatian_ci">
|
||||
<Charset>cp1250</Charset>
|
||||
</collation>
|
||||
<collation id="11" parent="1" name="cp1250_czech_cs">
|
||||
<Charset>cp1250</Charset>
|
||||
</collation>
|
||||
<collation id="12" parent="1" name="cp1250_general_ci">
|
||||
<Charset>cp1250</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="13" parent="1" name="cp1250_polish_ci">
|
||||
<Charset>cp1250</Charset>
|
||||
</collation>
|
||||
<collation id="14" parent="1" name="cp1251_bin">
|
||||
<Charset>cp1251</Charset>
|
||||
</collation>
|
||||
<collation id="15" parent="1" name="cp1251_bulgarian_ci">
|
||||
<Charset>cp1251</Charset>
|
||||
</collation>
|
||||
<collation id="16" parent="1" name="cp1251_general_ci">
|
||||
<Charset>cp1251</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="17" parent="1" name="cp1251_general_cs">
|
||||
<Charset>cp1251</Charset>
|
||||
</collation>
|
||||
<collation id="18" parent="1" name="cp1251_ukrainian_ci">
|
||||
<Charset>cp1251</Charset>
|
||||
</collation>
|
||||
<collation id="19" parent="1" name="cp1256_bin">
|
||||
<Charset>cp1256</Charset>
|
||||
</collation>
|
||||
<collation id="20" parent="1" name="cp1256_general_ci">
|
||||
<Charset>cp1256</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="21" parent="1" name="cp1257_bin">
|
||||
<Charset>cp1257</Charset>
|
||||
</collation>
|
||||
<collation id="22" parent="1" name="cp1257_general_ci">
|
||||
<Charset>cp1257</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="23" parent="1" name="cp1257_lithuanian_ci">
|
||||
<Charset>cp1257</Charset>
|
||||
</collation>
|
||||
<collation id="24" parent="1" name="cp850_bin">
|
||||
<Charset>cp850</Charset>
|
||||
</collation>
|
||||
<collation id="25" parent="1" name="cp850_general_ci">
|
||||
<Charset>cp850</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="26" parent="1" name="cp852_bin">
|
||||
<Charset>cp852</Charset>
|
||||
</collation>
|
||||
<collation id="27" parent="1" name="cp852_general_ci">
|
||||
<Charset>cp852</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="28" parent="1" name="cp866_bin">
|
||||
<Charset>cp866</Charset>
|
||||
</collation>
|
||||
<collation id="29" parent="1" name="cp866_general_ci">
|
||||
<Charset>cp866</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="30" parent="1" name="cp932_bin">
|
||||
<Charset>cp932</Charset>
|
||||
</collation>
|
||||
<collation id="31" parent="1" name="cp932_japanese_ci">
|
||||
<Charset>cp932</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="32" parent="1" name="dec8_bin">
|
||||
<Charset>dec8</Charset>
|
||||
</collation>
|
||||
<collation id="33" parent="1" name="dec8_swedish_ci">
|
||||
<Charset>dec8</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="34" parent="1" name="eucjpms_bin">
|
||||
<Charset>eucjpms</Charset>
|
||||
</collation>
|
||||
<collation id="35" parent="1" name="eucjpms_japanese_ci">
|
||||
<Charset>eucjpms</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="36" parent="1" name="euckr_bin">
|
||||
<Charset>euckr</Charset>
|
||||
</collation>
|
||||
<collation id="37" parent="1" name="euckr_korean_ci">
|
||||
<Charset>euckr</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="38" parent="1" name="gb18030_bin">
|
||||
<Charset>gb18030</Charset>
|
||||
</collation>
|
||||
<collation id="39" parent="1" name="gb18030_chinese_ci">
|
||||
<Charset>gb18030</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="40" parent="1" name="gb18030_unicode_520_ci">
|
||||
<Charset>gb18030</Charset>
|
||||
</collation>
|
||||
<collation id="41" parent="1" name="gb2312_bin">
|
||||
<Charset>gb2312</Charset>
|
||||
</collation>
|
||||
<collation id="42" parent="1" name="gb2312_chinese_ci">
|
||||
<Charset>gb2312</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="43" parent="1" name="gbk_bin">
|
||||
<Charset>gbk</Charset>
|
||||
</collation>
|
||||
<collation id="44" parent="1" name="gbk_chinese_ci">
|
||||
<Charset>gbk</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="45" parent="1" name="geostd8_bin">
|
||||
<Charset>geostd8</Charset>
|
||||
</collation>
|
||||
<collation id="46" parent="1" name="geostd8_general_ci">
|
||||
<Charset>geostd8</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="47" parent="1" name="greek_bin">
|
||||
<Charset>greek</Charset>
|
||||
</collation>
|
||||
<collation id="48" parent="1" name="greek_general_ci">
|
||||
<Charset>greek</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="49" parent="1" name="hebrew_bin">
|
||||
<Charset>hebrew</Charset>
|
||||
</collation>
|
||||
<collation id="50" parent="1" name="hebrew_general_ci">
|
||||
<Charset>hebrew</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="51" parent="1" name="hp8_bin">
|
||||
<Charset>hp8</Charset>
|
||||
</collation>
|
||||
<collation id="52" parent="1" name="hp8_english_ci">
|
||||
<Charset>hp8</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="53" parent="1" name="keybcs2_bin">
|
||||
<Charset>keybcs2</Charset>
|
||||
</collation>
|
||||
<collation id="54" parent="1" name="keybcs2_general_ci">
|
||||
<Charset>keybcs2</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="55" parent="1" name="koi8r_bin">
|
||||
<Charset>koi8r</Charset>
|
||||
</collation>
|
||||
<collation id="56" parent="1" name="koi8r_general_ci">
|
||||
<Charset>koi8r</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="57" parent="1" name="koi8u_bin">
|
||||
<Charset>koi8u</Charset>
|
||||
</collation>
|
||||
<collation id="58" parent="1" name="koi8u_general_ci">
|
||||
<Charset>koi8u</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="59" parent="1" name="latin1_bin">
|
||||
<Charset>latin1</Charset>
|
||||
</collation>
|
||||
<collation id="60" parent="1" name="latin1_danish_ci">
|
||||
<Charset>latin1</Charset>
|
||||
</collation>
|
||||
<collation id="61" parent="1" name="latin1_general_ci">
|
||||
<Charset>latin1</Charset>
|
||||
</collation>
|
||||
<collation id="62" parent="1" name="latin1_general_cs">
|
||||
<Charset>latin1</Charset>
|
||||
</collation>
|
||||
<collation id="63" parent="1" name="latin1_german1_ci">
|
||||
<Charset>latin1</Charset>
|
||||
</collation>
|
||||
<collation id="64" parent="1" name="latin1_german2_ci">
|
||||
<Charset>latin1</Charset>
|
||||
</collation>
|
||||
<collation id="65" parent="1" name="latin1_spanish_ci">
|
||||
<Charset>latin1</Charset>
|
||||
</collation>
|
||||
<collation id="66" parent="1" name="latin1_swedish_ci">
|
||||
<Charset>latin1</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="67" parent="1" name="latin2_bin">
|
||||
<Charset>latin2</Charset>
|
||||
</collation>
|
||||
<collation id="68" parent="1" name="latin2_croatian_ci">
|
||||
<Charset>latin2</Charset>
|
||||
</collation>
|
||||
<collation id="69" parent="1" name="latin2_czech_cs">
|
||||
<Charset>latin2</Charset>
|
||||
</collation>
|
||||
<collation id="70" parent="1" name="latin2_general_ci">
|
||||
<Charset>latin2</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="71" parent="1" name="latin2_hungarian_ci">
|
||||
<Charset>latin2</Charset>
|
||||
</collation>
|
||||
<collation id="72" parent="1" name="latin5_bin">
|
||||
<Charset>latin5</Charset>
|
||||
</collation>
|
||||
<collation id="73" parent="1" name="latin5_turkish_ci">
|
||||
<Charset>latin5</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="74" parent="1" name="latin7_bin">
|
||||
<Charset>latin7</Charset>
|
||||
</collation>
|
||||
<collation id="75" parent="1" name="latin7_estonian_cs">
|
||||
<Charset>latin7</Charset>
|
||||
</collation>
|
||||
<collation id="76" parent="1" name="latin7_general_ci">
|
||||
<Charset>latin7</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="77" parent="1" name="latin7_general_cs">
|
||||
<Charset>latin7</Charset>
|
||||
</collation>
|
||||
<collation id="78" parent="1" name="macce_bin">
|
||||
<Charset>macce</Charset>
|
||||
</collation>
|
||||
<collation id="79" parent="1" name="macce_general_ci">
|
||||
<Charset>macce</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="80" parent="1" name="macroman_bin">
|
||||
<Charset>macroman</Charset>
|
||||
</collation>
|
||||
<collation id="81" parent="1" name="macroman_general_ci">
|
||||
<Charset>macroman</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="82" parent="1" name="sjis_bin">
|
||||
<Charset>sjis</Charset>
|
||||
</collation>
|
||||
<collation id="83" parent="1" name="sjis_japanese_ci">
|
||||
<Charset>sjis</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="84" parent="1" name="swe7_bin">
|
||||
<Charset>swe7</Charset>
|
||||
</collation>
|
||||
<collation id="85" parent="1" name="swe7_swedish_ci">
|
||||
<Charset>swe7</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="86" parent="1" name="tis620_bin">
|
||||
<Charset>tis620</Charset>
|
||||
</collation>
|
||||
<collation id="87" parent="1" name="tis620_thai_ci">
|
||||
<Charset>tis620</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="88" parent="1" name="ucs2_bin">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="89" parent="1" name="ucs2_croatian_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="90" parent="1" name="ucs2_czech_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="91" parent="1" name="ucs2_danish_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="92" parent="1" name="ucs2_esperanto_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="93" parent="1" name="ucs2_estonian_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="94" parent="1" name="ucs2_general_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="95" parent="1" name="ucs2_general_mysql500_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="96" parent="1" name="ucs2_german2_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="97" parent="1" name="ucs2_hungarian_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="98" parent="1" name="ucs2_icelandic_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="99" parent="1" name="ucs2_latvian_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="100" parent="1" name="ucs2_lithuanian_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="101" parent="1" name="ucs2_persian_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="102" parent="1" name="ucs2_polish_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="103" parent="1" name="ucs2_roman_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="104" parent="1" name="ucs2_romanian_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="105" parent="1" name="ucs2_sinhala_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="106" parent="1" name="ucs2_slovak_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="107" parent="1" name="ucs2_slovenian_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="108" parent="1" name="ucs2_spanish2_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="109" parent="1" name="ucs2_spanish_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="110" parent="1" name="ucs2_swedish_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="111" parent="1" name="ucs2_turkish_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="112" parent="1" name="ucs2_unicode_520_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="113" parent="1" name="ucs2_unicode_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="114" parent="1" name="ucs2_vietnamese_ci">
|
||||
<Charset>ucs2</Charset>
|
||||
</collation>
|
||||
<collation id="115" parent="1" name="ujis_bin">
|
||||
<Charset>ujis</Charset>
|
||||
</collation>
|
||||
<collation id="116" parent="1" name="ujis_japanese_ci">
|
||||
<Charset>ujis</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="117" parent="1" name="utf16_bin">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="118" parent="1" name="utf16_croatian_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="119" parent="1" name="utf16_czech_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="120" parent="1" name="utf16_danish_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="121" parent="1" name="utf16_esperanto_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="122" parent="1" name="utf16_estonian_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="123" parent="1" name="utf16_general_ci">
|
||||
<Charset>utf16</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="124" parent="1" name="utf16_german2_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="125" parent="1" name="utf16_hungarian_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="126" parent="1" name="utf16_icelandic_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="127" parent="1" name="utf16_latvian_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="128" parent="1" name="utf16_lithuanian_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="129" parent="1" name="utf16_persian_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="130" parent="1" name="utf16_polish_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="131" parent="1" name="utf16_roman_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="132" parent="1" name="utf16_romanian_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="133" parent="1" name="utf16_sinhala_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="134" parent="1" name="utf16_slovak_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="135" parent="1" name="utf16_slovenian_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="136" parent="1" name="utf16_spanish2_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="137" parent="1" name="utf16_spanish_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="138" parent="1" name="utf16_swedish_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="139" parent="1" name="utf16_turkish_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="140" parent="1" name="utf16_unicode_520_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="141" parent="1" name="utf16_unicode_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="142" parent="1" name="utf16_vietnamese_ci">
|
||||
<Charset>utf16</Charset>
|
||||
</collation>
|
||||
<collation id="143" parent="1" name="utf16le_bin">
|
||||
<Charset>utf16le</Charset>
|
||||
</collation>
|
||||
<collation id="144" parent="1" name="utf16le_general_ci">
|
||||
<Charset>utf16le</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="145" parent="1" name="utf32_bin">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="146" parent="1" name="utf32_croatian_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="147" parent="1" name="utf32_czech_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="148" parent="1" name="utf32_danish_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="149" parent="1" name="utf32_esperanto_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="150" parent="1" name="utf32_estonian_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="151" parent="1" name="utf32_general_ci">
|
||||
<Charset>utf32</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="152" parent="1" name="utf32_german2_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="153" parent="1" name="utf32_hungarian_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="154" parent="1" name="utf32_icelandic_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="155" parent="1" name="utf32_latvian_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="156" parent="1" name="utf32_lithuanian_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="157" parent="1" name="utf32_persian_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="158" parent="1" name="utf32_polish_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="159" parent="1" name="utf32_roman_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="160" parent="1" name="utf32_romanian_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="161" parent="1" name="utf32_sinhala_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="162" parent="1" name="utf32_slovak_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="163" parent="1" name="utf32_slovenian_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="164" parent="1" name="utf32_spanish2_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="165" parent="1" name="utf32_spanish_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="166" parent="1" name="utf32_swedish_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="167" parent="1" name="utf32_turkish_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="168" parent="1" name="utf32_unicode_520_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="169" parent="1" name="utf32_unicode_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="170" parent="1" name="utf32_vietnamese_ci">
|
||||
<Charset>utf32</Charset>
|
||||
</collation>
|
||||
<collation id="171" parent="1" name="utf8_bin">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="172" parent="1" name="utf8_croatian_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="173" parent="1" name="utf8_czech_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="174" parent="1" name="utf8_danish_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="175" parent="1" name="utf8_esperanto_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="176" parent="1" name="utf8_estonian_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="177" parent="1" name="utf8_general_ci">
|
||||
<Charset>utf8</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="178" parent="1" name="utf8_general_mysql500_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="179" parent="1" name="utf8_german2_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="180" parent="1" name="utf8_hungarian_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="181" parent="1" name="utf8_icelandic_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="182" parent="1" name="utf8_latvian_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="183" parent="1" name="utf8_lithuanian_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="184" parent="1" name="utf8_persian_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="185" parent="1" name="utf8_polish_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="186" parent="1" name="utf8_roman_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="187" parent="1" name="utf8_romanian_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="188" parent="1" name="utf8_sinhala_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="189" parent="1" name="utf8_slovak_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="190" parent="1" name="utf8_slovenian_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="191" parent="1" name="utf8_spanish2_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="192" parent="1" name="utf8_spanish_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="193" parent="1" name="utf8_swedish_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="194" parent="1" name="utf8_turkish_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="195" parent="1" name="utf8_unicode_520_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="196" parent="1" name="utf8_unicode_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="197" parent="1" name="utf8_vietnamese_ci">
|
||||
<Charset>utf8</Charset>
|
||||
</collation>
|
||||
<collation id="198" parent="1" name="utf8mb4_bin">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="199" parent="1" name="utf8mb4_croatian_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="200" parent="1" name="utf8mb4_czech_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="201" parent="1" name="utf8mb4_danish_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="202" parent="1" name="utf8mb4_esperanto_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="203" parent="1" name="utf8mb4_estonian_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="204" parent="1" name="utf8mb4_general_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
<DefaultForCharset>1</DefaultForCharset>
|
||||
</collation>
|
||||
<collation id="205" parent="1" name="utf8mb4_german2_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="206" parent="1" name="utf8mb4_hungarian_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="207" parent="1" name="utf8mb4_icelandic_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="208" parent="1" name="utf8mb4_latvian_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="209" parent="1" name="utf8mb4_lithuanian_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="210" parent="1" name="utf8mb4_persian_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="211" parent="1" name="utf8mb4_polish_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="212" parent="1" name="utf8mb4_roman_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="213" parent="1" name="utf8mb4_romanian_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="214" parent="1" name="utf8mb4_sinhala_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="215" parent="1" name="utf8mb4_slovak_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="216" parent="1" name="utf8mb4_slovenian_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="217" parent="1" name="utf8mb4_spanish2_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="218" parent="1" name="utf8mb4_spanish_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="219" parent="1" name="utf8mb4_swedish_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="220" parent="1" name="utf8mb4_turkish_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="221" parent="1" name="utf8mb4_unicode_520_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="222" parent="1" name="utf8mb4_unicode_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<collation id="223" parent="1" name="utf8mb4_vietnamese_ci">
|
||||
<Charset>utf8mb4</Charset>
|
||||
</collation>
|
||||
<schema id="224" parent="1" name="information_schema">
|
||||
<CollationName>utf8_general_ci</CollationName>
|
||||
</schema>
|
||||
<schema id="225" parent="1" name="nw_love">
|
||||
<Current>1</Current>
|
||||
<CollationName>utf8_unicode_ci</CollationName>
|
||||
</schema>
|
||||
<user id="226" parent="1" name="nw_love">
|
||||
<Host>localhost</Host>
|
||||
</user>
|
||||
<table id="227" parent="225" name="nw_web_info">
|
||||
<Engine>MyISAM</Engine>
|
||||
<CollationName>utf8_unicode_ci</CollationName>
|
||||
</table>
|
||||
<column id="228" parent="227" name="id">
|
||||
<AutoIncrement>20</AutoIncrement>
|
||||
<DasType>int(11)|0s</DasType>
|
||||
<NotNull>1</NotNull>
|
||||
<Position>1</Position>
|
||||
</column>
|
||||
<column id="229" parent="227" name="value">
|
||||
<DasType>varchar(40)|0s</DasType>
|
||||
<NotNull>1</NotNull>
|
||||
<Position>2</Position>
|
||||
</column>
|
||||
<column id="230" parent="227" name="data">
|
||||
<DasType>text|0s</DasType>
|
||||
<Position>3</Position>
|
||||
</column>
|
||||
<column id="231" parent="227" name="autoload">
|
||||
<DasType>varchar(5)|0s</DasType>
|
||||
<DefaultExpression>'TRUE'</DefaultExpression>
|
||||
<NotNull>1</NotNull>
|
||||
<Position>4</Position>
|
||||
</column>
|
||||
<index id="232" parent="227" name="PRIMARY">
|
||||
<ColNames>id</ColNames>
|
||||
<Type>btree</Type>
|
||||
<Unique>1</Unique>
|
||||
</index>
|
||||
<key id="233" parent="227" name="PRIMARY">
|
||||
<NameSurrogate>1</NameSurrogate>
|
||||
<Primary>1</Primary>
|
||||
<UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
|
||||
</key>
|
||||
</database-model>
|
||||
</dataSource>
|
@ -0,0 +1,2 @@
|
||||
#n:information_schema
|
||||
!<md> [null, 0, null, null, -2147483648, -2147483648]
|
16
.idea/deployment.xml
generated
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="PublishConfigData" autoUpload="Always" serverName="Server" remoteFilesAllowedToDisappearOnAutoupload="false" confirmBeforeUploading="false">
|
||||
<option name="confirmBeforeUploading" value="false" />
|
||||
<serverData>
|
||||
<paths name="Server">
|
||||
<serverdata>
|
||||
<mappings>
|
||||
<mapping deploy="/" local="$PROJECT_DIR$" web="/" />
|
||||
</mappings>
|
||||
</serverdata>
|
||||
</paths>
|
||||
</serverData>
|
||||
<option name="myAutoUpload" value="ALWAYS" />
|
||||
</component>
|
||||
</project>
|
42
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
@ -0,0 +1,42 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="DuplicatedCode" enabled="true" level="WEAK WARNING" enabled_by_default="true">
|
||||
<Languages>
|
||||
<language minSize="24" name="HTML" />
|
||||
<language minSize="277" name="PHP" />
|
||||
</Languages>
|
||||
</inspection_tool>
|
||||
<inspection_tool class="HttpUrlsUsage" enabled="true" level="WEAK WARNING" enabled_by_default="true">
|
||||
<option name="ignoredUrls">
|
||||
<list>
|
||||
<option value="http://localhost" />
|
||||
<option value="http://127.0.0.1" />
|
||||
<option value="http://0.0.0.0" />
|
||||
<option value="http://www.w3.org/" />
|
||||
<option value="http://json-schema.org/draft" />
|
||||
<option value="http://java.sun.com/" />
|
||||
<option value="http://xmlns.jcp.org/" />
|
||||
<option value="http://javafx.com/javafx/" />
|
||||
<option value="http://javafx.com/fxml" />
|
||||
<option value="http://maven.apache.org/xsd/" />
|
||||
<option value="http://maven.apache.org/POM/" />
|
||||
<option value="http://www.springframework.org/schema/" />
|
||||
<option value="http://www.springframework.org/tags" />
|
||||
<option value="http://www.springframework.org/security/tags" />
|
||||
<option value="http://www.thymeleaf.org" />
|
||||
<option value="http://www.jboss.org/j2ee/schema/" />
|
||||
<option value="http://www.jboss.com/xml/ns/" />
|
||||
<option value="http://www.ibm.com/webservices/xsd" />
|
||||
<option value="http://activemq.apache.org/schema/" />
|
||||
<option value="http://schema.cloudfoundry.org/spring/" />
|
||||
<option value="http://schemas.xmlsoap.org/" />
|
||||
<option value="http://cxf.apache.org/schemas/" />
|
||||
<option value="http://primefaces.org/ui" />
|
||||
<option value="http://tiles.apache.org/" />
|
||||
<option value="http://" />
|
||||
</list>
|
||||
</option>
|
||||
</inspection_tool>
|
||||
</profile>
|
||||
</component>
|
6
.idea/jsLibraryMappings.xml
generated
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="JavaScriptLibraryMappings">
|
||||
<file url="PROJECT" libraries="{font_3866622_565tqxxkm4, font_3866622_ur298ayiu2}" />
|
||||
</component>
|
||||
</project>
|
8
.idea/modules.xml
generated
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/NW_love.iml" filepath="$PROJECT_DIR$/.idea/NW_love.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
19
.idea/php.xml
generated
Normal file
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="MessDetectorOptionsConfiguration">
|
||||
<option name="transferred" value="true" />
|
||||
</component>
|
||||
<component name="PHPCSFixerOptionsConfiguration">
|
||||
<option name="transferred" value="true" />
|
||||
</component>
|
||||
<component name="PHPCodeSnifferOptionsConfiguration">
|
||||
<option name="transferred" value="true" />
|
||||
</component>
|
||||
<component name="PhpProjectSharedConfiguration" php_language_level="7.4" />
|
||||
<component name="PhpStanOptionsConfiguration">
|
||||
<option name="transferred" value="true" />
|
||||
</component>
|
||||
<component name="PsalmOptionsConfiguration">
|
||||
<option name="transferred" value="true" />
|
||||
</component>
|
||||
</project>
|
4
.idea/shelf/.xml
generated
Normal file
@ -0,0 +1,4 @@
|
||||
<changelist name="变更" date="1675389017138" recycled="false">
|
||||
<option name="PATH" value="$PROJECT_DIR$/.idea/shelf/变更/shelved.patch" />
|
||||
<option name="DESCRIPTION" value="变更" />
|
||||
</changelist>
|
4
.idea/shelf/1.xml
generated
Normal file
@ -0,0 +1,4 @@
|
||||
<changelist name="变更1" date="1675389060149" recycled="false">
|
||||
<option name="PATH" value="$PROJECT_DIR$/.idea/shelf/变更1/shelved.patch" />
|
||||
<option name="DESCRIPTION" value="变更" />
|
||||
</changelist>
|
4
.idea/shelf/___.xml
generated
Normal file
@ -0,0 +1,4 @@
|
||||
<changelist name="在变基之前未提交的更改_[变更]" date="1675388613705" recycled="true" deleted="true">
|
||||
<option name="PATH" value="$PROJECT_DIR$/.idea/shelf/在变基之前未提交的更改_[变更]/shelved.patch" />
|
||||
<option name="DESCRIPTION" value="在变基之前未提交的更改 [变更]" />
|
||||
</changelist>
|
79
.idea/shelf/变更/shelved.patch
generated
Normal file
@ -0,0 +1,79 @@
|
||||
Index: config.inc.php
|
||||
IDEA additional info:
|
||||
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||
<+>UTF-8
|
||||
===================================================================
|
||||
diff --git a/config.inc.php b/config.inc.php
|
||||
new file mode 100644
|
||||
--- /dev/null (date 1675388896148)
|
||||
+++ b/config.inc.php (date 1675388896148)
|
||||
@@ -0,0 +1,68 @@
|
||||
+<?php
|
||||
+/**
|
||||
+ * @ignore 配置文件
|
||||
+ * @ignore 默认情况请勿随意修改数据,敏感数据请勿随意复制给别人
|
||||
+ *
|
||||
+ * @author 筱锋xiao_lfeng
|
||||
+ * @license MIT
|
||||
+ * @copyright 2022-2023 ZCW and YN. All Rights Reserved.
|
||||
+ * @version 1.0.0 2023-01-16更新
|
||||
+ */
|
||||
+
|
||||
+// 格式化数据
|
||||
+$config = [];
|
||||
+
|
||||
+/******************* 开放管理 *******************/
|
||||
+// 站点启用
|
||||
+$config['WEB']['Start'] = TRUE;
|
||||
+// 站点开启 Debug 模式
|
||||
+$config['WEB']['DeBUG'] = FALSE;
|
||||
+// 站点通信密钥
|
||||
+$config['SESSION'] = "YNily20040227";
|
||||
+
|
||||
+// AccessKeyID
|
||||
+$config['Aliyun']['AccessKeyID'] = 'LTAI4FyjsXWYDqgTSHrMrCha';
|
||||
+// AccessKeySecret
|
||||
+$config['Aliyun']['AccessKeySecret'] = 'DYmFXkMu7ZMly7mzd1M7UYbbYd4UH4';
|
||||
+
|
||||
+/******************** 数据库 ********************/
|
||||
+// 数据库地址
|
||||
+$config['SQL']['host'] = '127.0.0.1';
|
||||
+// 数据库名字
|
||||
+$config['SQL']['dbname'] = 'nw_love';
|
||||
+// 数据库用户名
|
||||
+$config['SQL']['username'] = 'nw_love';
|
||||
+// 数据库密码
|
||||
+$config['SQL']['password'] = 'YNily20040227';
|
||||
+
|
||||
+/******************** 数据表 ********************/
|
||||
+// 网站基本信息数据表
|
||||
+$config['TABLE']['info'] = 'nw_web_info';
|
||||
+// 睡觉信息统计数据表
|
||||
+$config['TABLE']['daily'] = 'nw_daily';
|
||||
+// 相册列表数据库
|
||||
+$config['TABLE']['AlbumList'] = 'nw_album_list';
|
||||
+// 相册内数据表
|
||||
+$config['TABLE']['Album'] = 'nw_album';
|
||||
+// 相册别人偷拍
|
||||
+$config['TABLE']['candid'] = 'nw_other_candid';
|
||||
+
|
||||
+/******************* 邮箱管理 *******************/
|
||||
+// 邮箱地址
|
||||
+$config['SMTP']['HOST'] = 'smtp.qiye.aliyun.com';
|
||||
+// 是否允许SMTP认证
|
||||
+$config['SMTP']['AUTH'] = true;
|
||||
+// 邮箱用户名(邮箱)
|
||||
+$config['SMTP']['USER'] = 'noreplay@x-lf.cn';
|
||||
+// 邮箱密码或授权码
|
||||
+$config['SMTP']['PASSWORD'] = 'X+7ily20040722';
|
||||
+// 发件人
|
||||
+$config['SMTP']['NAME'] = 'noreplay@x-lf.cn';
|
||||
+// 展示名字
|
||||
+$config['SMTP']['DISPLAY'] = 'noreplay@x-lf.cn';
|
||||
+// 收件名字
|
||||
+$config['SMTP']['REPLAY'] = 'gm@x-lf.cn';
|
||||
+// 非SSL端口
|
||||
+$config['SMTP']['NOSSL'] = 25;
|
||||
+// SSL端口
|
||||
+$config['SMTP']['SSL'] = 465;
|
||||
\ No newline at end of file
|
79
.idea/shelf/变更1/shelved.patch
generated
Normal file
@ -0,0 +1,79 @@
|
||||
Index: config.inc.php
|
||||
IDEA additional info:
|
||||
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||
<+>UTF-8
|
||||
===================================================================
|
||||
diff --git a/config.inc.php b/config.inc.php
|
||||
new file mode 100644
|
||||
--- /dev/null (date 1675389060127)
|
||||
+++ b/config.inc.php (date 1675389060127)
|
||||
@@ -0,0 +1,68 @@
|
||||
+<?php
|
||||
+/**
|
||||
+ * @ignore 配置文件
|
||||
+ * @ignore 默认情况请勿随意修改数据,敏感数据请勿随意复制给别人
|
||||
+ *
|
||||
+ * @author 筱锋xiao_lfeng
|
||||
+ * @license MIT
|
||||
+ * @copyright 2022-2023 ZCW and YN. All Rights Reserved.
|
||||
+ * @version 1.0.0 2023-01-16更新
|
||||
+ */
|
||||
+
|
||||
+// 格式化数据
|
||||
+$config = [];
|
||||
+
|
||||
+/******************* 开放管理 *******************/
|
||||
+// 站点启用
|
||||
+$config['WEB']['Start'] = TRUE;
|
||||
+// 站点开启 Debug 模式
|
||||
+$config['WEB']['DeBUG'] = FALSE;
|
||||
+// 站点通信密钥
|
||||
+$config['SESSION'] = "YNily20040227";
|
||||
+
|
||||
+// AccessKeyID
|
||||
+$config['Aliyun']['AccessKeyID'] = 'LTAI4FyjsXWYDqgTSHrMrCha';
|
||||
+// AccessKeySecret
|
||||
+$config['Aliyun']['AccessKeySecret'] = 'DYmFXkMu7ZMly7mzd1M7UYbbYd4UH4';
|
||||
+
|
||||
+/******************** 数据库 ********************/
|
||||
+// 数据库地址
|
||||
+$config['SQL']['host'] = '127.0.0.1';
|
||||
+// 数据库名字
|
||||
+$config['SQL']['dbname'] = 'nw_love';
|
||||
+// 数据库用户名
|
||||
+$config['SQL']['username'] = 'nw_love';
|
||||
+// 数据库密码
|
||||
+$config['SQL']['password'] = 'YNily20040227';
|
||||
+
|
||||
+/******************** 数据表 ********************/
|
||||
+// 网站基本信息数据表
|
||||
+$config['TABLE']['info'] = 'nw_web_info';
|
||||
+// 睡觉信息统计数据表
|
||||
+$config['TABLE']['daily'] = 'nw_daily';
|
||||
+// 相册列表数据库
|
||||
+$config['TABLE']['AlbumList'] = 'nw_album_list';
|
||||
+// 相册内数据表
|
||||
+$config['TABLE']['Album'] = 'nw_album';
|
||||
+// 相册别人偷拍
|
||||
+$config['TABLE']['candid'] = 'nw_other_candid';
|
||||
+
|
||||
+/******************* 邮箱管理 *******************/
|
||||
+// 邮箱地址
|
||||
+$config['SMTP']['HOST'] = 'smtp.qiye.aliyun.com';
|
||||
+// 是否允许SMTP认证
|
||||
+$config['SMTP']['AUTH'] = true;
|
||||
+// 邮箱用户名(邮箱)
|
||||
+$config['SMTP']['USER'] = 'noreplay@x-lf.cn';
|
||||
+// 邮箱密码或授权码
|
||||
+$config['SMTP']['PASSWORD'] = 'X+7ily20040722';
|
||||
+// 发件人
|
||||
+$config['SMTP']['NAME'] = 'noreplay@x-lf.cn';
|
||||
+// 展示名字
|
||||
+$config['SMTP']['DISPLAY'] = 'noreplay@x-lf.cn';
|
||||
+// 收件名字
|
||||
+$config['SMTP']['REPLAY'] = 'gm@x-lf.cn';
|
||||
+// 非SSL端口
|
||||
+$config['SMTP']['NOSSL'] = 25;
|
||||
+// SSL端口
|
||||
+$config['SMTP']['SSL'] = 465;
|
||||
\ No newline at end of file
|
79
.idea/shelf/在变基之前未提交的更改_[变更]/shelved.patch
generated
Normal file
@ -0,0 +1,79 @@
|
||||
Index: config.inc.php
|
||||
IDEA additional info:
|
||||
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||
<+>UTF-8
|
||||
===================================================================
|
||||
diff --git a/config.inc.php b/config.inc.php
|
||||
new file mode 100644
|
||||
--- /dev/null (date 1675342685889)
|
||||
+++ b/config.inc.php (date 1675342685889)
|
||||
@@ -0,0 +1,68 @@
|
||||
+<?php
|
||||
+/**
|
||||
+ * @ignore 配置文件
|
||||
+ * @ignore 默认情况请勿随意修改数据,敏感数据请勿随意复制给别人
|
||||
+ *
|
||||
+ * @author 筱锋xiao_lfeng
|
||||
+ * @license MIT
|
||||
+ * @copyright 2022-2023 ZCW and YN. All Rights Reserved.
|
||||
+ * @version 1.0.0 2023-01-16更新
|
||||
+ */
|
||||
+
|
||||
+// 格式化数据
|
||||
+$config = [];
|
||||
+
|
||||
+/******************* 开放管理 *******************/
|
||||
+// 站点启用
|
||||
+$config['WEB']['Start'] = TRUE;
|
||||
+// 站点开启 Debug 模式
|
||||
+$config['WEB']['DeBUG'] = FALSE;
|
||||
+// 站点通信密钥
|
||||
+$config['SESSION'] = "YNily20040227";
|
||||
+
|
||||
+// AccessKeyID
|
||||
+$config['Aliyun']['AccessKeyID'] = 'LTAI4FyjsXWYDqgTSHrMrCha';
|
||||
+// AccessKeySecret
|
||||
+$config['Aliyun']['AccessKeySecret'] = 'DYmFXkMu7ZMly7mzd1M7UYbbYd4UH4';
|
||||
+
|
||||
+/******************** 数据库 ********************/
|
||||
+// 数据库地址
|
||||
+$config['SQL']['host'] = '127.0.0.1';
|
||||
+// 数据库名字
|
||||
+$config['SQL']['dbname'] = 'nw_love';
|
||||
+// 数据库用户名
|
||||
+$config['SQL']['username'] = 'nw_love';
|
||||
+// 数据库密码
|
||||
+$config['SQL']['password'] = 'YNily20040227';
|
||||
+
|
||||
+/******************** 数据表 ********************/
|
||||
+// 网站基本信息数据表
|
||||
+$config['TABLE']['info'] = 'nw_web_info';
|
||||
+// 睡觉信息统计数据表
|
||||
+$config['TABLE']['daily'] = 'nw_daily';
|
||||
+// 相册列表数据库
|
||||
+$config['TABLE']['AlbumList'] = 'nw_album_list';
|
||||
+// 相册内数据表
|
||||
+$config['TABLE']['Album'] = 'nw_album';
|
||||
+// 相册别人偷拍
|
||||
+$config['TABLE']['candid'] = 'nw_other_candid';
|
||||
+
|
||||
+/******************* 邮箱管理 *******************/
|
||||
+// 邮箱地址
|
||||
+$config['SMTP']['HOST'] = 'smtp.qiye.aliyun.com';
|
||||
+// 是否允许SMTP认证
|
||||
+$config['SMTP']['AUTH'] = true;
|
||||
+// 邮箱用户名(邮箱)
|
||||
+$config['SMTP']['USER'] = 'noreplay@x-lf.cn';
|
||||
+// 邮箱密码或授权码
|
||||
+$config['SMTP']['PASSWORD'] = 'X+7ily20040722';
|
||||
+// 发件人
|
||||
+$config['SMTP']['NAME'] = 'noreplay@x-lf.cn';
|
||||
+// 展示名字
|
||||
+$config['SMTP']['DISPLAY'] = 'noreplay@x-lf.cn';
|
||||
+// 收件名字
|
||||
+$config['SMTP']['REPLAY'] = 'gm@x-lf.cn';
|
||||
+// 非SSL端口
|
||||
+$config['SMTP']['NOSSL'] = 25;
|
||||
+// SSL端口
|
||||
+$config['SMTP']['SSL'] = 465;
|
||||
\ No newline at end of file
|
8
.idea/sshConfigs.xml
generated
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="SshConfigs">
|
||||
<configs>
|
||||
<sshConfig authType="PASSWORD" host="sz.aliyun.x-lf.cn" id="132ce6aa-21ce-49ac-a9ed-8c311ee6c493" port="22" nameFormat="DESCRIPTIVE" username="root" useOpenSSHConfig="true" />
|
||||
</configs>
|
||||
</component>
|
||||
</project>
|
14
.idea/webServers.xml
generated
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="WebServers">
|
||||
<option name="servers">
|
||||
<webServer id="e02b1ce2-34d2-43e7-8faa-1d7279242093" name="Server">
|
||||
<fileTransfer rootFolder="/www/wwwroot/NW_love" accessType="SFTP" host="sz.aliyun.x-lf.cn" port="22" sshConfigId="132ce6aa-21ce-49ac-a9ed-8c311ee6c493" sshConfig="root@sz.aliyun.x-lf.cn:22 password">
|
||||
<advancedOptions>
|
||||
<advancedOptions dataProtectionLevel="Private" keepAliveTimeout="0" passiveMode="true" shareSSLContext="true" />
|
||||
</advancedOptions>
|
||||
</fileTransfer>
|
||||
</webServer>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
264
.idea/workspace.xml
generated
Normal file
@ -0,0 +1,264 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="AutoImportSettings">
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="133bd8ae-815d-49c7-8c0f-5ec4284059fa" name="变更" comment="前端:主页新增想你了按钮">
|
||||
<change afterPath="$PROJECT_DIR$/config.inc.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="ComposerSettings" doNotAsk="true">
|
||||
<pharConfigPath>$PROJECT_DIR$/composer.json</pharConfigPath>
|
||||
<execution>
|
||||
<executable path="composer" />
|
||||
</execution>
|
||||
</component>
|
||||
<component name="DatabaseLocalColorSettings">
|
||||
<colors>
|
||||
<entry key="9864e879-99a5-4c5a-9bed-043684f4b73f" value="Green" />
|
||||
</colors>
|
||||
</component>
|
||||
<component name="FileTemplateManagerImpl">
|
||||
<option name="RECENT_TEMPLATES">
|
||||
<list>
|
||||
<option value="composer.json" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_BRANCH_BY_REPOSITORY">
|
||||
<map>
|
||||
<entry key="$PROJECT_DIR$" value="master" />
|
||||
</map>
|
||||
</option>
|
||||
<option name="RESET_MODE" value="MIXED" />
|
||||
</component>
|
||||
<component name="MarkdownSettingsMigration">
|
||||
<option name="stateVersion" value="1" />
|
||||
</component>
|
||||
<component name="PhpDebugGeneral" listening_started="true" />
|
||||
<component name="PhpWorkspaceProjectConfiguration" interpreter_name="PHP 7.4" />
|
||||
<component name="ProjectId" id="2KPZgvFtvZNtmGwHNeRziA1BF9E" />
|
||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true">
|
||||
<ConfirmationsSetting value="2" id="Add" />
|
||||
</component>
|
||||
<component name="ProjectViewState">
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent"><![CDATA[{
|
||||
"keyToString": {
|
||||
"ASKED_ADD_EXTERNAL_FILES": "true",
|
||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"WebServerToolWindowFactoryState": "true",
|
||||
"WebServerToolWindowPanel.toolwindow.highlight.mappings": "true",
|
||||
"WebServerToolWindowPanel.toolwindow.highlight.symlinks": "true",
|
||||
"WebServerToolWindowPanel.toolwindow.show.date": "false",
|
||||
"WebServerToolWindowPanel.toolwindow.show.permissions": "false",
|
||||
"WebServerToolWindowPanel.toolwindow.show.size": "false",
|
||||
"last.edited.regexp": "",
|
||||
"last_opened_file_path": "E:/Work/WEB/NW_love/modules",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.detected.package.tslint": "true",
|
||||
"node.js.selected.package.eslint": "(autodetect)",
|
||||
"node.js.selected.package.tslint": "(autodetect)",
|
||||
"nodejs_package_manager_path": "npm",
|
||||
"settings.editor.selected.configurable": "project.propVCSSupport.DirectoryMappings",
|
||||
"vue.rearranger.settings.migration": "true"
|
||||
},
|
||||
"keyToStringList": {
|
||||
"DatabaseDriversLRU": [
|
||||
"mysql"
|
||||
]
|
||||
}
|
||||
}]]></component>
|
||||
<component name="RecentsManager">
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="E:\Work\WEB\NW_love\modules" />
|
||||
<recent name="E:\Work\WEB\NW_love\plugins" />
|
||||
<recent name="E:\Work\WEB\NW_love\sources" />
|
||||
<recent name="E:\Work\WEB\NW_love\cache" />
|
||||
<recent name="E:\Work\WEB\NW_love\sources\js" />
|
||||
</key>
|
||||
<key name="MoveFile.RECENT_KEYS">
|
||||
<recent name="E:\Work\WEB\NW_love\Aliyun" />
|
||||
<recent name="E:\Work\WEB\NW_love\api" />
|
||||
<recent name="E:\Work\WEB\NW_love\plugins" />
|
||||
</key>
|
||||
</component>
|
||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="默认任务">
|
||||
<changelist id="133bd8ae-815d-49c7-8c0f-5ec4284059fa" name="变更" comment="" />
|
||||
<created>1673878292692</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1673878292692</updated>
|
||||
<workItem from="1673878293619" duration="2780000" />
|
||||
<workItem from="1673883150515" duration="22587000" />
|
||||
<workItem from="1674010223566" duration="1667000" />
|
||||
<workItem from="1674053064962" duration="1850000" />
|
||||
<workItem from="1674121073950" duration="7833000" />
|
||||
<workItem from="1675165745483" duration="1337000" />
|
||||
<workItem from="1675168490388" duration="1130000" />
|
||||
<workItem from="1675169775375" duration="3209000" />
|
||||
<workItem from="1675176910070" duration="27000" />
|
||||
<workItem from="1675176951163" duration="54657000" />
|
||||
<workItem from="1675332432870" duration="12446000" />
|
||||
<workItem from="1675348952662" duration="13000" />
|
||||
<workItem from="1675349799410" duration="151000" />
|
||||
<workItem from="1675350199506" duration="1000" />
|
||||
<workItem from="1675386141694" duration="1615000" />
|
||||
<workItem from="1675387772280" duration="3401000" />
|
||||
</task>
|
||||
<task id="LOCAL-00001" summary="Initial commit">
|
||||
<created>1673883582904</created>
|
||||
<option name="number" value="00001" />
|
||||
<option name="presentableId" value="LOCAL-00001" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1673883582904</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00002" summary="Upload">
|
||||
<created>1673886226047</created>
|
||||
<option name="number" value="00002" />
|
||||
<option name="presentableId" value="LOCAL-00002" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1673886226047</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00003" summary="Upload">
|
||||
<created>1673967829189</created>
|
||||
<option name="number" value="00003" />
|
||||
<option name="presentableId" value="LOCAL-00003" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1673967829189</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00004" summary="Upload">
|
||||
<created>1673968188607</created>
|
||||
<option name="number" value="00004" />
|
||||
<option name="presentableId" value="LOCAL-00004" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1673968188607</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00005" summary="更新新增内容">
|
||||
<created>1673968869838</created>
|
||||
<option name="number" value="00005" />
|
||||
<option name="presentableId" value="LOCAL-00005" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1673968869838</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00006" summary="全量增加">
|
||||
<created>1675331838743</created>
|
||||
<option name="number" value="00006" />
|
||||
<option name="presentableId" value="LOCAL-00006" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1675331838743</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00007" summary="邮件、想你、BUG修复">
|
||||
<created>1675349922438</created>
|
||||
<option name="number" value="00007" />
|
||||
<option name="presentableId" value="LOCAL-00007" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1675349922438</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00008" summary="Gitignore">
|
||||
<created>1675386301213</created>
|
||||
<option name="number" value="00008" />
|
||||
<option name="presentableId" value="LOCAL-00008" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1675386301213</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00009" summary="前端:样式修改">
|
||||
<created>1675387337141</created>
|
||||
<option name="number" value="00009" />
|
||||
<option name="presentableId" value="LOCAL-00009" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1675387337141</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00010" summary="前端:主页新增想你了按钮">
|
||||
<created>1675388005730</created>
|
||||
<option name="number" value="00010" />
|
||||
<option name="presentableId" value="LOCAL-00010" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1675388005730</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00011" summary="Revert "前端:主页新增想你了按钮" This reverts commit ca5fdb67">
|
||||
<created>1675388664906</created>
|
||||
<option name="number" value="00011" />
|
||||
<option name="presentableId" value="LOCAL-00011" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1675388664906</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00012" summary="Revert "全量增加" This reverts commit 51e9797c">
|
||||
<created>1675388736424</created>
|
||||
<option name="number" value="00012" />
|
||||
<option name="presentableId" value="LOCAL-00012" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1675388736424</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="13" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="3" />
|
||||
</component>
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
<option name="TAB_STATES">
|
||||
<map>
|
||||
<entry key="MAIN">
|
||||
<value>
|
||||
<State />
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
<option name="RECENT_FILTERS">
|
||||
<map>
|
||||
<entry key="Branch">
|
||||
<value>
|
||||
<list>
|
||||
<RecentGroup>
|
||||
<option name="FILTER_VALUES">
|
||||
<option value="origin/master" />
|
||||
</option>
|
||||
</RecentGroup>
|
||||
<RecentGroup>
|
||||
<option name="FILTER_VALUES">
|
||||
<option value="master" />
|
||||
</option>
|
||||
</RecentGroup>
|
||||
<RecentGroup>
|
||||
<option name="FILTER_VALUES">
|
||||
<option value="HEAD" />
|
||||
</option>
|
||||
</RecentGroup>
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</component>
|
||||
<component name="VcsManagerConfiguration">
|
||||
<MESSAGE value="Initial commit" />
|
||||
<MESSAGE value="Upload" />
|
||||
<MESSAGE value="更新新增内容" />
|
||||
<MESSAGE value="全量增加" />
|
||||
<MESSAGE value="邮件、想你、BUG修复" />
|
||||
<MESSAGE value="Gitignore" />
|
||||
<MESSAGE value="前端:样式修改" />
|
||||
<MESSAGE value="前端:主页新增想你了按钮" />
|
||||
<MESSAGE value="Revert "前端:主页新增想你了按钮" This reverts commit ca5fdb67" />
|
||||
<MESSAGE value="Revert "全量增加" This reverts commit 51e9797c" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="Revert "全量增加" This reverts commit 51e9797c" />
|
||||
</component>
|
||||
<component name="XSLT-Support.FileAssociations.UIState">
|
||||
<expand />
|
||||
<select />
|
||||
</component>
|
||||
</project>
|
BIN
Aliyun/aliyun-oss-php-sdk-2.6.0.phar
Normal file
11
Aliyun/autoload.php
Normal file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
function classLoader($class)
|
||||
{
|
||||
$path = str_replace('\\', DIRECTORY_SEPARATOR, $class);
|
||||
$file = __DIR__ . DIRECTORY_SEPARATOR .'src'. DIRECTORY_SEPARATOR . $path . '.php';
|
||||
if (file_exists($file)) {
|
||||
require_once $file;
|
||||
}
|
||||
}
|
||||
spl_autoload_register('classLoader');
|
9
README.md
Normal file
@ -0,0 +1,9 @@
|
||||
# NW_Love
|
||||
|
||||
> 一个基于 PHP 开发的恋爱互动小网站
|
||||
|
||||
## 先随便记录
|
||||
|
||||
主色调:ffc0cb
|
||||
辅助色:根据bootstrap默认蓝色定
|
||||
|
251
album.php
Normal file
@ -0,0 +1,251 @@
|
||||
<?php
|
||||
// 载入
|
||||
include_once $_SERVER['DOCUMENT_ROOT'].'/modules/header-loader.php';
|
||||
// 获取类
|
||||
require_once $_SERVER['DOCUMENT_ROOT'].'/modules/Functions.php';
|
||||
$F = new Functions();
|
||||
|
||||
/**
|
||||
* @var array $Normal 普通事件API
|
||||
* @var array $config 配置文件
|
||||
* @var array $ApiAlbum 图库API
|
||||
*/
|
||||
|
||||
$ApiAlbum_url = $F->Current_HTTP().'/api/album/select_list.php?session='.$config['SESSION'];
|
||||
$ApiAlbum_ch = curl_init($ApiAlbum_url);
|
||||
curl_setopt($ApiAlbum_ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
|
||||
curl_setopt($ApiAlbum_ch, CURLOPT_RETURNTRANSFER, true);
|
||||
$ApiAlbum = curl_exec($ApiAlbum_ch);
|
||||
$ApiAlbum = json_decode($ApiAlbum,true);
|
||||
|
||||
$page = 2;
|
||||
?>
|
||||
<!doctype html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport"
|
||||
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title><?php echo $Normal['data']['web_title']['data'] ?> - <?php echo $Normal['data']['web_desc']['data'] ?></title>
|
||||
<link rel="icon" href="<?php echo $Normal['data']['web_icon']['data'] ?>">
|
||||
<meta name="description" content="<?php echo $Normal['data']['web_desc']['data'] ?>">
|
||||
<meta name="keywords" content="<?php echo $Normal['data']['web_keyword'] ?>"></meta>
|
||||
<meta name="full-screen" content="yes"><!--UC强制全屏-->
|
||||
<meta name="browsermode" content="application"><!--UC应用模式-->
|
||||
<meta name="x5-fullscreen" content="true"><!--QQ强制全屏-->
|
||||
<meta name="x5-page-mode" content="app"><!--QQ应用模式-->
|
||||
<!-- CSS -->
|
||||
<link rel="stylesheet" href="/sources/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="https://at.alicdn.com/t/c/font_3866622_ur298ayiu2.css">
|
||||
<link rel="stylesheet" href="/sources/icons/bootstrap-icons.css">
|
||||
</head>
|
||||
<body style="background-color: rgba(255,192,203,0.25)">
|
||||
<!-- 页首 -->
|
||||
<?php include $_SERVER['DOCUMENT_ROOT']."/modules/header.php"; ?>
|
||||
<!-- 页中 -->
|
||||
<div class="container-fluid my-4">
|
||||
<div class="row">
|
||||
<?php
|
||||
if (!empty($_COOKIE['user'])) {
|
||||
?>
|
||||
<div class="col-12 text-center">
|
||||
<a class="btn btn-light text-white rounded-5" style="background-color: #ffc0cb;" href="/auth.php" role="button" data-bs-toggle="modal" data-bs-target="#exampleModal"> <i class="bi bi-folder-plus"></i> 新增图库 </a>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<?PHP
|
||||
$num = 0;
|
||||
while ($ApiAlbum['data'][$num]['id'] != null) {
|
||||
if (empty($_COOKIE['user'])) {
|
||||
if ($ApiAlbum['data'][$num]['open']) {
|
||||
?>
|
||||
<div class="col-12">
|
||||
<div class="row">
|
||||
<?PHP
|
||||
if ($num % 2 == 0) {
|
||||
?>
|
||||
<div class="col-5 text-start align-self-center text-center">
|
||||
<a href="./picture.php?album=<?php echo $ApiAlbum['data'][$num]['id'] ?>" class="text-decoration-none">
|
||||
<div class="row">
|
||||
<div class="col-12" style="width: auto;height: 80%">
|
||||
<img src="<?php echo $ApiAlbum['data'][$num]['first_image'] ?>" style="width: 40%" class="rounded-3">
|
||||
</div>
|
||||
<div class="col-12 text-black fw-light"><?PHP echo $ApiAlbum['data'][$num]['date'] ?></div>
|
||||
<div class="col-12 text-black fw-bold"><?PHP echo $ApiAlbum['data'][$num]['name'] ?></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<?php
|
||||
} else echo '<div class="col-5 text-end"></div>';
|
||||
?>
|
||||
<div class="col-2 text-center"><img src="./sources/img/Album_L_0<?php echo 1+$num%4 ?>.png" class="container"></div>
|
||||
<?PHP
|
||||
if ($num % 2 == 1) {
|
||||
?>
|
||||
<div class="col-5 text-start align-self-center text-center">
|
||||
<a href="./picture.php?album=<?php echo $ApiAlbum['data'][$num]['id'] ?>" class="text-decoration-none">
|
||||
<div class="row">
|
||||
<div class="col-12" style="width: auto;height: 80%">
|
||||
<img src="<?php echo $ApiAlbum['data'][$num]['first_image'] ?>" style="width: 40%" class="rounded-3">
|
||||
</div>
|
||||
<div class="col-12 text-black fw-light"><?PHP echo $ApiAlbum['data'][$num]['date'] ?></div>
|
||||
<div class="col-12 text-black fw-bold"><?PHP echo $ApiAlbum['data'][$num]['name'] ?></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<?php
|
||||
} else echo '<div class="col-5 text-start"></div>';
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
} else {
|
||||
?>
|
||||
<div class="col-12">
|
||||
<div class="row">
|
||||
<?PHP
|
||||
if ($num % 2 == 0) {
|
||||
?>
|
||||
<div class="col-5 text-start align-self-center text-center">
|
||||
<a href="./picture.php?album=<?php echo $ApiAlbum['data'][$num]['id'] ?>" class="text-decoration-none">
|
||||
<div class="row">
|
||||
<div class="col-12" style="width: auto;height: 80%">
|
||||
<img src="<?php echo $ApiAlbum['data'][$num]['first_image'] ?>" style="width: 40%" class="rounded-3">
|
||||
</div>
|
||||
<div class="col-12 text-black fw-light"><?PHP echo $ApiAlbum['data'][$num]['date'] ?></div>
|
||||
<div class="col-12 text-black fw-bold"><b><?php if (!$ApiAlbum['data'][$num]['open']) echo '[隐私]' ?></b> <?PHP echo $ApiAlbum['data'][$num]['name'] ?></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<?php
|
||||
} else echo '<div class="col-5 text-end"></div>';
|
||||
?>
|
||||
<div class="col-2 text-center"><img src="./sources/img/Album_L_0<?php echo 1+$num%4 ?>.png" class="container"></div>
|
||||
<?PHP
|
||||
if ($num % 2 == 1) {
|
||||
?>
|
||||
<div class="col-5 text-start align-self-center text-center">
|
||||
<a href="./picture.php?album=<?php echo $ApiAlbum['data'][$num]['id'] ?>" class="text-decoration-none">
|
||||
<div class="row">
|
||||
<div class="col-12" style="width: auto;height: 80%">
|
||||
<img src="<?php echo $ApiAlbum['data'][$num]['first_image'] ?>" style="width: 40%" class="rounded-3">
|
||||
</div>
|
||||
<div class="col-12 text-black fw-light"><?PHP echo $ApiAlbum['data'][$num]['date'] ?></div>
|
||||
<div class="col-12 text-black fw-bold"><b><?php if (!$ApiAlbum['data'][$num]['open']) echo '[隐私]' ?></b> <?PHP echo $ApiAlbum['data'][$num]['name'] ?></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<?php
|
||||
} else echo '<div class="col-5 text-start"></div>';
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
$num ++;
|
||||
}
|
||||
?>
|
||||
<div class="col-12 text-center">
|
||||
<button class="btn btn-light text-white rounded-5" style="background-color: #ffc0cb;">^v^ 开始啦 ^v^</button>
|
||||
</div>
|
||||
<div class="col-12 mt-3 text-center">
|
||||
<div class="col-12"><a href="https://beian.miit.gov.cn/" class="text-decoration-none text-info" target="_blank"><i class="iconfont icon-ICPbeian"></i> <?php echo $Normal['data']['web_icp']['data'] ?></a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Modal -->
|
||||
<div class="modal fade" id="exampleModal" tabindex="-1" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5">图库创建</h1>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form method="post" action="#" onsubmit="return false" id="forms">
|
||||
<div class="row">
|
||||
<div class="col-12 mb-3">
|
||||
<label class="form-label">图库名称</label>
|
||||
<input type="text" class="form-control" id="P_name" name="P_name" placeholder="我的图库" required>
|
||||
</div>
|
||||
<div class="col-12 mb-3">
|
||||
<label class="form-label">标定日期</label>
|
||||
<input type="date" class="form-control" id="P_date" name="P_date" value="<?php echo date('Y-m-d') ?>" required>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="form-check form-switch">
|
||||
<input class="form-check-input" type="checkbox" role="switch" id="P_open" name="P_open" checked>
|
||||
<label class="form-check-label">这个图库是否对外公开</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-danger" data-bs-dismiss="modal"><i class="bi bi-x-circle"></i> 取消创建</button>
|
||||
<button type="button" class="btn btn-success" data-bs-dismiss="modal" aria-label="Close" onclick="create()"><i class="bi bi-folder-plus"></i> 新建图库</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Toast -->
|
||||
<div class="toast-container position-fixed top-0 start-0 p-3">
|
||||
<div id="liveToast" class="toast" role="alert" aria-live="assertive" aria-atomic="true">
|
||||
<div class="toast-header">
|
||||
<i class="bi bi-info-circle"></i><strong class="me-auto">提醒</strong>
|
||||
<small>现在</small>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="toast-body" id="ajax_return"></div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 底部菜单 -->
|
||||
<?php include $_SERVER['DOCUMENT_ROOT']."/modules/menu.php"; ?>
|
||||
</body>
|
||||
<script type="text/javascript" src="/sources/js/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="/sources/js/bootstrap.min.js"></script>
|
||||
<script type="text/javascript" src="/sources/js/bootstrap.bundle.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
const LiveToast = document.getElementById('liveToast')
|
||||
const toast = new bootstrap.Toast(LiveToast)
|
||||
function create()
|
||||
{
|
||||
$.ajax({
|
||||
async: true,
|
||||
type: "POST",
|
||||
data: $('#forms').serialize(),
|
||||
url: "/plugins/album_list_check.php",
|
||||
success: function(result) {
|
||||
if (result == 'SUCCESS') {
|
||||
$('#ajax_return').text('新建好了')
|
||||
toast.show()
|
||||
setTimeout(function () {
|
||||
window.location.reload()
|
||||
},2000)
|
||||
} else if (result == 'UPLOAD_FAIL') {
|
||||
$('#ajax_return').text('新建失败')
|
||||
toast.show()
|
||||
} else if (result == 'OPEN_FALSE') {
|
||||
$('#ajax_return').text('是否开放啊?有问题')
|
||||
toast.show()
|
||||
} else if (result == 'DATE_FALSE') {
|
||||
$('#ajax_return').text('日期出错了额')
|
||||
toast.show()
|
||||
} else if (result == 'NAME_FALSE') {
|
||||
$('#ajax_return').text('起名不符,只允许中文、英文、数字组合')
|
||||
toast.show()
|
||||
} else if (result == 'SESSION_DENY') {
|
||||
$('#ajax_return').text('呼叫管理员')
|
||||
toast.show()
|
||||
}
|
||||
$('#data').load(result)
|
||||
},
|
||||
error: function () {
|
||||
alert('未知错误,请联系管理员(JS_ERROR)')
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</html>
|
114
api/album/add.php
Normal file
@ -0,0 +1,114 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* nw_love API
|
||||
* @copyright 2022-2023 ZCW and YN. All Rights Reserved.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @var mysqli $SqlConn 数据库链接信息
|
||||
* @var array $config 设置相关的数据
|
||||
*/
|
||||
require_once $_SERVER['DOCUMENT_ROOT'].'/Aliyun/aliyun-oss-php-sdk-2.6.0.phar';
|
||||
require_once $_SERVER['DOCUMENT_ROOT'].'/Aliyun/autoload.php';
|
||||
|
||||
use OSS\OssClient;
|
||||
use OSS\Core\OssException;
|
||||
|
||||
// 载入前置组件
|
||||
include $_SERVER['DOCUMENT_ROOT'] . "/api/api-loader.php";
|
||||
|
||||
// 载入类
|
||||
require_once $_SERVER['DOCUMENT_ROOT'] . '/api/modules/ApiFunction.php';
|
||||
$AFT = new ApiFunction();
|
||||
|
||||
// 获取参数
|
||||
// POST
|
||||
$PostData = file_get_contents('php://input');
|
||||
$PostData = json_decode($PostData,true);
|
||||
|
||||
// 逻辑搭建
|
||||
if ($AFT->Get_Session($PostData['ssid'])) {
|
||||
if (preg_match('/^[\一-\龥A-Za-z0-9_]{2,40}$/',$PostData['name'])) {
|
||||
if (preg_match('/^\d{4}-\d{1,2}-\d{1,2}/',$PostData['date'])) {
|
||||
if (preg_match('/[0-1]/',$PostData['open'])) {
|
||||
// 上传数据
|
||||
if (mysqli_query($SqlConn,"INSERT INTO ".$config['TABLE']['AlbumList']." (`name`,`date`,`open`) VALUES ('".$PostData['name']."','".$PostData['date']."','".$PostData['open']."')")) {
|
||||
$Result = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['AlbumList']." ORDER BY id DESC");
|
||||
$Result_Object = mysqli_fetch_object($Result);
|
||||
|
||||
$accessKeyId = $config['Aliyun']['AccessKeyID'];
|
||||
$accessKeySecret = $config['Aliyun']['AccessKeySecret'];
|
||||
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
|
||||
$endpoint = "https://oss-cn-shenzhen-internal.aliyuncs.com";
|
||||
// 填写Bucket名称。
|
||||
$bucket= "nw-love";
|
||||
// 填写不包含Bucket名称在内的Object的完整路径。
|
||||
$object = "Upload/".$Result_Object->id."/";
|
||||
$content = "";
|
||||
try{
|
||||
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
|
||||
|
||||
$ossClient->putObject($bucket, $object, $content);
|
||||
} catch(OssException $e) {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'UPLOAD_ALIYUN_FAIL',
|
||||
'code' => 403,
|
||||
'info' => '参数 Sql[Upload_Fail] 缺失/错误',
|
||||
];
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
return;
|
||||
}
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'SUCCESS',
|
||||
'code' => 200,
|
||||
'info' => '新建好了',
|
||||
];
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'UPLOAD_FAIL',
|
||||
'code' => 403,
|
||||
'info' => '参数 Sql[Upload_Fail] 缺失/错误',
|
||||
];
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
}
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'OPEN_FALSE',
|
||||
'code' => 403,
|
||||
'info' => '参数错误',
|
||||
];
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
}
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'DATE_FALSE',
|
||||
'code' => 403,
|
||||
'info' => '参数错误',
|
||||
];
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
}
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'NAME_FALSE',
|
||||
'code' => 403,
|
||||
'info' => '参数错误',
|
||||
];
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
}
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'SESSION_DENY',
|
||||
'code' => 403,
|
||||
'info' => '参数 Post[session] 缺失/错误',
|
||||
];
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
}
|
||||
echo json_encode($data, JSON_UNESCAPED_UNICODE);
|
57
api/album/other_candid.php
Normal file
@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* nw_love API
|
||||
* @copyright 2022-2023 ZCW and YN. All Rights Reserved.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @var mysqli $SqlConn 数据库链接信息
|
||||
* @var array $config 设置相关的数据
|
||||
*/
|
||||
|
||||
// 载入前置组件
|
||||
include $_SERVER['DOCUMENT_ROOT'] . "/api/api-loader.php";
|
||||
|
||||
// 载入类
|
||||
require_once $_SERVER['DOCUMENT_ROOT'] . '/api/modules/ApiFunction.php';
|
||||
$AFT = new ApiFunction();
|
||||
|
||||
// 获取参数(GET)
|
||||
$GetData = [
|
||||
'session' => urldecode(htmlspecialchars($_GET['session'])),
|
||||
];
|
||||
|
||||
// 函数构建
|
||||
if ($AFT->Get_Session($GetData['session'])) {
|
||||
// 查询数据库
|
||||
$Result_Album = mysqli_query($SqlConn, "SELECT * FROM " . $config['TABLE']['candid'] . " ORDER BY `id` DESC");
|
||||
$number = 0;
|
||||
while ($Result_Album_Object = mysqli_fetch_object($Result_Album)) {
|
||||
$array[$number] = [
|
||||
'id' => $Result_Album_Object->id,
|
||||
'url' => $Result_Album_Object->url,
|
||||
'date' => $Result_Album_Object->date,
|
||||
'open' => $Result_Album_Object->open,
|
||||
'uploader' => $Result_Album_Object->uploader,
|
||||
];
|
||||
$number++;
|
||||
}
|
||||
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'SUCCESS',
|
||||
'code' => 200,
|
||||
'info' => '输出成功',
|
||||
'data' => $array
|
||||
];
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'SESSION_DENY',
|
||||
'code' => 403,
|
||||
'info' => '参数 Query[session] 缺失/错误',
|
||||
];
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
}
|
||||
echo json_encode($data, JSON_UNESCAPED_UNICODE);
|
68
api/album/select.php
Normal file
@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* nw_love API
|
||||
* @copyright 2022-2023 ZCW and YN. All Rights Reserved.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @var mysqli $SqlConn 数据库链接信息
|
||||
* @var array $config 设置相关的数据
|
||||
*/
|
||||
|
||||
// 载入前置组件
|
||||
include $_SERVER['DOCUMENT_ROOT'] . "/api/api-loader.php";
|
||||
|
||||
// 载入类
|
||||
require_once $_SERVER['DOCUMENT_ROOT'] . '/api/modules/ApiFunction.php';
|
||||
$AFT = new ApiFunction();
|
||||
|
||||
// 获取参数(GET)
|
||||
$GetData = [
|
||||
'session' => urldecode(htmlspecialchars($_GET['session'])),
|
||||
'album'=>urldecode(htmlspecialchars($_GET['album'])),
|
||||
];
|
||||
|
||||
// 函数构建
|
||||
if ($AFT->Get_Session($GetData['session'])) {
|
||||
if (preg_match('/[0-9]+$/',$GetData['album'])) {
|
||||
// 查询数据库
|
||||
$Result_Album = mysqli_query($SqlConn, "SELECT * FROM " . $config['TABLE']['Album'] . " WHERE `album_id`='".$GetData['album']."' ORDER BY `id` DESC");
|
||||
$number = 0;
|
||||
while ($Result_Album_Object = mysqli_fetch_object($Result_Album)) {
|
||||
$array[$number] = [
|
||||
'id' => $Result_Album_Object->id,
|
||||
'url' => $Result_Album_Object->url,
|
||||
'date' => $Result_Album_Object->date,
|
||||
'open' => $Result_Album_Object->open,
|
||||
'uploader' => $Result_Album_Object->uploader,
|
||||
];
|
||||
$number++;
|
||||
}
|
||||
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'SUCCESS',
|
||||
'code' => 200,
|
||||
'info' => '输出成功',
|
||||
'data' => $array
|
||||
];
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'ALBUM_FALSE',
|
||||
'code' => 403,
|
||||
'info' => '参数 Query[album] 缺失/错误',
|
||||
];
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
}
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'SESSION_DENY',
|
||||
'code' => 403,
|
||||
'info' => '参数 Query[session] 缺失/错误',
|
||||
];
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
}
|
||||
echo json_encode($data, JSON_UNESCAPED_UNICODE);
|
63
api/album/select_list.php
Normal file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
/**
|
||||
* nw_love API
|
||||
* @copyright 2022-2023 ZCW and YN. All Rights Reserved.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @var mysqli $SqlConn 数据库链接信息
|
||||
* @var array $config 设置相关的数据
|
||||
*/
|
||||
|
||||
// 载入前置组件
|
||||
include $_SERVER['DOCUMENT_ROOT']."/api/api-loader.php";
|
||||
|
||||
// 载入类
|
||||
require_once $_SERVER['DOCUMENT_ROOT'].'/api/modules/ApiFunction.php';
|
||||
$AFT = new ApiFunction();
|
||||
|
||||
// 获取参数(GET)
|
||||
$GetData = [
|
||||
'session'=>urldecode(htmlspecialchars($_GET['session'])),
|
||||
];
|
||||
|
||||
// 函数构建
|
||||
if ($AFT->Get_Session($GetData['session'])) {
|
||||
// 查询数据库
|
||||
$Result_AlbumList = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['AlbumList']." ORDER BY `date` DESC");
|
||||
$number = 0;
|
||||
while ($Result_AlbumList_Object = mysqli_fetch_object($Result_AlbumList)) {
|
||||
$Result_Album = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['Album']." WHERE album_id='".$Result_AlbumList_Object->id."'");
|
||||
$Result_Album_Object = mysqli_fetch_object($Result_Album);
|
||||
if ($Result_Album_Object->url == null) {
|
||||
$Url = 'https://www.na-wen.love/sources/img/no-image.jpg';
|
||||
} else {
|
||||
$Url = $Result_Album_Object->url.'!pw60';
|
||||
}
|
||||
$array[$number] = [
|
||||
'id'=>$Result_AlbumList_Object->id,
|
||||
'name'=>$Result_AlbumList_Object->name,
|
||||
'date'=>$Result_AlbumList_Object->date,
|
||||
'open'=>$Result_AlbumList_Object->open,
|
||||
'first_image'=>$Url,
|
||||
];
|
||||
$number ++;
|
||||
}
|
||||
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output'=>'SUCCESS',
|
||||
'code'=>200,
|
||||
'info'=>'输出成功',
|
||||
'data'=>$array
|
||||
];
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output'=>'SESSION_DENY',
|
||||
'code'=>403,
|
||||
'info'=>'参数 Query[session] 缺失/错误',
|
||||
];
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
}
|
||||
echo json_encode($data,JSON_UNESCAPED_UNICODE);
|
17
api/api-loader.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
/**
|
||||
* nw_love API head_loader
|
||||
* @copyright 2022-2023 ZCW and YN. All Rights Reserved.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @var string $SqlConn 数据库链接信息
|
||||
* @var string $config 设置相关的数据
|
||||
*/
|
||||
|
||||
// 设置请求头
|
||||
header('Content-Type: application/json;charset=utf-8');
|
||||
|
||||
// 获取数据
|
||||
include $_SERVER['DOCUMENT_ROOT']."/config.inc.php";
|
||||
include $_SERVER['DOCUMENT_ROOT']."/plugins/SqlConn.php";
|
23
api/index.php
Normal file
@ -0,0 +1,23 @@
|
||||
<?php
|
||||
/**
|
||||
* nw_love API
|
||||
* @copyright 2022-2023 ZCW and YN. All Rights Reserved.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @var string $SqlConn 数据库链接信息
|
||||
* @var string $config 设置相关的数据
|
||||
*/
|
||||
|
||||
// 载入前置组件
|
||||
include $_SERVER['DOCUMENT_ROOT']."/api/api-loader.php";
|
||||
|
||||
// 编译数据
|
||||
$data = [
|
||||
'output'=>'SUCCESS',
|
||||
'code'=>200,
|
||||
'info'=>'API正常运行',
|
||||
];
|
||||
|
||||
// 数据输出
|
||||
echo json_encode($data,JSON_UNESCAPED_UNICODE);
|
26
api/modules/ApiFunction.php
Normal file
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
// 获取数据
|
||||
include $_SERVER['DOCUMENT_ROOT']."/config.inc.php";
|
||||
include $_SERVER['DOCUMENT_ROOT']."/plugins/SqlConn.php";
|
||||
|
||||
class ApiFunction
|
||||
{
|
||||
/**
|
||||
* @param $data string
|
||||
* @return bool
|
||||
*/
|
||||
public function Get_Session(string $data): bool {
|
||||
/*
|
||||
* 判断 Session 是否正确
|
||||
*/
|
||||
global $config,$SqlConn;
|
||||
$Result_Session = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['info']." WHERE `value`='session'");
|
||||
$Result_Session_Object = mysqli_fetch_object($Result_Session);
|
||||
if ($data == $Result_Session_Object->data) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
137
api/modules/Mail_Templates.php
Normal file
@ -0,0 +1,137 @@
|
||||
<?php
|
||||
|
||||
class Mail_Templates
|
||||
{
|
||||
// 检查使用邮件发送模板
|
||||
public function Templates($type, $G_user)
|
||||
{
|
||||
if ($type == 'miss') {
|
||||
return $this->MissYou($G_user);
|
||||
} elseif ($type == 'over_miss') {
|
||||
return $this->MissYouOver($G_user);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $G_user 邮件昵称
|
||||
* @return string 返回HTML
|
||||
*/
|
||||
private function MissYou(string $G_user): string
|
||||
{
|
||||
$G_year = date('Y');
|
||||
$G_date = date("Y-m-d H:i:s");
|
||||
return <<<EOF
|
||||
<!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>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<title>XF_TLS_MAIL</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
</head>
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0" width="600" style="border-collapse: collapse;border: 1px solid #cccccc;box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175)">
|
||||
<tr>
|
||||
<td align="center" bgcolor="#70bbd9" style="padding: 30px 0 30px 0;">
|
||||
<img src="https://www.na-wen.love/sources/img/BigLogo.png" alt="EmailLogo" width="358.2" height="97.8" style="display: block;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="padding: 30px 30px 30px 30px;">
|
||||
<tr>
|
||||
<td style="padding: 10px 0px 30px 0px;color: #08212b; font-family: Arial, sans-serif; font-size: 10px;">
|
||||
时间: <font style="font-family: var(--bs-font-monospace)">$G_date</font>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 0px 0px 10px 0px;color: #000000; font-family: Arial, sans-serif; font-size: 24px;">
|
||||
Dear. $G_user
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 0px 5px 5px 0px;color: #000000; font-family: Arial, sans-serif; font-size: 16px;">
|
||||
你的崽崽想你啦~快去回想她一下吧!<br/>
|
||||
<a href="https://www.na-wen.love/tools/miss_you.php" style="text-decoration: none;color: #198754;">去想想TA</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td bgcolor="#f0f0f0" style="padding: 30px 20px 30px 20px;">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td style="font-family: Arial, sans-serif; font-size: 14px;">
|
||||
<font style="color: grey;">© 2022 - $G_year <a style="text-decoration: none;color: #198754;" href="https://www.na-wen.love/">青空</a> All Rights Reserved.</font><br/>
|
||||
<font style="color: grey;">本邮件为 <a href="https://www.x-lf.com" style="text-decoration: none;color: #198754;">XF_Mail</a> 自动发出,请勿直接回复</font>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<tr>
|
||||
<td style="padding: 30px 0 20px 0;"></td>
|
||||
</tr>
|
||||
</html>
|
||||
EOF;
|
||||
}
|
||||
|
||||
private function MissYouOver(string $G_user): string
|
||||
{
|
||||
$G_year = date('Y');
|
||||
$G_date = date("Y-m-d H:i:s");
|
||||
return <<<EOF
|
||||
<!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>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<title>XF_TLS_MAIL</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
</head>
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0" width="600" style="border-collapse: collapse;border: 1px solid #cccccc;box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175)">
|
||||
<tr>
|
||||
<td align="center" bgcolor="#70bbd9" style="padding: 30px 0 30px 0;">
|
||||
<img src="https://www.na-wen.love/sources/img/BigLogo.png" alt="EmailLogo" width="358.2" height="97.8" style="display: block;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="padding: 30px 30px 30px 30px;">
|
||||
<tr>
|
||||
<td style="padding: 10px 0px 30px 0px;color: #08212b; font-family: Arial, sans-serif; font-size: 10px;">
|
||||
时间: <font style="font-family: var(--bs-font-monospace)">$G_date</font>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 0px 0px 10px 0px;color: #000000; font-family: Arial, sans-serif; font-size: 24px;">
|
||||
Dear. $G_user
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 0px 5px 5px 0px;color: #000000; font-family: Arial, sans-serif; font-size: 16px;">
|
||||
你的崽崽今天也想你啦~ 两个人要天天想念彼此哦~
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td bgcolor="#f0f0f0" style="padding: 30px 20px 30px 20px;">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td style="font-family: Arial, sans-serif; font-size: 14px;">
|
||||
<font style="color: grey;">© 2022 - $G_year <a style="text-decoration: none;color: #198754;" href="https://www.na-wen.love/">青空</a> All Rights Reserved.</font><br/>
|
||||
<font style="color: grey;">本邮件为 <a href="https://www.x-lf.com" style="text-decoration: none;color: #198754;">XF_Mail</a> 自动发出,请勿直接回复</font>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<tr>
|
||||
<td style="padding: 30px 0 20px 0;"></td>
|
||||
</tr>
|
||||
</html>
|
||||
EOF;
|
||||
}
|
||||
}
|
71
api/modules/Mailer.php
Normal file
@ -0,0 +1,71 @@
|
||||
<?php
|
||||
|
||||
use PHPMailer\PHPMailer\Exception;
|
||||
use PHPMailer\PHPMailer\PHPMailer;
|
||||
|
||||
require $_SERVER["DOCUMENT_ROOT"].'/plugins/PHPMailer/Exception.php';
|
||||
require $_SERVER["DOCUMENT_ROOT"].'/plugins/PHPMailer/PHPMailer.php';
|
||||
require $_SERVER["DOCUMENT_ROOT"].'/plugins/PHPMailer/SMTP.php';
|
||||
|
||||
require_once $_SERVER['DOCUMENT_ROOT'].'/api/modules/Mail_Templates.php';
|
||||
$SendMail = new Mail_Templates();
|
||||
|
||||
class SendMail
|
||||
{
|
||||
// 发送邮件函数
|
||||
/**
|
||||
* @param string $type 类型
|
||||
* @param string $email 发件对象
|
||||
* @return bool
|
||||
*/
|
||||
public function Mailer(string $type,string $email,string $user): bool {
|
||||
global $SendMail;
|
||||
global $config;
|
||||
$Mail = new PHPMailer(true);
|
||||
try {
|
||||
// 服务器配置
|
||||
$Mail->CharSet = "UTF-8";
|
||||
$Mail->SMTPDebug = 0;
|
||||
$Mail->isSMTP();
|
||||
$Mail->Host = $config['SMTP']['HOST'];
|
||||
$Mail->SMTPAuth = true;
|
||||
$Mail->Username = $config['SMTP']['USER'];
|
||||
$Mail->Password = $config['SMTP']['PASSWORD'];
|
||||
$Mail->SMTPSecure = $this->SSL_Check('secure');
|
||||
$Mail->Port = $this->SSL_Check('port');
|
||||
$Mail->setFrom('noreplay@x-lf.cn', '筱锋机器人');
|
||||
$Mail->addAddress($email);
|
||||
|
||||
$Mail->isHTML(true);
|
||||
$Mail->Subject = '筱锋工具箱 - '.$type; // 邮箱标题
|
||||
$Mail->Body = $SendMail->Templates($type,$user); // 邮箱正文
|
||||
$Mail->AltBody = '筱锋工具箱 - '.$type.':'.$email; // 不支持HTML显示内容
|
||||
|
||||
$Mail->send();
|
||||
return true;
|
||||
} catch (Exception $e) {
|
||||
echo '邮件发送失败:', $Mail->ErrorInfo;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// 检查是否是SSL
|
||||
private function SSL_Check($type) {
|
||||
global $config;
|
||||
if ($type == 'port') {
|
||||
if ($_SERVER['SERVER_PORT'] != '443') {
|
||||
return $config['SMTP']['NOSSL'];
|
||||
} else {
|
||||
return $config['SMTP']['SSL'];
|
||||
}
|
||||
} elseif ($type == 'secure') {
|
||||
if ($_SERVER['SERVER_PORT'] != '443') {
|
||||
return 'TLS';
|
||||
} else {
|
||||
return 'ssl';
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
143
api/tools/miss_you.php
Normal file
@ -0,0 +1,143 @@
|
||||
<?php
|
||||
/**
|
||||
* nw_love API
|
||||
* @copyright 2022-2023 ZCW and YN. All Rights Reserved.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @var mysqli $SqlConn 数据库链接信息
|
||||
* @var array $config 设置相关的数据
|
||||
*/
|
||||
|
||||
// 载入前置组件
|
||||
include $_SERVER['DOCUMENT_ROOT']."/api/api-loader.php";
|
||||
|
||||
// 载入类
|
||||
require_once $_SERVER['DOCUMENT_ROOT'].'/api/modules/ApiFunction.php';
|
||||
require_once $_SERVER['DOCUMENT_ROOT'].'/api/modules/Mailer.php';
|
||||
$AFT = new ApiFunction();
|
||||
$Mail = new SendMail();
|
||||
|
||||
// 获取参数
|
||||
// POST
|
||||
$PostData = file_get_contents('php://input');
|
||||
$PostData = json_decode($PostData,true);
|
||||
|
||||
// 逻辑构建
|
||||
if ($AFT->Get_Session((string)$PostData['session'])) {
|
||||
if (!empty($PostData['user'])) {
|
||||
// 获取用户数据
|
||||
$Result_BoyData = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['info']." WHERE `value`='boy_user'");
|
||||
$Result_GirlData = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['info']." WHERE `value`='girl_user'");
|
||||
$Result_BoyData_Object = mysqli_fetch_object($Result_BoyData);
|
||||
$Result_GirlData_Object = mysqli_fetch_object($Result_GirlData);
|
||||
|
||||
if ($PostData['user'] == $Result_BoyData_Object->data or $PostData['user'] == $Result_GirlData_Object->data) {
|
||||
if ($PostData['miss'] == 1) {
|
||||
// 数据库抽取
|
||||
$Result_DailyData = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['daily']." ORDER BY `id` DESC");
|
||||
$Result_DailyData_Object = mysqli_fetch_object($Result_DailyData);
|
||||
|
||||
// 检查日期是否是今天
|
||||
if ($Result_DailyData_Object->date != date('Y-m-d')) {
|
||||
// 生成今日数据
|
||||
mysqli_query($SqlConn,"INSERT INTO ".$config['TABLE']['daily']." (`date`) VALUES ('".date('Y-m-d')."')");
|
||||
$Result_DailyData = null;
|
||||
$Result_DailyData = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['daily']." ORDER BY `id` DESC");
|
||||
$Result_DailyData_Object = mysqli_fetch_object($Result_DailyData);
|
||||
}
|
||||
|
||||
if ($PostData['user'] == $Result_BoyData_Object->data) {
|
||||
// 男孩想女孩
|
||||
if (!$Result_DailyData_Object->boy_miss) {
|
||||
$Result_Girl = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['info']." WHERE `value`='girl_email'");
|
||||
$Result_Girl_Object = mysqli_fetch_object($Result_Girl);
|
||||
// 修改数据库
|
||||
if (mysqli_query($SqlConn,"UPDATE ".$config['TABLE']['daily']." SET `boy_miss`=1 WHERE `id`='".$Result_DailyData_Object->id."'")) {
|
||||
if ($Result_DailyData_Object->girl_miss) {
|
||||
$Mail->Mailer('over_miss',$Result_Girl_Object->data,$Result_GirlData_Object->data);
|
||||
} else {
|
||||
$Mail->Mailer('miss',$Result_Girl_Object->data,$Result_GirlData_Object->data);
|
||||
}
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'SUCCESS',
|
||||
'code' => 200,
|
||||
'info' => '我想你了!',
|
||||
];
|
||||
}
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'MISS_ALREADY',
|
||||
'code' => 200,
|
||||
'info' => '今天已经想过他了呢',
|
||||
];
|
||||
}
|
||||
} else {
|
||||
// 女孩想男孩
|
||||
if (!$Result_DailyData_Object->girl_miss) {
|
||||
$Result_Boy = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['info']." WHERE `value`='boy_email'");
|
||||
$Result_Boy_Object = mysqli_fetch_object($Result_Boy);
|
||||
// 修改数据库
|
||||
if (mysqli_query($SqlConn,"UPDATE ".$config['TABLE']['daily']." SET `girl_miss`=1 WHERE `id`='".$Result_DailyData_Object->id."'")) {
|
||||
if ($Result_DailyData_Object->boy_miss) {
|
||||
$Mail->Mailer('over_miss',$Result_Boy_Object->data,$Result_BoyData_Object->data);
|
||||
} else {
|
||||
$Mail->Mailer('miss',$Result_Boy_Object->data,$Result_BoyData_Object->data);
|
||||
}
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'SUCCESS',
|
||||
'code' => 200,
|
||||
'info' => '我想你了!',
|
||||
];
|
||||
}
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'MISS_ALREADY',
|
||||
'code' => 200,
|
||||
'info' => '今天已经想过他了呢',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'MISS_ERROR',
|
||||
'code' => 403,
|
||||
'info' => '参数 Post[miss] 参数错误',
|
||||
];
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
}
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'USER_DENY',
|
||||
'code' => 403,
|
||||
'info' => '参数 Cookie[user] 非法用户!',
|
||||
];
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
}
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'USER_ERROR',
|
||||
'code' => 403,
|
||||
'info' => '参数 Cookie[user] 非法请求!',
|
||||
];
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
}
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'SESSION_DENY',
|
||||
'code' => 403,
|
||||
'info' => '参数 Post[session] 缺失/错误',
|
||||
];
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
}
|
||||
echo json_encode($data, JSON_UNESCAPED_UNICODE);
|
145
api/tools/miss_you_logs.php
Normal file
@ -0,0 +1,145 @@
|
||||
<?php
|
||||
/**
|
||||
* nw_love API
|
||||
* @copyright 2022-2023 ZCW and YN. All Rights Reserved.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @var mysqli $SqlConn 数据库链接信息
|
||||
* @var array $config 设置相关的数据
|
||||
*/
|
||||
|
||||
// 载入前置组件
|
||||
include $_SERVER['DOCUMENT_ROOT']."/api/api-loader.php";
|
||||
|
||||
// 载入类
|
||||
require_once $_SERVER['DOCUMENT_ROOT'].'/api/modules/ApiFunction.php';
|
||||
$AFT = new ApiFunction();
|
||||
|
||||
// 获取参数
|
||||
// GET
|
||||
$GetData = [
|
||||
'session'=>urldecode(htmlspecialchars($_GET['session'])),
|
||||
'type'=>urldecode(htmlspecialchars($_GET['type'])),
|
||||
'date'=>urldecode(htmlspecialchars($_GET['date']))
|
||||
];
|
||||
|
||||
// 函数构建
|
||||
if ($AFT->Get_Session($GetData['session'])) {
|
||||
// 类型选择
|
||||
if ($GetData['type'] == 'today') {
|
||||
// 数据库抽取
|
||||
$Result_DailyData = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['daily']." ORDER BY `id` DESC");
|
||||
$Result_DailyData_Object = mysqli_fetch_object($Result_DailyData);
|
||||
|
||||
// 检查日期是否是今天
|
||||
if ($Result_DailyData_Object->date != date('Y-m-d')) {
|
||||
// 生成今日数据
|
||||
mysqli_query($SqlConn,"INSERT INTO ".$config['TABLE']['daily']." (`date`) VALUES ('".date('Y-m-d')."')");
|
||||
$Result_DailyData = null;
|
||||
$Result_DailyData = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['daily']." ORDER BY `id` DESC");
|
||||
$Result_DailyData_Object = mysqli_fetch_object($Result_DailyData);
|
||||
}
|
||||
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'SUCCESS',
|
||||
'code' => 200,
|
||||
'info' => '输出成功',
|
||||
'data' => $Result_DailyData_Object,
|
||||
];
|
||||
} elseif ($GetData['type'] == 'all') {
|
||||
// 数据库抽取
|
||||
$Result_DailyData = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['daily']." ORDER BY `id` DESC");
|
||||
$Result_DailyData_Object = mysqli_fetch_object($Result_DailyData);
|
||||
|
||||
// 检查日期是否是今天
|
||||
if ($Result_DailyData_Object->date != date('Y-m-d')) {
|
||||
// 生成今日数据
|
||||
mysqli_query($SqlConn,"INSERT INTO ".$config['TABLE']['daily']." (`date`) VALUES ('".date('Y-m-d')."')");
|
||||
}
|
||||
|
||||
$Result_DailyData = null;
|
||||
$Result_DailyData = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['daily']." ORDER BY `id` DESC");
|
||||
$num = 0;
|
||||
while ($Result_DailyData_Object = mysqli_fetch_object($Result_DailyData)) {
|
||||
$Array[$num] = [
|
||||
'id'=>$Result_DailyData_Object->id,
|
||||
'date'=>$Result_DailyData_Object->date,
|
||||
'boy_miss'=>$Result_DailyData_Object->boy_miss,
|
||||
'girl_miss'=>$Result_DailyData_Object->girl_miss,
|
||||
'boy_sleep_time'=>$Result_DailyData_Object->boy_sleep_time,
|
||||
'girl_sleep_time'=>$Result_DailyData_Object->girl_sleep_time,
|
||||
'boy_getup_time'=>$Result_DailyData_Object->boy_getup_time,
|
||||
'girl_getup_time'=>$Result_DailyData_Object->girl_getup_time
|
||||
];
|
||||
$num ++;
|
||||
}
|
||||
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'SUCCESS',
|
||||
'code' => 200,
|
||||
'info' => '输出成功',
|
||||
'data' => $Array,
|
||||
];
|
||||
} elseif ($GetData['type'] == 'single') {
|
||||
if (!empty($GetData['date'])) {
|
||||
// 数据库抽取
|
||||
$Result_DailyData = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['daily']." ORDER BY `id` DESC");
|
||||
$Result_DailyData_Object = mysqli_fetch_object($Result_DailyData);
|
||||
// 检查日期是否是今天
|
||||
if ($Result_DailyData_Object->date != date('Y-m-d')) {
|
||||
// 生成今日数据
|
||||
mysqli_query($SqlConn,"INSERT INTO ".$config['TABLE']['daily']." (`date`) VALUES ('".date('Y-m-d')."')");
|
||||
}
|
||||
|
||||
$Result_DailyData = null;
|
||||
$Result_DailyData = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['daily']." WHERE `date`='".$GetData['date']."'");
|
||||
$Result_DailyData_Object = mysqli_fetch_object($Result_DailyData);
|
||||
|
||||
if (!empty($Result_DailyData_Object)) {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'SUCCESS',
|
||||
'code' => 200,
|
||||
'info' => '输出成功',
|
||||
'data' => $Result_DailyData_Object,
|
||||
];
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'DATA_NONE',
|
||||
'code' => 403,
|
||||
'info' => '没有数据',
|
||||
];
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
}
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'DATE_NONE',
|
||||
'code' => 403,
|
||||
'info' => '参数 Query[date] 缺失/错误',
|
||||
];
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
}
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'TYPE_ERROR',
|
||||
'code' => 403,
|
||||
'info' => '参数 Query[type] 缺失/错误',
|
||||
];
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
}
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'SESSION_DENY',
|
||||
'code' => 403,
|
||||
'info' => '参数 Query[session] 缺失/错误',
|
||||
];
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
}
|
||||
echo json_encode($data, JSON_UNESCAPED_UNICODE);
|
53
api/web/index.php
Normal file
@ -0,0 +1,53 @@
|
||||
<?php
|
||||
/**
|
||||
* nw_love API
|
||||
* @copyright 2022-2023 ZCW and YN. All Rights Reserved.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @var mysqli $SqlConn 数据库链接信息
|
||||
* @var array $config 设置相关的数据
|
||||
*/
|
||||
|
||||
// 载入前置组件
|
||||
include $_SERVER['DOCUMENT_ROOT']."/api/api-loader.php";
|
||||
|
||||
// 载入类
|
||||
require_once $_SERVER['DOCUMENT_ROOT'].'/api/modules/ApiFunction.php';
|
||||
$AFT = new ApiFunction();
|
||||
|
||||
// 获取参数(GET)
|
||||
$GetData = [
|
||||
'session'=>urldecode(htmlspecialchars($_GET['session'])),
|
||||
];
|
||||
|
||||
// 构建函数
|
||||
if ($AFT->Get_Session($GetData['session'])) { // 判断密钥正确
|
||||
// 数据查询
|
||||
$Result_info = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['info']." ORDER BY id");
|
||||
while ($Result_info_Object = mysqli_fetch_object($Result_info)) {
|
||||
if ($Result_info_Object->value != 'session') { // 去除密钥输出
|
||||
$Array[$Result_info_Object->value] = [
|
||||
'data'=>$Result_info_Object->data,
|
||||
'autoload'=>$Result_info_Object->autoload,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output'=>'SUCCESS',
|
||||
'code'=>200,
|
||||
'info'=>'DATA OUTPUT DONE',
|
||||
'data'=>$Array,
|
||||
];
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output'=>'SESSION_DENY',
|
||||
'code'=>403,
|
||||
'info'=>'参数 Query[session] 缺失/错误',
|
||||
];
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
}
|
||||
echo json_encode($data,JSON_UNESCAPED_UNICODE);
|
71
auth.php
Normal file
@ -0,0 +1,71 @@
|
||||
<?php
|
||||
// 载入
|
||||
include_once $_SERVER['DOCUMENT_ROOT'].'/modules/header-loader.php';
|
||||
|
||||
if (!empty($_COOKIE['user'])) {
|
||||
header('location: /');
|
||||
}
|
||||
|
||||
/**
|
||||
* @var array $Normal
|
||||
* @var array $config
|
||||
*/
|
||||
|
||||
$page = 1;
|
||||
?>
|
||||
<!doctype html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport"
|
||||
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title><?php echo $Normal['data']['web_title']['data'] ?> - <?php echo $Normal['data']['web_desc']['data'] ?></title>
|
||||
<link rel="icon" href="<?php echo $Normal['data']['web_icon']['data'] ?>">
|
||||
<meta name="description" content="<?php echo $Normal['data']['web_desc']['data'] ?>">
|
||||
<meta name="keywords" content="<?php echo $Normal['data']['web_keyword'] ?>"></meta>
|
||||
<meta name="full-screen" content="yes"><!--UC强制全屏-->
|
||||
<meta name="browsermode" content="application"><!--UC应用模式-->
|
||||
<meta name="x5-fullscreen" content="true"><!--QQ强制全屏-->
|
||||
<meta name="x5-page-mode" content="app"><!--QQ应用模式-->
|
||||
<!-- CSS -->
|
||||
<link rel="stylesheet" href="/sources/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="https://at.alicdn.com/t/c/font_3866622_q7rcnjbxpn.css">
|
||||
<link rel="stylesheet" href="/sources/icons/bootstrap-icons.css">
|
||||
</head>
|
||||
<body style="background-color: rgba(255,192,203,0.25)">
|
||||
<!-- 页首 -->
|
||||
<?php include $_SERVER['DOCUMENT_ROOT']."/modules/header.php"; ?>
|
||||
<!-- 页中 -->
|
||||
<div class="container my-5">
|
||||
<div class="row text-center">
|
||||
<div class="col-12">
|
||||
<div class="card shadow rounded-3" style="background-color: rgba(255,192,203,0.15)">
|
||||
<div class="card-body">
|
||||
<form action="/plugins/login_check.php" method="post">
|
||||
<div class="row">
|
||||
<div class="col-12 fs-3 fw-bold my-3">登录</div>
|
||||
<div class="col-12 mb-3 text-start">
|
||||
<label for="exampleFormControlInput1" class="form-label"><i class="iconfont icon-yonghu"></i> 账户</label>
|
||||
<input type="text" class="form-control" id="user" name="user" placeholder="Petrichor" required>
|
||||
</div>
|
||||
<div class="col-12 mb-3 text-start">
|
||||
<label for="exampleFormControlInput1" class="form-label"><i class="iconfont icon-mima"></i> 密码</label>
|
||||
<input type="password" class="form-control" id="password" name="password" placeholder="******" required>
|
||||
</div>
|
||||
<div class="col-12 my-3"><button class="btn btn-info" type="submit">> 登入 <</button></div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 页尾 -->
|
||||
<?php include $_SERVER['DOCUMENT_ROOT']."/modules/footer.php"; ?>
|
||||
<!-- 底部菜单 -->
|
||||
<?php include $_SERVER['DOCUMENT_ROOT']."/modules/menu.php"; ?>
|
||||
</body>
|
||||
<script src="/sources/js/bootstrap.min.js"></script>
|
||||
<script src="/sources/js/bootstrap.bundle.min.js"></script>
|
||||
</html>
|
52
demo.php
Normal file
@ -0,0 +1,52 @@
|
||||
<!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>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<title>XF_TLS_MAIL</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
</head>
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0" width="600" style="border-collapse: collapse;border: 1px solid #cccccc;box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175)">
|
||||
<tr>
|
||||
<td align="center" bgcolor="#70bbd9" style="padding: 30px 0 30px 0;">
|
||||
<img src="https://www.na-wen.love/sources/img/BigLogo.png" alt="EmailLogo" width="358.2" height="97.8" style="display: block;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="padding: 30px 30px 30px 30px;">
|
||||
<tr>
|
||||
<td style="padding: 10px 0px 30px 0px;color: #08212b; font-family: Arial, sans-serif; font-size: 10px;">
|
||||
时间: <font style="font-family: var(--bs-font-monospace)">$G_date</font>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 0px 0px 10px 0px;color: #000000; font-family: Arial, sans-serif; font-size: 24px;">
|
||||
Dear. $G_user
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 0px 5px 5px 0px;color: #000000; font-family: Arial, sans-serif; font-size: 16px;">
|
||||
你的崽崽想你啦~快去回想她一下吧!<br/>
|
||||
<a href="https://www.na-wen.love/tools/miss_you.php" style="text-decoration: none;color: #198754;">去想想TA</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td bgcolor="#f0f0f0" style="padding: 30px 20px 30px 20px;">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td style="font-family: Arial, sans-serif; font-size: 14px;">
|
||||
<font style="color: grey;">© 2022 - $G_year <a style="text-decoration: none;color: #198754;" href="https://www.na-wen.love/">青空</a> All Rights Reserved.</font><br/>
|
||||
<font style="color: grey;">本邮件为 <a href="https://www.x-lf.com" style="text-decoration: none;color: #198754;">XF_Mail</a> 自动发出,请勿直接回复</font>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<tr>
|
||||
<td style="padding: 30px 0 20px 0;"></td>
|
||||
</tr>
|
||||
</html>
|
228
index.php
Normal file
@ -0,0 +1,228 @@
|
||||
<?php
|
||||
// 载入
|
||||
include_once $_SERVER['DOCUMENT_ROOT'].'/modules/header-loader.php';
|
||||
require_once $_SERVER['DOCUMENT_ROOT'].'/modules/Functions.php';
|
||||
$F = new Functions();
|
||||
|
||||
/**
|
||||
* @var array $Normal
|
||||
* @var array $config
|
||||
*/
|
||||
|
||||
$page = 1;
|
||||
|
||||
// MissYou API
|
||||
$ApiMiss_url = $F->Current_HTTP().'/api/tools/miss_you_logs.php?type=all&session='.$config['SESSION'];
|
||||
$ApiMiss_ch = curl_init($ApiMiss_url);
|
||||
curl_setopt($ApiMiss_ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
|
||||
curl_setopt($ApiMiss_ch, CURLOPT_RETURNTRANSFER, true);
|
||||
$ApiMiss = curl_exec($ApiMiss_ch);
|
||||
$ApiMiss = json_decode($ApiMiss,true);
|
||||
?>
|
||||
<!doctype html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport"
|
||||
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title><?php echo $Normal['data']['web_title']['data'] ?> - <?php echo $Normal['data']['web_desc']['data'] ?></title>
|
||||
<link rel="icon" href="<?php echo $Normal['data']['web_icon']['data'] ?>">
|
||||
<meta name="description" content="<?php echo $Normal['data']['web_desc']['data'] ?>">
|
||||
<meta name="keywords" content="<?php echo $Normal['data']['web_keyword'] ?>">
|
||||
<meta name="full-screen" content="yes"><!--UC强制全屏-->
|
||||
<meta name="browsermode" content="application"><!--UC应用模式-->
|
||||
<meta name="x5-fullscreen" content="true"><!--QQ强制全屏-->
|
||||
<meta name="x5-page-mode" content="app"><!--QQ应用模式-->
|
||||
<!-- CSS -->
|
||||
<link rel="stylesheet" href="/sources/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="https://at.alicdn.com/t/c/font_3866622_ur298ayiu2.css">
|
||||
<link rel="stylesheet" href="/sources/icons/bootstrap-icons.css">
|
||||
</head>
|
||||
<body style="background-color: rgba(255,192,203,0.25)">
|
||||
<!-- 页首 -->
|
||||
<?php include $_SERVER['DOCUMENT_ROOT']."/modules/header.php"; ?>
|
||||
<!-- 页中 -->
|
||||
<div class="container">
|
||||
<div class="row text-center">
|
||||
<div class="col-12 mt-4">
|
||||
<div class="progress" role="progressbar">
|
||||
<div class="progress-bar progress-bar-striped progress-bar-animated" style="width: <?php echo round((time()-strtotime(date('Y-m-d').'00:00'))/86400,2)*100 ?>%;background-color: #ffc0cb">今天过了<?php echo round((time()-strtotime(date('Y-m-d').'00:00'))/86400,2)*100 ?>%</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 my-5">
|
||||
<div class="row">
|
||||
<div class="col-4">
|
||||
<div class="row">
|
||||
<div class="col-12 mb-1"><img src="https://q1.qlogo.cn/g?b=qq&nk=<?php echo $Normal['data']['boy_qq']['data'] ?>&s=640" class="rounded-circle container-fluid"></div>
|
||||
<div class="col-12"><?php echo $Normal['data']['boy_name']['data'] ?></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4"><img src="/sources/img/love.png" class="container-fluid"></div>
|
||||
<div class="col-4">
|
||||
<div class="row">
|
||||
<div class="col-12 mb-1"><img src="https://q1.qlogo.cn/g?b=qq&nk=<?php echo $Normal['data']['girl_qq']['data'] ?>&s=640" class="rounded-circle container-fluid"></div>
|
||||
<div class="col-12"><?php echo $Normal['data']['girl_name']['data'] ?></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
if (!empty($_COOKIE['user'])) {
|
||||
if ($_COOKIE['user'] == $Normal['data']['boy_user']['data']) {
|
||||
// 判断为是否是男方
|
||||
if (!$ApiMiss['data'][0]['boy_miss']) {
|
||||
?>
|
||||
<div class="col-12 mb-3">
|
||||
<div class="card shadow-sm rounded-3 border-light" style="background-color: rgba(255,192,203,0.2); color: #ff8097">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-6 align-self-center fs-3 fw-bold" style="color: #ff8097">想念对方</div>
|
||||
<div class="col-6 align-self-center" id="button_miss">
|
||||
<button class="btn btn-outline-info text-center" onclick="miss_button()"><i class="bi bi-balloon-heart"></i> 想你了</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
} else {
|
||||
// 判断为女方
|
||||
if (!$ApiMiss['data'][0]['girl_miss']) {
|
||||
?>
|
||||
<div class="col-12 mb-3">
|
||||
<div class="card shadow-sm rounded-3 border-light" style="background-color: rgba(255,192,203,0.2); color: #ff8097">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-6 align-self-center fs-3 fw-bold" style="color: #ff8097">想念对方</div>
|
||||
<div class="col-6 align-self-center" id="button_miss">
|
||||
<button class="btn btn-outline-info text-center" onclick="miss_button()"><i class="bi bi-balloon-heart"></i> 想你了</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<div class="col-12 mb-3">
|
||||
<div class="card shadow-sm rounded-3 border-light" style="background-color: rgba(255,192,203,0.2); color: #ff8097">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-12 fs-3 fw-bold">我们相恋了 <?php echo round((time()-strtotime($Normal['data']['in_love_time']['data']))/86400+1,2) ?> 天</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 mb-3">
|
||||
<div class="card shadow-sm rounded-3 border-light" style="background-color: rgba(0,157,255,0.2); color: #266dcc">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-6 text-start fw-bold"><?php echo $Normal['data']['girl_name']['data'] ?> の 生日</div>
|
||||
<div class="col-6 text-end">
|
||||
<div class="row">
|
||||
<div class="col-12 fw-bold"><?php echo $Normal['data']['girl_birthday']['data'] ?></div>
|
||||
<div class="col-12">还有
|
||||
<?php
|
||||
$date = date("Y").'-'.substr($Normal['data']['girl_birthday']['data'],5,5);
|
||||
$date_unix = strtotime($date);
|
||||
if (time() >= $date_unix) {
|
||||
$date = (date("Y")+1).'-'.substr($Normal['data']['girl_birthday']['data'],5,5);
|
||||
$date_unix = strtotime($date);
|
||||
}
|
||||
echo round(($date_unix-time())/86400 + 1,0);
|
||||
?>
|
||||
天</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 mb-3">
|
||||
<div class="card shadow-sm rounded-3 border-light" style="background-color: rgba(0,157,255,0.2); color: #266dcc">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-6 text-start fw-bold"><?php echo $Normal['data']['boy_name']['data'] ?> の 生日</div>
|
||||
<div class="col-6 text-end">
|
||||
<div class="row">
|
||||
<div class="col-12 fw-bold"><?php echo $Normal['data']['boy_birthday']['data'] ?></div>
|
||||
<div class="col-12">还有
|
||||
<?php
|
||||
$date = date("Y").'-'.substr($Normal['data']['boy_birthday']['data'],5,5);
|
||||
$date_unix = strtotime($date);
|
||||
if (time() >= $date_unix) {
|
||||
$date = (date("Y")+1).'-'.substr($Normal['data']['girl_birthday']['data'],5,5);
|
||||
$date_unix = strtotime($date);
|
||||
}
|
||||
echo round(($date_unix-time())/86400 + 1,0);
|
||||
?>
|
||||
|
||||
天</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 mt-3">
|
||||
<div class="col-12"><a href="https://beian.miit.gov.cn/" class="text-decoration-none text-info" target="_blank"><i class="iconfont icon-ICPbeian"></i> <?php echo $Normal['data']['web_icp']['data'] ?></a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 底部菜单 -->
|
||||
<?php include $_SERVER['DOCUMENT_ROOT']."/modules/menu.php"; ?>
|
||||
</body>
|
||||
<script type="text/javascript" src="/sources/js/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="/sources/js/bootstrap.min.js"></script>
|
||||
<script type="text/javascript" src="/sources/js/bootstrap.bundle.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
const LiveToast = document.getElementById('liveToast')
|
||||
const toast = new bootstrap.Toast(LiveToast)
|
||||
function miss_button() {
|
||||
$.ajax({
|
||||
async: true,
|
||||
type: "GET",
|
||||
url: "/plugins/miss_you.php",
|
||||
success: function(result) {
|
||||
if (result == 'SUCCESS') {
|
||||
$('#ajax_return').text('你想TA了,并传达给了TA~')
|
||||
toast.show()
|
||||
$('#button_miss').html('<button class="btn btn-success text-center" disabled><i class="bi bi-balloon-heart"></i> 想过啦</button>')
|
||||
setTimeout(function () {
|
||||
window.location.reload()
|
||||
}, 2000)
|
||||
} else if (result == 'MISS_ALREADY') {
|
||||
$('#ajax_return').text('今天想过他了')
|
||||
toast.show()
|
||||
} else if (result == 'MISS_ERROR') {
|
||||
$('#ajax_return').text('参数错误')
|
||||
toast.show()
|
||||
} else if (result == 'USER_DENY') {
|
||||
$('#ajax_return').text('登陆错误')
|
||||
toast.show()
|
||||
} else if (result == 'USER_ERROR') {
|
||||
$('#ajax_return').text('登陆错误')
|
||||
toast.show()
|
||||
} else {
|
||||
$('#ajax_return').text('未知反应')
|
||||
toast.show()
|
||||
}
|
||||
},
|
||||
error: function () {
|
||||
$('#ajax_return').text('错误了,问问管理员吧')
|
||||
toast.show()
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function miss_button_notuser() {
|
||||
$('#button_miss').html('<button class="btn btn-danger text-center" disabled>你有问题</button>')
|
||||
}
|
||||
</script>
|
||||
</html>
|
16
modules/Functions.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
// 获取数据
|
||||
include $_SERVER['DOCUMENT_ROOT']."/config.inc.php";
|
||||
|
||||
|
||||
class Functions
|
||||
{
|
||||
public function Current_HTTP() {
|
||||
if ($_SERVER['SERVER_PORT'] == 443) {
|
||||
return 'https://'.$_SERVER['HTTP_HOST'];
|
||||
} else {
|
||||
return 'http://'.$_SERVER['HTTP_HOST'];
|
||||
}
|
||||
}
|
||||
}
|
15
modules/footer.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
/**
|
||||
* @var string $Normal 基本网站信息API获取
|
||||
*/
|
||||
?>
|
||||
<footer>
|
||||
<div class="container-fluid sticky-bottom">
|
||||
<div class="row my-5 text-center">
|
||||
<div class="col-12">© <?php echo date('Y') ?> <a href="https://www.na-wen.love/" class="text-decoration-none text-info" target="_blank">青空</a>. All Rights Reserved.</div>
|
||||
<div class="col-12"><a href="https://beian.miit.gov.cn/" class="text-decoration-none text-info" target="_blank"><i class="iconfont icon-ICPbeian"></i> <?php echo $Normal['data']['web_icp']['data'] ?></a></div>
|
||||
<div class="col-12"><a href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=<?php echo $Normal['data']['web_beian_02']['data'] ?>" class="text-decoration-none text-info" target="_blank"><i class="iconfont icon-beianxinxi-ICP-gonganbeian"></i> <?php echo $Normal['data']['web_beian_01']['data'].' '.$Normal['data']['web_beian_02']['data'].'号' ?></a></div>
|
||||
<div class="col-12"><a href="https://icp.gov.moe/?keyword=20230227" class="text-decoration-none text-info" target="_blank">萌ICP备20230227号</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
16
modules/header-loader.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
// 获取数据
|
||||
include $_SERVER['DOCUMENT_ROOT']."/config.inc.php";
|
||||
|
||||
// 获取类
|
||||
require_once $_SERVER['DOCUMENT_ROOT'].'/modules/Functions.php';
|
||||
$F = new Functions();
|
||||
|
||||
// 网站基本数据
|
||||
/** @var string $config */
|
||||
$Normal_url = $F->Current_HTTP().'/api/web/index.php?session='.$config['SESSION'];
|
||||
$Normal_ch = curl_init($Normal_url);
|
||||
curl_setopt($Normal_ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
|
||||
curl_setopt($Normal_ch, CURLOPT_RETURNTRANSFER, true);
|
||||
$Normal = curl_exec($Normal_ch);
|
||||
$Normal = json_decode($Normal,true);
|
15
modules/header.php
Normal file
@ -0,0 +1,15 @@
|
||||
<header>
|
||||
<?PHP
|
||||
if ($_COOKIE['user'] == null) {
|
||||
?>
|
||||
<div class="container-fluid">
|
||||
<div class="row mt-4">
|
||||
<div class="col-12 text-center">
|
||||
<a class="btn btn-sm btn-light text-white rounded-5" style="background-color: #ffc0cb;" href="/auth.php" role="button"> · 访客方式 · </a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</header>
|
46
modules/menu.php
Normal file
@ -0,0 +1,46 @@
|
||||
<?php
|
||||
function color($num) {
|
||||
global $page;
|
||||
if ($num == $page) {
|
||||
echo 'color: #ff8097';
|
||||
} else {
|
||||
echo 'color: #000000';
|
||||
}
|
||||
}
|
||||
?>
|
||||
<div class="container-fluid fixed-bottom" style="background-color: #ffc0cb">
|
||||
<div class="row text-center">
|
||||
<div class="col-3">
|
||||
<a href="/index.php" class="text-decoration-none" style="<?php color(1); ?>">
|
||||
<div class="row my-1">
|
||||
<div class="col-12"><i class="iconfont icon-shouye"></i></div>
|
||||
<div class="col-12">首页</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<a href="/album.php" class="text-decoration-none" style="<?php color(2); ?>">
|
||||
<div class="row my-1">
|
||||
<div class="col-12"><i class="iconfont icon-xiangce"></i></div>
|
||||
<div class="col-12">掠影</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<a href="/tools.php" class="text-decoration-none" style="<?php color(3); ?>">
|
||||
<div class="row my-1">
|
||||
<div class="col-12"><i class="iconfont icon-gongneng"></i></div>
|
||||
<div class="col-12">功能</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<a href="/personal.php" class="text-decoration-none" style="<?php color(4); ?>">
|
||||
<div class="row my-1">
|
||||
<div class="col-12"><i class="bi bi-person"></i></div>
|
||||
<div class="col-12">个人</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
0
nginx.htaccess
Normal file
1
personal.php
Normal file
@ -0,0 +1 @@
|
||||
<?php
|
215
picture.php
Normal file
@ -0,0 +1,215 @@
|
||||
<?php
|
||||
// 载入
|
||||
include_once $_SERVER['DOCUMENT_ROOT'].'/modules/header-loader.php';
|
||||
// 获取类
|
||||
require_once $_SERVER['DOCUMENT_ROOT'].'/modules/Functions.php';
|
||||
$F = new Functions();
|
||||
|
||||
/**
|
||||
* @var array $Normal 普通事件API
|
||||
* @var array $config 配置文件
|
||||
* @var array $ApiAlbum 图库API
|
||||
*/
|
||||
|
||||
$ApiAlbumList_url = $F->Current_HTTP().'/api/album/select_list.php?session='.$config['SESSION'];
|
||||
$ApiAlbumList_ch = curl_init($ApiAlbumList_url);
|
||||
curl_setopt($ApiAlbumList_ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
|
||||
curl_setopt($ApiAlbumList_ch, CURLOPT_RETURNTRANSFER, true);
|
||||
$ApiAlbumList = curl_exec($ApiAlbumList_ch);
|
||||
$ApiAlbumList = json_decode($ApiAlbumList,true);
|
||||
|
||||
if (!empty(urldecode(htmlspecialchars($_GET['album'])))) {
|
||||
$ApiAlbum_url = $F->Current_HTTP().'/api/album/select.php?session='.$config['SESSION'].'&album='.urldecode(htmlspecialchars($_GET['album']));
|
||||
$ApiAlbum_ch = curl_init($ApiAlbum_url);
|
||||
curl_setopt($ApiAlbum_ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
|
||||
curl_setopt($ApiAlbum_ch, CURLOPT_RETURNTRANSFER, true);
|
||||
$ApiAlbum = curl_exec($ApiAlbum_ch);
|
||||
$ApiAlbum = json_decode($ApiAlbum,true);
|
||||
} else {
|
||||
header('location: ./album.php');
|
||||
}
|
||||
|
||||
$page = 2;
|
||||
|
||||
if (empty($_COOKIE['user'])) {
|
||||
$num = 0;
|
||||
while ($ApiAlbumList['data'][$num]['id'] != null) {
|
||||
if ($ApiAlbumList['data'][$num]['id'] == urldecode(htmlspecialchars($_GET['album']))) {
|
||||
if ($ApiAlbumList['data'][$num]['open'] == "0") {
|
||||
header('location: ./album.php');
|
||||
}
|
||||
}
|
||||
$num ++;
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!doctype html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport"
|
||||
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title><?php echo $Normal['data']['web_title']['data'] ?> - <?php echo $Normal['data']['web_desc']['data'] ?></title>
|
||||
<link rel="icon" href="<?php echo $Normal['data']['web_icon']['data'] ?>">
|
||||
<meta name="description" content="<?php echo $Normal['data']['web_desc']['data'] ?>">
|
||||
<meta name="keywords" content="<?php echo $Normal['data']['web_keyword'] ?>"></meta>
|
||||
<meta name="full-screen" content="yes"><!--UC强制全屏-->
|
||||
<meta name="browsermode" content="application"><!--UC应用模式-->
|
||||
<meta name="x5-fullscreen" content="true"><!--QQ强制全屏-->
|
||||
<meta name="x5-page-mode" content="app"><!--QQ应用模式-->
|
||||
<!-- CSS -->
|
||||
<link rel="stylesheet" href="/sources/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="https://at.alicdn.com/t/c/font_3866622_ur298ayiu2.css">
|
||||
<link rel="stylesheet" href="/sources/icons/bootstrap-icons.css">
|
||||
</head>
|
||||
<body style="background-color: rgba(255,192,203,0.25)">
|
||||
<!-- 页首 -->
|
||||
<?php include $_SERVER['DOCUMENT_ROOT']."/modules/header.php"; ?>
|
||||
<!-- 页中 -->
|
||||
<div class="container-fluid my-4">
|
||||
<div class="row">
|
||||
<div class="col-6 mb-3 text-start">
|
||||
<a href="./album.php" class="btn btn-outline-info"><i class="bi bi-backspace"></i> 返回主页</a>
|
||||
</div>
|
||||
<?PHP
|
||||
if (!empty($_COOKIE['user'])) {
|
||||
?>
|
||||
<div class="col-6 mb-3 text-end">
|
||||
<button class="btn btn-outline-info text-end" data-bs-toggle="modal" data-bs-target="#exampleModal"><i class="bi bi-cloud-plus"></i> 新增图片</button>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<div class="col-12 d-flex flex-wrap text-center" id="ImageFile">
|
||||
<?PHP
|
||||
$num = 0;
|
||||
while ($ApiAlbum['data'][$num]['id'] != null) {
|
||||
if ($ApiAlbum['data'][$num]['open'] == 1) {
|
||||
?>
|
||||
<a class="p-1" href="./picture_look.php?album=<?php echo urldecode(htmlspecialchars($_GET['album'])) ?>&id=<?php echo $num ?>"><img src="<?php echo $ApiAlbum['data'][$num]['url'] ?>!pw80" style="width: 50px" class="rounded-1"></a>
|
||||
<?php
|
||||
} else {
|
||||
if ($ApiAlbum['data'][$num]['uploader'] == $_COOKIE['user']) {
|
||||
?>
|
||||
<a class="p-1" href="./picture_look.php?album=<?php echo urldecode(htmlspecialchars($_GET['album'])) ?>&id=<?php echo $num ?>"><img src="<?php echo $ApiAlbum['data'][$num]['url'] ?>!pw80" style="width: 50px" class="rounded-1"></a>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
$num++;
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<div class="col-12 mt-3 text-center">
|
||||
<div class="col-12"><a href="https://beian.miit.gov.cn/" class="text-decoration-none text-info" target="_blank"><i class="iconfont icon-ICPbeian"></i> <?php echo $Normal['data']['web_icp']['data'] ?></a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Modal -->
|
||||
<div class="modal fade" id="exampleModal" tabindex="-1" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5">图片上传</h1>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form method="post" id="forms" action="#" onsubmit="return false" enctype ='multipart/form-data'>
|
||||
<div class="row">
|
||||
<div class="col-12 mb-3">
|
||||
<label class="form-check-label">图库编号</label>
|
||||
<input type="text" class="form-control" id="P_album" name="P_album" readonly value="<?php echo urldecode(htmlspecialchars($_GET['album'])) ?>">
|
||||
</div>
|
||||
<div class="col-12 mb-3">
|
||||
<input type="file" class="form-control" id="P_image[]" name="P_image[]" multiple accept='image/*'>
|
||||
</div>
|
||||
<div class="col-12 mb-3">
|
||||
<div class="form-check form-switch">
|
||||
<input class="form-check-input" type="checkbox" role="switch" id="P_open" name="P_open" checked>
|
||||
<label class="form-check-label">这组照片是否公开(不开放对方也看不见)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" id="button_cancel" class="btn btn-danger" data-bs-dismiss="modal"><i class="bi bi-x-circle"></i> 取消创建</button>
|
||||
<button type="button" id="button_upload" class="btn btn-success" onclick="upload()"><i class="bi bi-cloud-arrow-up"></i> 上传图片</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Toast -->
|
||||
<div class="toast-container position-fixed top-0 start-0 p-3">
|
||||
<div id="liveToast" class="toast" role="alert" aria-live="assertive" aria-atomic="true">
|
||||
<div class="toast-header">
|
||||
<i class="bi bi-info-circle"></i><strong class="me-auto">提醒</strong>
|
||||
<small>现在</small>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="toast-body" id="ajax_return"></div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 底部菜单 -->
|
||||
<?php include $_SERVER['DOCUMENT_ROOT']."/modules/menu.php"; ?>
|
||||
</body>
|
||||
<script type="text/javascript" src="/sources/js/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="/sources/js/bootstrap.min.js"></script>
|
||||
<script type="text/javascript" src="/sources/js/bootstrap.bundle.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
const LiveToast = document.getElementById('liveToast')
|
||||
const toast = new bootstrap.Toast(LiveToast)
|
||||
window.onload = function () {
|
||||
var screen = window.screen.width;
|
||||
$('#ImageFile').find('img').css('width', (screen - 56) / 4)
|
||||
}
|
||||
function upload()
|
||||
{
|
||||
var formData = new FormData($('#forms')[0]);
|
||||
$.ajax({
|
||||
async: true,
|
||||
type: "POST",
|
||||
data: formData,
|
||||
cache: false,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
url: "/plugins/album_add.php",
|
||||
beforeSend: function () {
|
||||
$('#button_upload').html('<div class="spinner-border text-light spinner-border-sm" role="status"><span class="visually-hidden">Loading...</span></div> 正在上传')
|
||||
$('#button_upload').attr('disabled',"true");
|
||||
$('#button_cancel').attr('disabled',"true");
|
||||
},
|
||||
success: function(result) {
|
||||
if (result == 'SUCCESS') {
|
||||
$('#ajax_return').text('新建好了')
|
||||
toast.show()
|
||||
$('#button_upload').html('<i class="bi bi-check-circle"></i> 已完成')
|
||||
$('#button_upload').removeAttr("disabled");
|
||||
$('#button_cancel').attr('disabled',"true");
|
||||
setTimeout(function () {
|
||||
window.location.reload()
|
||||
},2000)
|
||||
} else if (result == 'UPLOAD_ALIYUN_FAIL') {
|
||||
$('#ajax_return').text('上传失败')
|
||||
toast.show()
|
||||
$('#button_upload').html('<i class="bi bi-arrow-repeat"></i> 重新上传')
|
||||
$('#button_upload').removeAttr("disabled");
|
||||
$('#button_cancel').removeAttr("disabled");
|
||||
} else if (result == 'IMAGE_NONE') {
|
||||
$('#ajax_return').text('你图片呢')
|
||||
toast.show()
|
||||
$('#button_upload').html('<i class="bi bi-arrow-repeat"></i> 重新上传')
|
||||
$('#button_upload').removeAttr("disabled");
|
||||
$('#button_cancel').removeAttr("disabled");
|
||||
}
|
||||
$('#data').load(result)
|
||||
},
|
||||
error: function () {
|
||||
$('#button_upload').html('<i class="bi bi-x-circle"></i> 发生错误')
|
||||
$('#button_upload').removeAttr("disabled");
|
||||
$('#button_cancel').removeAttr("disabled");
|
||||
alert('未知错误,请联系管理员(JS_ERROR)')
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</html>
|
77
picture_look.php
Normal file
@ -0,0 +1,77 @@
|
||||
<?php
|
||||
// 载入
|
||||
include_once $_SERVER['DOCUMENT_ROOT'].'/modules/header-loader.php';
|
||||
// 获取类
|
||||
require_once $_SERVER['DOCUMENT_ROOT'].'/modules/Functions.php';
|
||||
$F = new Functions();
|
||||
|
||||
/**
|
||||
* @var array $Normal 普通事件API
|
||||
* @var array $config 配置文件
|
||||
* @var array $ApiAlbum 图库API
|
||||
*/
|
||||
|
||||
if (!empty(urldecode(htmlspecialchars($_GET['album'])))) {
|
||||
$ApiAlbum_url = $F->Current_HTTP().'/api/album/select.php?session='.$config['SESSION'].'&album='.urldecode(htmlspecialchars($_GET['album']));
|
||||
$ApiAlbum_ch = curl_init($ApiAlbum_url);
|
||||
curl_setopt($ApiAlbum_ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
|
||||
curl_setopt($ApiAlbum_ch, CURLOPT_RETURNTRANSFER, true);
|
||||
$ApiAlbum = curl_exec($ApiAlbum_ch);
|
||||
$ApiAlbum = json_decode($ApiAlbum,true);
|
||||
} else {
|
||||
header('location: ./album.php');
|
||||
}
|
||||
|
||||
$page = 2;
|
||||
?>
|
||||
<!doctype html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport"
|
||||
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title><?php echo $Normal['data']['web_title']['data'] ?> - <?php echo $Normal['data']['web_desc']['data'] ?></title>
|
||||
<link rel="icon" href="<?php echo $Normal['data']['web_icon']['data'] ?>">
|
||||
<meta name="description" content="<?php echo $Normal['data']['web_desc']['data'] ?>">
|
||||
<meta name="keywords" content="<?php echo $Normal['data']['web_keyword'] ?>"></meta>
|
||||
<meta name="full-screen" content="yes"><!--UC强制全屏-->
|
||||
<meta name="browsermode" content="application"><!--UC应用模式-->
|
||||
<meta name="x5-fullscreen" content="true"><!--QQ强制全屏-->
|
||||
<meta name="x5-page-mode" content="app"><!--QQ应用模式-->
|
||||
<!-- CSS -->
|
||||
<link rel="stylesheet" href="/sources/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="https://at.alicdn.com/t/c/font_3866622_ur298ayiu2.css">
|
||||
<link rel="stylesheet" href="/sources/icons/bootstrap-icons.css">
|
||||
</head>
|
||||
<body style="background-color: rgba(255,192,203,0.25)">
|
||||
<!-- 页首 -->
|
||||
<?php include $_SERVER['DOCUMENT_ROOT']."/modules/header.php"; ?>
|
||||
<!-- 页中 -->
|
||||
<div class="container-fluid my-4">
|
||||
<div class="row">
|
||||
<div class="col-12 mb-3"><a href="./picture.php?album=<?php echo urldecode(htmlspecialchars($_GET['album'])); ?>" class="btn btn-outline-info"><i class="bi bi-backspace"></i> 返回图库</a></div>
|
||||
<div class="col-12 mb-5">
|
||||
<div class="container-fluid">
|
||||
<img src="<?php echo $ApiAlbum['data'][urldecode(htmlspecialchars($_GET['id']))]['url'] ?>" class="container-fluid">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 mt-5">
|
||||
<nav style="margin: 0 auto;display: table" aria-label="Page navigation example">
|
||||
<ul class="pagination">
|
||||
<li class="page-item"><a class="page-link text-info <?php if (urldecode(htmlspecialchars($_GET['id'])) == 0) echo 'disabled'; ?>" href="?album=<?php echo urldecode(htmlspecialchars($_GET['album'])); ?>&id=<?php echo urldecode(htmlspecialchars($_GET['id']))-1; ?>">上一张</a></li>
|
||||
<li class="page-item"><a class="page-link text-info <?php if (urldecode(htmlspecialchars($_GET['id'])) == count($ApiAlbum['data'])-1) echo 'disabled'?>" href="?album=<?php echo urldecode(htmlspecialchars($_GET['album'])); ?>&id=<?php echo urldecode(htmlspecialchars($_GET['id']))+1; ?>">下一张</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
<div class="col-12 mt-3 text-center">
|
||||
<div class="col-12"><a href="https://beian.miit.gov.cn/" class="text-decoration-none text-info" target="_blank"><i class="iconfont icon-ICPbeian"></i> <?php echo $Normal['data']['web_icp']['data'] ?></a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 底部菜单 -->
|
||||
<?php include $_SERVER['DOCUMENT_ROOT']."/modules/menu.php"; ?>
|
||||
</body>
|
||||
<script src="/sources/js/bootstrap.min.js"></script>
|
||||
<script src="/sources/js/bootstrap.bundle.min.js"></script>
|
||||
</html>
|
40
plugins/PHPMailer/Exception.php
Normal 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
plugins/PHPMailer/OAuth.php
Normal 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"
|
||||
);
|
||||
}
|
||||
}
|
44
plugins/PHPMailer/OAuthTokenProvider.php
Normal 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();
|
||||
}
|
5126
plugins/PHPMailer/PHPMailer.php
Normal file
467
plugins/PHPMailer/POP3.php
Normal file
@ -0,0 +1,467 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHPMailer POP-Before-SMTP Authentication 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 POP-Before-SMTP Authentication Class.
|
||||
* Specifically for PHPMailer to use for RFC1939 POP-before-SMTP authentication.
|
||||
* 1) This class does not support APOP authentication.
|
||||
* 2) Opening and closing lots of POP3 connections can be quite slow. If you need
|
||||
* to send a batch of emails then just perform the authentication once at the start,
|
||||
* and then loop through your mail sending script. Providing this process doesn't
|
||||
* take longer than the verification period lasts on your POP3 server, you should be fine.
|
||||
* 3) This is really ancient technology; you should only need to use it to talk to very old systems.
|
||||
* 4) This POP3 class is deliberately lightweight and incomplete, implementing just
|
||||
* enough to do authentication.
|
||||
* If you want a more complete class there are other POP3 classes for PHP available.
|
||||
*
|
||||
* @author Richard Davey (original author) <rich@corephp.co.uk>
|
||||
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
|
||||
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
||||
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
||||
*/
|
||||
class POP3
|
||||
{
|
||||
/**
|
||||
* The POP3 PHPMailer Version number.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const VERSION = '6.7.1';
|
||||
|
||||
/**
|
||||
* Default POP3 port number.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const DEFAULT_PORT = 110;
|
||||
|
||||
/**
|
||||
* Default timeout in seconds.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const DEFAULT_TIMEOUT = 30;
|
||||
|
||||
/**
|
||||
* POP3 class debug output mode.
|
||||
* Debug output level.
|
||||
* Options:
|
||||
* @see POP3::DEBUG_OFF: No output
|
||||
* @see POP3::DEBUG_SERVER: Server messages, connection/server errors
|
||||
* @see POP3::DEBUG_CLIENT: Client and Server messages, connection/server errors
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $do_debug = self::DEBUG_OFF;
|
||||
|
||||
/**
|
||||
* POP3 mail server hostname.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $host;
|
||||
|
||||
/**
|
||||
* POP3 port number.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $port;
|
||||
|
||||
/**
|
||||
* POP3 Timeout Value in seconds.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $tval;
|
||||
|
||||
/**
|
||||
* POP3 username.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $username;
|
||||
|
||||
/**
|
||||
* POP3 password.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $password;
|
||||
|
||||
/**
|
||||
* Resource handle for the POP3 connection socket.
|
||||
*
|
||||
* @var resource
|
||||
*/
|
||||
protected $pop_conn;
|
||||
|
||||
/**
|
||||
* Are we connected?
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $connected = false;
|
||||
|
||||
/**
|
||||
* Error container.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $errors = [];
|
||||
|
||||
/**
|
||||
* Line break constant.
|
||||
*/
|
||||
const LE = "\r\n";
|
||||
|
||||
/**
|
||||
* Debug level for no output.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const DEBUG_OFF = 0;
|
||||
|
||||
/**
|
||||
* Debug level to show server -> client messages
|
||||
* also shows clients connection errors or errors from server
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const DEBUG_SERVER = 1;
|
||||
|
||||
/**
|
||||
* Debug level to show client -> server and server -> client messages.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const DEBUG_CLIENT = 2;
|
||||
|
||||
/**
|
||||
* Simple static wrapper for all-in-one POP before SMTP.
|
||||
*
|
||||
* @param string $host The hostname to connect to
|
||||
* @param int|bool $port The port number to connect to
|
||||
* @param int|bool $timeout The timeout value
|
||||
* @param string $username
|
||||
* @param string $password
|
||||
* @param int $debug_level
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function popBeforeSmtp(
|
||||
$host,
|
||||
$port = false,
|
||||
$timeout = false,
|
||||
$username = '',
|
||||
$password = '',
|
||||
$debug_level = 0
|
||||
) {
|
||||
$pop = new self();
|
||||
|
||||
return $pop->authorise($host, $port, $timeout, $username, $password, $debug_level);
|
||||
}
|
||||
|
||||
/**
|
||||
* Authenticate with a POP3 server.
|
||||
* A connect, login, disconnect sequence
|
||||
* appropriate for POP-before SMTP authorisation.
|
||||
*
|
||||
* @param string $host The hostname to connect to
|
||||
* @param int|bool $port The port number to connect to
|
||||
* @param int|bool $timeout The timeout value
|
||||
* @param string $username
|
||||
* @param string $password
|
||||
* @param int $debug_level
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorise($host, $port = false, $timeout = false, $username = '', $password = '', $debug_level = 0)
|
||||
{
|
||||
$this->host = $host;
|
||||
//If no port value provided, use default
|
||||
if (false === $port) {
|
||||
$this->port = static::DEFAULT_PORT;
|
||||
} else {
|
||||
$this->port = (int) $port;
|
||||
}
|
||||
//If no timeout value provided, use default
|
||||
if (false === $timeout) {
|
||||
$this->tval = static::DEFAULT_TIMEOUT;
|
||||
} else {
|
||||
$this->tval = (int) $timeout;
|
||||
}
|
||||
$this->do_debug = $debug_level;
|
||||
$this->username = $username;
|
||||
$this->password = $password;
|
||||
//Reset the error log
|
||||
$this->errors = [];
|
||||
//Connect
|
||||
$result = $this->connect($this->host, $this->port, $this->tval);
|
||||
if ($result) {
|
||||
$login_result = $this->login($this->username, $this->password);
|
||||
if ($login_result) {
|
||||
$this->disconnect();
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
//We need to disconnect regardless of whether the login succeeded
|
||||
$this->disconnect();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Connect to a POP3 server.
|
||||
*
|
||||
* @param string $host
|
||||
* @param int|bool $port
|
||||
* @param int $tval
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function connect($host, $port = false, $tval = 30)
|
||||
{
|
||||
//Are we already connected?
|
||||
if ($this->connected) {
|
||||
return true;
|
||||
}
|
||||
|
||||
//On Windows this will raise a PHP Warning error if the hostname doesn't exist.
|
||||
//Rather than suppress it with @fsockopen, capture it cleanly instead
|
||||
set_error_handler([$this, 'catchWarning']);
|
||||
|
||||
if (false === $port) {
|
||||
$port = static::DEFAULT_PORT;
|
||||
}
|
||||
|
||||
//Connect to the POP3 server
|
||||
$errno = 0;
|
||||
$errstr = '';
|
||||
$this->pop_conn = fsockopen(
|
||||
$host, //POP3 Host
|
||||
$port, //Port #
|
||||
$errno, //Error Number
|
||||
$errstr, //Error Message
|
||||
$tval
|
||||
); //Timeout (seconds)
|
||||
//Restore the error handler
|
||||
restore_error_handler();
|
||||
|
||||
//Did we connect?
|
||||
if (false === $this->pop_conn) {
|
||||
//It would appear not...
|
||||
$this->setError(
|
||||
"Failed to connect to server $host on port $port. errno: $errno; errstr: $errstr"
|
||||
);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//Increase the stream time-out
|
||||
stream_set_timeout($this->pop_conn, $tval, 0);
|
||||
|
||||
//Get the POP3 server response
|
||||
$pop3_response = $this->getResponse();
|
||||
//Check for the +OK
|
||||
if ($this->checkResponse($pop3_response)) {
|
||||
//The connection is established and the POP3 server is talking
|
||||
$this->connected = true;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Log in to the POP3 server.
|
||||
* Does not support APOP (RFC 2828, 4949).
|
||||
*
|
||||
* @param string $username
|
||||
* @param string $password
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function login($username = '', $password = '')
|
||||
{
|
||||
if (!$this->connected) {
|
||||
$this->setError('Not connected to POP3 server');
|
||||
return false;
|
||||
}
|
||||
if (empty($username)) {
|
||||
$username = $this->username;
|
||||
}
|
||||
if (empty($password)) {
|
||||
$password = $this->password;
|
||||
}
|
||||
|
||||
//Send the Username
|
||||
$this->sendString("USER $username" . static::LE);
|
||||
$pop3_response = $this->getResponse();
|
||||
if ($this->checkResponse($pop3_response)) {
|
||||
//Send the Password
|
||||
$this->sendString("PASS $password" . static::LE);
|
||||
$pop3_response = $this->getResponse();
|
||||
if ($this->checkResponse($pop3_response)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Disconnect from the POP3 server.
|
||||
*/
|
||||
public function disconnect()
|
||||
{
|
||||
// If could not connect at all, no need to disconnect
|
||||
if ($this->pop_conn === false) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->sendString('QUIT' . static::LE);
|
||||
|
||||
// RFC 1939 shows POP3 server sending a +OK response to the QUIT command.
|
||||
// Try to get it. Ignore any failures here.
|
||||
try {
|
||||
$this->getResponse();
|
||||
} catch (Exception $e) {
|
||||
//Do nothing
|
||||
}
|
||||
|
||||
//The QUIT command may cause the daemon to exit, which will kill our connection
|
||||
//So ignore errors here
|
||||
try {
|
||||
@fclose($this->pop_conn);
|
||||
} catch (Exception $e) {
|
||||
//Do nothing
|
||||
}
|
||||
|
||||
// Clean up attributes.
|
||||
$this->connected = false;
|
||||
$this->pop_conn = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a response from the POP3 server.
|
||||
*
|
||||
* @param int $size The maximum number of bytes to retrieve
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function getResponse($size = 128)
|
||||
{
|
||||
$response = fgets($this->pop_conn, $size);
|
||||
if ($this->do_debug >= self::DEBUG_SERVER) {
|
||||
echo 'Server -> Client: ', $response;
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send raw data to the POP3 server.
|
||||
*
|
||||
* @param string $string
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
protected function sendString($string)
|
||||
{
|
||||
if ($this->pop_conn) {
|
||||
if ($this->do_debug >= self::DEBUG_CLIENT) { //Show client messages when debug >= 2
|
||||
echo 'Client -> Server: ', $string;
|
||||
}
|
||||
|
||||
return fwrite($this->pop_conn, $string, strlen($string));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks the POP3 server response.
|
||||
* Looks for for +OK or -ERR.
|
||||
*
|
||||
* @param string $string
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
protected function checkResponse($string)
|
||||
{
|
||||
if (strpos($string, '+OK') !== 0) {
|
||||
$this->setError("Server reported an error: $string");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an error to the internal error store.
|
||||
* Also display debug output if it's enabled.
|
||||
*
|
||||
* @param string $error
|
||||
*/
|
||||
protected function setError($error)
|
||||
{
|
||||
$this->errors[] = $error;
|
||||
if ($this->do_debug >= self::DEBUG_SERVER) {
|
||||
echo '<pre>';
|
||||
foreach ($this->errors as $e) {
|
||||
print_r($e);
|
||||
}
|
||||
echo '</pre>';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an array of error messages, if any.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getErrors()
|
||||
{
|
||||
return $this->errors;
|
||||
}
|
||||
|
||||
/**
|
||||
* POP3 connection error handler.
|
||||
*
|
||||
* @param int $errno
|
||||
* @param string $errstr
|
||||
* @param string $errfile
|
||||
* @param int $errline
|
||||
*/
|
||||
protected function catchWarning($errno, $errstr, $errfile, $errline)
|
||||
{
|
||||
$this->setError(
|
||||
'Connecting to the POP3 server raised a PHP warning:' .
|
||||
"errno: $errno errstr: $errstr; errfile: $errfile; errline: $errline"
|
||||
);
|
||||
}
|
||||
}
|
1458
plugins/PHPMailer/SMTP.php
Normal file
27
plugins/SqlConn.php
Normal file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
/**
|
||||
* nw_love API head_loader
|
||||
* @copyright 2022-2023 ZCW and YN. All Rights Reserved.
|
||||
*/
|
||||
|
||||
/** @var string $config */
|
||||
|
||||
$SqlHost = $config['SQL']['host'];
|
||||
$SqlDBname = $config['SQL']['dbname'];
|
||||
$SqlUsername = $config['SQL']['username'];
|
||||
$SqlPassword = $config['SQL']['password'];
|
||||
|
||||
// 判断数据库的端口
|
||||
if ($config['SQL']['port'] == 3306 or $config['SQL']['port'] == NULL) {
|
||||
$SqlPort = 3306;
|
||||
} else {
|
||||
$SqlPort = $config['SQL']['port'];
|
||||
}
|
||||
|
||||
// 链接数据库
|
||||
$SqlConn = new MySQLi($SqlHost,$SqlUsername,$SqlPassword,$SqlDBname,$SqlPort);
|
||||
|
||||
// 检查错误
|
||||
if ($config['WEB']['DeBUG']) {
|
||||
die('数据库链接失败!ErrorCode: '.$SqlConn->connect_error);
|
||||
}
|
73
plugins/album_add.php
Normal file
@ -0,0 +1,73 @@
|
||||
<?php
|
||||
include_once $_SERVER['DOCUMENT_ROOT'].'/modules/header-loader.php';
|
||||
include_once $_SERVER['DOCUMENT_ROOT']."/plugins/SqlConn.php";
|
||||
require_once $_SERVER['DOCUMENT_ROOT'].'/Aliyun/aliyun-oss-php-sdk-2.6.0.phar';
|
||||
require_once $_SERVER['DOCUMENT_ROOT'].'/Aliyun/autoload.php';
|
||||
|
||||
use OSS\OssClient;
|
||||
use OSS\Core\OssException;
|
||||
|
||||
/**
|
||||
* @var array $data 数据
|
||||
* @var array $config setting
|
||||
* @var mysqli $SqlConn MySQL Connect
|
||||
*/
|
||||
|
||||
if (htmlspecialchars($_POST['P_open'])) $open = 1;
|
||||
else $open = 0;
|
||||
|
||||
if (!empty($_FILES['P_image']['name'][0])) {
|
||||
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
|
||||
$accessKeyId = $config['Aliyun']['AccessKeyID'];
|
||||
$accessKeySecret = $config['Aliyun']['AccessKeySecret'];
|
||||
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
|
||||
$endpoint = "https://oss-cn-shenzhen-internal.aliyuncs.com";
|
||||
// 填写Bucket名称。
|
||||
$bucket= "nw-love";
|
||||
|
||||
for ($i=0; $i<count($_FILES['P_image']['name']); $i++) {
|
||||
$tmpFilePatch = $_FILES['P_image']['tmp_name'][$i];
|
||||
$data = explode('.',$_FILES['P_image']['name'][$i]);
|
||||
$new_name = rand(1000,9999).time().rand(1000,9999).'.'.$data[1];
|
||||
$_FILES['P_image']['name'][$i] = $new_name;
|
||||
if ($tmpFilePatch != '') {
|
||||
move_uploaded_file($_FILES["P_image"]["tmp_name"][$i], $_SERVER['DOCUMENT_ROOT']."/cache/" . $_FILES["P_image"]["name"][$i]);
|
||||
$FilePatch[$i] = $_SERVER['DOCUMENT_ROOT']."/cache/" . $_FILES["P_image"]["name"][$i];
|
||||
}
|
||||
}
|
||||
|
||||
try{
|
||||
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
|
||||
// 第一次追加上传。第一次追加的位置是0,返回值为下一次追加的位置。后续追加的位置是追加前文件的长度。
|
||||
for ($i=0; $i<count($_FILES['P_image']['name']); $i++) {
|
||||
$object = "Upload/".htmlspecialchars($_POST['P_album'])."/".$_FILES["P_image"]["name"][$i];
|
||||
// 填写不包含Bucket名称在内的Object的完整路径。
|
||||
$ossClient->uploadFile($bucket, $object, $FilePatch[$i]);
|
||||
mysqli_query($SqlConn,"INSERT INTO ".$config['TABLE']['Album']." (`album_id`,`url`,`date`,`open`,`uploader`) VALUES ('".htmlspecialchars($_POST['P_album'])."','https://img.na-wen.love/Upload/".htmlspecialchars($_POST['P_album'])."/".$_FILES['P_image']['name'][$i]."','".date('Y-m-d')."','".$open."','".$_COOKIE['user']."')");
|
||||
unlink($_SERVER['DOCUMENT_ROOT']."/cache/" . $_FILES["P_image"]["name"][$i]);
|
||||
}
|
||||
} catch(OssException $e) {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'UPLOAD_ALIYUN_FAIL',
|
||||
'code' => 403,
|
||||
'info' => '上传失败',
|
||||
];
|
||||
return;
|
||||
}
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'SUCCESS',
|
||||
'code' => 200,
|
||||
'info' => '完成',
|
||||
'data' => $_FILES['P_image']['tmp_name'],
|
||||
];
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'IMAGE_NONE',
|
||||
'code' => 403,
|
||||
'info' => '你的图片呢?',
|
||||
];
|
||||
}
|
||||
echo $data['output'];
|
54
plugins/album_list_check.php
Normal file
@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @var array $config
|
||||
*/
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'].'/config.inc.php';
|
||||
|
||||
// 时间转换
|
||||
$date = htmlspecialchars($_POST['P_date']);
|
||||
$date = strtotime($date);
|
||||
$date = date('Y-m-d',$date);
|
||||
|
||||
if (htmlspecialchars($_POST['P_open'])) {
|
||||
$open = 1;
|
||||
} else {
|
||||
$open = 0;
|
||||
}
|
||||
|
||||
// 函数处理
|
||||
$PostUrl = 'https://www.na-wen.love/api/album/add.php';
|
||||
$data = [
|
||||
'ssid'=>$config['SESSION'],
|
||||
'name'=>htmlspecialchars($_POST['P_name']),
|
||||
'date'=>$date,
|
||||
'open'=>$open,
|
||||
];
|
||||
|
||||
$JsonStr = json_encode($data); //转换为json格式
|
||||
$PostData = http_post_json($PostUrl, $JsonStr);
|
||||
$PostData = json_decode($PostData,true);
|
||||
echo $PostData['output'];
|
||||
|
||||
// 发送POST
|
||||
/**
|
||||
* @param $url
|
||||
* @param $jsonStr
|
||||
* @return bool|string
|
||||
*/
|
||||
function http_post_json($url, $jsonStr) {
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
||||
'Content-Type: application/json; charset=utf-8',
|
||||
'Content-Length: ' . strlen($jsonStr)
|
||||
)
|
||||
);
|
||||
$response = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
return $response;
|
||||
}
|
73
plugins/candid_add.php
Normal file
@ -0,0 +1,73 @@
|
||||
<?php
|
||||
include_once $_SERVER['DOCUMENT_ROOT'].'/modules/header-loader.php';
|
||||
include_once $_SERVER['DOCUMENT_ROOT']."/plugins/SqlConn.php";
|
||||
require_once $_SERVER['DOCUMENT_ROOT'].'/Aliyun/aliyun-oss-php-sdk-2.6.0.phar';
|
||||
require_once $_SERVER['DOCUMENT_ROOT'].'/Aliyun/autoload.php';
|
||||
|
||||
use OSS\OssClient;
|
||||
use OSS\Core\OssException;
|
||||
|
||||
/**
|
||||
* @var array $data 数据
|
||||
* @var array $config setting
|
||||
* @var mysqli $SqlConn MySQL Connect
|
||||
*/
|
||||
|
||||
if (htmlspecialchars($_POST['P_open'])) $open = 1;
|
||||
else $open = 0;
|
||||
|
||||
if (!empty($_FILES['P_image']['name'][0])) {
|
||||
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
|
||||
$accessKeyId = $config['Aliyun']['AccessKeyID'];
|
||||
$accessKeySecret = $config['Aliyun']['AccessKeySecret'];
|
||||
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
|
||||
$endpoint = "https://oss-cn-shenzhen-internal.aliyuncs.com";
|
||||
// 填写Bucket名称。
|
||||
$bucket= "nw-love";
|
||||
|
||||
for ($i=0; $i<count($_FILES['P_image']['name']); $i++) {
|
||||
$tmpFilePatch = $_FILES['P_image']['tmp_name'][$i];
|
||||
$data = explode('.',$_FILES['P_image']['name'][$i]);
|
||||
$new_name = rand(1000,9999).time().rand(1000,9999).'.'.$data[1];
|
||||
$_FILES['P_image']['name'][$i] = $new_name;
|
||||
if ($tmpFilePatch != '') {
|
||||
move_uploaded_file($_FILES["P_image"]["tmp_name"][$i], $_SERVER['DOCUMENT_ROOT']."/cache/" . $_FILES["P_image"]["name"][$i]);
|
||||
$FilePatch[$i] = $_SERVER['DOCUMENT_ROOT']."/cache/" . $_FILES["P_image"]["name"][$i];
|
||||
}
|
||||
}
|
||||
|
||||
try{
|
||||
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
|
||||
// 第一次追加上传。第一次追加的位置是0,返回值为下一次追加的位置。后续追加的位置是追加前文件的长度。
|
||||
for ($i=0; $i<count($_FILES['P_image']['name']); $i++) {
|
||||
$object = "OtherCandid/".$_FILES["P_image"]["name"][$i];
|
||||
// 填写不包含Bucket名称在内的Object的完整路径。
|
||||
$ossClient->uploadFile($bucket, $object, $FilePatch[$i]);
|
||||
mysqli_query($SqlConn,"INSERT INTO ".$config['TABLE']['candid']." (`url`,`date`,`open`,`uploader`) VALUES ('https://img.na-wen.love/OtherCandid/".$_FILES["P_image"]["name"][$i]."','".date('Y-m-d')."','".$open."','".$_COOKIE['user']."')");
|
||||
unlink($_SERVER['DOCUMENT_ROOT']."/cache/" . $_FILES["P_image"]["name"][$i]);
|
||||
}
|
||||
} catch(OssException $e) {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'UPLOAD_ALIYUN_FAIL',
|
||||
'code' => 403,
|
||||
'info' => '上传失败',
|
||||
];
|
||||
return;
|
||||
}
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'SUCCESS',
|
||||
'code' => 200,
|
||||
'info' => '完成',
|
||||
'data' => $_FILES['P_image']['tmp_name'],
|
||||
];
|
||||
} else {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'IMAGE_NONE',
|
||||
'code' => 403,
|
||||
'info' => '你的图片呢?',
|
||||
];
|
||||
}
|
||||
echo $data['output'];
|
64
plugins/demo.php
Normal file
@ -0,0 +1,64 @@
|
||||
<?php
|
||||
include_once $_SERVER['DOCUMENT_ROOT'].'/modules/header-loader.php';
|
||||
include $_SERVER['DOCUMENT_ROOT']."/plugins/SqlConn.php";
|
||||
require_once $_SERVER['DOCUMENT_ROOT'].'/Aliyun/aliyun-oss-php-sdk-2.6.0.phar';
|
||||
require_once $_SERVER['DOCUMENT_ROOT'].'/Aliyun/autoload.php';
|
||||
|
||||
use OSS\OssClient;
|
||||
use OSS\Core\OssException;
|
||||
|
||||
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
|
||||
/**
|
||||
* @var array $config
|
||||
* @var mysqli $SqlConn
|
||||
*/
|
||||
|
||||
if (htmlspecialchars($_POST['P_open'])) $open = 1;
|
||||
else $open = 0;
|
||||
|
||||
$accessKeyId = $config['Aliyun']['AccessKeyID'];
|
||||
$accessKeySecret = $config['Aliyun']['AccessKeySecret'];
|
||||
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
|
||||
$endpoint = "https://oss-cn-shenzhen-internal.aliyuncs.com";
|
||||
// 填写Bucket名称。
|
||||
$bucket= "nw-love";
|
||||
|
||||
for ($i=0; $i<count($_FILES['P_image']['name']); $i++) {
|
||||
$tmpFilePatch = $_FILES['P_image']['tmp_name'][$i];
|
||||
$data = explode('.',$_FILES['P_image']['name'][$i]);
|
||||
$new_name = rand(1000,9999).time().rand(1000,9999).'.'.$data[1];
|
||||
$_FILES['P_image']['name'][$i] = $new_name;
|
||||
if ($tmpFilePatch != '') {
|
||||
move_uploaded_file($_FILES["P_image"]["tmp_name"][$i], "../cache/" . $_FILES["P_image"]["name"][$i]);
|
||||
$FilePatch[$i] = $_SERVER['DOCUMENT_ROOT']."/cache/" . $_FILES["P_image"]["name"][$i];
|
||||
}
|
||||
}
|
||||
|
||||
try{
|
||||
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
|
||||
// 第一次追加上传。第一次追加的位置是0,返回值为下一次追加的位置。后续追加的位置是追加前文件的长度。
|
||||
for ($i=0; $i<count($_FILES['P_image']['name']); $i++) {
|
||||
$object = "Upload/".htmlspecialchars($_POST['P_album'])."/".$_FILES["P_image"]["name"][$i];
|
||||
// 填写不包含Bucket名称在内的Object的完整路径。
|
||||
$ossClient->uploadFile($bucket, $object, $FilePatch[$i]);
|
||||
mysqli_query($SqlConn,"INSERT INTO ".$config['TABLE']['Album']." (`album_id`,`url`,`date`,`open`,`uploader`) VALUES ('".htmlspecialchars($_POST['P_album'])."','https://img.na-wen.love/Upload/".htmlspecialchars($_POST['P_album'])."/".$_FILES['P_image']['name'][$i]."','".date('Y-m-d')."','".$open."','".$_COOKIE['user']."')");
|
||||
unlink($_SERVER['DOCUMENT_ROOT']."/cache/" . $_FILES["P_image"]["name"][$i]);
|
||||
}
|
||||
} catch(OssException $e) {
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'UPLOAD_ALIYUN_FAIL',
|
||||
'code' => 403,
|
||||
'info' => '上传失败',
|
||||
];
|
||||
return;
|
||||
}
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'SUCCESS',
|
||||
'code' => 200,
|
||||
'info' => '完成',
|
||||
'data' => $FilePatch,
|
||||
];
|
||||
|
||||
echo json_encode($data,JSON_UNESCAPED_UNICODE);
|
38
plugins/login_check.php
Normal file
@ -0,0 +1,38 @@
|
||||
<?php
|
||||
include $_SERVER['DOCUMENT_ROOT'] . "/modules/header-loader.php";
|
||||
/**
|
||||
* @var array $config
|
||||
* @var array $Normal
|
||||
*/
|
||||
|
||||
if ($_POST['user'] == $Normal['data']['boy_user']['data'] or $_POST['user'] == $Normal['data']['girl_user']['data']) {
|
||||
$Api_Login_url = $Normal['data']['xf_api']['data'].'/auth/login/?ukey='.$Normal['data']['xf_key']['data'].'&username='.$_POST['user'].'&password='.$_POST['password'];
|
||||
$Api_Login_ch = curl_init($Api_Login_url);
|
||||
curl_setopt($Api_Login_ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
|
||||
curl_setopt($Api_Login_ch, CURLOPT_RETURNTRANSFER, true);
|
||||
$Api_Login = curl_exec($Api_Login_ch);
|
||||
$Api_Login = json_decode($Api_Login,true);
|
||||
if ($Api_Login['output'] == 'SUCCESS') {
|
||||
setcookie('user',$_POST["user"],time()+86400*30,'/');
|
||||
echo <<<EOF
|
||||
<script>
|
||||
alert('登陆成功');
|
||||
window.location.href = "/";
|
||||
</script>
|
||||
EOF;
|
||||
} else {
|
||||
echo <<<EOF
|
||||
<script>
|
||||
alert('用户名或密码错误');
|
||||
window.history.go(-1);
|
||||
</script>
|
||||
EOF;
|
||||
}
|
||||
} else {
|
||||
echo <<<EOF
|
||||
<script>
|
||||
alert('非对应用户哦~');
|
||||
window.history.go(-1);
|
||||
</script>
|
||||
EOF;
|
||||
}
|
42
plugins/miss_you.php
Normal file
@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @var array $config
|
||||
*/
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'].'/config.inc.php';
|
||||
|
||||
// 函数处理
|
||||
$PostUrl = 'https://www.na-wen.love/api/tools/miss_you.php';
|
||||
$data = [
|
||||
'session'=>$config['SESSION'],
|
||||
'miss'=>1,
|
||||
'user'=>$_COOKIE['user']
|
||||
];
|
||||
|
||||
$JsonStr = json_encode($data); //转换为json格式
|
||||
$PostData = http_post_json($PostUrl, $JsonStr);
|
||||
$PostData = json_decode($PostData,true);
|
||||
echo $PostData['output'];
|
||||
|
||||
// 发送POST
|
||||
/**
|
||||
* @param $url
|
||||
* @param $jsonStr
|
||||
* @return bool|string
|
||||
*/
|
||||
function http_post_json($url, $jsonStr) {
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
||||
'Content-Type: application/json; charset=utf-8',
|
||||
'Content-Length: ' . strlen($jsonStr)
|
||||
)
|
||||
);
|
||||
$response = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
return $response;
|
||||
}
|
6
sources/css/bootstrap.min.css
vendored
Normal file
1
sources/css/bootstrap.min.css.map
Normal file
4
sources/icons/0-circle-fill.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-0-circle-fill" viewBox="0 0 16 16">
|
||||
<path d="M8 4.951c-1.008 0-1.629 1.09-1.629 2.895v.31c0 1.81.627 2.895 1.629 2.895s1.623-1.09 1.623-2.895v-.31c0-1.8-.621-2.895-1.623-2.895Z"/>
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0Zm-8.012 4.158c1.858 0 2.96-1.582 2.96-3.99V7.84c0-2.426-1.079-3.996-2.936-3.996-1.864 0-2.965 1.588-2.965 3.996v.328c0 2.42 1.09 3.99 2.941 3.99Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 479 B |
4
sources/icons/0-circle.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-0-circle" viewBox="0 0 16 16">
|
||||
<path d="M7.988 12.158c-1.851 0-2.941-1.57-2.941-3.99V7.84c0-2.408 1.101-3.996 2.965-3.996 1.857 0 2.935 1.57 2.935 3.996v.328c0 2.408-1.101 3.99-2.959 3.99ZM8 4.951c-1.008 0-1.629 1.09-1.629 2.895v.31c0 1.81.627 2.895 1.629 2.895s1.623-1.09 1.623-2.895v-.31c0-1.8-.621-2.895-1.623-2.895Z"/>
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 511 B |
4
sources/icons/0-square-fill.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-0-square-fill" viewBox="0 0 16 16">
|
||||
<path d="M8 4.951c-1.008 0-1.629 1.09-1.629 2.895v.31c0 1.81.627 2.895 1.629 2.895s1.623-1.09 1.623-2.895v-.31c0-1.8-.621-2.895-1.623-2.895Z"/>
|
||||
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2Zm5.988 12.158c-1.851 0-2.941-1.57-2.941-3.99V7.84c0-2.408 1.101-3.996 2.965-3.996 1.857 0 2.935 1.57 2.935 3.996v.328c0 2.408-1.101 3.99-2.959 3.99Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 518 B |
4
sources/icons/0-square.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-0-square" viewBox="0 0 16 16">
|
||||
<path d="M7.988 12.158c-1.851 0-2.941-1.57-2.941-3.99V7.84c0-2.408 1.101-3.996 2.965-3.996 1.857 0 2.935 1.57 2.935 3.996v.328c0 2.408-1.101 3.99-2.959 3.99ZM8 4.951c-1.008 0-1.629 1.09-1.629 2.895v.31c0 1.81.627 2.895 1.629 2.895s1.623-1.09 1.623-2.895v-.31c0-1.8-.621-2.895-1.623-2.895Z"/>
|
||||
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2Zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 585 B |
3
sources/icons/1-circle-fill.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-1-circle-fill" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM9.283 4.002H7.971L6.072 5.385v1.271l1.834-1.318h.065V12h1.312V4.002Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 257 B |
3
sources/icons/1-circle.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-1-circle" viewBox="0 0 16 16">
|
||||
<path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8Zm15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM9.283 4.002V12H7.971V5.338h-.065L6.072 6.656V5.385l1.899-1.383h1.312Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 287 B |
3
sources/icons/1-square-fill.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-1-square-fill" viewBox="0 0 16 16">
|
||||
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2Zm7.283 4.002V12H7.971V5.338h-.065L6.072 6.656V5.385l1.899-1.383h1.312Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 294 B |
4
sources/icons/1-square.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-1-square" viewBox="0 0 16 16">
|
||||
<path d="M9.283 4.002V12H7.971V5.338h-.065L6.072 6.656V5.385l1.899-1.383h1.312Z"/>
|
||||
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2Zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 376 B |
3
sources/icons/123.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-123" viewBox="0 0 16 16">
|
||||
<path d="M2.873 11.297V4.142H1.699L0 5.379v1.137l1.64-1.18h.06v5.961h1.174Zm3.213-5.09v-.063c0-.618.44-1.169 1.196-1.169.676 0 1.174.44 1.174 1.106 0 .624-.42 1.101-.807 1.526L4.99 10.553v.744h4.78v-.99H6.643v-.069L8.41 8.252c.65-.724 1.237-1.332 1.237-2.27C9.646 4.849 8.723 4 7.308 4c-1.573 0-2.36 1.064-2.36 2.15v.057h1.138Zm6.559 1.883h.786c.823 0 1.374.481 1.379 1.179.01.707-.55 1.216-1.421 1.21-.77-.005-1.326-.419-1.379-.953h-1.095c.042 1.053.938 1.918 2.464 1.918 1.478 0 2.642-.839 2.62-2.144-.02-1.143-.922-1.651-1.551-1.714v-.063c.535-.09 1.347-.66 1.326-1.678-.026-1.053-.933-1.855-2.359-1.845-1.5.005-2.317.88-2.348 1.898h1.116c.032-.498.498-.944 1.206-.944.703 0 1.206.435 1.206 1.07.005.64-.504 1.106-1.2 1.106h-.75v.96Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 870 B |
3
sources/icons/2-circle-fill.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-2-circle-fill" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM6.646 6.24c0-.691.493-1.306 1.336-1.306.756 0 1.313.492 1.313 1.236 0 .697-.469 1.23-.902 1.705l-2.971 3.293V12h5.344v-1.107H7.268v-.077l1.974-2.22.096-.107c.688-.763 1.287-1.428 1.287-2.43 0-1.266-1.031-2.215-2.613-2.215-1.758 0-2.637 1.19-2.637 2.402v.065h1.271v-.07Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 458 B |
3
sources/icons/2-circle.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-2-circle" viewBox="0 0 16 16">
|
||||
<path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8Zm15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM6.646 6.24v.07H5.375v-.064c0-1.213.879-2.402 2.637-2.402 1.582 0 2.613.949 2.613 2.215 0 1.002-.6 1.667-1.287 2.43l-.096.107-1.974 2.22v.077h3.498V12H5.422v-.832l2.97-3.293c.434-.475.903-1.008.903-1.705 0-.744-.557-1.236-1.313-1.236-.843 0-1.336.615-1.336 1.306Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 480 B |
3
sources/icons/2-square-fill.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-2-square-fill" viewBox="0 0 16 16">
|
||||
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2Zm4.646 6.24v.07H5.375v-.064c0-1.213.879-2.402 2.637-2.402 1.582 0 2.613.949 2.613 2.215 0 1.002-.6 1.667-1.287 2.43l-.096.107-1.974 2.22v.077h3.498V12H5.422v-.832l2.97-3.293c.434-.475.903-1.008.903-1.705 0-.744-.557-1.236-1.313-1.236-.843 0-1.336.615-1.336 1.306Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 487 B |
4
sources/icons/2-square.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-2-square" viewBox="0 0 16 16">
|
||||
<path d="M6.646 6.24v.07H5.375v-.064c0-1.213.879-2.402 2.637-2.402 1.582 0 2.613.949 2.613 2.215 0 1.002-.6 1.667-1.287 2.43l-.096.107-1.974 2.22v.077h3.498V12H5.422v-.832l2.97-3.293c.434-.475.903-1.008.903-1.705 0-.744-.557-1.236-1.313-1.236-.843 0-1.336.615-1.336 1.306Z"/>
|
||||
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2Zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 569 B |
3
sources/icons/3-circle-fill.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-3-circle-fill" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0Zm-8.082.414c.92 0 1.535.54 1.541 1.318.012.791-.615 1.36-1.588 1.354-.861-.006-1.482-.469-1.54-1.066H5.104c.047 1.177 1.05 2.144 2.754 2.144 1.653 0 2.954-.937 2.93-2.396-.023-1.278-1.031-1.846-1.734-1.916v-.07c.597-.1 1.505-.739 1.482-1.876-.03-1.177-1.043-2.074-2.637-2.062-1.675.006-2.59.984-2.625 2.12h1.248c.036-.556.557-1.054 1.348-1.054.785 0 1.348.486 1.348 1.195.006.715-.563 1.237-1.342 1.237h-.838v1.072h.879Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 608 B |
4
sources/icons/3-circle.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-3-circle" viewBox="0 0 16 16">
|
||||
<path d="M7.918 8.414h-.879V7.342h.838c.78 0 1.348-.522 1.342-1.237 0-.709-.563-1.195-1.348-1.195-.79 0-1.312.498-1.348 1.055H5.275c.036-1.137.95-2.115 2.625-2.121 1.594-.012 2.608.885 2.637 2.062.023 1.137-.885 1.776-1.482 1.875v.07c.703.07 1.71.64 1.734 1.917.024 1.459-1.277 2.396-2.93 2.396-1.705 0-2.707-.967-2.754-2.144H6.33c.059.597.68 1.06 1.541 1.066.973.006 1.6-.563 1.588-1.354-.006-.779-.621-1.318-1.541-1.318Z"/>
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 645 B |
3
sources/icons/3-square-fill.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-3-square-fill" viewBox="0 0 16 16">
|
||||
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2Zm5.918 8.414h-.879V7.342h.838c.78 0 1.348-.522 1.342-1.237 0-.709-.563-1.195-1.348-1.195-.79 0-1.312.498-1.348 1.055H5.275c.036-1.137.95-2.115 2.625-2.121 1.594-.012 2.608.885 2.637 2.062.023 1.137-.885 1.776-1.482 1.875v.07c.703.07 1.71.64 1.734 1.917.024 1.459-1.277 2.396-2.93 2.396-1.705 0-2.707-.967-2.754-2.144H6.33c.059.597.68 1.06 1.541 1.066.973.006 1.6-.563 1.588-1.354-.006-.779-.621-1.318-1.541-1.318Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 637 B |
4
sources/icons/3-square.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-3-square" viewBox="0 0 16 16">
|
||||
<path d="M7.918 8.414h-.879V7.342h.838c.78 0 1.348-.522 1.342-1.237 0-.709-.563-1.195-1.348-1.195-.79 0-1.312.498-1.348 1.055H5.275c.036-1.137.95-2.115 2.625-2.121 1.594-.012 2.608.885 2.637 2.062.023 1.137-.885 1.776-1.482 1.875v.07c.703.07 1.71.64 1.734 1.917.024 1.459-1.277 2.396-2.93 2.396-1.705 0-2.707-.967-2.754-2.144H6.33c.059.597.68 1.06 1.541 1.066.973.006 1.6-.563 1.588-1.354-.006-.779-.621-1.318-1.541-1.318Z"/>
|
||||
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2Zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 719 B |
3
sources/icons/4-circle-fill.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-4-circle-fill" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM7.519 5.057c-.886 1.418-1.772 2.838-2.542 4.265v1.12H8.85V12h1.26v-1.559h1.007V9.334H10.11V4.002H8.176c-.218.352-.438.703-.657 1.055ZM6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 391 B |
4
sources/icons/4-circle.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-4-circle" viewBox="0 0 16 16">
|
||||
<path d="M7.519 5.057c.22-.352.439-.703.657-1.055h1.933v5.332h1.008v1.107H10.11V12H8.85v-1.559H4.978V9.322c.77-1.427 1.656-2.847 2.542-4.265ZM6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218Z"/>
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 433 B |
4
sources/icons/4-square-fill.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-4-square-fill" viewBox="0 0 16 16">
|
||||
<path d="M6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218Z"/>
|
||||
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2Zm5.519 5.057c.22-.352.439-.703.657-1.055h1.933v5.332h1.008v1.107H10.11V12H8.85v-1.559H4.978V9.322c.77-1.427 1.656-2.847 2.542-4.265Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 440 B |
4
sources/icons/4-square.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-4-square" viewBox="0 0 16 16">
|
||||
<path d="M7.519 5.057c.22-.352.439-.703.657-1.055h1.933v5.332h1.008v1.107H10.11V12H8.85v-1.559H4.978V9.322c.77-1.427 1.656-2.847 2.542-4.265ZM6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218Z"/>
|
||||
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2Zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 507 B |
3
sources/icons/5-circle-fill.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-5-circle-fill" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0Zm-8.006 4.158c1.74 0 2.924-1.119 2.924-2.806 0-1.641-1.178-2.584-2.56-2.584-.897 0-1.442.421-1.612.68h-.064l.193-2.344h3.621V4.002H5.791L5.445 8.63h1.149c.193-.358.668-.809 1.435-.809.85 0 1.582.604 1.582 1.57 0 1.085-.779 1.682-1.57 1.682-.697 0-1.389-.31-1.53-1.031H5.276c.065 1.213 1.149 2.115 2.72 2.115Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 496 B |
3
sources/icons/5-circle.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-5-circle" viewBox="0 0 16 16">
|
||||
<path d="M1 8a7 7 0 1 1 14 0A7 7 0 0 1 1 8Zm15 0A8 8 0 1 0 0 8a8 8 0 0 0 16 0Zm-8.006 4.158c-1.57 0-2.654-.902-2.719-2.115h1.237c.14.72.832 1.031 1.529 1.031.791 0 1.57-.597 1.57-1.681 0-.967-.732-1.57-1.582-1.57-.767 0-1.242.45-1.435.808H5.445L5.791 4h4.705v1.103H6.875l-.193 2.343h.064c.17-.258.715-.68 1.611-.68 1.383 0 2.561.944 2.561 2.585 0 1.687-1.184 2.806-2.924 2.806Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 516 B |
3
sources/icons/5-square-fill.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-5-square-fill" viewBox="0 0 16 16">
|
||||
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2Zm5.994 12.158c-1.57 0-2.654-.902-2.719-2.115h1.237c.14.72.832 1.031 1.529 1.031.791 0 1.57-.597 1.57-1.681 0-.967-.732-1.57-1.582-1.57-.767 0-1.242.45-1.435.808H5.445L5.791 4h4.705v1.103H6.875l-.193 2.343h.064c.17-.258.715-.68 1.611-.68 1.383 0 2.561.944 2.561 2.585 0 1.687-1.184 2.806-2.924 2.806Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 523 B |
4
sources/icons/5-square.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-5-square" viewBox="0 0 16 16">
|
||||
<path d="M7.994 12.158c-1.57 0-2.654-.902-2.719-2.115h1.237c.14.72.832 1.031 1.529 1.031.791 0 1.57-.597 1.57-1.681 0-.967-.732-1.57-1.582-1.57-.767 0-1.242.45-1.435.808H5.445L5.791 4h4.705v1.103H6.875l-.193 2.343h.064c.17-.258.715-.68 1.611-.68 1.383 0 2.561.944 2.561 2.585 0 1.687-1.184 2.806-2.924 2.806Z"/>
|
||||
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2Zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 605 B |
3
sources/icons/6-circle-fill.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-6-circle-fill" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM8.21 3.855c-1.868 0-3.116 1.395-3.116 4.407 0 1.183.228 2.039.597 2.642.569.926 1.477 1.254 2.409 1.254 1.629 0 2.847-1.013 2.847-2.783 0-1.676-1.254-2.555-2.508-2.555-1.125 0-1.752.61-1.98 1.155h-.082c-.012-1.946.727-3.036 1.805-3.036.802 0 1.213.457 1.312.815h1.29c-.06-.908-.962-1.899-2.573-1.899Zm-.099 4.008c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 619 B |
3
sources/icons/6-circle.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-6-circle" viewBox="0 0 16 16">
|
||||
<path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8Zm15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM8.21 3.855c1.612 0 2.515.99 2.573 1.899H9.494c-.1-.358-.51-.815-1.312-.815-1.078 0-1.817 1.09-1.805 3.036h.082c.229-.545.855-1.155 1.98-1.155 1.254 0 2.508.88 2.508 2.555 0 1.77-1.218 2.783-2.847 2.783-.932 0-1.84-.328-2.409-1.254-.369-.603-.597-1.459-.597-2.642 0-3.012 1.248-4.407 3.117-4.407Zm-.099 4.008c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 643 B |
4
sources/icons/6-square-fill.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-6-square-fill" viewBox="0 0 16 16">
|
||||
<path d="M8.111 7.863c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582Z"/>
|
||||
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2Zm6.21 3.855c1.612 0 2.515.99 2.573 1.899H9.494c-.1-.358-.51-.815-1.312-.815-1.078 0-1.817 1.09-1.805 3.036h.082c.229-.545.855-1.155 1.98-1.155 1.254 0 2.508.88 2.508 2.555 0 1.77-1.218 2.783-2.847 2.783-.932 0-1.84-.328-2.409-1.254-.369-.603-.597-1.459-.597-2.642 0-3.012 1.248-4.407 3.117-4.407Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 665 B |
4
sources/icons/6-square.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-6-square" viewBox="0 0 16 16">
|
||||
<path d="M8.21 3.855c1.612 0 2.515.99 2.573 1.899H9.494c-.1-.358-.51-.815-1.312-.815-1.078 0-1.817 1.09-1.805 3.036h.082c.229-.545.855-1.155 1.98-1.155 1.254 0 2.508.88 2.508 2.555 0 1.77-1.218 2.783-2.847 2.783-.932 0-1.84-.328-2.409-1.254-.369-.603-.597-1.459-.597-2.642 0-3.012 1.248-4.407 3.117-4.407Zm-.099 4.008c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582Z"/>
|
||||
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2Zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 732 B |
3
sources/icons/7-circle-fill.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-7-circle-fill" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM5.37 5.11h3.972v.07L6.025 12H7.42l3.258-6.85V4.002H5.369v1.107Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 252 B |
3
sources/icons/7-circle.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-7-circle" viewBox="0 0 16 16">
|
||||
<path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8Zm15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM5.37 5.11V4.001h5.308V5.15L7.42 12H6.025l3.317-6.82v-.07H5.369Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 281 B |
3
sources/icons/7-square-fill.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-7-square-fill" viewBox="0 0 16 16">
|
||||
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2Zm3.37 5.11V4.001h5.308V5.15L7.42 12H6.025l3.317-6.82v-.07H5.369Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 288 B |