Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[FLASH + PHP]Weergeven foto's & speciale tekens

Pagina: 1
Acties:

  • Dirtbiter
  • Registratie: Maart 2002
  • Laatst online: 13-11 15:52
Met de nieuwe website van mijn band hebben we 2 problemen.

Het gaat hier om een stuk flash, gemaakt door iemand anders, te noemen 'de flashman'.
Dit stukje flash communiceert met mijn database via PHP. Deze PHP heb ik zelf geschreven, en deze spuugt XML en HTML uit, afhankelijk van de vraag.

Nu heb ik 2 problemen, waar ik samen met de flashman niet lekker uit kom.

De website is te vinden op www.gamberro.net

Probleem 1
Op de pagina's "nieuws" en "contact" staat links bovenin een slideshow. De gebruikte foto's komen vanuit een XML, te weten deze XML. Deze XLM is gewoon een bestand dat 1-op-1 weggeschreven wordt via PHP.
PHP:
1
2
3
header("content-type: text/xml");
$fileContent = file_get_contents("../xml/galleryPhotos.xml");
echo $fileContent;


Deze foto's doen het dus wel in Internet Explorer, maar niet in Firefox. Niet in FF2, maar ook niet in FF3. De XML is hetzelfde, en de flash ook.
De flashman dacht dat het aan de hosting lag, maar ik zou niet weten hoe.

Probleem 2
Op de "nieuws" pagina staan de titels van de nieuwsberichten (rechts onderin). Deze worden gegenereerd vanuit deze XML.
Als dan 1 bepaald item geselecteerd wordt, dan moet er ineens HTML uitgespuugd worden, en dat gebeurd via deze pagina.

Nu is er geen mogelijkheid waarop ik die speciale karakters (ö en ç bijvoorbeeld) goed in beeld krijg.
De database is UTF-8, en de encoding van de XML ook.
Als ik echter de XML encoding op ISO-8859-1 zet, dan staat het teken wel goed in de XML, in plaats van het huidige vraagteken. Hetzelfde geldt voor de HTML.

De HTML gaat ook fout, op het moment dat ik UTF-8 encode. Daar zit iets grondig mis.
PHP:
1
2
3
4
5
6
7
8
9
10
11
$query = mysql_query("SELECT *,
                                   DATE_FORMAT(date, '%d-%m-%Y') AS fdate 
                                   FROM news
                                   WHERE id = '$content'");
// Display one event in HTML
header('Content-Type: text/html; charset=utf-8');
while( $row = mysql_fetch_assoc( $query ))
{
  echo '<B>'.$row[fdate].': '.$row[title].'</B><br>
          <p>'.str_replace('<br />', '<br>', html_entity_decode($row[message])).'</p>';
}


Toch denk ik dat mijn database ook UTF-8 is...

Iemand enig idee waar ik de oorzaak moet zoeken van deze problemen?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 08:25

Janoz

Moderator Devschuur®

!litemod

Probleem 1
Hier kan eigenlijk weinig mis zijn met de php imho. Probeer eens het bestandje letterlijk op de server te zetten ipv via een php scriptje? Niet dat dat het oplost, maar om de flashman ervan te overtuigen dat het waarschijnlijk toch aan de flash ligt ;).

Ik vermoed dat het misschien wel komt door de manier waarop de foto's in flash opgehaald worden. Dat er misschien een url niet klopt oid.

Probleem 2
Toch denk ik dat mijn database ook UTF-8 is...
Dat is alvast een punt om te beginnen. Je moet niet 'denken', maar 'zeker weten' dat de database UTF8 is. Je pagina wordt namelijk wel aangegeven als een UTF8 pagina, maar de content is dat gewoon niet.

[ Voor 7% gewijzigd door Janoz op 09-07-2008 09:45 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Dirtbiter
  • Registratie: Maart 2002
  • Laatst online: 13-11 15:52
Ik heb een nieuwe tabel aangemaakt, alles op utf-8-unicode-ci gezet, en nog eens geprobeerd, maar het gaat gewoon echt niet goed...
Overal staat alles in utf-8-unicode-ci, ik zou echt niet weten wat ik nog meer aan moet passen.

Wat betreft dat XML bestandje, als hij het direct uit een bestand uitleest, dan moet ook de flash veranderen, dan heb je dus meerdere wijzigingen in 1 keer.

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Dan kan het alsnog bij het opslaan fout gaan. Als jij gewoon strings in andere encoding in je query zet, vind er geen automagische conversie plaats, etc. etc.

{signature}


  • Dirtbiter
  • Registratie: Maart 2002
  • Laatst online: 13-11 15:52
Probleem 2 is opgelost
Via deze link kwam ik erachter dat je
SQL:
1
mysql_query("SET NAMES utf8");
moet gebruiken om er echt UTF-8 van te maken, omdat dat eigenlijk geen toffe encoding is voor MySQL ofzo...
Daarom geeft de code van een update via PHPMyAdmin ook bij elk element
SQL:
1
AND CONVERT( `news`.`title` USING utf8 )

Het nadeel is nu wel dat alle tekst 1-op-1 in de database staat, dus geen html_entities enzovoort, want dat snapt flash niet. Het heeft niet mijn voorkeur, maar het werkt wel.

Nu probleem 1 nog!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Dirtbiter schreef op woensdag 09 juli 2008 @ 10:14:
Het nadeel is nu wel dat alle tekst 1-op-1 in de database staat, dus geen html_entities enzovoort, want dat snapt flash niet.
Dat is een voordeel want je DB heeft niets met een mogelijke HTML output te maken. Escapen is context afhankelijk.

{signature}


  • lometje
  • Registratie: November 2001
  • Laatst online: 13-10 21:57

lometje

Multimediant

Janoz schreef op woensdag 09 juli 2008 @ 09:44:
Probleem 1
Hier kan eigenlijk weinig mis zijn met de php imho. Probeer eens het bestandje letterlijk op de server te zetten ipv via een php scriptje? Niet dat dat het oplost, maar om de flashman ervan te overtuigen dat het waarschijnlijk toch aan de flash ligt ;).

