"trykfejl" i systemdata/syssetup.php

Her kan du rapportere de fejl, som du finder ved brug af Saldi.

Redaktører: Agerskov, Peter Rude, Sarah Aagaard

Besvar
Brugeravatar
ht
Indlæg: 62
Tilmeldt: ons nov 23, 2011 10:33 pm

"trykfejl" i systemdata/syssetup.php

Indlæg af ht »

Lille trykfejl :
linje 606:
function nytaar($beskrivelse,$kodenr,$kode,$art,$box1,$box3,$box3,$box4,$box5,$box6)

Skal nok hedde:

function nytaar($beskrivelse,$kodenr,$kode,$art,$box1,$box2,$box3,$box4,$box5,$box6)
nielsrune
Indlæg: 63
Tilmeldt: tors maj 14, 2009 7:04 pm
Kontakt:

Re: "trykfejl" i systemdata/syssetup.php

Indlæg af nielsrune »

Når man nu er igang skal den vel blot hedde

Kode: Vælg alt

function nytaar($beskrivelse)
eftersom de øvrige argumenter ikke bruges til noget som helst i funktionens scope.
Brugeravatar
ht
Indlæg: 62
Tilmeldt: ons nov 23, 2011 10:33 pm

Re: "trykfejl" i systemdata/syssetup.php

Indlæg af ht »

Hovet på sømmet ;-) Du har ret !! Men så lang var jeg kommet endnu =)
nielsrune
Indlæg: 63
Tilmeldt: tors maj 14, 2009 7:04 pm
Kontakt:

Re: "trykfejl" i systemdata/syssetup.php

Indlæg af nielsrune »

Interessant, om man vil, er, at en gravning på trac.lue.dk/saldi viser, at den fejl, du beskriver, har været i koden siden begyndelsen i 2006.

Men når argumenterne ikke bruges i funktionen vil fejlen jo så heller aldrig blive udløst, andet end at det principielt set benytter unødige ressourcer, om end her i ubetydeligt omfang.

Man kan så også se, at samme linje blev ændret i 2012 (3.2.8) uden at fejlen blev ændret. Her blev alle funktionsargumenter i hele filen trimmet for whitespace, selv tekststrenge som "Ved varekøb i udlandet,skal der betales dansk moms...", hvor mellemrummet efter kommaet går tabt. Så noget tyder på en automatisering, hvorfor man så har fundet det nødvendigt.

Der er tonsvis af den slags kodefejl overalt i koden. Alene i forbindelse med dette indlæg fandt jeg endnu en fejl i systemdata/diverse.php fra /seneste:
Her forsøges i linje 54 at lave include af filen skriv_formtabel.inc.php fra systemdata.
Problemet er blot, at denne fil hverken eksisterer i /seneste/systemdata eller tilsyneladende oprettes som led i installationen.
Så der opnås alene en venlig hilsen i apaches fejllog samt eventuelle følgefejl andre steder i koden, der måtte forudsætte, at det tænkte indhold i filen er included.

En anden fejl i koden fra /seneste er en stifejl i finans/kassekladde.php linje 1177:

Kode: Vælg alt

<script src="../javascript/jquery.formnavigation.js/jquery-1.10.2.min.js"></script>
	<script src="../javascript/jquery.formnavigation.js"></script>
På /seneste er jquery-1.10.2.min.js lagt i javascript og ikke i javascript/jquery.formnavigation.js så endnu engang floddes fejlloggen.
Når det virker alligevel, skyldes det at jQuery i version 1.8 allerede er indlæst fra includes/online.php, der er indcluded i finans/kassekladde.php.

1) Når enkelte scripts ikke kræver en bestemt, ældre version af jQuery, som det ikke er tilfældet her, er der ingen som helt grund til at include begge. Det går ud over performance.
2) Man burde som det mindste, når man lægger en ny jQuery ind, bruge den seneste i 1.x branchen, hvilket er version 1.11.3, eller helt skifte til version 2.x, med mindre man ønsker at understøtte ældgamle browserversioner
3) Include af scripts skal ske i head-sektionen af en html-fil og ikke midt i koden. Det er gjort korrekt i online.php og forkert i kassekladde.php

Og sådan kan man desværre blive ved.. :-)
Brugeravatar
ht
Indlæg: 62
Tilmeldt: ons nov 23, 2011 10:33 pm

Re: "trykfejl" i systemdata/syssetup.php

Indlæg af ht »

Jeg ved det :? , og med med php 7.0 er det flere fejl der dukker op i loggen !! Jeg køre det dog på en php ver. 5.3 til dagligt .
Jeg plejer at sætte error level højt og så rette så meget jeg orker..
nielsrune
Indlæg: 63
Tilmeldt: tors maj 14, 2009 7:04 pm
Kontakt:

Re: "trykfejl" i systemdata/syssetup.php

Indlæg af nielsrune »

Uden at have prøvet kan jeg næsten garantere, at Saldi, som det pr. foreligger fra Danosofts side, ikke vil virke med PHP 7. I bedste fald vil systemet blot fejle konstant, i værste fald vil databasen samtidig korrumperes.

