submit.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <?php
  2. if ($templateMode) {
  3. include('./includes/header.php');
  4. }
  5. ?>
  6. <br /><br />
  7. <div class="mdui-card mdui-hoverable" style="border-radius: 16px">
  8. <div class="mdui-card-primary">
  9. <div class="mdui-card-primary-title">立即表白</div>
  10. <div class="mdui-card-primary-subtitle">快向你喜欢的TA表白吧!</div>
  11. </div>
  12. <div class="mdui-divider"></div>
  13. <div class="mdui-card-content">
  14. <div class="mdui-textfield">
  15. <label class="mdui-textfield-label">你的QQ</label>
  16. <textarea id="qq" class="mdui-textfield-input" placeholder="2333333333"></textarea>
  17. </div>
  18. <div class="mdui-textfield">
  19. <label class="mdui-textfield-label">你的名字</label>
  20. <textarea id="name" class="mdui-textfield-input" placeholder="镜音连"></textarea>
  21. </div>
  22. <div class="mdui-textfield">
  23. <label class="mdui-textfield-label">TA的名字</label>
  24. <textarea id="taName" class="mdui-textfield-input" placeholder="镜音铃"></textarea>
  25. </div>
  26. <div class="mdui-textfield">
  27. <label class="mdui-textfield-label">表白配图(可选)</label>
  28. <?php
  29. if ($UPLOAD_IMAGE) {
  30. ?>
  31. <div class="mdui-row">
  32. <div class="mdui-col-md-10 mdui-col-sm-10 mdui-col-xs-7">
  33. <textarea id="image" class="mdui-textfield-input" placeholder="https://kagamine.top/img.png"></textarea>
  34. </div>
  35. <div class="mdui-col-md-2 mdui-col-sm-2 mdui-col-xs-5">
  36. <a href="javascript:;" id="upload" class="mdui-color-theme-accent a-upload mr10">
  37. <input type="file" name="" accept=".png,.jpeg,.jpg" id="upload-image">选择图片
  38. </a>
  39. </div>
  40. </div>
  41. <?php
  42. } else {
  43. ?>
  44. <textarea id="image" class="mdui-textfield-input" placeholder="https://kagamine.top/img.png"></textarea>
  45. <?php
  46. }
  47. ?>
  48. </div>
  49. <div class="mdui-textfield">
  50. <label class="mdui-textfield-label">一句话介绍一下TA</label>
  51. <textarea id="introduceTA" class="mdui-textfield-input" placeholder="镜音铃是一个元气的二次元少女"></textarea>
  52. </div>
  53. <div class="mdui-textfield">
  54. <label class="mdui-textfield-label">你要对TA说的话</label>
  55. <textarea id="toTA" class="mdui-textfield-input" rows="4" placeholder="我喜欢你..."></textarea>
  56. </div>
  57. </div>
  58. <div class="mdui-card-actions">
  59. <button id="submitbtn" style="border-radius: 8px" class="mdui-btn mdui-color-theme-accent mdui-ripple mdui-float-right" onclick="submit()">
  60. 发射!
  61. </button>
  62. </div>
  63. <script>
  64. function submit() {
  65. url = $("#url").val();
  66. if (<?php if ($IMAGE_VERIFICATION) echo 'true';
  67. else echo 'false'; ?>) {
  68. imageVerification(function(answer) {
  69. request(answer)
  70. })
  71. } else {
  72. request('0000');
  73. }
  74. }
  75. $("#upload").on("change", "input[type='file']", function() {
  76. max_size = <?php echo $MAX_UPLOAD_SIZE * 1024; ?>;
  77. file = $(this).prop('files')[0]
  78. ext = $(this).val().substring($(this).val().lastIndexOf(".") + 1).toLowerCase()
  79. allow_ext = ["jpg", "png", "jpeg"];
  80. if (allow_ext.indexOf(ext) == -1) {
  81. mdui.alert("上传失败!不允许的图片格式!本站仅允许jpg、png、jpeg格式的图片!")
  82. return false
  83. }
  84. if (file.size > max_size) {
  85. mdui.alert("上传失败!图片过大!本站允许上传的最大大小:" + (<?php echo $MAX_UPLOAD_SIZE; ?>).toString() + "KB")
  86. return false
  87. }
  88. imageVerification(function(answer) {
  89. $('#upload-image').attr("disabled", "disabled")
  90. $("#isLoading").show(100)
  91. timestamp = this.timestamp = Date.parse(new Date()) / 1000;
  92. data = new FormData()
  93. data.append('file', file)
  94. data.append('vcode', answer)
  95. data.append('timestamp', timestamp)
  96. $.ajax({
  97. type: 'POST',
  98. url: "<?php echo $UPLOAD_API ?>",
  99. data: data,
  100. cache: false,
  101. processData: false,
  102. contentType: false,
  103. success: function(rdata) {
  104. $("#isLoading").hide(100)
  105. $("#image").val(rdata.path)
  106. $('#upload-image').removeAttr("disabled")
  107. if (rdata.code == 1) {
  108. mdui.snackbar({
  109. message: rdata.msg,
  110. position: 'right-top',
  111. })
  112. } else {
  113. mdui.alert(rdata.msg)
  114. }
  115. },
  116. error: function(data) {
  117. $("#image").val("")
  118. $('#upload-image').removeAttr("disabled")
  119. mdui.snackbar({
  120. message: "请求接口[upload]时,出现了一个致命错误!",
  121. position: 'right-top'
  122. })
  123. }
  124. })
  125. })
  126. });
  127. function request(vCode) {
  128. var contact = $("#qq").val();
  129. var name = $("#name").val();
  130. var taName = $("#taName").val();
  131. var image = $("#image").val();
  132. var introduceTA = $("#introduceTA").val();
  133. var toTA = $("#toTA").val();
  134. var timestamp = this.timestamp = Date.parse(new Date()) / 1000;
  135. var key = $.md5(
  136. 'Kagamine Yes!' +
  137. contact +
  138. name +
  139. taName +
  140. image +
  141. introduceTA +
  142. toTA +
  143. timestamp)
  144. requestApi("submit", {
  145. key: key,
  146. timestamp: timestamp,
  147. contact: contact,
  148. name: name,
  149. taName: taName,
  150. image: image,
  151. introduceTA: introduceTA,
  152. toTA: toTA,
  153. vCode: vCode
  154. }, function(rdata) {
  155. if (rdata.id === undefined) return;
  156. $("#qq").val("");
  157. $("#name").val("");
  158. $("#taName").val("");
  159. $("#image").val("");
  160. $("#introduceTA").val("");
  161. $("#toTA").val("");
  162. redirect_url = <?php
  163. if ($REWRITE) {
  164. echo "'/card/'+rdata.id";
  165. } else {
  166. echo "'/?page=card&id='+rdata.id";
  167. }
  168. ?>
  169. $.pjax({
  170. url: redirect_url,
  171. container: '#pjax-container'
  172. });
  173. }, true, false, "#submitbtn")
  174. }
  175. </script>
  176. </div>
  177. <br /><br />