Ik vermoed dat het misschien wel komt door de manier waarop de foto's in flash opgehaald worden. Dat er misschien een url niet klopt oid.

[...]
Flashman hier, :) Het prachtige principe van flash is dat het verder niet uitmaakt via wat het bekeken wordt zolang het maar de flashplugin heeft/ondersteund. Oftewel flash maakt verder geen onderscheid in browsers hoe het de info/foto ophaalt. Overigens heb ik voor de zekerheid even een testje gedaan met een xml ipv php maar dat moet ook nog even op de hosting om zeker te zijn dat het daar niet aan zou liggen. Maar ik heb zo'n vermoeden dat er iets op die hosting de browser detecteert en er iets anders mee doet zodra de foto's opgevraagt worden. Het is een vermoeden, maar vaak kloppen die ook 8)

(overigens haalt flash de foto's gewoon op de juiste manier op de juiste locatie... media/pictures/fotonaam.jpg ... Lijkt me niet dat het daar aan zou liggen...)

(Zal overigens m'n info es aanpassen want het zou dieptriest zijn als ik op die computer nog zat te werken ;) )

[ Voor 6% gewijzigd door lometje op 09-07-2008 12:36 ]


  • Dirtbiter
  • Registratie: Maart 2002
  • Laatst online: 13-11 15:52
Ondertussen staat de site dus op 2 plekken online (ook op www.jerokuhne.nl/v0 ) en daar werkt het wel.

Ik heb dus even een belletje naar mijn hoster gedaan, en zij gaan het uitzoeken.
Mocht iemand hier het al weten, schroom dan niet!

  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 26-05 15:01

XangadiX

trepanatie is zóó kinderachtig

misschien even je chmod aanpassen?
ik zie in de liveheaders een aantal 403's voorbijkomen

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
http://www.gamberro.net/media/thumbs/1Draai.jpg

GET /media/thumbs/1Draai.jpg HTTP/1.1
Host: www.gamberro.net
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15
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
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

HTTP/1.x 403 Forbidden
Date: Wed, 09 Jul 2008 18:26:49 GMT
Server: Apache/1.3.39 (Unix) mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 PHP/4.4.7 FrontPage/5.0.2.2635.SR1.2 mod_ssl/2.8.29 OpenSSL/0.9.7e-p1
Keep-Alive: timeout=15, max=96
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1


nu weet je iig waar je naar moet googlen

* XangadiX ziet 403 bij alle thumbs langskomen trouwens

Stoer; Marduq


  • Dirtbiter
  • Registratie: Maart 2002
  • Laatst online: 13-11 15:52
Diepe zucht....

Het heeft dus te maken met mijn Hotlink protection.

Als ik die uitzet, werkt het als een zonnetje. Als ik die aanzet, werkt het niet.
Ik had wel alle mogelijke referrers in de lijst gezet, dus deze geeft toch een andere referrer mee ofzo...

Dat is wel vaag dat IE het dan wel doet...

edit:

Sterker nog: het gaat alleen om het vinkje "Allow direct requests (ie. entering the url to an image in your browser)
".
Als ik die aanzet, is het al goed. Blijkbaar gaat er ergens iets mis met de referrer...

Alleen nu liggen mijn directories verder open. Iemand een oplossing die beide doelen dient?

[ Voor 33% gewijzigd door Dirtbiter op 09-07-2008 23:02 ]


  • Arjen Tempel
  • Registratie: Januari 2002
  • Niet online
offtopic:
Probeer je foto's altijd te uploaden in het exacte formaat waarin ze ook weergegeven worden. De meeste foto's zijn nu 468x350 px groot, terwijl ze slechts op een formaat van 325x244 getoond worden. Hierdoor moet de Flash-applicatie ze verkleinen en dat levert nogal lelijke kartelrandjes op.

ontopic:
Denk je echt dat veel mensen naar deze foto's zullen gaan hotlinken?

[ Voor 12% gewijzigd door Arjen Tempel op 09-07-2008 23:05 ]


  • Dirtbiter
  • Registratie: Maart 2002
  • Laatst online: 13-11 15:52
Het gaat mij een beetje om het principe :)

Het is nu helemaal raar:
1. Hotlink protectie uit: Beide werken
2. Hotlink protectie aan: Werken allebei niet
3. Hotlink protectie aan met directe links toegestaan: IE niet, FF wel

Nu begrijp ik er niks meer van...

  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 26-05 15:01

XangadiX

trepanatie is zóó kinderachtig

Flikker die maffe hotlink protectie dan van je server ;)
Overigens begint dit te lijken op "hoe configureer ik mijn server", wat niets te maken heeft met WEB of GFX

Stoer; Marduq

Pagina: 1