Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 60 odgovora
  • 70.908 pregleda

Najnovija ↓

Kursna lista NBS 26.04.2006. u 20:36 · pre 250 meseci
izmenjeno 1 put, poslednji put Goran Rakić 03.09.2010. u 00:39
  1. Goran Rakić03.09.2010. u 00:39zapis iz teksta poruke
#1
------------------------------------

Informacija iz 2010. godine
Poruka: http://www.elitesecurity.org/p2678616

Citat:
Predrag Supurovic: Ovih dana sam se bavio preuzimanjem kursne liste i prilicno me je namucilo. Dokumentacije je dosta stura, ali uz nesto kopanja i par hintova podrske iz NBS uspelo mi je da zavrsim stvar.

Objasnjenje i primer koji radi imate na PHP, nusoap i veb servis za kursnu listu NBS


------------------------------------

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?
Potpis
Pozdrav,
https://knjige.pravac.com/ ~ https://vreme.pravac.com/
Re: Kursna lista NBS 26.04.2006. u 21:04 · pre 250 meseci #3
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
Potpis
=========
Uporedi cene i karakteristike za vise od 10.000 proizvoda, izmedju ostalog:
Digitalni foto-aparati
Mobilni telefoni
Skolski pribor
=========
Re: Kursna lista NBS 26.04.2006. u 21:34 · pre 250 meseci #5
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.
Re: Kursna lista NBS 27.04.2006. u 12:18 · pre 250 meseci #9
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?
Re: Kursna lista NBS 27.04.2006. u 14:57 · pre 250 meseci
izmenjeno 1 put, poslednji put mnicic 27.04.2006. u 15:04
  1. mnicic27.04.2006. u 15:04zapis iz teksta poruke
#10
@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!
Potpis
Pozdrav,
https://knjige.pravac.com/ ~ https://vreme.pravac.com/
Re: Kursna lista NBS 27.04.2006. u 17:11 · pre 250 meseci
izmenjeno 1 put, poslednji put Aleksandar Marković 27.04.2006. u 18:16
  1. Aleksandar Marković27.04.2006. u 18:16zapis iz teksta poruke
#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
Potpis
Quaerite et invenietis | Everything in life is Luck -- Donald Trump | http://www.akcenat.info | Momenat – Vaša instant doza vesti | Part Time Freelance Journalist
Re: Kursna lista NBS 11.08.2006. u 09:10 · pre 246 meseci #13
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
Potpis
http://liberland.vizio.biz
http://soundcloud.com/pyc
Re: Kursna lista NBS 27.12.2006. u 02:02 · pre 242 meseca #15
Da li je neko uspeo da resi ovaj problem sa citanjem fajlova sa nbs servera, posto sada vise nista ne funkcionise....
Re: Kursna lista NBS 27.12.2006. u 09:26 · pre 242 meseca #17
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.
Potpis
http://liberland.vizio.biz
http://soundcloud.com/pyc
Re: Kursna lista NBS 27.12.2006. u 11:36 · pre 242 meseca #18
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);
    }
}
?>
Potpis
http://liberland.vizio.biz
http://soundcloud.com/pyc
Re: Kursna lista NBS 27.12.2006. u 14:58 · pre 242 meseca #19
mnogo ti hvala pyc...odmah cu veceras da isprobam da li funkcionise..

veliki pozdrav
Re: Kursna lista NBS 28.12.2006. u 01:49 · pre 241 mesec #20
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
Potpis
Moj Veb Sajt HostCentar Blog
Aleksinac Južna Srbija TimeOut
Tema je zaključana, nove poruke nisu moguće.

Premeštanje teme