qrcode.inc.php 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. /**
  3. * [Discuz!] (C)2001-2099 Comsenz Inc.
  4. * This is NOT a freeware, use is subject to license terms
  5. *
  6. * $Id: qrcode.inc.php 34711 2014-07-11 06:16:56Z nemohou $
  7. */
  8. if (!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. $dir = DISCUZ_ROOT.'./data/cache/qrcode/';
  12. $_G['wechat']['setting'] = unserialize($_G['setting']['mobilewechat']);
  13. if($_GET['access']) {
  14. dheader('Expires: '.gmdate('D, d M Y H:i:s', TIMESTAMP + 86400).' GMT');
  15. require_once DISCUZ_ROOT . './source/plugin/wechat/wsq.class.php';
  16. $url = wsq::$WSQ_DOMAIN.'siteid='.$_G['wechat']['setting']['wsq_siteid'].'&c=index&a=';
  17. if($_GET['threadqr']) {
  18. $tid = dintval($_GET['threadqr']);
  19. include_once template('wechat:wechat_threadqr');
  20. } elseif($_GET['tid']) {
  21. $qrsize = !empty($_GET['qrsize']) ? $_GET['qrsize'] : 4;
  22. if(empty($_GET['pid'])) {
  23. $tid = dintval($_GET['tid']);
  24. $dtid = sprintf("%09d", $tid);
  25. $dir1 = substr($dtid, 0, 3);
  26. $dir2 = substr($dtid, 3, 2);
  27. $dir3 = substr($dtid, 5, 2);
  28. $dir = $dir.$dir1.'/'.$dir2.'/'.$dir3.'/';
  29. $file = $dir.'/qr_t'.$tid.'.jpg';
  30. if(!file_exists($file) || !filesize($file)) {
  31. if(!C::t('forum_thread')->fetch($tid)) {
  32. exit;
  33. }
  34. dmkdir($dir);
  35. require_once DISCUZ_ROOT.'source/plugin/mobile/qrcode.class.php';
  36. QRcode::png($url.'viewthread&tid='.$_GET['tid'].'&source=pcscan', $file, QR_ECLEVEL_Q, $qrsize);
  37. }
  38. dheader('Content-Disposition: inline; filename=qrcode_t'.$tid.'.jpg');
  39. dheader('Content-Type: image/pjpeg');
  40. @readfile($file);
  41. } else {
  42. require_once DISCUZ_ROOT.'source/plugin/mobile/qrcode.class.php';
  43. QRcode::png($url.'showactivity&tid='.$_GET['tid'].'&viewpid='.$_GET['pid'].'&source=pcscan', false, QR_ECLEVEL_Q, $qrsize);
  44. }
  45. } elseif($_GET['fid']) {
  46. $qrsize = !empty($_GET['qrsize']) ? $_GET['qrsize'] : 2;
  47. $fid = dintval($_GET['fid']);
  48. $file = $dir.'qr_'.$fid.'.jpg';
  49. if(!file_exists($file) || !filesize($file)) {
  50. if(!C::t('forum_forum')->fetch($fid)) {
  51. exit;
  52. }
  53. dmkdir($dir);
  54. require_once DISCUZ_ROOT.'source/plugin/mobile/qrcode.class.php';
  55. QRcode::png($url.'index&fid='.$_GET['fid'].'&source=pcscan', $file, QR_ECLEVEL_Q, $qrsize);
  56. }
  57. dheader('Content-Disposition: inline; filename=qrcode_'.$fid.'.jpg');
  58. dheader('Content-Type: image/pjpeg');
  59. @readfile($file);
  60. } else {
  61. $qrsize = !empty($_GET['qrsize']) ? $_GET['qrsize'] : 2;
  62. $file = $dir.'qr_index.jpg';
  63. if(!file_exists($file) || !filesize($file)) {
  64. dmkdir($dir);
  65. require_once DISCUZ_ROOT.'source/plugin/mobile/qrcode.class.php';
  66. QRcode::png($url.'index&source=pcscan', $file, QR_ECLEVEL_Q, $qrsize);
  67. }
  68. dheader('Content-Disposition: inline; filename=qrcode_index.jpg');
  69. dheader('Content-Type: image/pjpeg');
  70. @readfile($file);
  71. }
  72. exit;
  73. }
  74. require_once DISCUZ_ROOT . './source/plugin/wechat/wechat.lib.class.php';
  75. $wechat_client = new WeChatClient($_G['wechat']['setting']['wechat_appId'], $_G['wechat']['setting']['wechat_appsecret']);
  76. list($ticket, $code) = explode("\t", authcode($_G['cookie']['wechat_ticket'], 'DECODE'));
  77. if($ticket) {
  78. $file = $dir.md5($ticket).'_'.$code.'.jpg';
  79. if(!file_exists($file) || !filesize($file)) {
  80. dmkdir($dir);
  81. $qrcode = dfsockopen($wechat_client->getQrcodeImgUrlByTicket($ticket));
  82. $fp = @fopen($file, 'wb');
  83. @fwrite($fp, $qrcode);
  84. @fclose($fp);
  85. }
  86. dheader('Content-Disposition: inline; filename=qrcode.jpg');
  87. dheader('Content-Type: image/pjpeg');
  88. @readfile($file);
  89. }