PHP insert into och ' tecken


#1

Hej och glad påsk.

Om man gör en insert into med PHP och strängen innehåller följande tecken ’ så skickas värdet inte in och jag antar att det beror på att insert into avslutas i och med ’ är ett specialtecken. Jag tänker att det måste finnas något bra sätt att hantera detta på med tanke på att detta tecken ofta förekommer inom engelskan? Idag har jag kommit runt problemet genom att ersätta ’ med ´men det känns som det måste finnas ett bättre sätt?

Några idéer?


#2

Nu var det länge sen jag gjorde något i PHP men i princip alla språk jag använt har alltid haft något sätt att beskriva att just detta tecken ska inte tolkas enligt några speciella regler. Oftast kallas detta en ”escape sequence” eller liknande och kan se lite olika ut för olika språk, men vanligt är att man använder en slash som prefix. Kanske det mest typiska exemplet är hur man skriver tecknet för en ny rad: \n. För just ditt problem skulle det se ut så här: \', men jag är osäker på om det är precis så man skriver escape sequences i PHP, så du vill nog dubbelkolla det först.


#3
\'

Tack! Det verkar var \'men problemet är att det i mina fall oftast är en användare som fyller i texten i en textarea så jag vet inte var i texten eller om det finns ett sådant tecken. Därför har jag istället använt str_replace men jag tänkte att det kanske fanns ett allmänt sätt att säga till PHP att vara smartare direkt från början :slight_smile:


#4

Ah, jag hajar. Det du absolut vill göra är att köra någon form av sanitize-funktion så fort du har med användarinput att göra. Risken är annars att du skapar en säkerhetslucka, beroende på vad som händer med datan. Jag vet inte om php har någon sån funktion i sitt standard-bibliotek, men sanitize input är nog vettiga nyckelord i en sökning.


#5

Gjorde en snabb sökning och hittade detta:

Där rekommenderas att man använder htmlspecialchars:

http://php.net/manual/en/function.htmlspecialchars.php

Det kanske kan vara något?


#6

Tack, låter intressant. Ska kolla på det!