markers.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. // echo "<h3><a href=''>Создать новый тип метки для компании $companyname</a></h3>";
  3. // echo "<h3><a href=''>Отобразить текущие метки для компании $companyname</a></h3>";
  4. echo "<h3>Создать метку, закодированную в QR код:</h3><hr/>";
  5. //set it to writable location, a place for temp generated PNG files
  6. $PNG_TEMP_DIR = dirname(__FILE__).DIRECTORY_SEPARATOR.'temp'.DIRECTORY_SEPARATOR;
  7. //html PNG location prefix
  8. $PNG_WEB_DIR = 'temp/';
  9. include "phpqrcode/qrlib.php";
  10. //ofcourse we need rights to create temp dir
  11. if (!file_exists($PNG_TEMP_DIR))
  12. mkdir($PNG_TEMP_DIR);
  13. $filename = $PNG_TEMP_DIR.'test.png';
  14. //processing form input
  15. //remember to sanitize user input in real-life solution !!!
  16. $errorCorrectionLevel = 'L';
  17. if (isset($_REQUEST['level']) && in_array($_REQUEST['level'], array('L','M','Q','H')))
  18. $errorCorrectionLevel = $_REQUEST['level'];
  19. $matrixPointSize = 6;
  20. if (isset($_REQUEST['size']))
  21. $matrixPointSize = min(max((int)$_REQUEST['size'], 1), 10);
  22. if (isset($_REQUEST['data'])) {
  23. //it's very important!
  24. if (trim($_REQUEST['data']) == '')
  25. echo('<span style=\'color:red\'><h3>Данные не должны быть пустыми!</h3></span>');
  26. else {
  27. if ($type == '3')
  28. $hex_string = $_REQUEST['data'];
  29. else {
  30. $buf = pack("lll", $type, $_REQUEST['objtype'], $_REQUEST['data']); //заголовок - номер пакета 1б и длина 2б. v-ushort, c- byte, C- ubyte, s - short, L - int, l - uint
  31. $hex_string = base64_encode($buf);
  32. }
  33. //echo "type $type";
  34. echo "<p><br>data: $hex_string</p>";
  35. // user data
  36. $filename = $PNG_TEMP_DIR . 'test' . md5($hex_string . '|' . $errorCorrectionLevel . '|' . $matrixPointSize) . '.png';
  37. //$filename = $PNG_TEMP_DIR.'test'.md5($_REQUEST['data'].'|'.$errorCorrectionLevel.'|'.$matrixPointSize).'.png';
  38. QRcode::png($hex_string, $filename, $errorCorrectionLevel, $matrixPointSize, 2);
  39. }
  40. } else {
  41. //default data
  42. //echo 'You can provide data in GET parameter: <a href="?data=like_that">like that</a><hr/>';
  43. QRcode::png('PHP QR Code :)', $filename, $errorCorrectionLevel, $matrixPointSize, 2);
  44. }
  45. //display generated file
  46. echo '<img src="'.$PNG_WEB_DIR.basename($filename).'" /><hr/>';
  47. //config form
  48. $sel1 = '';
  49. $sel2 = '';
  50. $sel3 = '';
  51. if ($type == '1')
  52. $sel1 = 'selected';
  53. if ($type == '2')
  54. $sel2 = 'selected';
  55. if ($type == '3')
  56. $sel3 = 'selected';
  57. echo '<form action="?act=markers" method="post">
  58. <b>Тип метки:</b> <select name="type">
  59. <option '.$sel1.' value="1">Сотрудник</option>
  60. <option '.$sel2.' value="2">Помещение</option>
  61. <option '.$sel3.' value="3">Текст</option>
  62. <option '.$sel4.' value="4">ТМЦ (Объект)</option>
  63. </select>
  64. <br>
  65. ID или текст:&nbsp;<input name="data" value="'.(isset($_REQUEST['data'])?htmlspecialchars($_REQUEST['data']):'').'" />&nbsp;
  66. Тип объекта:&nbsp;<input name="objtype" value="'.(isset($_REQUEST['objtype'])?htmlspecialchars($_REQUEST['objtype']):'').'" />&nbsp;
  67. ECC:&nbsp;<select name="level">
  68. <option value="L"'.(($errorCorrectionLevel=='L')?' selected':'').'>L - наименьшее</option>
  69. <option value="M"'.(($errorCorrectionLevel=='M')?' selected':'').'>M</option>
  70. <option value="Q"'.(($errorCorrectionLevel=='Q')?' selected':'').'>Q</option>
  71. <option value="H"'.(($errorCorrectionLevel=='H')?' selected':'').'>H - лучшее</option>
  72. </select>&nbsp;
  73. Размер:&nbsp;<select name="size">';
  74. for($i=1;$i<=10;$i++)
  75. echo '<option value="'.$i.'"'.(($matrixPointSize==$i)?' selected':'').'>'.$i.'</option>';
  76. echo '</select>&nbsp;
  77. <input type="submit" value="Создать"><br>
  78. <input name="Save" type="button" id="Save" onClick="" value="Сохранить созданную метку">
  79. </form><hr/>';
  80. // benchmark
  81. // QRtools::timeBenchmark();