Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kursna lista NBS

[es] :: PHP :: Kursna lista NBS

Strane: 1 2

[ Pregleda: 24104 | Odgovora: 26 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mnicic
Milorad Ničić
Vrnjacka Banja/Kragujevac

Član broj: 6424
Poruke: 135
213.137.102.*

Sajt: www.ni-kel.com


Profil

icon Kursna lista NBS26.04.2006. u 19:36

Pravim kursnu listu dinara po ASC fajlu NBS. Imam problem pri "dobijanju" fajla.

Code:

$k_file = "http://www.nbs.yu/serbian/kursevi/ascii/Kl" . gmdate("ymd") . ".asc"
...
if(!($f = fopen($k_file, "r"))) die ("---");
{
     $zemlja = fgets($f, 110);
     ...


Nece nikako da mi ocita fajl. Kako mogu da resim ovaj problem?

[Ovu poruku je menjao mnicic dana 26.04.2006. u 20:38 GMT+1]

[Ovu poruku je menjao mnicic dana 26.04.2006. u 21:09 GMT+1]
Pozdrav,

http://www.ni-kel.com/ - Web portal
26.04.2006. u 19:36 

SmilieBG
Aleksandar Skodric
NL

Član broj: 13094
Poruke: 1822
*.speed.planet.nl.



Profil

icon Re: Kursna lista NBS26.04.2006. u 20:03
Paa.... verovatno zato sto je fajl ASC a _nije_ ACS

http://www.nbs.yu/serbian/kursevi/ascii/Kl060425.asc

;)

Poz,
Sale
=========
Uporedi cene i karakteristike za vise od 10.000 proizvoda, izmedju ostalog:
Digitalni foto-aparati
Mobilni telefoni
Skolski pribor
=========
26.04.2006. u 20:03 

SmilieBG
Aleksandar Skodric
NL

Član broj: 13094
Poruke: 1822
*.speed.planet.nl.



Profil

icon Re: Kursna lista NBS26.04.2006. u 20:04
predlazem, da zapalis jednu, popijes kafu, malo prosetas... najozbiljnije ;)
Znam u kakvom sam ja stanju, kad postavim pitanje, a ispostavise se da je sintaksicka greska ;)

Poz,
Sale
=========
Uporedi cene i karakteristike za vise od 10.000 proizvoda, izmedju ostalog:
Digitalni foto-aparati
Mobilni telefoni
Skolski pribor
=========
26.04.2006. u 20:04 

mnicic
Milorad Ničić
Vrnjacka Banja/Kragujevac

Član broj: 6424
Poruke: 135
213.137.102.*

Sajt: www.ni-kel.com


Profil

icon Re: Kursna lista NBS26.04.2006. u 20:10
oups! sorry! to je moja greska u prebacivanju koda ovde na forum. u programu je ispravno napisano "ASC". jos jedom, sorry...

da li neko ima ideju gde je problem?
Pozdrav,

http://www.ni-kel.com/ - Web portal
26.04.2006. u 20:10 

Gojko Vujovic
Juniper Networks
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13173
*.gojko.ss.

Sajt: www.gojkovujovic.com


Profil

icon Re: Kursna lista NBS26.04.2006. u 20:34
Za dovlačenje fajla probaj:

Code:
$l = file("http://www.nbs.yu/serbian/kursevi/ascii/Kl" . gmdate("ymd") . ".asc");


Za parsing vidi php.net/explode ili ako nije dovoljan, preg_match.
26.04.2006. u 20:34 

SmilieBG
Aleksandar Skodric
NL

Član broj: 13094
Poruke: 1822
*.speed.planet.nl.



Profil

icon Re: Kursna lista NBS26.04.2006. u 20:45
ja testirao i meni radi :S

http://aleksandar.skodric.eu/testes.php

code:

http://aleksandar.skodric.eu/testes.phps

