Detta och nästa kapitel visar hur man använder PHP för att validera formulärdata.
PHP-formulärvalidering
Tänk SÄKERHET när du bearbetar PHP-formulär!
Dessa sidor kommer att visa hur man bearbetar PHP-formulär med säkerhet i åtanke. Korrekt validering av formulärdata är viktigt för att skydda ditt formulär från hackare och spammare!
HTML-formuläret som vi kommer att arbeta med i dessa kapitel, innehåller olika inmatningsfält: obligatoriska och valfria textfält, alternativknappar och en skicka-knapp:
Valideringsreglerna för formuläret ovan är följande:
fält | Valideringsregler |
---|---|
namn | nödvändig. + Får endast innehålla bokstäver och blanksteg |
E-post | nödvändig. + Måste innehålla en giltig e-postadress (med @ och .) |
Hemsida | frivillig. Om den finns måste den innehålla en giltig URL |
Kommentar | frivillig. Flerradigt inmatningsfält (textområde) |
Kön | nödvändig. måste välja en |
Först kommer vi att titta på den vanliga HTML-koden för formuläret:
Textfält
Namn-, e-post- och webbplatsfälten är textinmatningselement och kommentarsfältet är ett textområde. HTML-koden ser ut så här:
Namn:
E-post:
Hemsida:
Kommentar:
Radioknappar
Könsfälten är radioknappar och HTML-koden ser ut så här:
kön:
Kvinna
Manlig
Övrig
Formelementet
HTML-koden för formuläret ser ut så här:
=$status ;?>
Så här kan du validera dina formulär i PHP utan att behöva ta till något annat. Nästa inlägg om ämnet formulär tror jag kommer att betraktas som formulärvalidering i jQuery. Under tiden ser jag fram emot dina kommentarer och förslag. God natt och god morgon alla =).
POST-metoden. Och utvecklarens första uppgift är validering beställnings- data som tas emot med POST-metoden. Som regel reduceras denna validering till:- kontrollera att alla obligatoriska fält är ifyllda
- kontrollera om e-postadressen eller URL-adressen är korrekt
- kontrollera att resten av uppgifterna är korrekta(endast siffror eller bokstäver kan anges i inmatningsfältet, eller båda, eller kontrollera att inloggningen är unik i databasen, etc.)
- filtrera data från skadlig kod
Som regel upprepas alla dessa kontroller och du måste skriva nästan samma kod för att validera POST-data, vilket leder till duplicering av php-kod.
För att undvika detta skrev jag en enkel klass för POST-datavalidering i PHP. Den här klassen är väldigt enkel och lätt att använda och du kan använda den i dina skript. Denna klass kallas Validator.
Jag måste genast säga att min klass liknar ett bibliotek Form_validation i kodantändare , bara lite ändrad. Därför, om du är bekant med det här biblioteket, kommer det inte att vara svårt för dig att förstå min POST-datavalideringsklass.
Det jag gillade med Form_validation-biblioteket var lättheten att ställa in fält för validering och själva valideringen. Detta var utgångspunkten för mig när jag utvecklade min egen valideringsklass.
Låt oss ta en titt på ett litet exempel på hur du använder den här klassen.
Require_once "validator.php"; $validator = new Validator(); $validator->set_rules("namn","Ditt namn",array("required" => "Fält %s krävs ","alpha" => "Fält %s får endast innehålla bokstäver ")); $validator->set_rules("email","Din e-post",array("required" => "Fält %s krävs ","valid_email" => "Fält %s måste innehålla en giltig e-postadress ")); if($validator->run())( echo "Validering lyckades"; ) else( echo $validator->get_string_errors(); )
Först inkluderar vi klassfilen validator.php
till vårt manus. Skapa sedan en instans av klassen och spara objektet i en variabel $validator
.
Använd sedan metoden $validator->set_rules($field, $label, $rules)
ställ in fält för validering.
Denna metod tar tre parametrar:
- $fält — Namnet på valideringsfältet (värdet på namnattributet i taggen )
- $-etikett — valideringsfältets namn, kommer att ersättas i felmeddelanden
- $regler är en uppsättning valideringsregler, vars nyckel är valideringsregeln och värdet är felmeddelandet för denna regel
Efter att alla fält för validering är inställda kör vi valideraren med metoden $validator->run() . Om valideringen lyckades kommer denna metod att returnera värdet SANN , annars kommer , om det finns åtminstone några fel , tillbaka FALSK .
Det finns tre metoder för att få felmeddelanden:
- get_string_errors() - returnerar alla felmeddelanden som en sträng
- get_array_errors() - returnerar alla meddelanden som en array, där nyckeln är namnet på fältet och värdet är beskrivningen av felet för detta fält.
- form_error($field) - returnerar ett felmeddelande för fältet som skickats som parametern $field
Som standard är felmeddelanden insvept i en tagg . För att sätta din egen design, använd metoden set_error_delimiters($prefix, $suffix) . Till exempel så här:
$validator->set_error_delimiters("
Nu kommer felmeddelanden att packas in div med klass "fel"
Som du kan se är allt väldigt enkelt.
För att ställa in valideringsregler kan du använda metoden set_rules($fields) passera en flerdimensionell associativ array. Låt oss titta på ett exempel:
$rules = array(array("field" => "namn", "label" => "Ditt namn", "rules" => array("required" => "Fält %s krävs ", "alpha" = > "Fält %s får endast innehålla bokstäver ")), array("field" => "e-post", "label" => "Din e-post", "rules" => array("required" => "Fält % s krävs ", "valid_email" => "Fältet %s måste innehålla en giltig e-postadress "))); $validator->set_rules($rules);
Som du kan se har jag skrivit samma valideringsregler som i det första exemplet, bara som en flerdimensionell associativ array. Du kan använda någon av de metoder som passar dig bäst i en given situation.
Så vilka valideringsregler stöder denna klass?
Jag tog med mig in i den här klassen mest allmänning valideringsregler som alla möter. Här är en komplett lista över dessa regler:
nödvändig | Returnerar FALSK om fältet är tomt |
heltal | Returnerar FALSE om värdet inte är ett heltal |
flyta | Returnerar FALSE om värdet inte är numeriskt |
valid_url | Returnerar FALSE om värdet inte är en giltig URL |
valid_email | Returnerar FALSE om värdet inte är en giltig e-postadress |
giltig_ip | Returnerar FALSE om IP-adressen inte är giltig |
tändstickor | Returnerar FALSE om elementet inte matchar värdet för ett annat fältelement |
alfa | Returnerar FALSE om elementet innehåller mer än bara bokstäver |
valid_captcha | Returnerar FALSE om värdet är i session fält inte lika med formulärfältets värde |
giltigt datum | Returnerar FALSE om elementet innehåller ett ogiltigt datum |
De flesta av dessa regler använder filter, som blev tillgänglig i PHP 5.
Reg.ru: domäner och hosting
Den största registratorn och värdleverantören i Ryssland.
Över 2 miljoner domännamn i tjänst.
Marknadsföring, mail för domän, lösningar för företag.
Mer än 700 tusen kunder runt om i världen har redan gjort sitt val.
* För muspekaren för att pausa rullningen.
Tillbaka framåt
Validering och datarensning med PHP
Datasäkerhet är en mycket viktig punkt som ofta underskattas av både utvecklare och kunder. Sedan PHP 5.2.0 har datarensning och validering (kontroll mot vissa kriterier) blivit lättare med införandet av datafiltrering. Idag ska vi titta på hur man filtrerar, hur man använder filter och skapar några anpassade funktioner.
Introduktion
Jag har alltid känt att det är lätt att skriva PHP-kod, och det är ännu lättare att skriva dålig PHP-kod. Många open source-projekt som WordPress, Drupal, Magento har bidragit till den utbredda användningen av PHP inom webbutvecklingsområdet. Dessutom är det webbapplikationer som Facebook osv. Med en så bred användning av PHP (dynamiska webbplatser, bloggplattformar, innehållshanteringssystem, användning i e-handelsapplikationer etc.) är sannolikheten att stöta på "smutsig" information och osäkra system mycket hög. Den här handledningen kommer att visa dig några datarensnings- och valideringsmetoder med PHP. Vi kommer att fokusera på flera typer av input och hur man använder PHP-filter och användardefinierade funktioner.
Varför rensa och kolla?
I den här guiden kommer vi att fokusera på information som kommer direkt från användare, såväl som från andra externa källor. Det betyder att vi inte har någon kontroll över den information vi får. Allt vi kan göra är att kontrollera vad som kommer att göras med denna mottagna information. Nästan alla typer av hot kommer från information som överförs av användare eller annan tredje part.
Bland de viktigaste:
- XSS (Cross-Site Scripting - Cross-Site Scripting)
Detta är en kodinjektionsmetod, när ett skript injiceras på sidan på den attackerade webbplatsen från en helt annan webbplats på en annan server. Denna sårbarhet anses vara en av de mest utbredda i nätverket.
- SQL-injektion
Nästa populära sårbarhet är en annan form av kodinjektion som tillåter olika typer av skadligt beteende, inklusive obehörig åtkomst till information, modifiering av information i en databas eller annan störning av en webbapplikations normala funktion. Denna attack utförs genom att injicera en godtycklig SQL-kod i frågan, utformad för att interagera med databasen.
- CSRF/XSRF (Cross-Site Request Forgery)
Denna sårbarhet är mindre vanlig än de tidigare. Vanligtvis uppstår sådana sårbarheter när man arbetar med sessioner och cookies, och mer sällan - med dåligt kontrollerade och rensade data. CSRF kan användas för att göra förfrågningar till webbplatsen utan användarens vetskap. Ett känt sätt att implementera denna attack är att använda ett felaktigt attribut src vid bilden, vilket leder till exekvering av något manus, och inte till visning av bilden.
- Felaktig information
Felaktig information i sig är ingen "sårbarhet". Sådan information leder dock i många fall till en rad problem för både webbplatsägaren och databasadministratören. Ofta leder information som är felaktig i strukturen till funktionsfel, särskilt om webbplatsen är implementerad på amatörnivå, inte enligt standarder, samt till fel i driften av automatiserade system som förväntar sig att tydligt strukturerad data i ett visst format ska vara bearbetas.
Översättning av dialogen till bilden:
Hej, det är från din sons skola du är orolig. Vi har ett problem med datorer här.
Åh gud, slog han sönder något?
Är din sons namn verkligen Robert"); DROP TABLE-studenter;?
Åh ja vi kallar honom Lilla Bobby bord
Du förstår, vi har tappat alla rekord på årets elever. Jag hoppas att du är nöjd.
Och jag hoppas att du lär dig hur du kontrollerar informationen i databasen.
För våra syften kommer vi bara att fokusera på att använda informationssäkerhetstekniker på serversidan, så låt oss se hur termerna "sanering" och "validering" definieras i relation till PHP. Låt oss ta en titt på PHP-manualen:
"Validering används för att kontrollera om informationen som kontrolleras uppfyller vissa krav. Med FILTER_VALIDATE_EMAIL avgör vi till exempel om informationen är en giltig (dvs korrekt i strukturen) e-postadress, men ändrar inte denna data.
Rengöring innebär å andra sidan en möjlig förändring av informationen som kontrolleras, till exempel borttagning av oönskade tecken. Låt oss säga att användningen av FILTER_SANITIZE_EMAIL tar bort tecken som inte ska finnas i en e-postadress. De där. i det här fallet finns det ingen verifiering av adressens riktighet (d.v.s. validering), men medvetet olämpliga tecken raderas - inget mer."
I grund och botten, om du föreställer dig din sida som en nattklubb som alla vill gå till, handlar validering om att kontrollera om gästen finns på inbjudningslistan, sanering fungerar som en studsare som inte släpper in oönskade element i klubben. Mer eller mindre så här.
Vilka filter har jag?
Alla PHP-installationer kan inte vara identiska. Även om filter introducerades i PHP 5.2.0, har inte alla installationer samma uppsättning filter. I de flesta fall kommer alla filter vi ska prata om redan att inkluderas med PHP installerat på din server, men för att ge dig lite mer information om filter så tittar vi på vad som finns tillgängligt på din server. Källkodsfil bifogas getfilters.php, som, när den väl har installerats och körts på servern, visar en lista över alla dina filter (som informationsfilter tillgängliga via funktionen filter_var, och streaming tillgänglig via stream_filter_append)
eko"
Datafilter
\nFilter-ID | \n"; eko "Filternamn | \n
$filter | ".filter_id($filter)." |
Vi får först en array som innehåller en lista över alla tillgängliga filter som använder funktionen filter_list, varefter vi går igenom arrayen och visar filternamnet och dess ID.
Hur kan jag använda filtret?
PHP-filter för validering och sanering aktiveras genom att skicka en funktion filter_var minst två parametrar. Som ett exempel, låt oss tillämpa ett tydligt filter på ett heltal:
$value = "(!LANG:123abc456def"; echo filter_var($value, FILTER_SANITIZE_NUMBER_INT); !}
I det här exemplet har vi en variabel värde, som vi överför till funktionen filter_var från tillägget PHP Filters med filtret FILTER_SANITIZE_NUMBER_INT. Som ett resultat kommer vi att få:
Rensningsfiltret för heltal tar bort alla icke-heltalstecken, vilket ger oss ett "rent" heltal. I källorna kan du prova olika ingångar, och ett antal vanliga filter kommer att tillämpas på dem. I arkivet finns olika strängar som du själv kan använda som testmaterial.
Vad gör de olika filtren?
Listan nedan är inte uttömmande, men den innehåller de flesta filter som följer med en standard PHP 5.2.0+ installation.
FILTER_VALIDATE_BOOLEAN: Kontrollerar om den givna informationen är en boolesk SANT eller FALSK. Om det godkända värdet inte är av typen Boolean returneras FALSE. Skriptet nedan kommer att mata ut TRUE för variabelexemplet värde1 värde02:
$value01 = TRUE; if(filter_var($value01,FILTER_VALIDATE_BOOLEAN)) ( echo "TRUE"; ) else ( echo "FALSE"; ) echo "
" $value02 = FALSE; if(filter_var($value02,FILTER_VALIDATE_BOOLEAN)) ( echo "TRUE"; ) else ( echo "FALSE"; )
FILTER_VALIDATE_EMAIL: Kontrollerar om den skickade informationen är en giltig e-postadress vad gäller strukturen. Den kontrollerar inte om denna adress faktiskt finns, utan endast adressens giltighet, d.v.s. riktigheten av dess struktur. Skriptet nedan kommer att mata ut TRUE för variabelexemplet värde01 och FALSE för variabelexemplet värde02(eftersom den obligatoriska delen med @-tecknet saknas):
$value01 = " [e-postskyddad]"; if(filter_var($value01,FILTER_VALIDATE_EMAIL)) ( echo "TRUE"; ) else ( echo "FALSE"; ) echo "
" $value02 = "nettuts"; if(filter_var($value02,FILTER_VALIDATE_EMAIL)) ( echo "TRUE"; ) else ( echo "FALSE"; )
FILTER_VALIDATE_FLOAT: Kontrollerar om det godkända värdet är ett flyttal. Skriptet nedan kommer att mata ut TRUE för variabelexemplet värde01 och FALSE för variabelexemplet värde02(eftersom split "," är inte tillåtet i flöten):
$value01 = "1.234"; if(filter_var($value01,FILTER_VALIDATE_FLOAT)) ( echo "TRUE"; ) else ( echo "FALSE"; ) echo "
" $value02 = "1,234"; if(filter_var($value02,FILTER_VALIDATE_FLOAT)) (eko "TRUE"; ) else (eko "FALSE";)
FILTER_VALIDATE_INT: Kontrollerar om det godkända värdet är ett heltal. Skriptet nedan kommer att mata ut TRUE för variabelexemplet värde01 och FALSE för variabelexemplet värde02(decimaltal är inte heltal):
$value01 = "123456"; if(filter_var($value01,FILTER_VALIDATE_INT)) ( echo "TRUE"; ) else ( echo "FALSE"; ) echo "
" $value02 = "123.456"; if(filter_var($value02,FILTER_VALIDATE_INT)) (eko "TRUE"; ) else (eko "FALSE";)
FILTER_VALIDATE_IP: Kontrollerar om det godkända värdet är en giltig IP-adress. Den kontrollerar inte om det finns ett svar från denna adress, utan bara att det skickade värdet, genom sin struktur, är en IP-adress. Skriptet nedan kommer att mata ut TRUE för variabelexemplet värde01 och FALSE för variabelexemplet värde02:
$value01 = "192.168.0.1"; if(filter_var($value01,FILTER_VALIDATE_IP)) ( echo "TRUE"; ) else ( echo "FALSE"; ) echo "
" $value02 = "1.2.3.4.5.6.7.8.9"; if(filter_var($value02,FILTER_VALIDATE_IP)) ( echo "TRUE"; ) else ( echo "FALSE"; )
FILTER_VALIDATE_URL: Kontrollerar om det godkända värdet är en giltig URL. Det gör den inte, den kontrollerar inte att resursen är tillgänglig, bara att strukturen för URL:en följs. Skriptet nedan kommer att mata ut TRUE för variabelexemplet värde01 och FALSE för variabelexemplet värde02:
$value01 = "http://net.tutsplus.com"; if(filter_var($value01,FILTER_VALIDATE_URL)) ( echo "TRUE"; ) else ( echo "FALSE"; ) echo "
" $value02 = "nettuts"; if(filter_var($value02,FILTER_VALIDATE_URL)) ( echo "TRUE"; ) else ( echo "FALSE"; )
FILTER_SANITIZE_STRING: Som standard tar detta filter bort all felaktig eller otillåten information på en rad. Till exempel kommer det att ta bort alla HTML-taggar som eller"; echo filter_var($värde, FILTER_SANITIZE_STRING);
Detta skript tar bort taggarna och returnerar följande:
Alert("PROBLEM HÄR");
FILTER_SANITIZE_ENCODED: Många programmerare använder funktionen urlencode(). Detta filter utför i huvudsak samma funktioner. Till exempel kommer följande exempel att koda alla specialtecken och mellanslag i inmatningssträngen:
$value = "(!LANG:"; echo filter_var($value, FILTER_SANITIZE_ENCODED); !}
Skriptet kommer att koda skiljetecken, mellanslag, parenteser och returnerar följande:
%3Cscript%3Ealert%28%27TROUBLE%20HERE%27%29%3B%3C%2Fscript%3E
FILTER_SANITIZE_SPECIAL_CHARS: Detta standardfilter gör HTML-kodning av specialtecken som citattecken, et-tecken och parenteser. Eftersom demosidan inte explicit kan visa detta (eftersom de HTML-kodade specialtecknen kommer att tolkas av webbläsaren och visas), kan du se detta om du tittar på källkoden:
$value = "(!LANG:"; echo filter_var($value, FILTER_SANITIZE_SPECIAL_CHARS); !}
Specialtecken kommer att konverteras till sina HTML-enheter:
FILTER_SANITIZE_EMAIL: Detta filter gör precis vad var och en av dem trodde. Den tar bort tecken från adressen som inte ska finnas i adressen (runda och hakparenteser, kolon, etc.) Låt oss säga att du av misstag lagt till hakparenteser runt en bokstav till din adress (fråga inte hur, sätt på fantasin :) )
$value = "(!LANG:t(e) [e-postskyddad]"; echo filter_var($värde, FILTER_SANITIZE_EMAIL);
Fästarna kommer att tas bort och du får din rena och vackra e-post vid utgången:
Detta är ett utmärkt filter att använda på e-postformulär, särskilt när det är ihopkopplat med FILTER_VALIDATE_EMAIL för att minska användarfel och förhindra XSS-attacker.
FILTER_SANITIZE_URL: Detta filter liknar det föregående. Den tar bort alla tecken som inte är tillåtna i URL:en. Låt oss till exempel säga att adressen av misstag innehåller ett "®"-tecken. Återigen, hur han kom dit är ett fullständigt mysterium.
$value = "(!LANG:http://net.tuts®plus.com"; echo filter_var($value, FILTER_SANITIZE_URL); !}
Därför tar vi bort det onödiga "®"-tecknet och får en normal adress:
http://net.tutsplus.com
FILTER_SANITIZE_NUMBER_INT: Det här filtret liknar FILTER_VALIDATE_INT, men istället för att bara kontrollera om ett tal är ett heltal, tar det också bort allt som inte är ett heltal. Bra grej, speciellt mot irriterande spambots och bedragare som försöker lägga in något nonsens i fältet:
$value01 = "123abc456def"; echo filter_var($värde01, FILTER_SANITIZE_NUMBER_INT); eko"
"; $value02 = "1.2.3.4.5.6.7.8.9"; echo filter_var($value02, FILTER_SANITIZE_NUMBER_INT);
123456 123456789
FILTER_SANITIZE_NUMBER_FLOAT: Liknar FILTER_VALIDATE_INT. På samma sätt låter det dig uppnå en liknande effekt:
$value01 = "123abc456def"; echo filter_var($värde01, FILTER_SANITIZE_NUMBER_FLOAT); eko"
"; $value02 = "1.2.3.4.5.6.7.8.9"; echo filter_var($value02, FILTER_SANITIZE_NUMBER_FLOAT);
Båda uppsättningarna tecken konverteras och resultatet är följande bild:
123456 123456789
$value = "1.23"; echo filter_var($värde, FILTER_SANITIZE_NUMBER_FLOAT);
Punkten kommer att tas bort och värdet returneras:
En av huvudorsakerna till att filtren FILTER_SANITIZE_NUMBER_FLOAT och FILTER_SANITIZE_INT är åtskilda är möjligheten att använda den speciella flaggan FILTER_FLAG_ALLOW_FRACTION, som kommer som den tredje parametern som skickas till funktionen filter_var:
$value = "1.23"; echo filter_var($värde, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
Alternativ, flaggor och kontrollarrayer - Mine Gott!
Flaggan som användes i det föregående exemplet är bara ett sätt att få mer finkornig kontroll över vilka typer av data som ska rensas upp, definitioner av avgränsare, hur arrayer behandlas av filter och mer. Du kan lära dig mer om flaggorna och funktioner som används i samband med applicering av filter Se PHP-manualen för Filter - php.net/manual/en/book.filter.php .
Andra metoder för rengöring av information med PHP
Vi kommer nu att titta på några viktiga datarensningstekniker för att förhindra en attack på din applikation. De är särskilt relevanta för de applikationer som fortfarande fungerar på PHP4, som de dök upp med sin release.
htmlspecialchars: denna PHP-funktion kommer att konvertera 5 specialtecken till motsvarande HTML-entiteter.
Omvandlingen är föremål för:
& (ampersand)
" (dubbla citattecken) när flaggan ENT_NOQUOTES inte är inställd
' (enkla citattecken) endast när flaggan ENT_QUOTES är inställd
< (меньше, чем)
> (större än)
Denna funktion används på samma sätt som alla andra i PHP:
echo htmlspecialchars("$string");
htmlentities: Som en funktion htmlspecialchars denna funktion konverterar specialtecken till deras HTML-enheter. Den enda skillnaden är att i det här fallet konverteras alla specialtecken som kan konverteras. Detta är en ganska vanlig metod för att fördunkla e-postadresser från skräppostrobotar, eftersom inte alla är konfigurerade för att läsa html-enheter:
echo htmlentities("$string");
mysql_real_escape_string: Detta är en MySQL-funktion som hjälper till att skydda mot SQL-injektionsattacker. Det anses vara god praxis (och faktiskt en nödvändighet) att skicka all information som skickas till SQL-frågan genom denna funktion. Den undkommer alla farliga specialtecken som kan orsaka problem och orsaka lilla Bobby Tables kommer att förstöra en annan tabell i skolans databas.
$query = "SELECT * FROM table WHERE value="(!LANG:.mysql_real_escape_string("$string")." LIMIT 1,1"; $runQuery = mysql_query($query); !}
Anpassade funktioner
För många är det kanske inte tillräckligt med inbyggda funktioner och filter. Det kan ofta krävas strängare och snävare validering eller rening. För att uppnå önskat resultat skriver många funktioner för datavalidering själva. Ett exempel skulle vara att söka i databasen efter värden av en viss typ, så här:
Funktion checkZipCode($value) ($zipcheck = "VÄLJ ANTAL(*) FRÅN `databas`.`zipcodes` WHERE value="".filter_var(mysql_real_escape_string($value),FILTER_SANITIZE_NUMBER_INT)."""; $count = mysql_query( $zipcheck); if($count==1) (retur TRUE; ) else (retur FALSE; ) )
Andra användardefinierade funktioner kanske inte är direkt relaterade till databasen, utan förbereder snarare information innan den infogas i databasen:
Funktion cleanString($string) ( $detagged = strip_tags($string); if(get_magic_quotes_gpc()) ( $stripped = stripslashes($detagged); $escaped = mysql_real_escape_string($stripped); ) else ( $escaped = mysql_real_escape_escape_string avtaggad); ) returnera $escaped; )
Möjligheterna är nästan oändliga, speciellt när man använder reguljära uttryck. Men i de flesta fall kan användningen av filter redan lösa de nödvändiga uppgifterna.
Gillade materialet och vill tacka?
Dela bara med dina vänner och kollegor!