PageRenderTime 60ms CodeModel.GetById 32ms RepoModel.GetById 0ms app.codeStats 0ms

/util_funcs.php

https://github.com/ryjkov/rash-qdb-fork
PHP | 198 lines | 161 code | 24 blank | 13 comment | 36 complexity | e4915fa5f3ffff176033673eddc22c72 MD5 | raw file
  1. <?php
  2. /* Change urls to clickable links, and change newlines to br-tags. */
  3. function mangle_quote_text($txt)
  4. {
  5. $txt = preg_replace('/((http|ftp):\/\/([\w\d\-]+)(\.[\w\d\-]+){1,})([\/\?\w\d\.=&+%~_\-]+(#[\w\d_]+)?)?/', '<A href="\\1\\5">\\1\\5</A>', $txt);
  6. $txt = nl2br($txt);
  7. return $txt;
  8. }
  9. function get_number_limit($param, $min, $max)
  10. {
  11. if (isset($param) && preg_match('/^[0-9]+$/', $param)) {
  12. $limit = (int)$param;
  13. if ($limit < $min) $limit = $min;
  14. else if ($limit > $max) $limit = $max;
  15. } else $limit = $max;
  16. return $limit;
  17. }
  18. function db_tablename($name)
  19. {
  20. include 'settings.php';
  21. return $CONFIG['db_table_prefix'].'_'.$name;
  22. }
  23. function urlargs($ar1, $ar2 = null, $ar3 = null)
  24. {
  25. include 'settings.php';
  26. if ($ar2 === null) return $ar1;
  27. if ($ar3 === null) return implode($CONFIG['GET_SEPARATOR_HTML'], array($ar1, $ar2));
  28. return implode($CONFIG['GET_SEPARATOR_HTML'], array($ar1, $ar2, $ar3));
  29. }
  30. function autologin()
  31. {
  32. if (isset($_COOKIE['user']) && isset($_COOKIE['passwd']) && isset($_COOKIE['userid'])) {
  33. global $db;
  34. $pass = $_COOKIE['passwd'];
  35. $user = $_COOKIE['user'];
  36. $userid = $_COOKIE['userid'];
  37. $res =& $db->query("SELECT * FROM ".db_tablename('users')." WHERE id=".$db->quote((int)$userid)." AND user=".$db->quote($user));
  38. if (DB::isError($res)) return;
  39. $row = $res->fetchRow(DB_FETCHMODE_ASSOC);
  40. if (!isset($row['password'])) return;
  41. $passchk = md5($row['password'].$row['salt']);
  42. if ($pass == $passchk) {
  43. $_SESSION['user'] = $row['user'];
  44. $_SESSION['level'] = $row['level'];
  45. $_SESSION['userid'] = $row['id'];
  46. $_SESSION['logged_in'] = 1;
  47. mk_cookie('user', $row['user']);
  48. mk_cookie('userid', $row['id']);
  49. mk_cookie('passwd', $passchk);
  50. }
  51. }
  52. }
  53. /* $row = array with keys 'user', 'id', 'level', 'password', 'salt' */
  54. function set_user_logged($row)
  55. {
  56. $_SESSION['user'] = $row['user']; // site-wide accessible username
  57. $_SESSION['level'] = $row['level']; // site-wide accessible level
  58. $_SESSION['userid'] = $row['id'];
  59. $_SESSION['logged_in'] = 1; // site-wide accessible login variable
  60. if (isset($_POST['remember_login'])) {
  61. mk_cookie('user', $row['user']);
  62. mk_cookie('userid', $row['id']);
  63. mk_cookie('passwd', md5($row['password'].$row['salt']));
  64. }
  65. header("Location: http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']));
  66. }
  67. function set_user_logout()
  68. {
  69. session_unset($_SESSION['user']);
  70. session_unset($_SESSION['logged_in']);
  71. session_unset($_SESSION['level']);
  72. session_unset($_SESSION['userid']);
  73. mk_cookie('user');
  74. mk_cookie('userid');
  75. mk_cookie('passwd');
  76. header('Location: http://' . $_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']));
  77. }
  78. function set_voteip($salt)
  79. {
  80. if (isset($_SESSION['voteip'])) {
  81. if (!isset($_COOKIE['voteip'])) {
  82. $addr = $_SESSION['voteip'];
  83. mk_cookie('voteip', $addr . '-' . md5($addr . $salt));
  84. $_SESSION['voteip'] = $addr;
  85. }
  86. } else {
  87. if (isset($_COOKIE['voteip'])) {
  88. $arr = explode('-', $_COOKIE['voteip'], 2);
  89. $addr = $arr[0];
  90. $hash = $arr[1];
  91. if (preg_match("/^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/", $addr)) {
  92. if (md5($addr . $salt) != $hash)
  93. $addr = getenv("REMOTE_ADDR");
  94. mk_cookie('voteip', $addr . '-' . md5($addr . $salt));
  95. $_SESSION['voteip'] = $addr;
  96. } else {
  97. /* illegal ip in cookie */
  98. $addr = getenv("REMOTE_ADDR");
  99. mk_cookie('voteip', $addr . '-' . md5($addr . $salt));
  100. $_SESSION['voteip'] = $addr;
  101. }
  102. } else {
  103. $addr = getenv("REMOTE_ADDR");
  104. mk_cookie('voteip', $addr . '-' . md5($addr . $salt));
  105. $_SESSION['voteip'] = $addr;
  106. }
  107. }
  108. }
  109. function write_settings($fname, $data)
  110. {
  111. $fp = fopen($fname,"w");
  112. $str = "<?php\n";
  113. if ($data)
  114. foreach ($data as $key=>$val) {
  115. $str .= '$CONFIG[\''.$key.'\'] = '.$val.";\n";
  116. }
  117. if (fwrite($fp, $str, strlen($str)) === FALSE) {
  118. return FALSE;
  119. }
  120. return TRUE;
  121. }
  122. function mk_cookie($name, $data = null)
  123. {
  124. if ($data) {
  125. setcookie($name, $data, time()+3600*24*365, '/');
  126. $_COOKIE[$name] = $data;
  127. } else {
  128. setcookie($name, '', time()-3600, '/');
  129. unset($_COOKIE[$name]);
  130. }
  131. }
  132. /**
  133. * Return a random string
  134. *
  135. * @author Aidan Lister <aidan@php.net>
  136. * @version 2.0
  137. * @param int $length Length of the string you want generated
  138. * @param string $seeds The seeds you want the string to be generated from
  139. */
  140. function str_rand($length = 8, $seeds = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890')
  141. {
  142. $str = '';
  143. $seeds_count = strlen($seeds);
  144. // Seed
  145. list($usec, $sec) = explode(' ', microtime());
  146. $seed = (float) $sec + ((float) $usec * 100000);
  147. mt_srand($seed);
  148. // Generate
  149. for ($i = 0; $length > $i; $i++) {
  150. $str .= $seeds{mt_rand(0, $seeds_count - 1)};
  151. }
  152. return $str;
  153. }
  154. function is_lang($str)
  155. {
  156. global $lang;
  157. if (isset($lang[$str])) return TRUE;
  158. return FALSE;
  159. }
  160. function lang($str)
  161. {
  162. global $lang;
  163. if (isset($lang[$str])) return $lang[$str];
  164. return $str;
  165. }
  166. function title($title)
  167. {
  168. global $CONFIG, $lang;
  169. $str = ($CONFIG['prefix_short_title'] ? $CONFIG['site_short_title'].': ' : '');
  170. if (preg_match('/^[0-9]+$/', $title)) $str .= sprintf(lang('pagetitle_quotenum'), $title);
  171. else if (is_lang('pagetitle_'.$title)) $str .= lang('pagetitle_'.$title);
  172. else $str .= $CONFIG['site_long_title'];
  173. return $str;
  174. }