infostabil > edb.internet.* > edb.internet.webdesign.serverside.php

Kim Ludvigsen (07.12.2019, 06:31)
Jeg har et script, der henter en valutakurs fra den danske nationalbank.
Scriptet er nu begyndt at melde følgende fejl:

Warning: Use of undefined constant TITLE - assumed 'TITLE' (this will
throw an Error in a future version of PHP) ... og så linjenummeret.

Min kode:
$url =
"http://www.nationalbanken.dk/_vti_bin/DN/DataService.svc/CurrencyRateRSS?lang=da&iso=USD"
$p = xml_parser_create();

xml_parse_into_struct($p,file_get_contents($url),$ results,$index);
xml_parser_free($p);

$currency = $results[$index[TITLE][1]][value]; (linjen, der udløser fejlen)

Svaret fra Nationalbanken har bl.a. dette:
<language>da</language><item><title>Amerikanske dollar
(673,54)</title><description>100 USD koster 673,54
DKK</description><pubDate>Fri, 06 Dec 2019 00:00:00 +0100</pubDate></item>

Jeg får hentet den rigtige kurs ind i $currency, hvordan undgår jeg at
udløse fejlmeddelelsen?
Bertel Lund Hansen (07.12.2019, 10:35)
Kim Ludvigsen skrev:

> Warning: Use of undefined constant TITLE - assumed 'TITLE' (this will
> throw an Error in a future version of PHP) ... og så linjenummeret.


Assumed ... at der skal anførselstegn omkring TITLE.

Det er et begavet gæt da jeg ikke er vant til at bruge XML og
parser dertil. Men i flere af de fordefinerede arrays, som f.eks.
$_POST, er det en fejl at undlade anførselstegn:

Forkert: $value=$_POST[amount];

Korrekt: $value=$_POST['amount'];

Den forkerte version virker somme tider. Jeg gætter på at det er
dit problem.
Jan Hansen (07.12.2019, 12:25)
Bertel Lund Hansen skrev:

> Forkert: $value=$_POST[amount];
> Korrekt: $value=$_POST['amount'];


Det gælder også alle andre arrays, er amount ikke pakket
ind tolkes det som en konstant.
Fejlmeldingen går væk når man skriver
define ('amount','amount');
$value=$_POST[amount];

Når fejlmeldingen pludselig er kommet af sig selv, har
webhotellet uden tvivl lagt en "forbedet" php version på.
Her har de da fornøjet sig med at stoppe noget ind, de
har compilet 20. november i år:
<http://linux1.unoeuro.com/phpinfo.php>

Hvis du har en hjemmeside, som du vil have til at virke
flere uger af gangen, kan jeg kun anbefale at flytte til
et webhotel, hvor de leverer den vare, kunden har betalt
for. Det andet bras er ikke 18,68 kr værd.
Kim Ludvigsen (07.12.2019, 12:37)
Den 07.12.2019 kl. 15.35 skrev Bertel Lund Hansen:
> Kim Ludvigsen skrev:
>> Warning: Use of undefined constant TITLE - assumed 'TITLE' (this will
>> throw an Error in a future version of PHP) ... og så linjenummeret.

> Assumed ... at der skal anførselstegn omkring TITLE.


Smukt! Det var lige netop anførselstegn, der manglede. Tak!

Skulle andre med samme problem falde over dette indlæg, så bemærk, at
der skal anførselstegn om både TITLE og value i den pågældende linje, altså:
$currency = $results[$index['TITLE'][1]]['value'];

Der var flere fejlmeddelelser, også fordi jeg henter et par kurser mere
- jeg havde kun medtaget den første fejlmeddelelse for at gøre indlægget
kortere.
Kim Ludvigsen (07.12.2019, 12:55)
Den 07.12.2019 kl. 17.25 skrev Jan Hansen:

