ugrás a tartalomhoz

Archívum - Jún 2006 - Fórum téma

június 29

A while lefut csak az első futs értékeit használja

Anonymous · 2006. Jún. 28. (Sze), 22.47
ÜDv!

Az a bajom hogy a while anyiszor lefut ugye ahény sor van(3), de minenhova az első értékeit
adja le...

miért?
  1. <?php  
  2.   
  3. $server_query = mysql_query("SELECT server_id, server_status_adress, server_status_port, server_status_xml FROM servers");  
  4.   
  5. while ($server_extract = mysql_fetch_assoc($server_query)) {  
  6.   
  7. $server_id = $server_extract['server_id'];  
  8.   
  9. $server_status_adress = $server_extract['server_status_adress'];  
  10. $server_status_port = $server_extract['server_status_port'];  
  11. $server_status_xml = $server_extract['server_status_xml'];  
  12.   
  13. $server_adress = $server_status_adress;  
  14. $server_port = $server_status_port;  
  15.   
  16. $f = @fsockopen($server_adress$server_port$errno$errstr, 2);  
  17.   
  18. if (!f) {  
  19. $server_online = 0;  
  20. }  
  21.   
  22. if ($f) {  
  23. $server_online = 1;  
  24. $query = "GET /$server_status_xml\r\n";  
  25. $query .= "Host: sylvanas.kani.hu\r\n\r\n";  
  26.   
  27. function xml_extract() {  
  28. global $f;  
  29. global $xml_site;  
  30. $rows = 0;  
  31.   
  32. while ($xml_rows = fgets($f, 4048)) {  
  33.   
  34. if ($rows > 5) {  
  35. $xml_site .= $xml_rows;  
  36. }  
  37.   
  38. $rows++;  
  39.   
  40. }  
  41.   
  42. }  
  43.   
  44. fwrite($f$query);  
  45.   
  46. xml_extract();  
  47.   
  48. $parser = xml_parser_create();  
  49.   
  50. xml_set_element_handler($parser"start_tag""end_tag");  
  51. xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);  
  52.   
  53. $xml = $xml_site;  
  54.   
  55. $xml = utf8_decode($xml);  
  56.   
  57.   
  58. function start_tag($parser$tag$type) {  
  59. global $player_count;  
  60.   
  61. if ($tag == "player") {  
  62. $player_count++;  
  63. }  
  64.   
  65. }  
  66.   
  67. function end_tag($parser$tag) {  
  68.   
  69. }  
  70.   
  71. function chd_tag($parser$tag) {  
  72.   
  73. }  
  74.   
  75. xml_parse($parser$xml);  
  76.   
  77. xml_parser_free($parser);  
  78.   
  79. if ($f) {  
  80.   
  81. if (isset($player_count)) {  
  82. $server_online_users = $player_count;  
  83. }  
  84.   
  85. elseif (!isset($player_count)) {  
  86. $server_online_users = 0;  
  87. }  
  88.   
  89. }  
  90.   
  91. }  
  92.   
  93. if ($server_online == 0) {  
  94. $server_online_users = '0';  
  95. }  
  96.   
  97. mysql_query("UPDATE servers SET server_online='$server_online', server_online_users='$server_online_users' WHERE server_id='$server_id'");  
  98.   
  99. }  
  100.   
  101.   
  102. ?>  
Előre is köszönöm.
 

Beágyazott file nevének kiíratása

krey · 2006. Jún. 28. (Sze), 19.30
Egy ehhez hasonló nevű változót keresek:

$GLOBALS["_SERVER"]["RUNNING_SCRIPT"]
$GLOBALS["_SERVER"]["INCLUDED_PHP_SELF"]

vagy akármi.
Aki megtalálta már az kérem szóljon!
(tehát kéne egy változó, ami a $_SERVER["PHP_SELF"] és $_SERVER["SCRIPT NAME"]-ekhez hasonlóan működne, de a beágyazott file nevét írná ki)

üdv. krey
 

Két dátumidőpon között eltelt idő számítása

Anonymous · 2006. Jún. 28. (Sze), 18.02
Hi!

Adott két időpont ebben a formátumban: ÉÉÉÉ-HH-NN óó:pp:mm. Hogyan tudnám a két dátum között eltelt időt kiszámolni? Az eredmény szintén ebben a formátumban kéne. Köszi minden ötletet.
 

weather location ID

hirlapom · 2006. Jún. 28. (Sze), 16.22
Nemtudom foglalkozott-e valaki a témával, de hátha:
Vannak olyan szolgáltatók, mint a weather.com vagy a yahoo, akik ingyen szolgáltatnak rss infókat egy adott város időjárásáról.

Addig nagyszerűen megy a dolog, hogy lekérem a kérést, és leelemzem(weather.com-on próbáltam), de a város ID megadása, már közel sem ennyire baráti. Szeretnék egy keresőt erre a célra, ami kiadja egy adott város (location) ID-ját (pl.:Budapest - HUXX0002), hogy ne kelljen folyton elrohangálnia szegény user-nek az adott honlapra id miatt.

Találkozott már valaki megoldással?
 

Keresés egy tömb elemei között