Når jeg kan sige det så skråsikkert, er det fordi koden massivt anvender split()-funktionen, der blev deprecated med PHP 5.3 og fra PHP 7 helt er fjernet.
Da den dengang nyeste version af Saldi (3.4.1) lige var lagt op på Github, lavede jeg i juli 2014 et pull request, hvor alle split() blev erstattet med explode(). Denne pull request blev merget af Claus 4 dage senere, og siden da er der intet sket på Github. Men mine rettelser blev heller ikke implementeret i den kodebase, som Danosoft udvikler fra, så rettelserne er aldrig kommet med i /seneste på ftp.saldi.dk => spildt arbejde.

Som integrationen med MySql er implementeret, vil den heller ikke virke med PHP 7, da den gamle mysql-* extension også blev deprecated med PHP 5.3. Jeg har tidligere fået indtryk af, at Peter var opmærksom herpå, men det ser ikke ud til, at det er noget, der bliver prioriteret. Ligesom en sikker opbevaring af folks kodeord stadig ikke har fået den prioriteret, det burde. (De seneste ændringer synes mest at være mindre layoutrettelser).

Der kan selvfølgelig argumenteres for, at PHP 7 er helt ny og ikke er nået ud til de gængse distributioner endnu, men det er bare ikke nyt, at split() og mysql_* var på vej ud.

Så Saldi er pt. no go med PHP 7, uanset om man anvender Postgresql.

Jeg gider ærlig talt ikke længere rapportere alle de fejl, der løbende findes og introduceres for hver opdatering, da de i al for ringe grad bliver rettet. Beskeder her på forummet synes at gå direkte i /dev/null og er ikke just en positiv reklamesøjle for produktet.

Den seneste Saldi 3.6.2, der i al hemmelighed blev lagt på ftp.saldi.dk i går har jeg lagt på min egen Github til eget brug, hvor jeg måske vil lægge diverse rettelser til.

By the way, hvis nogen skulle undre sig over nedenstående bemærkning vedrørende Firefox, der nu står i kassekladen:
Hint - du kan navigere i kassekladen med piletaster hvis du holder [Ctrl] nede (Fungerer ikke i Firefox)
så skyldes det, at Danosoft selv har slået det fra i finanskassekladde.php linje 756-757 (manglende class=formnavi):

Kode: Vælg alt

elseif ($browser=="opera" || $browser=="firefox") print "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" align = \"center\" valign = \"top\">";
else print "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" align = \"center\" valign = \"top\" class=\"formnavi\">";
Hvis $browser=="firefox" fjernes i linje 756 virker det fint i Firefox hos mig.
Brugeravatar
ht
Indlæg: 62
Tilmeldt: ons nov 23, 2011 10:33 pm

Re: "trykfejl" i systemdata/syssetup.php

Indlæg af ht »

Hmm.. split() !! okay . vil det sige at jeg kan træke den fra din github istedet for ftp.saldi.dk ? og så hjælpe til at forbedrer din git version ?
Det vil jo gi mening at gør saldi endnu bedre og klar til php 7.0 !?
jeg er kun en "hobby" php'er men har dog lavet mange ændringer og et nyt sæt "modul" som jeg bruger i min butik incl. så jeg kan printe til en kasse bon etc. med pos_print.php osv.
nielsrune
Indlæg: 63
Tilmeldt: tors maj 14, 2009 7:04 pm
Kontakt:

Re: "trykfejl" i systemdata/syssetup.php

Indlæg af nielsrune »

Tja, jeg tror det vil være -nogenlunde- overkommeligt at forberede koden til PHP7, dog kun med understøttelse for PostgreSQL. MySQL/MariaDB understøttelse vil kræve en større omskrivning, omend det vil være hensigtsmæssigt at nogen igangsætter. Så kan koden også sikres bedre mod sql injections ved at skifte til prepared statements.

I mellemtiden fandt jeg ud af, at det ikke duer blot at have den nyeste v3.6.2 liggende som en branch inden i min egen fork af danosofts github repo (da det stadig er v.3.4.1 og ikke bliver opdateret).

Så jeg opretter nok et nyt repo ud fra på 3.6.2, og arbejder fra det. Man kunne jo kalde det for Saldi Community Edition.

Men når det så er sagt - og for ikke at stille nogen for meget i udsigt - så kan jeg ikke påtage mig at fungere som den project maintainer, som der nok vil være stor brug for, hvis andre skal kunne bidrage også.
Dels står jeg lige over for nyt job og familieforøgelse, dels bruger jeg reelt kun finansmodulet selv. Så ud over helt åbenlyse koderettelser, som det vil være fantastisk at få inddraget folk i, så har jeg ikke mulighed for eller tid til at skulle teste og tage stilling til nye moduler, større ændringer og sådan. I mangel af en sådan styring tror jeg det vil være bedst, hvis der er en fælles base, som gøres klar til PHP 7, og så kan folk hver især forke denne til egne tilføjelser. På ingen måde optimalt, men der mangler simpelthen en til at tage styringen, der samtidig har tiden til det.
Besvar