> Når fejlmeldingen pludselig er kommet af sig selv, har
> webhotellet uden tvivl lagt en "forbedet" php version på.
> Her har de da fornøjet sig med at stoppe noget ind, de
> har compilet 20. november i år:
> <http://linux1.unoeuro.com/phpinfo.php>
> Hvis du har en hjemmeside, som du vil have til at virke
> flere uger af gangen, kan jeg kun anbefale at flytte til
> et webhotel, hvor de leverer den vare, kunden har betalt
> for. Det andet bras er ikke 18,68 kr værd.


Jeg har reelt set ikke selv valgt webhotellet, de købte mit gamle
webhotel. De har dog mange forbedringer i forhold til det gamle
webhotel, men dette er så ikke en af dem.

Det mest irriterende er, at jeg har to scripts til at hente
valutakurser, det ene henter tre kurser til mit eget brug, og det bruger
jeg kun sjældent. Det var det, som jeg så fejlen på.

Det andet kører i baggrunden en gang i døgnet, og det giver ikke en
synlig side men gemmer blot kursen i en fil. Her ville jeg ikke have
opdaget fejlen, før kursen ikke længere blev opdateret, og jeg
tilfældigt ville have set det på hjemmesiden.

Der kunne potentielt gå lang tid, før det holdt op med at virke, til jeg
opdagede det.
Bertel Lund Hansen (07.12.2019, 13:42)
Jan Hansen skrev:

> Når fejlmeldingen pludselig er kommet af sig selv, har
> webhotellet uden tvivl lagt en "forbedet" php version på.


Det er naturligvis en uskik, men jeg vil da nok mene at det
isoleret set er en god idé at advare mod manglende anførselstegn.
Selv har jeg helt fra starten brugt anførselstegn.

På mit webhotel (Gigahost) styrer man selv hvilken PHP-version
man vil bruge.
Kim Ludvigsen (07.12.2019, 14:56)
Den 07.12.2019 kl. 18.42 skrev Bertel Lund Hansen:

> Det er naturligvis en uskik, men jeg vil da nok mene at det
> isoleret set er en god idé at advare mod manglende anførselstegn.
> Selv har jeg helt fra starten brugt anførselstegn.


Det er jo så et problem for en fusker som mig, der kun lige kan finde ud
af at kopiere kode fundet andre steder. Så bliver fejl og mangler jo
også kopieret med.

> På mit webhotel (Gigahost) styrer man selv hvilken PHP-version
> man vil bruge.


Man kan også selv vælge en specifik version hos unoeuro, men som
standard benyttes vist "nyeste".
Jan Hansen (07.12.2019, 15:21)
Bertel Lund Hansen skrev:

> Jan Hansen skrev:
> > Når fejlmeldingen pludselig er kommet af sig selv, har
> > webhotellet uden tvivl lagt en "forbedret" php version på.

> Det er naturligvis en uskik, men jeg vil da nok mene at det
> isoleret set er en god idé at advare mod manglende anførselstegn.


Ja, og det er da en usædvanlig fin service, at det ligefrem er
ledsaget af en trussel om at "this will throw an Error in a future
version of PHP", så man kan nå at få flyttet siden over på et
webhotel, der ikke "opdaterer".

Det virker så nemt med sådan noget CMS. Man skal bare skrive
noget i et felt og trykke på en knap, så bliver det ganske
automatisk til en hjemmeside. Ikke noget med man skal bekymre
sig om svære programmer som Microsoft Frontpage eller Netscape
Composer. Det kan motivere hr og fru Jensen til at investere
i sådan en side, og gå i gang med at indtaste slægtens dagbøger
for de sidste 350 år, så de er bevaret for tid og evighed på
det store internet. Dagen efter de er blevet færdige "opdaterer"
webhotellet, og det hele bliver forvandlet til en hvid side.
Det er så bare ærgerligt!!!
Der er ikke noget, der hedder millionerstatning til ofret og
bedragerisigtelse til webhotelejeren. Næ, det er da bare noget,
man har pligt til ydmygt at finde sig i.

> På mit webhotel (Gigahost) styrer man selv hvilken PHP-version
> man vil bruge.