Anonymous · 2006. Jún. 28. (Sze), 15.24
Sziasztok!

Van egy rakás xml állományom egy könyvtárban. Ezek között kéne keresnem a filenevük alapján.
Azt megcsináltam eddig, hogy beolvasom egy tömbbe a könyvtár file-jait és mivel egy szabály alapján épült fel a nevük eddig tökéletesen ment a keresés, azonban jött egy kis bonyodalom. Most azonban változtattak a szabályokon...
Szóval, így fest most egy filenev:
AAA123_060628_xxxxxx.xml

Az xxxxxx helyén tetszőleges számok állhatnak, 5 vagy 6 számjegy. És a keresésénél az összes eredményt meg kéne találnom.

Ha nem elég érthető, akkor:
megadja a felhasználó a keresési feltételt, pl: AAA123 és dátum 060628.
Ez alapján meg kéne találnom az összes olyan xml-t, amelynek a fileneve tartalmazza ezt a sztringet: AAA123_060628.

Remélem érthető voltam. :) Várom az ötleteket. Köszi!
 

Location() ugrás AJAX-os betöltés után

Anonymous · 2006. Jún. 28. (Sze), 13.41
Hello!

Éppen egy blog motort írok, amely használ AJAX-ot is. Eddig semmi gond, a bejegyzések, kommentek betöltése, minden szép is jó. A probléma ott kezdődik amikor az egyik kommentre akarok ugrani. Ugyebár ezt pl egy "#2"-vel meg is tehetném, de az a gond, hogy AJAX-al betöltött tartalom esetén ez nem működik.
Kitaláltam, hogy akkor miután betöltöttem a kommenteket egy location('#2')-vel odaugrok a 2-es ID-jű kommentre. Ez működne is, csak az a probléma hogy a location még azelőttlefut, hogy az AJAX a tartalmat betöltené a divbe.
Tehát a lényeg az, hogy hogyan tudnám azt elérni, hogy a location csak a div betöltése után fusson le?

Íme a kód:
  1. var AJAX_R = false;  
  2.   
  3. function ajax(func,message){  
  4.     document.getElementById("content").innerHTML = '<div class="ajax-loading"><!-- Betöltés --></div>';  
  5.     if (window.XMLHttpRequest){  
  6.       AJAX_R = new XMLHttpRequest();  
  7.     }  
  8.     else if(window.ActiveXObject){  
  9.       AJAX_R = new ActiveXObject("Microsoft.XMLHTTP");  
  10.     }  
  11.     if(func == 'bejegyzesek') { AJAX_R.onreadystatechange = AJAXProcess_Content; }  
  12.     if(func == 'kommentek') { AJAX_R.onreadystatechange = AJAXProcess_Content; }  
  13.     AJAX_R.open("GET","funkciok/ajax.php?func="+func+"&"+message,true);   
  14.     AJAX_R.send(null);  
  15.  }  
  16.   
  17. function AJAXProcess_Content() {  
  18.   if (AJAX_R.readyState == 4) {  
  19.     document.getElementById("content").innerHTML = AJAX_R.responseText;  
  20.   }  
  21. }  
Az eredeti AJAX-os kódot nem én írtam egy jóbarátomtól kaptam. Nos megpróbáltam azt, hogy a document.getElementById("content").innerHTML = AJAX_R.responseText; után adom meg a location-t. Ez így okés is volt, viszont ha az AJAXProcess_Content()-nek adok egy bemeneti változót, pl: AJAXProcess_Content(komment_id), akkor már nem hajlandó működni. Pontosabban tölt tölt, de nem jön be a tartalom. Ebben szeretném a segítségeteket kérni.

A honlap: http://fishblog.fishworks.hu (Bal oldalt van a kommentek rész)

preg_replace_callback // Type 2: Static class method call

toxin · 2006. Jún. 28. (Sze), 13.06
kérdés
  1. <?php  
  2. $sampleText = 'aaa 123 bbb';  
  3.   
  4. class fooFind{  
  5.     function fooFind($text){  
  6.         $this->origText = $text;  
  7.         preg_replace_callback('/[\d]+/',array('fooFind','printFind'),$this->origText);  
  8.     }  
  9.   
  10.     function printFind($matchedText){  
  11.         echo 'Eredeti:'.$this->origText."\n";  
  12.         echo 'Találat:'.$matchedText[0]."\n";  
  13.     }  
  14. }  
  15.   
  16. $myFoo = new fooFind($sampleText);  
  17. ?>  
a printFind callback függvényben/metódusban elérhető-e vhogy az eredeti a hívó objektum ill objattrib (esetünkben a $this->origText), vagy marad az eval-os megoldás ?
  1. <?php  
  2. $sampleText = 'aaa 123 bbb';  
  3.   
  4. class fooFind{  
  5.     function fooFind($text){  
  6.         $this->origText = $text;  
  7.         preg_replace('/[\d]+/e','$this->printFind(\'\\0\')',$this->origText);  
  8.     }  
  9.   
  10.     function printFind($matchedText){  
  11.         echo 'Eredeti:'.$this->origText."\n";  
  12.         echo 'Találat:'.$matchedText."\n";  
  13.     }  
  14. }  
  15.   
  16. $myFoo = new fooFind($sampleText);  
  17. ?>  
