Hjælp til MySQL problemer

Tags:    databaser

Jeg har problemer med en af mine html editorer på min webside. Det er kun et sted alle andre steder på siden virker html editoren uden problemer.

Men et sted når man trykker på tekst editor, og dér sætter en tekst ind, så bliver intet gemt når man gemmer. Sætter man derimod teksten ind i tekst feltet uden at anvende tekst editor, og trykker gem, bliver det gemt.

Går man efterfølgende ind i tekst editoren og ændre farve kommer denne meddelelse: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'div>
<stron' at line 6

Prøver jeg at indsætte et billede kommer denne meddelse: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '" width="150" height="226">
", hour = "Deltid", contra' at line 5

Håber at nogen kan hjælpe mig med at få løst problemet.



9 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
For mig lyder det som om du glemmer at beskytte din database mode injektions, du har noget i retning af.

mysql("UPDATE table SET html=\"$html\",....");

Har svært ved at komme med en mere fornuftig skrevet query der bryder på " i $html.

Du burde som minimum sende din værdier igennem
mysql_real_escape_string() funktionen først.





Det er ganske enkelt fordi din UPDATE statement er kodet med forkert gåsetegn. Hvis du laver et HTML tag i din editor som indeholder gåsetegn (") vil phpkoden blive læst forkert da den udfører de enkelte handlinger som stå mellem dine (").

Du skal derfor ind og opdatere din PHP kode så dette ikke kan ske. Et eksempel:

Du har en HTML kode som din editor har genereret efter du har skrevet en tekst:

Fold kodeboks ind/udKode 


Din UPDATE statement lyder så således:

Fold kodeboks ind/udKode 


Din $tekst er derfor: "<div style="... resten ignoreres og den melder derfor fejl.

For at løse problemet kan du erstatte (") med (') i din UPDATE statement. Det burde faktisk være nok.

Håber det giver mening...



Det lyder som om du prøver at query noget html. Altså i stedet for at skrive "SELECT * from some_table" så skriver du "<div> ...... "
Prøv at kigge nærmere på din kode.



Hej Mads

Tak for dit svar:)

Når du skriver at jeg skal kigge på min kode, mener du så at det er der hvor man programmere siden, at koderne skal ændres?

For når jeg skriver noget i html editoren hvor det går galt, er det jo netop det at man ikke skriver i koder men kan sætte teksten ind som den er.

Håber det er til at forstå:)





Giv os noget kode og en link så er det lettere at finde fejlen.



Det Lasse sagde er jeg rimelig sikker på er forkert, svarer lidt til at påstå at PHP afvikler input strenge som PHP kode.

Det er rigtigt at du i PHP kan kode strenge hvor variable navne bliver udskiftet med deres værdi før strengen bliver givet til en variable. Men PHP gør ikke denne udbytning på input data såvidt jeg ved.

Derudover ville det eksempel han skrev formentlig bryde sammen med en PHP fejl i $tekst= linien, da resten ikke ignores men prøves at blive fortolket.



Det Lasse sagde er jeg rimelig sikker på er forkert, svarer lidt til at påstå at PHP afvikler input strenge som PHP kode.

Det er rigtigt at du i PHP kan kode strenge hvor variable navne bliver udskiftet med deres værdi før strengen bliver givet til en variable. Men PHP gør ikke denne udbytning på input data såvidt jeg ved.

Derudover ville det eksempel han skrev formentlig bryde sammen med en PHP fejl i $tekst= linien, da resten ikke ignores men prøves at blive fortolket.


Har siddet i situationen, hvor PHP fejlfortolker inputtene fordi et (") afbryder funktionen. Situationen her tyder på det er det samme problem.



Det drejer sig om en online editor, kan det være en fejl hos Surftown, hvor jeg har mit webhotel?



Det er vel muligt... :S



t