Netop, og derfor kan man ikke reklamere nok for gigahost.dk,
webhosting.dk og de få andre webhoteller, der ikke laver den
slags svinestreger.
Dennis Munding (07.12.2019, 20:34)
Jan Hansen skrev:

> > På mit webhotel (Gigahost) styrer man selv hvilken PHP-version
> > man vil bruge.

> Netop, og derfor kan man ikke reklamere nok for gigahost.dk,
> webhosting.dk og de få andre webhoteller, der ikke laver den
> slags svinestreger.


Inden jeg evt. skifter webhotel, hvorledes ser det ud med at sende mail
via formularer?

Skal man selv installere diverse programmer/funktioner på Gigahost for
at kunne sende en mail via smtp?

En ændring der er sket for mig, da UnoEuro overtog Surftown.
Havde ingen problemer på Surftown, men nu skal jeg nærmest være
uddannet programmør (hvilket jeg ikke er) for at kunne sætte en ellers
så simpel ting op på en hjemmeside...
Jan Hansen (07.12.2019, 23:21)
Dennis Munding skrev:

> Inden jeg evt. skifter webhotel, hvorledes ser det ud med at sende mail
> via formularer?
> Skal man selv installere diverse programmer/funktioner på Gigahost for
> at kunne sende en mail via smtp?


Jeg kan da skrive til mig selv med

<?php
mail('jhjjhjhhansen','dette er en test','en kort besked',"From: mig\r\n");
?>

Det kunne selvfølgelig lige så godt komme fra en formular.
Jeg bruger php 5.6, men ifølge
[..]
er der da åbenbart ikke ændret noget i det, så mon ikke det også virker
i de andre udgaver.
At modtage mail er imidlertid ikke særlig velfungerende hos Gigahost. De har
installeret noget "SpamAssassin" på mail-serverne, og der er ikke mulighed
for at slå det fra. Det betyder, at man skal sidde og vente 10 minutter på en mail, hvis det er fra en afsender, man ikke har modtaget mail fra før.
Efter 10 minutter er der normalt gået timeout i den side, hvor man skulle
indtaste en kode fra mailen.
Bertel Lund Hansen (08.12.2019, 09:46)
Dennis Munding skrev:

> Inden jeg evt. skifter webhotel, hvorledes ser det ud med at sende mail
> via formularer?


Fint. Jeg har brugt det i årevis ved fiduso.dk og obese.dk. Jeg
har opgraderet til PHP 7 uden problemer. Supporten er i øvrigt
fremragende - også når det er en fejl 40.

> Skal man selv installere diverse programmer/funktioner på Gigahost for
> at kunne sende en mail via smtp?


Et php-script (med én linje) er nok.
Dennis Munding (08.12.2019, 10:17)
Jan Hansen wrote:

[..]
> Jeg bruger php 5.6, men ifølge
> [..]
> er der da åbenbart ikke ændret noget i det, så mon ikke det også
> virker i de andre udgaver.
> At modtage mail er imidlertid ikke særlig velfungerende hos Gigahost.
> De har installeret noget "SpamAssassin" på mail-serverne, og der er
> ikke mulighed for at slå det fra. Det betyder, at man skal sidde og
> vente 10 minutter på en mail, hvis det er fra en afsender, man ikke
> har modtaget mail fra før. Efter 10 minutter er der normalt gået
> timeout i den side, hvor man skulle indtaste en kode fra mailen.


Svarer lige både dig og Bertel L. H. her (lidt doven er man vel
altid... ;-) )

Tak for svar begge to. :-)

For lige at være helt på det rene, så der ikke er misforståelser...

P.t. (hos UnoEuro) er opsætningen således, at hvis man sender mail via
en formular på eget domæne (eks.: jeg har sat mail-adressen
test@mit-domæne.dk som modtager), vil den blive sendt til
mit-domæne.dk@mit-domæne.dk og skal derfor sendes via smtp (iflg.
UnoEuro) for ikke at blive opsnappet af deres spamfilter (det er
konstateret).

