Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przypadkowe usuwanie tre¶ci pliku przez skrypt
Forum PHP.pl > Forum > PHP
karolciaaa
Cały skrypt zrobiony przeze mnie. (oprocz funkcji full copy)

Oto kawałek przez który ucina mi połowę pliku, ale nie wiem czemu...
  1. $xml = file_get_contents($path);
  2. $xml = preg_replace('/premticks="(.*)"/', "premticks=\"$newticks\"", $xml);
  3. file_put_contents($path, $xml);

ucina go do wartosci 258B

tutaj caly skrypt

  1. <?php
  2. include ("config.php");
  3. $dirx = $wtfdata . '/houses/';
  4. $database_name = 'licytuj';
  5. $time = time();
  6. $ile=0;
  7. $hostwtf ='127.0.0.1';
  8. $portwtf ='7171';
  9. $failedhouse=0;
  10. $fps = @fsockopen($hostwtf, $portwtf, $errorcode, $errorstring, 0.5);
  11. if($fps){
  12. echo 'WTF? NOOB HACKERS?';
  13. }
  14. else
  15. {
  16. function full_copy( $source, $target ) {
  17. if ( is_dir( $source ) ) {
  18. @mkdir( $target );
  19. $d = dir( $source );
  20. while ( FALSE !== ( $entry = $d->read() ) ) {
  21. if ( $entry == '.' || $entry == '..' ) {
  22. continue;
  23. }
  24. $Entry = $source . '/' . $entry;
  25. if ( is_dir( $Entry ) ) {
  26. full_copy( $Entry, $target . '/' . $entry );
  27. continue;
  28. }
  29. copy( $Entry, $target . '/' . $entry );
  30. }
  31.  
  32. $d->close();
  33. }else {
  34. copy( $source, $target );
  35. }
  36. }
  37. echo 'BACKUP DATA STARTED';
  38. $data =date("d.m.Y - H i");
  39. $backup_dir =$backup_folder . $data;
  40. mkdir($backup_dir);
  41. $dir =$backup_dir . '/houses';
  42. $source =$wtfdata .'/houses';
  43. full_copy($source, $dir);
  44. $source =$wtfdata .'/accounts';
  45. $dir =$backup_dir . '/accounts';
  46. full_copy($source, $dir);
  47. $source =$wtfdata .'/players';
  48. $dir =$backup_dir . '/players';
  49. full_copy($source, $dir);
  50. $source =$wtfdata .'/bank';
  51. $dir =$backup_dir . '/bank';
  52. full_copy($source, $dir);
  53. $source =$wtfdata .'/donations';
  54. $dir =$backup_dir . '/donations';
  55. full_copy($source, $dir);
  56. $source =$wtfdata .'/logs';
  57. $dir =$backup_dir . '/logs';
  58. full_copy($source, $dir);
  59. $source =$wtfdata .'/vip';
  60. $dir =$backup_dir . '/vip';
  61. full_copy($source, $dir);
  62.  
  63. $dir =$backup_dir . '/houseitems.xml';
  64. $source =$wtfdata .'/houseitems.xml';
  65. if (!copy($source, $dir)) {
  66. echo "failed to copy $source...n";
  67. }
  68.  
  69. $dir =$backup_dir . '/queue.xml';
  70. $source =$wtfdata .'/queue.xml';
  71. if (!copy($source, $dir)) {
  72. echo "failed to copy $source...n";
  73. }
  74. $dir =$backup_dir . '/guilds.xml';
  75. $source =$wtfdata .'/guilds.xml';
  76. if (!copy($source, $dir)) {
  77. echo "failed to copy $source...n";
  78. }
  79.  
  80. echo '<font color="green">: OK<font color="black"><br><br>';
  81. echo 'HOUSE AUCTION WINNERS<br>';
  82. //connect
  83. mysql_connect($database_host, $database_user, $database_password);
  84. mysql_select_db($database_name);
  85. // endconnect
  86.  
  87. //zapytania
  88. $wynik = mysql_query("SELECT name FROM houses")
  89. or die('Błąd zapytania');
  90.  
  91. if(mysql_num_rows($wynik) > 0) {
  92. while($r = mysql_fetch_array($wynik)) {
  93.  
  94. $name = $r[0];
  95.  
  96. $ik = mysql_query("SELECT time FROM houses WHERE name='$name'")
  97. or die('Błąd zapytania');
  98.  
  99. if(mysql_num_rows($ik) > 0) {
  100. while($l = mysql_fetch_array($ik)) {
  101.  
  102. $dato = $l[0];
  103.  
  104. $wyn = mysql_query("SELECT nick FROM houses WHERE name='$name'")
  105. or die('Błąd zapytania');
  106.  
  107. if(mysql_num_rows($wyn) > 0) {
  108. while($d = mysql_fetch_array($wyn)) {
  109.  
  110. $nick = $d[0];
  111.  
  112.  
  113. //end zapytania
  114.  
  115. if ($dato > 2 && $time > $dato){
  116. $path = $dirx . $name . '.xml';
  117. if (!file_exists($path)){
  118. echo ' Could not find path to this house.';
  119. $failedhouse++;
  120. }
  121. if (file_exists($path))
  122. {
  123. $xml = file_get_contents($path);
  124. $xml = preg_replace('/<owner name="(.*)"/', "<owner name=\"$nick\"", $xml);
  125. file_put_contents($path, $xml);
  126.  
  127. mysql_query("DELETE FROM houses WHERE name='$name'")
  128.  
  129. $query = "INSERT INTO `ownhouses` (name, owner) VALUES ('$name', '$nick')";
  130. $result = @mysql_query($query);
  131. echo '<br> Added owner';
  132. echo '<br>';
  133. echo $nick;
  134. echo ' - ';
  135. echo $name;
  136. echo '<font color="green"> OK<font color ="black">';
  137. $ile++;
  138. }
  139. }
  140. }
  141. }
  142. }
  143. }
  144. }
  145. }
  146. echo '<br>Houses added: ';
  147. echo $ile;
  148. if ($failedhouse>0){
  149. echo '<br> Houses add failed: ';
  150. echo $failedhouse;
  151. }
  152. echo '<br>Current time: ';
  153. echo $time;
  154.  
  155. echo '<br><br>PACC TIME ADD:<br><br>';
  156.  
  157. $dir = $wtfdata . '/players/';
  158. $database_name = 'donation';
  159.  
  160. //connect
  161. mysql_connect($database_host, $database_user, $database_password);
  162. mysql_select_db($database_name);
  163. // endconect
  164.  
  165. //zapytania
  166. $wynik = mysql_query("SELECT nick FROM todopremium")
  167. or die('Błąd zapytania');
  168.  
  169. if(mysql_num_rows($wynik) > 0) {
  170. while($r = mysql_fetch_array($wynik)) {
  171.  
  172. $name = $r[0];
  173.  
  174. $name=strtolower($name);
  175.  
  176.  
  177.  
  178. $lol = mysql_query("SELECT points FROM todopremium WHERE nick='$name'")
  179. or die('Błąd zapytania');
  180. if(mysql_num_rows($lol) > 0) {
  181. while($c = mysql_fetch_array($lol)) {
  182.  
  183. $points = $c[0];
  184.  
  185. }
  186. $newticks=($points*3)*3600000;
  187.  
  188.  
  189. $lol = mysql_query("SELECT account FROM todopremium WHERE nick='$name'")
  190. or die('Błąd zapytania');
  191. if(mysql_num_rows($lol) > 0) {
  192. while($c = mysql_fetch_array($lol)) {
  193.  
  194. $accnum = $c[0];
  195.  
  196. }
  197.  
  198.  
  199. $lol = mysql_query("SELECT ip FROM todopremium WHERE nick='$name'")
  200. or die('Błąd zapytania');
  201. if(mysql_num_rows($lol) > 0) {
  202. while($c = mysql_fetch_array($lol)) {
  203.  
  204. $ip = $c[0];
  205.  
  206. }
  207.  
  208.  
  209. $path = $dir . $name . '.xml';
  210. if (file_exists($path)){
  211.  
  212. $open_file = fopen($path, "r");
  213. $contents = fread($open_file, filesize($path));
  214. $tags = explode("<", $contents);
  215.  
  216.  
  217. foreach ($tags as $tag)
  218. {
  219. if (substr($tag, 0, 6) == "player")
  220. {
  221. if ($temp_pass = stristr($tag, "premticks=\""))
  222. {
  223. $temp = explode("\"", $temp_pass);
  224. $prem = $temp[1];
  225. }
  226. }
  227. }
  228. fclose($path);
  229. $newticks=$newticks+$prem;
  230.  
  231.  
  232. mysql_query("DELETE FROM todopremium WHERE nick='$name'")
  233.  
  234.  
  235. $query = "INSERT INTO `premium` (account, nick, ip, points ) VALUES ('$accnum', '$name', '$ip', '$points')";
  236. $result = @mysql_query($query);
  237.  
  238. $xml = file_get_contents($path);
  239. $xml = preg_replace('/premticks="(.*)"/', "premticks=\"$newticks\"", $xml);
  240. file_put_contents($path, $xml);
  241.  
  242. echo $name;
  243. echo ' - ';
  244. echo $points;
  245. echo ' points <font color="green">OK<font color="black"> ';
  246. echo '<br>';
  247. }
  248. else
  249. {
  250. echo $name;
  251. echo ' - ';
  252. echo $points;
  253. echo ' points <font color="red">Character does not exists. <font color="black">';
  254. echo '<br>';
  255. }
  256.  
  257.  
  258.  
  259.  
  260. }
  261. }
  262. }
  263. }
  264. }
  265.  
  266. }
  267. ?>




plik po przypadkowym usunieciu wyglada tak:
  1. <player name="Checkus" account="573500" sex="1" lookdir="1" exp="8394" voc="1" level="9" access="0" namelock="0" cap="460" bless="0" maglevel="14" lastlogin="1279893900" premticks="20"/></inside></item></depot></depots><storage/></player>
everth
Może taki regexp:
  1. preg_replace('/(?<=premticks=\")[a-zA-Z0-9]*(?=\")/',$newticks, $text);
karolciaaa
Pomogło smile.gif
Bóg Ci w dzieciach wynagrodzi...

Je¶li by¶ jeszcze wiedział, to przy dużych obliczeniach skrypt podaje wartosc hex zamiast integera... Czy to jest flaga bledu procesora, czy jakies ograniczenie ze strony php ?
everth
Zależy o jak duże liczby chodzi. Powyżej pewnych warto¶ci PHP automatycznie przekształca typ INT w DOUBLE(FLOAT). Może funkcja hexdec ci pomoże
To jest wersja lo-fi głównej zawarto¶ci. Aby zobaczyć pełn± wersję z większ± zawarto¶ci±, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.