Poz,
Sale
=========
Uporedi cene i karakteristike za vise od 10.000 proizvoda, izmedju ostalog:
Digitalni foto-aparati
Mobilni telefoni
Skolski pribor
=========
26.04.2006. u 20:45 

Aleksandar Marković
Part Time Freelance Journalist

Član broj: 219
Poruke: 5230
*.dialup.sezampro.yu.

Sajt: www.akcenat.info


Profil

icon Re: Kursna lista NBS26.04.2006. u 21:57
Kursna lista i vremenska prognoza
26.04.2006. u 21:57 

mnicic
Milorad Ničić
Vrnjacka Banja/Kragujevac

Član broj: 6424
Poruke: 135
213.137.102.*

Sajt: www.ni-kel.com


Profil

icon Re: Kursna lista NBS27.04.2006. u 10:42
@smilieBG
pogledao ja, ne radi ni kod tebe...
Pozdrav,

http://www.ni-kel.com/ - Web portal
27.04.2006. u 10:42 

Gojko Vujovic
Juniper Networks
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13173
*.gojko.ss.

Sajt: www.gojkovujovic.com


Profil

icon Re: Kursna lista NBS27.04.2006. u 11:18
Prvo proveri da li generisani url stvarno postoji (otvori ga u browseru), pa onda daj dijagnozu da li skripta radi ili ne. Konkretno, juče je njegova skripta radila, danas ne radi jer ne postoji kursna lista sa tim imenom.

I mogu li da pitam zašto voliš fopen i ručno brljanje po strukturi fajla, ako postoje file i explode funkcije koje sam pomenuo?
27.04.2006. u 11:18 

mnicic
Milorad Ničić
Vrnjacka Banja/Kragujevac

Član broj: 6424
Poruke: 135
213.137.102.*

Sajt: www.ni-kel.com


Profil

icon Re: Kursna lista NBS27.04.2006. u 13:57
@gojko vujovic
da, da - kasnije sam video da ne postoji sa tim imenom. ok je...

koristio sam i ja explode funkciju, samo mi je bio problem fopen. ali resio sam sa file() - ne znam zasto mi je prvo fopen palo na pamet. hvala svima!

[Ovu poruku je menjao mnicic dana 27.04.2006. u 15:04 GMT+1]
Pozdrav,

http://www.ni-kel.com/ - Web portal
27.04.2006. u 13:57 

Aleksandar Marković
Part Time Freelance Journalist

Član broj: 219
Poruke: 5230
*.dialup.sezampro.yu.

Sajt: www.akcenat.info


Profil

icon Re: Kursna lista NBS27.04.2006. u 16:11
uvek je interesantno videti razlicita resenja ...tip za ubuduce ...postuj svoje finalno resenje, ako si vec postavio pitanje i dobio neke odgovore...daj pomoc onima kojima ce to pitanje tek postati potrebno

[Ovu poruku je menjao Aleksandar Marković dana 27.04.2006. u 18:16 GMT+1]
27.04.2006. u 16:11 

mnicic
Milorad Ničić
Vrnjacka Banja/Kragujevac

Član broj: 6424
Poruke: 135
213.137.102.*

Sajt: www.ni-kel.com


Profil

icon Re: Kursna lista NBS27.04.2006. u 22:31
naravno, resenje cu postaviti. samo trebam jos malo da ga doradim kako drugi ne bi imali problema - da im olaksam posao.
Pozdrav,

http://www.ni-kel.com/ - Web portal
27.04.2006. u 22:31 

pyc
Marko Domanović
Beograd

Član broj: 2771
Poruke: 543
80.93.235.*

ICQ: 5130082
Sajt: www.vizio.biz


Profil

icon Re: Kursna lista NBS11.08.2006. u 08:10
Od 08/08/2006 menjala se logika oko kursne liste NBS, tako da se sada na adresi http://www.nbs.yu/serbian/kursevi/ascii/ (ovaj direktorijum ne moze da se vidi, ali je format fajla bio Klyymmdd.asc, vise ne mogu naci kursne liste. Da li sada postoji neki direktorijum odakle bi mogla da se povuce kursna lista, a da to nije preko forumulara sa weba...?

