Avatar billede radion Nybegynder
04. august 2006 - 11:10 Der er 22 kommentarer og
1 løsning

grimmer escape

Hej Eksperter

Jeg sidder i PHP og skal bruge en ordentlig bunke escapestrings til javascript..

det jeg har indtil videre, virker ikke... problemet opstår inde ved imagepopup(
hvor jeg syntes jeg slipper op for escapestrings.. jeg kan ikke få nedenstående til at virke i hvert fald.. er der nogen der kan hjælpe?

$sLink .="<a href=\"java script:void(0);\" onclick=\"document.getElementById('cat_".$cats_id."').innerHTML='<img onClick=\'imagePopup(\\\'popup.php?pic=".$aImages[$u]."&cob=1\\\');\' src=\'billeder/fotoalbum/small_".$aImages[$u]."\'>'\">$iLinkNb</a>&nbsp;";
Avatar billede erikjacobsen Ekspert
04. august 2006 - 11:59 #1
Formentlig

$sLink .="<a href=\"java script:void(0);\" onclick=\"document.getElementById('cat_".$cats_id."').innerHTML='<img onClick=\'imagePopup(\\\\\'popup.php?pic=".$aImages[$u]."&cob=1\\\\\');\' src=\'billeder/fotoalbum/small_".$aImages[$u]."\'>'\">$iLinkNb</a>&nbsp;";
Avatar billede radion Nybegynder
04. august 2006 - 14:05 #2
Jeg har prøvet den med 5 \ men, det fungerer ikke :(
Avatar billede erikjacobsen Ekspert
04. august 2006 - 14:10 #3
"Fungerer ikke" på hvilken måde?  Jeg kan ikke sætte samme testmiljø op som dig, så - har du et link?
Avatar billede radion Nybegynder
04. august 2006 - 14:47 #4
sorry... der kommer ikke nogen popup... smider det op lige om en halv times tid.
Avatar billede erikjacobsen Ekspert
04. august 2006 - 15:32 #5
Men du får billedet du kan klikke på ved at klikke første gang?  Får du javascriptfejl?
Avatar billede radion Nybegynder
04. august 2006 - 15:35 #6
hejsa.. så er det kommet op :)
http://joven.dk/test/index_real.php?p=9&m=9
Avatar billede radion Nybegynder
04. august 2006 - 15:37 #7
den skifter billedet ud, men jeg får ikke nogen popup når jeg klikker på billedet
Avatar billede radion Nybegynder
04. august 2006 - 15:38 #8
og jeg får en fejl der hedder illegal character
imagePopup(\
-----------|
Avatar billede roenving Novice
04. august 2006 - 16:57 #9
Hvis du skal ende med een \-karakter, kan jeg ikke forestille mig situationer, hvor du vil kunne få brug for et ulige antal backslashes, så prøv engang med:

$sLink .="<a href=\"java script:void(0);\" onclick=\"document.getElementById('cat_".$cats_id."').innerHTML='<img onClick=\\\\"imagePopup(\\'popup.php?pic=".$aImages[$u]."&cob=1\");\' src='billeder/fotoalbum/small_".$aImages[$u]."'>'\">$iLinkNb</a>&nbsp;";

-- tænk det, at du skal opløse det, ligesom du f.eks. gør det med en ligning, første gang det fortolkes (når php udskriver det !-), så fjernes der een backslash pr. par, anden gtang det fortolkes (af javascriptet), så fjernes der igen en backslash pr. par . . .

Så start med det, som javascript skal smide inden i onclick-tingen på img-tagget:

onclick='imagePopup("popup.php?pic=$$".$aImages[$u].$$"&cob=1");'

-- jeg har brugt $$" til at illustrere, at her henter du direkte fra din php-variabel (altså, at det er tegn, der ikke vil kunne escapes senere !-)

Da du bruger dette i en streng omkranset af gåseøne, ville jeg udnytte, at php fortolker $variabelnavn i den slags strenge uanset placeringen i en strengvariabel for på den måde at få et simplere udtryk, altså:

onclick='imagePopup("popup.php?pic=$aImages[$u]&cob=1");'

-- bemærk, at det, som javascript skal udskrive selvfølgelig skal escapes behørigt til brug i php ...

Det skal så placeres i en javascript-funktion på et img-tag:

<img src="billeder/fotoalbum/small_$aImages[$u]" onclick='imagePopup("popup.php?pic=$aImages[$u]&cob=1");'>

-- stadig undgår vi problemerne, da php-fortolkeren godt kan finde $variabel ...

Men det skal så udskrives af javascript, i en variabel på en onclick-funktion:

onclick="document.getElementById('cat_$cats_id').innerHTML='<img src=\"billeder/fotoalbum/small_$aImages[$u]\" onclick=\'imagePopup(\"popup.php?pic=$aImages[$u]&cob=1\");\'>';"

-- men så skal vi jo så escape, da php jo netop skal finde og esacpe javascript-streng-delimiters, der falder sammen med php-tingene, samt fordoble escape-tegn og escape potentielle gåseøjne, hvor php skal fortolke variable:

$sLink .="<a href=\"java script:void(0);\" onclick=\"document.getElementById('cat_$cats_id').innerHTML='<img src=\\\"billeder/fotoalbum/small_$aImages[$u]\\\" onclick=\\'imagePopup(\\\"popup.php?pic=$aImages[$u]&cob=1\\\");\\'>';\">";

-- og så fandt jeg jo så grunden til de ulige antal, men du må kigge på output i de forskellige udgaver, for at finde fejlkilder !o]

Tilbagefortolket:
Udskrevet fra php:

<a href="java script:void(0);" onclick="document.getElementById('cat_$cats_id').innerHTML='<img src=\"billeder/fotoalbum/small_$aImages[$u]\" onclick=\'imagePopup(\"popup.php?pic=$aImages[$u]&cob=1\");\'>';">

Udskrevet fra onclick:

<img src="billeder/fotoalbum/small_$aImages[$u]" onclick='imagePopup("popup.php?pic=$aImages[$u]&cob=1");'>

-- bemærk der at $variablerne så er lavet til tekst fra php ...
Avatar billede radion Nybegynder
04. august 2006 - 17:34 #10
puh, det gør nas....


har stadig ikke fundet den rigtige løsning :/
Avatar billede radion Nybegynder
04. august 2006 - 18:04 #11
Jeg kan slet ikke finde hoved og hale i det mere... er der nogen der kan konstruere noget der virker?

roenving, du virker som om du har pænt meget styr på det, jeg syntes jeg har brugt, og forsøgt at tilpasse dine eksempler, men kan ikke få det til at fungere :(
Avatar billede mclemens Nybegynder
04. august 2006 - 20:14 #12
Her:

<script type="text/javascript">
function assignimg(pic,catid){
document.getElementById('cat_'+catid).innerHTML="<img onClick=\"imagePopup('popup.php?pic="+pic+"&cob=1');\"

src=\"billeder/fotoalbum/small_"+pic+"\">";
}
</script>


- Den er ikke php escapet men du kan jo hoppe ud af php og så escape den eller lægge den ud i en js fil og bruge:

<script type="text/javascript" src="filnavn.js"></script>


og indholdet af filnavn:


function assignimg(pic,catid){
document.getElementById('cat_'+catid).innerHTML="<img onClick=\"imagePopup('popup.php?pic="+pic+"&cob=1');\"

src=\"billeder/fotoalbum/small_"+pic+"\">";
}




og så den php linje:

$sLink .="<a href=\"java script:void(0);\" onclick=\"assignimg('$aImages[$u]','$cats_id');\">$iLinkNb</a>&nbsp;";
Avatar billede radion Nybegynder
04. august 2006 - 20:22 #13
hmm... sådan havde jeg ikke tænkt på det..

Roenving, jeg vil meget gerne smide nogle point hen til dig, hvis du samler på det? er superfedt, du gider bruge tid på at lave sådan en grundig gennemgang :)

Tusind tak for hjælpen alle sammen :)
Avatar billede mclemens Nybegynder
04. august 2006 - 20:23 #14
Fejlen i både erik's og roenvings er at de begge bruger en
tildeling der svarer til noget lignende Roenvings linje her:

<a href="java script:void(0);" onclick="document.getElementById('cat_$cats_id').innerHTML='<img src=\"billeder/fotoalbum/small_$aImages[$u]\" onclick=\'imagePopup(\"popup.php?pic=$aImages[$u]&cob=1\");\'>';">

... vi kigger nærmere på onclick delen i a tagget:

onclick="document.getElementById('cat_$cats_id').innerHTML='<img src=\"billeder/fotoalbum/small_$aImages[$u]\" onclick=\'imagePopup(\"popup.php?pic=$aImages[$u]&cob=1\");\'>';"

^ - Læg mærke til at onclick starter med " og slutter med " ... men hvor sluttter den?
- Ja den slutter egentlig inden den er færdig da browserens parser ikke escaepr en attribut tildelings " eller ' med \ og det er det den skal i dette tilfælde. Derfor skal det hele kastes op i et script istedet da vi ikke både kan bruge " og ' i samme onclick linje...
Avatar billede mclemens Nybegynder
04. august 2006 - 20:23 #15
Update, tak for point :o)
Avatar billede erikjacobsen Ekspert
04. august 2006 - 20:23 #16
Skitse til løsning:  http://erikjacobsen.com/eksp1.php
Avatar billede mclemens Nybegynder
04. august 2006 - 20:27 #17
Åh joh det kan man også :D ... men ' og " dobbelt virker ikke
&quot; løste den så som set i Erik's nye... En deler Erik?
Avatar billede mclemens Nybegynder
04. august 2006 - 20:33 #18
radion, jeg anbefaler dog scriptet... det andet
fylder lidt mere hvis du laver det mange gange...
Avatar billede erikjacobsen Ekspert
04. august 2006 - 20:39 #19
Nej tak, jeg samler slet ikke på point.
Avatar billede mclemens Nybegynder
04. august 2006 - 20:49 #20
Ok, men tak for den &quot så :o)
Avatar billede mclemens Nybegynder
04. august 2006 - 20:51 #21
P.s.: Roenving hvis du dropper forbi, hvad gør
jeg / vi i denne tråd - du er jo en mod...
http://www.eksperten.dk/spm/724094

... Ved ikke om jeg skal sige nej eller?
- Pointene i den anden tråd er selvfølgelig
forkert fordelt, men hvad skal jeg sige?
Avatar billede mclemens Nybegynder
04. august 2006 - 20:51 #22
Undskyld offtopic i din tråd radion
Avatar billede radion Nybegynder
04. august 2006 - 22:00 #23
hehe, helt okay mclemens. tak for hjælpen, og opklaringen :D)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester