Vigane DigiDocService PHP näidisrakendus

Varasemad versioonid DigiDocService PHP näidisrakendusest (tõenäoliselt levitatud enne 2009. a.), konkreetsemalt selle rakendusega koos levitatav Digidoc.class.php, sisaldavad viga, mille tulemusel tekivad vigased DigiDoc konteinerid, kus on puudu andmefailide <DataFile> elemendis xmlns atribuut. 

Peaksite esimesel võimalusel kasutusele võtma uusima versiooni Digidoc.class.php-st, mille saate näidisrakenduse juurest lähtekoodist. Selliste vigaste failide tehniline verifitseerimine võib olla komplitseeritud formaadile mittevastavuse tõttu.

Vastavalt DigiDoc formaadi kirjeldusele peab iga DigiDoc konteineris sisalduv algandmefail omama <DataFile> elemendis xmlns atribuuti, kus peab kasutama SignedDoc namespacet: http://www.sk.ee/DigiDoc/v1.3.0#.

Kuidas veenduda, kas teie infosüsteemis on vigaseid Digidoc konteinereid produtseeriv Digidoc.class.php

Kui funktsioon setDigiDocFormatAndVersion() ei sea else{} harus DigiDoc konteineri formaati ja versiooni nagu alljärgnevas näites, siis on tegemist vigast Digidoc konteinerit tekitava Digidoc.class.php versiooniga:

function setDigiDocFormatAndVersion($xml='') {
  if ($xml=='')
    $xml=$this->xml;
  if ($xml) {
    preg_match("'(\<SignedDoc.*\/SignedDoc\>)'Us", $xml, $match);
    $content = $match[1];
    preg_match("'format=\"(.*)\"'Us", $content, $match);
    $this->format = $match[1];
    preg_match("'version=\"(.*)\"'Us", $content, $match);
    $this->version = $match[1];
   } else {
    $this->format = "";
    $this->version = "";
  }
}

Õiges versioonis näeb meetod välja selline:

function setDigiDocFormatAndVersion($xml='') {
  if ($xml=='')
    $xml=$this->xml;
  if ($xml) {
    preg_match("'(\<SignedDoc.*\/SignedDoc\>)'Us", $xml, $match);
    $content = $match[1];
    preg_match("'format=\"(.*)\"'Us", $content, $match);
    $this->format = $match[1];
    preg_match("'version=\"(.*)\"'Us", $content, $match);
    $this->version = $match[1];
  } else {
    $this->format = "DIGIDOC-XML";
    $this->version = "1.3";
  }
}


KÜSI ABI

Kui sa ei leidnud oma küsimusele vastust, kirjuta meie meeskonnale.



  • Vaata juhendit
  • Hinda oma arvutikasutusoskust, et saaksime anda paremaid juhiseid

         

  • Kontroll ebaõnnestus

Kuidas saame artiklit parandada, et sellest rohkem abi oleks?
Saada Sulge