Poslednji datum za koji postoji lista u tom diru je Kl060810.asc
[blog: http://blog.vizio.biz]
[vizio direktorijum: http://dir.vizio.biz]
[razmena bannera: http://adz.vizio.biz]
11.08.2006. u 08:10 

Gojko Vujovic
Juniper Networks
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13173
*.gojko.ss.

Sajt: www.gojkovujovic.com


Profil

icon Re: Kursna lista NBS11.08.2006. u 09:04
http://www.nbs.yu/data/page.ph...30&SUBMIT=Prikaži
11.08.2006. u 09:04 

papago

Član broj: 127278
Poruke: 3
*.pools.arcor-ip.net.



Profil

icon Re: Kursna lista NBS27.12.2006. u 01:02
Da li je neko uspeo da resi ovaj problem sa citanjem fajlova sa nbs servera, posto sada vise nista ne funkcionise....
27.12.2006. u 01:02 

Boris Stevanovic
Srbija

Član broj: 1265
Poruke: 119
194.79.41.*



Profil

icon Re: Kursna lista NBS27.12.2006. u 06:51
A zasto ti to treba ?
27.12.2006. u 06:51 

pyc
Marko Domanović
Beograd

Član broj: 2771
Poruke: 543
80.93.235.*

ICQ: 5130082
Sajt: www.vizio.biz


Profil

icon Re: Kursna lista NBS27.12.2006. u 08:26
Izgleda da nekome u NBS smeta automatsko preuzimanje kursne liste, pa su koliko vidim juče smislili neku novu smicalicu... Nije lako provaliti šta je, ali radim na tome... Izgleda da su počeli da proveravaju referera, pa onda može da se učita samo iz browsera... Radim na rešenju, objaviću ako rešim.
[blog: http://blog.vizio.biz]
[vizio direktorijum: http://dir.vizio.biz]
[razmena bannera: http://adz.vizio.biz]
27.12.2006. u 08:26 

pyc
Marko Domanović
Beograd

Član broj: 2771
Poruke: 543
80.93.235.*

ICQ: 5130082
Sajt: www.vizio.biz


Profil

icon Re: Kursna lista NBS27.12.2006. u 10:36
Pokusao sam kompletno da rekontruisem POST zahtev koji ide ka serveru NBS da bi se u odgovoru dobila kursna lista i trebalo bi da header tog zahteva izgleda ovako:

Code:

POST http://www.nbs.yu/data/page.ph...s_page=kursnaLista.jsp?lang=sr HTTP/1.1
Host: www.nbs.yu
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Referer: http://www.nbs.yu/data/page.ph...p;nbs_page=kl_form.jsp?lang=sr
Content-Type: application/x-www-form-urlencoded
Content-Length: 52

datum=27.12.2006&eksport=ascii&clientIP=80.93.235.82



Do sada sam varijable datum, eksport i clientIP slao preko GET-a i to je radilo... juce je odjednom prestalo da radi, a ja sam se bacio na zadatak da PHP te stvari salje preko POST-a. Ovde cu da ostavim kod koji kod mene automatski preuzima kursnu listu, i prvu verziju koja je radila do prekjuce, i drugu verziju sa POST varijablama koja mi i dalje ne radi. Izgleda da je problem u tome sto file_get_contents() funkcija, ne moze da kao argument prihvati resource koji napravi funkcija stream_context_create()... bilo kako bilo, trenutno sam jako zauzet da bi kopao danima(?) :) zasto sve ovo ne radi, ako neko moze da preuzme stafetu, bio bih zahvalan, a sada i stari i novi kod:

stari:
Code:

<?
$filename = 'http://www.nbs.yu/data/page.ph...naLista.jsp?lang=sr&datum='.date('d').'.'.date('m').'.'.date('Y').'&vrsta=1&eksport=ascii&clientIP=208.68.210.233&SUBMIT=Prikaži';
$filelocal = 'kliste/Kl'.date('y').date('m').date('d').'.asc';

if(!file_exists($filelocal)) {  //ako vec nije uspeo da skine u prethodnom pokusaju
    $str = file_get_contents($filename);
    //if (date('D') != 'Sat' && date('D') != 'Sun' && strlen($str) > 500) {
    if (date('D') != 'Sat' && date('D') != 'Sun') {
        $fp = fopen($filelocal,"w");
        fwrite($fp,$str);
        fclose($fp);
    } 
    else {  //pravi se kopija fajla na disku za danas a od juce...  TREBA DA SE POVEDE RACUNA AKO SE od 01 oduzima 1....
        $d = date('j')-1;
        if ($d < 10) $d = '0'.$d;
        $m = date('m');
        $y = date('y');
        if(date('j') == '1') {
            switch(date('m')) {
                case '01': $d = '31'; $m = '12'; $y = date('Y') - 1; $y = substr($y,2,2); break;
                case '02': $d = '31'; $m = '01'; break;
                case '03': 
                            //AKO JE PRESTUPNA GODINA.
                            if (mcal_is_leap_year(date('Y')) == 0) $d = '28'; else $d = '29'; 
                            $m = '02'; break;

                case '04': $d = '31'; $m = '03'; break;
                case '05': $d = '30'; $m = '04'; break;
                case '06': $d = '31'; $m = '05'; break;
                case '07': $d = '30'; $m = '06'; break;
                case '08': $d = '31'; $m = '07'; break;
                case '09': $d = '31'; $m = '08'; break;
                case '10': $d = '30'; $m = '09'; break;
                case '11': $d = '31'; $m = '10'; break;
                case '12': $d = '30'; $m = '11'; break;
            }
        }
        $fileyesterday = 'liste/Kl'.$y.$m.$d.'.asc';
        copy($fileyesterday,$filelocal);
    }
}    
?> 


novi:
Code:

<?
error_reporting(E_ALL);

function http_build_query($a,$b='',$c=0){
    if (!is_array($a)) return false;
    foreach ((array)$a as $k=>$v){
    if ($c) $k=$b."[".$k."]"; elseif (is_int($k)) $k=$b.$k;
    if (is_array($v)||is_object($v)) {$r[]=http_build_query($v,$k,1);continue;}
    $r[]=$k."=".urlencode($v);
    }
    return implode("&",$r);
}
$filename = 'http://www.nbs.yu/data/page.ph...s_page=kursnaLista.jsp?lang=sr';

$danas = date('d').'.'.date('m').'.'.date('Y');

$postdata = http_build_query(
   array(
       'datum' => $danas,
       'eksport' => 'ascii',
       'clientIP' => '208.68.210.233'
   )
);

$opts = array('http' =>
   array(
       'method'  => 'POST',
       'header'  =>    "Content-type: application/x-www-form-urlencoded\r\n" .
                       "Host: www.nbs.yu\r\n" .
                       "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\r\n" .
                       "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n" .
                       "Accept-Language: en-us,en;q=0.5\r\n" .
                       "Referer: http://www.nbs.yu/data/page.ph...p;nbs_page=kl_form.jsp?lang=sr\r\n" .
                       "Content-Length: 54",
       'content' => $postdata
   )
);

/*
if (function_exists('stream_context_create')) {
   echo "available.<br />\n";
} else {
   echo "not available.<br />\n";
}
*/

$context  = stream_context_create($opts);
$filelocal = 'liste/Kl'.date('y').date('m').date('d').'.asc';

echo "danas: " . $danas."<br>";
echo "postdata: " . $postdata."<br>";
print_r($opts);

if(!file_exists($filelocal)) {  //ako vec nije uspeo da skine u prethodnom pokusaju
    echo "da li je ovo normalno";    
    $str = file_get_contents($filename, false, $context);
    echo $str;
    //if (date('D') != 'Sat' && date('D') != 'Sun' && strlen($str) > 500) {
    if (date('D') != 'Sat' && date('D') != 'Sun') {
        $fp = fopen($filelocal,"w");
        fwrite($fp,$str);
        fclose($fp);
    }
    else {  //pravi se kopija fajla na disku za danas a od juce...  TREBA DA SE POVEDE RACUNA AKO SE od 01 oduzima 1....
        $d = date('j')-1;
        if ($d < 10) $d = '0'.$d;
        $m = date('m');
        $y = date('y');
        if(date('j') == '1') {
            switch(date('m')) {
                case '01': $d = '31'; $m = '12'; $y = date('Y') - 1; $y = substr($y,2,2); break;
                case '02': $d = '31'; $m = '01'; break;
                case '03':
                            //AKO JE PRESTUPNA GODINA.
                            if (mcal_is_leap_year(date('Y')) == 0) $d = '28'; else $d = '29';
                            $m = '02'; break;

                case '04': $d = '31'; $m = '03'; break;
                case '05': $d = '30'; $m = '04'; break;
                case '06': $d = '31'; $m = '05'; break;
                case '07': $d = '30'; $m = '06'; break;
                case '08': $d = '31'; $m = '07'; break;
                case '09': $d = '31'; $m = '08'; break;
                case '10': $d = '30'; $m = '09'; break;
                case '11': $d = '31'; $m = '10'; break;
                case '12': $d = '30'; $m = '11'; break;
            }
        }
        $fileyesterday = 'liste/Kl'.$y.$m.$d.'.asc';
        copy($fileyesterday,$filelocal);
    }
}
?>

[blog: http://blog.vizio.biz]
[vizio direktorijum: http://dir.vizio.biz]
[razmena bannera: http://adz.vizio.biz]
27.12.2006. u 10:36 

papago

Član broj: 127278
Poruke: 3
*.pools.arcor-ip.net.



Profil

icon Re: Kursna lista NBS27.12.2006. u 13:58
mnogo ti hvala pyc...odmah cu veceras da isprobam da li funkcionise..

veliki pozdrav
27.12.2006. u 13:58 

agvozden
Aleksandar Gvozden
senior web programmer, B92
Beograd

Član broj: 37813
Poruke: 235
*.BVCOM.NET.

ICQ: 373385372
Sajt: www.bgs-cms.com


Profil

icon Re: Kursna lista NBS28.12.2006. u 00:49
Malo jednostavniji nacin za pristup kursnoj listi nbs, bez koriscenja POST-a:

Code:

function get_from_url($url){
    $opts = array(
        'http' => array(
            'method' => "GET",
            'header' => 
            "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1\r\n" .
            "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n" .
            "Accept-Language: en-us,en;q=0.5\r\n" 
        )
    );
    $context = stream_context_create($opts);
    $handle = @fopen($url, "rb", false, $context); 
    $contents = '';
    if ($handle){
        while (!feof($handle)) {
            $contents .= fread($handle, 8192);
        }
        fclose($handle);
    } else return false;
    return $contents;
}


jednostavan poziv funkcije

Code:

$source = "http://www.nbs.yu/serbian/kursevi/ascii/Kl".date("ymd", time()).".asc";
$contents = get_from_url($source);


Uz kombinaciju sa kesiranjem, odredjivanjem zadnjeg datuma i parsovanjem ascii-ja moze se dobiti upotrebljiv skript.
Ovo obicno stavljam kao plug-in kroz iframe: http://www.bgsvetionik.com/plugins/kursna_lista/kursna_lista.php

28.12.2006. u 00:49 

[es] :: PHP :: Kursna lista NBS

Strane: 1 2

[ Pregleda: 24104 | Odgovora: 26 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.