kössz a választ
 

Xml lehívási távoli gépről és elemzése

Anonymous · 2006. Jún. 28. (Sze), 12.27
Üdv!

Lenne egy ksi gondom xml kezeléssel kapcsolatban:

itt a php kód egy része:

és az a bajom hogy a szerver átad egy ilyen paramétert mikor lehívom
a stats.xml-t

HTTP/1.1 200 OK
Server: WoWEmu
Connection: Close
Content-length: 7601
Content-type: text/xml

nos ez eddig ok is, ezt meg próbálom kiszedni a preg_replace-val,
de a \n vagy is az üres sorok bennmaradnak és így sajnos nem elemzni...
  1. <?php  
  2.   
  3. $server = "169.254.201.102";  
  4.   
  5. $f = @fsockopen($server, 8080, $err$errstr, 5);  
  6.   
  7. $query = "GET /stats.xml\r\n";  
  8. $query .= "Host: www.php.net\r\n\r\n";  
  9.   
  10. function abc() {  
  11. global $f;  
  12. global $b;  
  13. while ($lap = fgets($f, 1024)) {  
  14. $b .= $lap;  
  15. }  
  16. }  
  17.   
  18. if ($f) {  
  19.   
  20. fwrite($f$query);  
  21.   
  22.   
  23.   
  24. abc();  
  25.   
  26. $c = NULL;  
  27.   
  28.   
  29.   
  30. $b = preg_replace("/Server([ a-zA-Z0-9\.\:]*)/"$c$b);  
  31. $b = preg_replace("/HTTP\/([ a-zA-Z0-9\.\:]*)/"$c$b);  
  32. $b = preg_replace("/Connection([ a-zA-Z0-9\.\:]*)/"$c$b);  
  33. $b = preg_replace("/Content-length([ a-zA-Z0-9\.\:]*)/"$c$b);  
  34. $b = preg_replace("/Content-type([ a-zA-Z0-9\.\:\/]*)/"$c$b);  
  35.   
  36.   
  37. }  
  38.   
  39. $parser = xml_parser_create();  
  40.   
  41. xml_set_element_handler($parser"start_tag""end_tag");  
  42. xml_set_character_data_handler($parser"chd_tag");  
  43. xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);  
  44.   
  45.   
  46.   
  47. print $xmla = $b;  
  48.   
  49. $xml = $xmla;  
  50.   
  51.   
  52.   
  53. xml_parse($parser$xml);  
  54.   
  55. /* .... */  
  56.   
  57. ?>  
Szerintetek hogy tudnám elérni hogy elemezze?
vagy pedig kivenni azt az infót amit a szerver küld?


Előre is kösszönöm...
 

Bot: john@company.com

vbence · 2006. Jún. 28. (Sze), 12.12
Halihó!

Ismerő valakinek a következő user-agent?
Mozilla/4.0 john##kukac##company.com

Letölti a robots.txt-t, és 30mp vagy 1 perc van mindig az oldalletöltések között. Mindig UPC-s címekről jön. Nincs sok baj vele, de így is rengeteg oldalletöltést generál.

A magyar (és más kelet-európai) botoknál kifejezetten ritka, hogy civilizált módon kontakt-címet adnának, amit a netikett biztosan, a szabályozások biztosan nem követelnek meg. Szóval egy oldalon, ami napi 200 látogatót számlál (igaz, átlagosan 6 letöltés/látogatóval), ugyanennyi (200) letöltést egy ismeretlen bottól mem szívesen szolgálok ki, főleg, ha nem tudom hova kerül (talán tango.hu?).

Szóval ha valaki tud valamit erről a szörnyetegről, vagy tippet az azonosításra szivesen várom.

B
 

június 28

Xml-ben egy addott tag előfordulásának megszámolása.

Anonymous · 2006. Jún. 27. (K), 22.20
Üdv!

LEnne egy kis problémám:

írtam egy xml kezelőt:
  1. <?php  
  2.   
  3. $parser = xml_parser_create();  
  4.   
  5. xml_set_element_handler($parser"start_handler""end_handler");  
  6.   
  7. xml_set_character_data_handler($parser"character_handler");  
  8.   
  9. xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);  
  10.   
  11. $xml = file_get_contents("stat.xml");  
  12.   
  13. xml_parse($parser$xml);  
  14.   
  15. xml_parser_free($parser);  
  16.   
  17. function start_handler($parser$tag$type) {  
  18.   
  19. }  
  20.   
  21. function end_handler($parser$tag) {  
  22.   
  23. }  
  24.   
  25. function character_handler($parser$text) {  
  26.   
  27. }  
  28.   
  29. ?>  
Nos az a bajom hogy van egy olyan a <stat> tagen belül hogy <players>
és azon belül ha minél több játékos van akkor minnél több <player> tag, és én ezt szeretném megszámolni, de hogyan?

ezt próbáltam de nem jött be

function start_handler($parser, $tag, $type) {
while ($tag == "player") {
$a++;
}
print $a;
}