Vælger jeg derimod en "ud-af-huset" mail-adresse, som endelig modtager
- eks. noget og laver en videresendelse på
test@mit-domæne.dk til noget, så er det ikke nødvendigt at
bruge smtp...

Hvilket for mig ikke giver mening.

Så kort og godt (skåret ud i pap og skovlet ind med skeer!):
Hvis jeg bruger en formular og sætter en mail-adr. på eget domæne som
modtager, så skulle der ikke være problemer i det på Gigahost?
Kim Ludvigsen (08.12.2019, 10:20)
Den 08.12.2019 kl. 01.34 skrev Dennis Munding:

> Inden jeg evt. skifter webhotel, hvorledes ser det ud med at sende mail
> via formularer?


Jeg er enig med de andre i, at Gigahost er en god udbyder med hensyn til
muligheder og support.

Forskellen mellem Unoeuro og Gigahost er dog mindre end forskellen
mellem Surftown og Gigahost. Der var mange funktioner, der manglede hos
Surftown, men som findes hos Unoeuro. Det gælder fx cron-jobs og
muligheden for at køre system-kommandoer på databaser (gør det MEGET
nemmere at lave en backup af databasen uden at bruge phpMyAdmin).
Ulempen er så mail()-funktionen, som altså alligevel virker delvist.

Men inden du skifter til Gigahost, skal du lige være opmærksom på, at
performance er noget ringere hos dem. Hvis det kun er hobby-sider eller
mindre krævende sider, betyder det ikke så meget, men hvis det er
krævende sider, vil de måske blive mærkbart langsommere.

Jeg har tidligere kørt test-script på php og MySql på både Surftown og
Gigahost, og begge gav klart ringere resultat hos Gigahost. Unoeuro er
ydelsesmæssigt endnu bedre end Surftown var. Spørgsmålet er så, om det
har nogen reel betydning for dine sider.
Bertel Lund Hansen (08.12.2019, 10:59)
Dennis Munding skrev:

> Så kort og godt (skåret ud i pap og skovlet ind med skeer!):
> Hvis jeg bruger en formular og sætter en mail-adr. på eget domæne som
> modtager, så skulle der ikke være problemer i det på Gigahost?


Nej, det er der ikke. Jeg får en mail sendt til mig selv hver
gang nogen bruger en fiduso- eller en obese-formular - uden
krumspring.

Men jeg har konstateret et mailproblem som rammer Gigahost: TDC
har blokeret for visse mailadresser. Jeg kan ikke sende til en
bekendts on-cable-mailadresse fra Gigahosts mailserver. Løsningen
består i at jeg har givet hende en ekstra mailadresse på et
gigshostet domæne.

Gigahost har haft kontakt til TDC, og de svarede at de ville
kikke på det. Det var da pænt svaret, menæhh ...
Dennis Munding (08.12.2019, 11:22)
Kim Ludvigsen skrev:

[..]
> Men inden du skifter til Gigahost, skal du lige være opmærksom på, at
> performance er noget ringere hos dem. Hvis det kun er hobby-sider
> eller mindre krævende sider, betyder det ikke så meget, men hvis det
> er krævende sider, vil de måske blive mærkbart langsommere.
> Jeg har tidligere kørt test-script på php og MySql på både Surftown
> og Gigahost, og begge gav klart ringere resultat hos Gigahost.
> Unoeuro er ydelsesmæssigt endnu bedre end Surftown var. Spørgsmålet
> er så, om det har nogen reel betydning for dine sider.


Hej Kim,

Tak for din heads-up vedr. performance.

De sider jeg typisk bygger er dog ikke af omfattende karakter på det
punkt.

Det er vigtigere at mail fungerer optimalt - både på almindeligvis men
også via formularer (og så skal en amatør som mig kunne sætte det op).
:-)

I første omgang bliver det nok kun mine egne sider, jeg flytter, men
vil på sigt (hvis det virker tilfredsstillende) anbefale både nuværende
og fremtidige kunder at skifte.

Lignende emner