Martin Larsen wrote:
> David Konrad wrote:
>
>> Det handler ganske enkelt om, at er indlejret i HTML,
>> gemt i en streng i en database, hvor eval() så kaldes. Løsningen er
>> ikke de ting du foreslår, men slet og ret at kalde en funktion inde
>> fra eval()-koden, der genererer de link med korrekte qoutes, som
>> ikke er mulige fra eval()-koden, der selv er qoutet (det er derfor
>> problemet opstår) ala
>
> Drejer det sig om at den oprindelige html/php kode bliver quoted før
> indsættelsen i databasen og ikke bliver unquoted tilbage til præcis
> samme tilstand som før? (Så der derved kommer syntaxfejl når den
> evalueres)
Ja! Lige netop!
Delphi-koden, hvis det overhovedet kan give mening - f.eks gem en statisk
side (sådan set blot en side)
procedure TFR_StaticPageText.btn_staticpage_saveClick(Sender: TObject);
var SQL: string;
T: string;
begin
T:=MM_HTML.Lines.Text;
T:=stringReplace(T,#39,'"',[rfReplaceAll]);
SQL:='update static_page_content set '+
'page_title='+encodeSQLText(ED_Title.text)+','+
'page_meta_description='+encodeSQLText(MM_Desc.Lines.Text)+','+
'page_meta_keywords='+encodeSQLText(MM_Keywords.Lines.Text)+','+
'page_breadcrumb='+encodeSQLText(ED_Bread.Text)+','+
'page_is_php='+inttostr(CB_Type.ItemIndex)+','+
'page_html='+encodePHPText(T)+' '+
'where page_id='+inttostr(FPageID)+' and
language_id='+inttostr(FLanguage);
D.OSCI.ExecSQL(SQL);
ED_Title.Modified:=false;
ED_Bread.Modified:=false;
MM_Keywords.Modified:=false;
MM_Desc.Modified:=false;
MM_HTML.Modified:=false;
updateButtons;
end;
simple "oversættelsesfunktioner"
function encodePHPText(text:string):string;
var count:integer;
begin
result:='';
for count:=1 to length(text) do begin
if text[count]='Æ' then result:=result+'Æ'
else if text[count]='æ' then result:=result+'æ'
else if text[count]='Ø' then result:=result+'Ø'
else if text[count]='ø' then result:=result+'ø'
else if text[count]='Å' then result:=result+'Å'
else if text[count]='å' then result:=result+'å'
else if text[count]='²' then result:=result+'²'
else if text[count]='è' then result:=result+'è'
else if text[count]='é' then result:=result+'é'
else result:=result+text[count];
end;
result:=quotedstr(result);
end;
så når siden så hentes via MySQL i PHP, er den qoutet med ' - og det går
naturligvis galt :-)
jeg håbede så, der var en qoutestr eller ækvialent i PHP - men det havde jo
alligevel været noget rod.
Nå, problemet er løst, og nu ved jeg hvordan jeg tackler den slags med eval
fremover.
> http://de3.php.net/manual/en/function.base64-encode.php
>
> Jeg havde et lignende problem med umulige blandinger af forskellige
> quotes som jeg løste én gang for alle på den måde.
Det er faktisk ret smart, den mulighed kendte jeg ikke. Den skal jeg have i
baghovedet i fremtiden. Tak for det!
mvh

