გაკვეთილები PHP-დან: ტიპების შეცვლა, გაქცევა, სპეციალური სიმბოლოები და ჰერედოკის სინტაქსი PHP-ში. PHP რეგულარული სკრინინგის გამონათქვამები - განხორციელების მახასიათებლები

გამარჯობა, ძვირფასო მკითხველებო, დღეს მსურს განვიხილო ეკრანის ჩანართების თემა php, javascript და sql, ინფორმაცია იმის შესახებ, თუ რა არის საჭირო, და ასევე ყავისფერი კონდახების თაიგულები, რომლებიც აჩვენებს ეკრანის Nuvannya-ს საჭიროებას.

რა არის თათების ეკრანი?

იმისათვის, რომ ეს მკაფიო გაგება მივცეთ, ჯერ მოვიყვან გაოგნებული რიგის პატარა კონდახს.

პრაქტიკაში, ვიკორისტების ნებისმიერი სახის პროგრამას აქვს განსაცვიფრებელი ჩვეულებრივი ცვლილების შეურაცხმყოფელი პრინციპი:
var text = "ცხოვრების კომპანიის ბლოგი";
ყველაფერი, რაც თათებს შორის ჯდება, თარჯიმანი ესმის, როგორც რიგი.

თუ ჩვენ გვჭირდება ტექსტის გადაცემა რანგის და ფაილში, შევეცდებით ვიმუშაოთ ასე:
var text = "ბლოგის სახელი: "ცხოვრება"";
მაშინ შედეგი იქნება, რომ ერთი რიგის ნაცვლად, თარჯიმანი დაამატებს ორს:

"ჩემი ბლოგის სახელი:"
" "
და მათ შორის არის უცნობი ოპერატორი - სიცოცხლე.

ამის თავიდან ასაცილებლად, საჭიროა თათების ეკრანი. ჯავასკრიპტში, მაგალითად, ასე გამოიყურება:
var text = "ბლოგის სახელი: \"life\"";
ამ პრაქტიკული კონდახისთვის შეგიძლიათ განსაკუთრებული გაგება მისცეთ თათების ეკრანს.

თათების სკრინინგი არის პროცესი, რომელიც ხდება სკრიპტის მუშაობის დროს რეგულარული ცვლილების შედეგად. ეს საშუალებას აძლევს თათებს ზედიზედ მოთავსდეს. პირადში, ასევე შეგიძლიათ დაამატოთ უფრო ფართო ეკრანის მეთოდი, ანუ უკანა ხაზის დადება შიდა ფეხების წინ.

Php ფეხის ეკრანი

php-ში შეგიძლიათ ჩანართების ეკრანიზაცია რამდენიმე გზით, რომელთაგან პირველი მსგავსია ზემოთ.

"როგორ ფიქრობ?" – ჰკითხა კატერინა ივანივნამ. "არაფერი, მე მკვდარი ვარ", - ვიდპოვი სტარცევი (ჩეხოვი)

მათ გვერდზე გამოსატანად PHP უნდა მუშაობდეს ერთ-ერთი ხელმისაწვდომი გზით.

უკანა ეკრანი:
echo "\"როგორ ხედავ? \" - ჰკითხა კატერინა ივანივნამ. \"არაფერი, მკვდარი ვარ\" - ვიდპოვ სტარცევი (ჩეხოვი)";
ეკრანის აბაზანა ერთი კლანჭებით
echo ""როგორ ხარ?" - ჰკითხა კატერინა ივანივნამ. "არაფერი, მოდი, გავაფუჭოთ", - ვიდპოვ სტარცევი (ჩეხოვი)";
ზედიზედ, თუ ზედიზედ არის შიდა ფეხები, ბევრად უფრო მარტივია ერთი ფეხების შექმნა შუაში მწკრივით. ან, სხვათა შორის, მნიშვნელოვანია აღინიშნოს, რომ ტექსტს სხვა კლანჭები აქვს.

შეიძლება დაგჭირდეთ PHP-ში ჩანართების ეკრანიზაცია

მონაცემთა ბაზასთან მუშაობისას ხშირად საჭიროა მბრუნავი კონდახის გამოყენება ნაჩვენები რიგებით, ფეხების ეკრანით და სხვა სპეციალისტებით.

მონაცემთა ბაზასთან მუშაობისას სხვადასხვა პრობლემების თავიდან ასაცილებლად, ცხრილიდან მონაცემების შენახვამდე შეგიძლიათ გამოიყენოთ addslashes ფუნქცია
$str = "შენი სახელია O"reilly?"; // print: არის შენი სახელი O\"reilly? echo addslashes($str);
ან mysql_real_escape_string

ეს ფუნქციები სტანდარტულია php-ში და მწკრივების ეკრანის სპეციალურ სიმბოლოებში. თუ თქვენ აპირებთ გამარჯვებას, დაწექით კონკრეტული ბრძანებების ქვეშ. მაგალითად, addslashes უფრო შეეფერება სერიულ მწკრივს მონაცემთა ბაზაში ჩაწერისას, ხოლო mysql_real_escape_string მომხმარებლის ყველა მონაცემისთვის, რომელიც მოვიდა საიტის ფორმიდან.

მცირე ვებ დანამატებისთვის, თქვენ არ შეგიძლიათ ხელით აირჩიოთ addslashes ან mysql_real_escape_string, თუ გსურთ ჩართოთ „Magic Paws“ – magic_quotes_gpc
if (!get_magic_quotes_gpc()) ( ini_set('magic_quotes_gpc', 'on'); )
ყველაზე ხშირად, ჯადოსნური თათები ჩართულია სერვერზე დაბანის შემდეგ, ასე რომ თქვენ შეგიძლიათ ამოიცნოთ დაფიქსირებული ინფორმაცია, როდესაც ფუნქცია გამორთულია.
echo phpinfo();
javascript თათის ეკრანი

ძალიან ხშირია, განსაკუთრებით JavaScript-ში, რიგებში მუშაობა იმისათვის HTML მარკირება.

ჯავასკრიპტში ჩანართების სკრინინგი ხდება ანალოგიურად, ან უკანა ხაზით ან სლეშით. სხვადასხვა ტიპისთათები
კონდახი უკანა დახრილობით:
var html = "

ბლოკირება მწვანე ტექსტით
";
კონდახი შიდა ფეხებით:
var html = "
ბლოკირება მწვანე ტექსტით
";
თუ HTML მარკირებით მწკრივი ძალიან გრძელია და გადატანილი მწკრივი ჩანს, კვლავ საჭიროა ეკრანი, რომელშიც ფორმა აღარ არის თათები, არამედ გადატანილი მწკრივის სიმბოლო.
var html = "
\დაბლოკვა მწვანე ტექსტით\
";
თუ ამ აპლიკაციაში არ იყენებთ უკანა ხაზს მწკრივის გადაადგილებამდე, მაშინ სკრიპტი არ იმუშავებს.

ამის გაკეთება იშვიათია, წინააღმდეგ შემთხვევაში შეიძლება დაგჭირდეთ HTML მარკირების გადატანა სერიულ სტრიქონზე JSON ფორმატში. თუ სიმბოლოებს არასწორად განათავსებთ და დეფისით ჩაწერთ, JSON ფორმატი დაირღვევა.

ამ პრობლემების თავიდან ასაცილებლად, თქვენ უნდა გაუშვათ ტექსტი გადაცემული რიგებიდან JSON.stringify() ფუნქციის მეშვეობით.
text = JSON.stringify(ტექსტი);
JSON.stringify() – ხელმისაწვდომია მხოლოდ jquery ბიბლიოთეკის დაკავშირების შემდეგ.

Sql ჩანართის ეკრანი

sql-ში ჩანართების სკრინინგს php-სა და js-ში ჩვენ მიერ შემუშავებული მეთოდების - backslash და შიდა ჩანართების გარდა, სხვა გამოსავალი აქვს.
აირჩიეთ "თქვენი სახელი Oა" "რეილი?";
SQL-ში ჩანართების ეკრანიზაციისთვის საჭიროა მათი დუბლიკატი.

ჩაანაცვლე "ჩაწერა"
ჩაანაცვლე "ჩაწერა"

დაალაგეთ თათების ეკრანი

თქვენ შეგიძლიათ შეცვალოთ ჩანართების ეკრანი PHP-ში სტანდარტული ფუნქციის stripslashes();

JavaScript-ს არ აქვს სტრიპსლეშების ანალოგი, მაგრამ უფრო ადრე შეგვიძლია გამოვიყენოთ ჩვეულებრივი ვირუსი, რომელიც დაგვეხმარება javascript-ში სქრინსეივერების მიღებაში.
str.replace(/\0/g, "0").replace(/\\(.)/g, "$1")
ამ სტატიაში შევეცადე გამეშუქებინა სკრინინგის ჩანართების თემა php, js, mysql და მეჩვენებინა, რომელ სიტუაციებშია საჭირო სკრინინგის შეწყვეტა. იმედი მაქვს, რომ სტატია ყავისფერი აღმოჩნდა.

Შენიშვნა:გააქტიურებულია საიტის ადაპტაციური ვერსია, რომელიც ავტომატურად ადაპტირდება თქვენი ბრაუზერის მცირე ზომასთან და აწვდის დეტალებს საიტს კითხვის გასაადვილებლად. კარგად დავაკვირდები!

მოხარული ვარ, რომ მივესალმო ყველას ბლოგზე, რომელიც ეძღვნება ვებსაიტის წარმატებული შექმნისა და გაშვების ყველა სირთულეს – საიტი on! დღევანდელ გაკვეთილზე PHP-ზე განვიხილავთ ისეთ თემებს, როგორიცაა ცვლილებების ტიპები, გაქცევა, სპეციალური სიმბოლოები და heredoc სინტაქსი PHP-ში.

ცვლილებების სახეები

PHP ყველაფერს აკეთებს განსხვავებული ტიპებიცვალებადი პირობა

4 სკალარული ტიპი:

  • ლოგიკური (ლოგიკური ან ლოგიკური ტიპი)
  • მთელი რიცხვი (მთლიანი რიცხვები)
  • float (რიცხვი მცურავი წერტილით)
  • სტრიქონი (რიგი)

2 შერეული ტიპი:

  • მასივი
  • ობიექტი

2 სპეციალური ტიპი:

  • რესურსი

უპირველეს ყოვლისა, გადადით ანგარიშში კანის ტიპების სანახავად და გაარკვიეთ, რომ PHP არ არის მკაცრად აკრეფილი ენა, არამედ დინამიურად აკრეფილი ენა. ეს ნიშნავს, რომ ჩვენ უნდა განვსაზღვროთ კანის ცვლილებების ტიპი დროზე ადრე (თუ ეს მოხდება). PHP თავად გაარკვევს, რა ტიპის ცვლილებაა ეს, იმისდა მიხედვით, თუ რას ჩავდებთ მასში. ეს იმასაც ნიშნავს, რომ მკაცრი ტიპიზაციის კონტექსტში შეგვიძლია რიცხვი (მთლიანი) ჩავანაცვლოთ მწკრივით (სტრიქონით) და თვითკმაყოფილების გარეშე! ეს არის PHP-ის ერთ-ერთი მახასიათებელი, რომელიც კარგად შეეფერება ადამიანებს (ახალბედებს), რომლებიც ადრე ძალიან პრაქტიკულები იყვნენ პროგრამირებაში. როგორც წესი, ყველაფერი მინუსში მთავრდება და არა პლიუსში.

ლოგიკური- უმარტივესი ტიპი. შეგიძლიათ მიიღოთ კიდევ 2 მნიშვნელობა: მართალიაან კიდევ ყალბი(მართალია თუ არასწორი), რეგისტრაციიდან დამოუკიდებელი სუნავს (შეგიძლიათ დაწეროთ TRUE, trUe და ა.შ.). კონდახი:

echo $name, "
", $name2; ?>

შედეგი:

მოგეხსენებათ, ბრაუზერს არ ესმის ლოგიკური ტიპი, ის ადმინისტრირებულია PHP-ით, ასე რომ, როდესაც ცდილობთ, აჩვენეთ მართალიაან კიდევ ყალბიშეიყვანეთ ნომერი გვერდზე 1 ან კიდევ ცარიელი რიგი.

ლოგიკურ ტიპზე გადაყვანისას, ეს მნიშვნელობები განიხილება როგორც FALSE:

  • მთელი 0 (ნული)
  • მცურავი წერტილი ნომერი 0.0 (ნულოვანი)
  • ცარიელი მწკრივი და მწკრივი "0" ან "0"
  • ცარიელი მასივი
  • სპეციალური ტიპი NULL (მათ შორის, დეინსტალირებული ცვლილებები)

ყველა სხვა მნიშვნელობა განიხილება როგორც TRUE.

// მეათე ნომერი$int = -5; // ეს არის ნომერი$int = 05; // ყველაზე დიდი რიცხვი$int = 0x1A; // ნომერი თექვსმეტი
//რიცხვები მცურავი წერტილით (მეტყველება):$flt = 1.4; $flt = 1.2e3; $flt = 7E-10; ?>

თუმცა, PHP-ში ყველაზე გავრცელებული ტიპი შეიძლება გამოიყენოს თავისთავად რიგები (სტრიქონი). სტრიქონები შეიძლება დაიწეროს როგორც ცალ, ისე დაკეცილ ფეხებში, მაგრამ მე არ გირჩევთ სტრიქონების ჩაწერას დაკეცილი ფეხებით, ასე რომ თქვენ თვითონ აბნევთ PHP თარჯიმანს, რათა თქვენი სტრიქონი „გააანალიზოს“ სხვაში ცვლილებების არსებობისთვის, თუმცა ქვემოთ. არ აქვს მნიშვნელობა გაზარდეთ თქვენი სამუშაო. თუ გსურთ ცვლილებები შეიტანოთ თქვენს მწკრივში, ამის გაკეთება შეგიძლიათ ერთი ფეხის დახმარებით + (ორი ან მეტი მწკრივის ერთში წებოვნება). რატომ მაშინ? ორმაგი ფეხებიგაქვთ თქვენი საჭიროებები? მაგალითად, თუ გვინდა გამოვყოთ სპეციალური სიმბოლოები (\n, \r და ა.შ.), ცოტა მეტი მათ შესახებ მოგვიანებით.

ასევე varto zazchiti, scho vikoristannya ერთი ფეხები + შეერთებაკოდის წაკითხვა მარტივია, ასე რომ თქვენ არ გჭირდებათ ყველაფერი განურჩევლად თქვენს კლანჭებში ჩადოთ. თუ თავს არ გაუსწრებ, ყველაფერს თავად გაიგებ და გაიგებ:

$ნომერი = 2; //მთელი რიცხვი $hand1 = "ხელების რაოდენობა ადამიანს აქვს:"; //string + ხმამაღლა გადასვლა ცვლილებების აღმოსაჩენად$hand2 = "ხელების რაოდენობა ადამიანს აქვს:"; //სტრიქონი
//დაამატე $number მწკრივებში:$hand1 = "ხელების რაოდენობა ადამიანს აქვს: $number და ტექსტი..."; // NOT რეკომენდაციას $hand2 = "ადამიანის ხელების ძალა: " . $ნომერი. "და მეტი ტექსტი..."; // Მე გირჩევ!
echo $hand1, "
", $hand2; ?>

შედეგი:


შეერთებაზე ვისაუბრებთ შემდეგ სტატიაში.

  • მას მიენიჭა მუდმივი NULL.
  • მას ასევე მიენიჭა გარკვეული მნიშვნელობა.
  • ის იქ ნახეს დახმარებისთვის გაუქმება ()

Vivcheniya ტიპის ცვლილება, რომელიც დაიკარგა, ამ ეტაპზე ყურადღების გარეშე იქნებოდა. ჩვენ უფრო დეტალურად განვიხილავთ სხვა ტიპებს და უფრო ღრმად ჩავუღრმავდებით PHP-ს.

სკრინინგი PHP-ში

მაგრამ ჩვენს მწკრივში არ გვინდა ცვალებადი მნიშვნელობის ჩვენება, მაგრამ გვინდა დავწეროთ სიტყვასიტყვით $number? მოდით შევხედოთ ორ ვარიანტს:

$hand1 = "ხელების რაოდენობა ადამიანს აქვს: \$ნომერი და ტექსტი..."; // არ გირჩევთ $hand2 = "ადამიანის ხელების რაოდენობა: $number და მეტი ტექსტი..."; // Მე გირჩევ!
echo $hand1, "
", $hand2; ?>

შედეგი:


პირველ ვერსიაში (დასაკეცი ფეხებით) ჩვენ გავიმარჯვეთ, რომ დავიცვათ დოლარის სპეციალური სიმბოლო, რის გამოც ამ სპეციალურ სიმბოლოს აღარ აქვს თავისი მნიშვნელობა. სპეციალური დანიშნულება(ცვალებადი აღნიშვნები) და გარდაიქმნება დოლარის თავდაპირველ ნიშანში.

სხვა ვარიანტისთვის (ერთ ფეხით), როგორც უკვე იცით, PHP თარჯიმანი ვერ ახერხებს მწკრივში ცვლილებების გარკვევას, ამიტომ სკრინინგის საჭიროება არ იყო.

სპეციალური სიმბოლოები PHP-ში

განსაკუთრებით ბლოგის მკითხველებისთვის საიტი on! მე მოვამზადე სპეციალური სიმბოლოების მცირე სია ჩემი PHP პროგრამისთვის:

  • \nახალი რიგი
  • ვაგონის როტაცია
  • ჰორიზონტალური ცხრილი
  • \\ ბრინჯის ლენტები (მბრუნავი დახრილი)
  • \$ დოლარის ნიშანი
  • ორმაგი ფეხი

აპლიკაციაში სპეციალური სიმბოლოების ფუნქციონირებიდან გამომდინარე \n არის სპეციალური სიმბოლო, რომელიც იწვევს ახალ მწკრივზე გადასვლას (როგორც Enter), პრო ბრაუზერებს არ ესმით (და არ არიან დამნაშავე) და უგულებელყოფენ მას, მაგრამ შედეგს მისი მოქმედების ნახვა შეგიძლიათ გამომავალი კოდიგვერდები:

ექო $წესს, "
", $rule2; ?>

შედეგი:


გამომავალი კოდი (Ctrl+U):


ვინაიდან სპეციალური სიმბოლო არ არის ნაჩვენები ბრაუზერებისთვის, რა აზრი აქვს?

უპირველეს ყოვლისა, სპეციალური სიმბოლოების და მალსახმობების დახმარებით, შეგიძლიათ ხელით დააფორმატოთ კოდი გვერდზე (როგორც აპლიკაციაში).

სხვა გზით,\n შეგიძლიათ გამოიყენოთ იგი სხვაგვარად, მაგალითად, ოპერაციების დროს, ჩაწერეთ ფაილში გადაცემის დასასრულებლად (Enter) და გააგრძელეთ ჩაწერა ახალ სტრიქონში.

ამ ფორმატის ალტერნატივა არის.

Heredoc სინტაქსი PHP-ში

შედეგი:


გამომავალი კოდი (Ctrl+U):


შედეგი თავისთავად საუბრობს, ახლა მოდით გაერკვნენ, თუ როგორ არის ყველაფერი წესრიგში:

  • რიგი იწყება სამი თაღით<<<, далее следует имя идентификатора.
  • იდენტიფიკატორის (ეტიკეტის) მწკრივი, რომელიც იხსნება, არ საჭიროებს სხვა სიმბოლოებით ჩანაცვლებას, მათ შორის ინტერვალით. სხვა სიტყვებით რომ ვთქვათ, ჩვენი ნიშნის შემდეგ დაუყოვნებლივ უნდა დავაყენოთ Enter, ინტერვალის გარეშე, უბრალოდ დააჭირეთ Enter!
  • იდენტიფიკატორი, რომელიც იხურება, უნდა დაიწყოს რიგის პირველი პოზიციიდან. მის წინაშე არ არის დანაშაული გაწმენდისა თუ სხვა სიმბოლოების გამო!
  • მწკრივში დახურვის იდენტიფიკატორთან (ჩვენს ტიპში სიტყვა METKA) არ მოათავსოთ სხვა სიმბოლოები (მათ შორის სივრცეები) გარდა წერტილისა მის შემდეგ.

გმადლობთ პატივისცემისთვის! შემდეგ სტატიებში ვისაუბრებთ შეერთების ცნებაზე, რომელიც დღეს არაერთხელ გაისმის. შემდეგი, ჩვენ ვისაუბრებთ რიგებზე და ასევე გადავხედავ რამდენიმე ძირითად ფუნქციას. შუადღე მშვიდობისა ყველას და მალე გნახავთ!


დასაწყისისთვის, ცოტა რამ მათ შესახებ, ვინც გამოტოვა საჭიროებები და სურვილები.
ვინაიდან ჩვენ ვითხოვთ რაიმე სახის მონაცემს, მაშინ SQL ბრძანებებიდან მონაცემების ამოსაღებად, ისინი უნდა იყოს ხელთ.
მაგალითად, როგორ დავწეროთ
აირჩიეთ * ცხრილიდან WHERE სახელი = ბილ
მაშინ ბაზა თვლის, რომ ბილი სხვა სფეროს სახელი არ არის, თუ არ იცი, შეცდომას დაინახავ. მონაცემები (სახელი Bill-ის ამ ველში) უნდა განთავსდეს ჩანართებში - შემდეგ მონაცემთა ბაზა ამოიცნობს რიგს, რომელიც უნდა მიენიჭოს სახელის ველს:
აირჩიეთ * ცხრილიდან WHERE name = "Bill"
თუმცა, თვით მონაცემებშიც კი, თათები შეიძლება ვიწრო გახდეს. Მაგალითად,
აირჩიეთ * ცხრილიდან WHERE name = "D"Artagnan"
აქ მონაცემთა ბაზა აჩვენებს, რომ "D" არის მონაცემები, ხოლო არტანიანი არის გუნდი, რომელიც მან არ იცის და ასევე შეიძლება იყოს წყალობა. აქედან გამომდინარე, აუცილებელია ყველა მონაცემის მიკვლევა, რათა ავხსნათ იმის საფუძველი, რომ მათში გამოსახული სიმბოლოები (და სხვა სპეციალური სიმბოლოები) დაკავშირებულია მონაცემებთან.
შედეგად, ჩვენ უარვყოფთ სწორ ჩანაწერს, რომელიც არ ჟღერს:
აირჩიეთ * ცხრილიდან WHERE name = "D"Artagnan"

ამ გზით, ჩვენ მივხვდით, რომ მონაცემების ჩანაცვლებისას უნდა დაიცვან ორი წესი:
- ყველა მონაცემი, რომელიც ჩასმულია ჩანაწერში, უნდა განთავსდეს კლანჭებში (ერთჯერადი ან ორმაგი, ან უფრო მარტივად და უფრო ხშირად ერთჯერადი).
- ყველა რანგის და ფაილურ ერთეულს აქვს სპეციალური სიმბოლოები, რომლებიც გაურკვეველია ხაზებით.

ეს სპეციალურად ნიშნავს: დამატებები არ გადადის მონაცემთა ბაზაში. დალევისას სუნი აღარ არის საჭირო. როდესაც ისინი ბაზაზე მოხვდებიან, სიტყვები იშლება. როგორც ჩანს, უფრო ფართო ჭრილი ნიშნავს, რომ ზოლები იყინება, როდესაც მონაცემები ამოღებულია ბაზიდან.

სინამდვილეში, ყველაფერი, რაც ზემოთ იყო ნათქვამი, ეხება მწკრივის ტიპისა და თარიღების მონაცემებს. ნომრების ჩასმა შესაძლებელია უყოყმანოდ ან თითებით. თუ ასე მორცხვი ხარ, მაშინ ობოვიაზკოვო!აიძულეთ მონაცემები საჭირო ტიპზე, სანამ არ ჩასვამთ მას შეკითხვაში, მაგალითად:
$id = intval($id);
თუმცა, სიმარტივისთვის (და საიმედოობისთვის) შეგიძლიათ იმუშაოთ რიცხვებთან, ისევე როგორც სტრიქონებთან (mysql მაინც გადააქცევს მათ საჭირო ტიპად). ცხადია, ჩვენ გვექნება გარკვეული სახის მონაცემები შეკვეთაში ჩასართავად, მოყვება და თათებში მოთავსება.

ასევე არსებობს კიდევ ერთი წესი - თქვენ არ გჭირდებათ სიფრთხილე, მაგრამ თქვენ უნდა დაიცვას ეს თანმიმდევრობა ისე, რომ ზიანი არ გამოჩნდეს:
ველების სახელები და კვალის ცხრილი მოთავსებულია ერთ ჩანართზე - "`" (ამ სიმბოლოს გასაღები გვხვდება სტანდარტულ კლავიატურაზე "1" კლავიშის ქვეშ) ველების სახელებიც კი შეიძლება ემთხვეოდეს mysql საკვანძო სიტყვებს. , ან სხვაგვარად ჩვენ ვიკორისტუმოთ ტურპს, მაშინ MySQL თვლის, რომ ყველაფერი სწორია:
SELECT * FROM `table` WHERE `date` = "2006-04-04"
შემდეგი, გააცალკევეთ ფეხები და შეურიეთ ერთი მეორეს. ასევე მნიშვნელოვანია გვახსოვდეს, რომ კარიბჭის ჩანართები არ არის დამოწმებული.

ჩვენ ვისწავლეთ მონაცემების სწორად წარმოდგენა.
ALE! მოთხოვნების დინამიური დაწყობა არ ამოიწურება მონაცემთა ჩანაცვლებით. ხშირად გვიწევს SQL ბრძანებების და ველების სახელების შეყვანა. და აქ ჩვენ ახლა გადავდივართ უსაფრთხოების პუნქტებზე:

SQL Injection არის ჰაკერული თავდასხმის მეთოდი, როდესაც სკრიპტზე გადაცემული მონაცემები მოდიფიცირებულია ისე, რომ სკრიპტში ჩამოყალიბებული მონაცემები იწყებს დასრულებას სხვა რამეში, რისთვისაც იყო განკუთვნილი.
ასეთი თავდასხმებისგან დაცვის წესები შეიძლება დაიყოს ორ პუნქტად:
1. მონაცემებთან მუშაობა.
2. ნამუშევარი იკვებება კერამიკული ელემენტებით.

პირველ ეტაპზე ჩვენ შევხედეთ სანახაობას. შეიძლება ითქვას, რომ ეს არ არის, ის ძლიერია, ეს ზახისტურია. წესების დამატება, უპირველეს ყოვლისა, ნაკარნახევია SQL SYNTAX-ით. და როგორც გვერდითი ეფექტი ასევე არის დაცვა ბოროტებისგან.

სხვა პუნქტი გაცილებით რთულია, რადგან ის არ უჭერს მხარს იმავე უნივერსალურ წესს, როგორც მონაცემებს - კარიბჭე ვერ მოიპარავს ველის სახელს, თუ ის შეცვლილია ჰაკერის მიერ. შეუძლებელია ცხრილების სახელების, SQL განცხადებების, LIMIT ბრძანების პარამეტრების და სხვა განცხადებების მოპარვა.
აქედან გამომდინარე, ძირითადი წესი მიწოდებაში ძირითადი ელემენტების ჩანაცვლებისას შემდეგია:
თუ თქვენ გჭირდებათ დინამიურად ჩასვათ SQL განცხადებები ან ველების სახელები, მონაცემთა ბაზის სახელები ან ცხრილების სახელები მოთხოვნაში, არასოდეს არ უნდა ჩასვათ ისინი პირდაპირ მოთხოვნაში.
ასეთი დამატებების ყველა ვარიანტი წინასწარ იქნება დარეგისტრირებული თქვენს სკრიპტში და შეირჩევა მომხმარებლის შემცვლელად.
მაგალითად, თუ თქვენ გჭირდებათ ოპერატორის შეკვეთაზე ველის სახელის გადაცემა, თქვენ ყოველთვის ვერ წარმოაჩენთ მას პირდაპირ. თქვენ დაუყოვნებლივ უნდა შეამოწმოთ იგი. მაგალითად, შექმენით სწორი მნიშვნელობების მასივი და ჩადეთ მოთხოვნაში მხოლოდ ამ მასივის პარამეტრები:
$orders =array("სახელი" , "ფასი" , "რაოდენობა" );
$key = მასივის_ძიება ($_GET["დახარისხება"], $orders));
$orderby = $ბრძანებები [$key];
$query = "SELECT * FROM `table` ORDER BY $orderby";
აღმოვაჩენთ, რომ ოფციების აღწერილობის უკან მასივში შეყვანილია სწორი სიტყვა და, როგორც ვიცით, არჩეულია მასივის შესაბამისი ელემენტი. თუ ის ვერ მოიძებნა, მასივის პირველი ელემენტი შეგროვდება.
ამგვარად, მოთხოვნილებები წარმოდგენილია არა კოდში შეყვანილი, არამედ სკრიპტში ჩაწერილით.
ასე რომ, თქვენ უბრალოდ უნდა გამოასწოროთ ის სხვა სიტუაციებში
მაგალითად, როდესაც WHERE განცხადება დინამიურად იქმნება:
if (! ცარიელი ($_GET [ "ფასი" ])) $where .= "price="" . mysql_real_escape_string ($_GET ["ფასი"]). """ ;
$query = "SELECT * FROM `table` WHERE $where";
მიჭირს პრობლემის ამოცნობა, როდესაც ცხრილების სახელები შეიძლება შევიდეს მოთხოვნაში დინამიურად, მაგრამ წინააღმდეგ შემთხვევაში, ასევე მჭირდება მხოლოდ სკრიპტში ჩაწერილი ნაკრების ჩასმა.
LIMIT ოპერატორის პარამეტრები შეიძლება გარდაიქმნას მთელ რიცხვად, დამატებითი არითმეტიკული ოპერაციების ან intval() ფუნქციის გამოყენებით.
არ იფიქროთ, რომ აქ კონდახის მითითებით, ამოიწურება მოთხოვნების დინამიური შემადგენლობის ყველა ვარიანტი. საჭიროა უბრალოდ პრინციპის გაგება და ყველა ასეთ სიტუაციაში მისი დამკვიდრება.

რობოტების მახასიათებლები LIKE ოპერატორით
აბსოლუტური ყველაზე ცუდი ხრიკი არის LIKE ოპერატორი.
უპირველეს ყოვლისა, ძირითადი ნაკერების გარდა, მათ, ვინც LIKE-ს წარუდგენს, უნდა დაამატოთ სიტყვები. თუ ცვლადში არის \ სიმბოლო, ის უნდა იყოს შეყვანილი და შემდეგ ჯერ მიჰყვება mysql_real_escape_string-ის მეშვეობით.
მაგალითად, თუ ჩვენ ვეძებთ რიგს
სიმბოლოს \ ჰქვია "backslash" და ჩვენ გვჭირდება ზუსტი გაქცევა, შემდეგ ჩვენ უბრალოდ ვაყენებთ mysql_real_escape_string და ვითხოვთ სტანდარტულ გამომავალს:
SELECT * FROM test WHERE ველი = "სიმბოლო \\ ჰქვია \"backslash\""თუ გვინდა ამ მწკრივის ჩანაცვლება LIKE-ით, მაშინ ჯერ უნდა შევცვალოთ წინ დახრილი ორით და შემდეგ დავაყენოთ mysql_real_escape_string. შედეგად თქვენ ნახავთ
SELECT * FROM ცხრილიდან, სადაც ველი LIKE "%symbol \\\ ეწოდება \"backslash\"%"
სხვაგვარად, მას შემდეგ, რაც ყურადღებას აქცევენ მათ, ვისაც სურს ფუნქცია, რომელიც ამატებს ხაზებს, ისინი არ ამატებენ მათ საძიებო მეტანიშვნებს % და _, რომლებიც გამოიყენება LIKE ოპერატორში. თუ თქვენ იყენებთ ამ ოპერატორს და არ გსურთ, რომ სიმბოლოები _ და % ნიღბებად გამოიყენონ, დაამატეთ დახრილები ხელით. შეგიძლიათ გუნდურად იმუშაოთ
$data = addCslashes($data, "%_"); პატივისცემა - ეს არ მატებს! ამ ფუნქციის სახელწოდება მითითებულია დამატებითი ასო "c".

გამოვიდეს ისე, რომ LIKE ოპერატორში გამარჯვებული ნებისმიერი შემცვლელი იყოს დამნაშავე.
უპირველეს ყოვლისა, შეცვალეთ ერთი ხაზი ორით, ამ კოდის გამოყენებით, მაგალითად:
$var = str_replace("\", "\\", $var); შემდეგ (შეგიძლიათ, ყველა სხვა მონაცემთან ერთად, რომელიც თან ახლავს ბრძანებას), უბრალოდ დააყენეთ:
$var = mysql_real_escape_string($var);და მერე, თუ გვინდა, რომ _ ეს% ზუსტად დავადასტუროთ საკუთარ თავს, ფრთხილად
$var = addCslashes ($var, "_%");
შედეგად, ჩვენ შეგვიძლია მხოლოდ წარმოვიდგინოთ, მაგალითად, ასეთი რიგი
\ სიმბოლოს ჰქვია "უკანა დახაზვა" და _ სიმბოლოს "ხაზგასმა"შემდეგ დამუშავების შემდეგ სასმელი შეიძლება ასე გამოიყურებოდეს:
"%სიმბოლოს ჰქვია \"უკანა დახაზვა\", ხოლო \_ სიმბოლოს \"ხაზგასმა\"ტობტო სლიში, რომელიც თავიდანვე მწკრივში იყო - გაოთხმაგდა. სხვა სიმბოლოებს აქვთ მშვიდი, როგორც ადრე. პლუს - ქვილთი არის სავარძლის სიმბოლო.

სლიშის შესახებ. როგორ გავაღვიძოთ ისინი
სლეში, ან უკუღმა, ინგლისური უკანა ხაზიდან - ბრინჯის უკანა ხაზი ("\"), როგორც ეს ქვეცნობიერად ჩნდება თქვენს საყვარელ ადამიანებში. თქვენ შეგიძლიათ დაამატოთ რამდენიმე სპეციალური სიმბოლო, მაგრამ მნიშვნელოვანია მათი მონიშვნა თათებით.
ეს მიიღწევა სპეციალური PHP დაყენების საშუალებით, რაც დამოკიდებულია იმაზე, თუ რა არის ჩართული ჰოსტინგზე. თეორიულად, ამ კორექტირებას შეუძლია გააუმჯობესოს მონაცემთა ბაზაში გაშვებული სკრიპტების უსაფრთხოება. სინამდვილეში, დახრილების ავტომატური დამატება ხშირად იწვევს დაბნეულობას და გაუგებრობას, როგორც რობოტიდან, ასევე მონაცემთა ბაზიდან.
ქვემოთ მოკლედ გავაანალიზებთ სამართალდარღვევებს და ხარვეზებს.

შტრიხების ავტომატური დამატება მითითებულია php.ini დირექტივებით, რომლებსაც აქვთ იდუმალი სახელი "მომხიბლავი თათები":
magic_quotes_gpc და magic_quotes_runtime თუ პირველი ვარიანტი ჩართულია, PHP ავტომატურად ამატებს ხაზებს კლიენტისგან მოსულ მონაცემებს - POST, GET მოთხოვნიდან და ქუქიებიდან (ასევე HTTP ავტორიზაციის საშუალებით მიღებულ შესვლასა და პაროლს).
როგორც მეგობარს, შტრიხები ემატება სკრიპტის შესრულების დროს ამოღებულ მონაცემებს - მაგალითად, მონაცემთა ბაზის ფაილიდან.

თუ თქვენ მუშაობთ მონაცემთა ბაზის გარეშე, ან თუ სწორად მუშაობთ მონაცემთა ბაზასთან (რაზეც ქვემოთ იქნება დაწერილი), თქვენ მხოლოდ მათ პატივს სცემთ და მათ ფულის დაზოგვა სჭირდებათ. ყველაზე მარტივი და სწორი გზაა PHP პარამეტრებში ავტომატური დამატებების ჩართვა.
ამის გაკეთება შეგიძლიათ php.ini-ში შესაბამისი დირექტივების შესწორებით, რადგან თქვენ გაქვთ წვდომა ახალზე, ან .htaccess ფაილის შექმნით საიტის საბოლოო დირექტორიაში და დაამატეთ იგი ახალ რიგებში.
php_flag magic_quotes_gpc 0
php_flag magic_quotes_runtime 0

თუ ამ გზით გადაატრიალებთ და არ გამოხვალთ, თქვენ მოგიწევთ დაწეროთ კოდი სხვადასხვა დონის დასაკეცი, რომ შეყვანილი მონაცემები გაასუფთავოთ. (ამასობაში თუ გსურთ დაწეროთ პროგრამა, რომ არ ჩამორჩეთ PHP-ის განვითარებას, მაშინ მაინც მოგიწევთ დაწეროთ. და ჩართოთ როგორც ბლოკი თქვენი სკრიპტების დასაწყისში).

სამუშაოს დასაწყებად საჭირო მონაცემები რაც შეიძლება მარტივია: ყველაფერი რაც უნდა გააკეთოთ არის ძირითადი სკრიპტის დაწერა
set_magic_quotes_runtime(0); ამათთვის, ვინც კორისტუვაჩად დაითხოვეს, ყველაფერი გაცილებით რთულია. ამ კოდისთვის ჩვენ გვჭირდება ორი ფუნქცია:

  • გთხოვთ გაითვალისწინოთ, რომ PHP-ის დამატების შემდეგ შეგიძლიათ გამოიყენოთ დამატებითი ფუნქცია get_magic_quotes_gpc.
  • ზოლებიანი ფუნქცია ამოღებულია.
    ცხადია, პირველის შემდეგ თქვენ უნდა შეამოწმოთ და თუ დაამატებთ PHP-ს, შემდეგ გაიარეთ ყველა შეყვანა და გაასუფთავეთ მეორის მიყოლებით.
    თუ ამას სწორად აკეთებთ, register_globals = off , მაშინ საკმარისია დააყენოთ stripslashes ყველა მასივს, რათა წაშალოთ მონაცემები, რომლებიც მოდის ბრაუზერიდან.
    მაგალითად, შეგიძლიათ შეიტანოთ შემდეგი კოდი საიტის ყველა სკრიპტში:
    ფუნქციის ზოლები (& $el) (
    if (is_array ($el))
    foreach ($el როგორც $k => $v)
    ზოლები ($el[$k]);
    else $el = ზოლები ($el);
    }
    თუ (get_magic_quotes_gpc()) (
    ზოლები ($_GET);
    ზოლები ($_POST);
    ზოლები ($_COOKIE);
    ზოლები ($_REQUEST);
    if (isset($_SERVER ["PHP_AUTH_USER"])) ზოლები ($_SERVER ["PHP_AUTH_USER"]);
    if (isset($_SERVER ["PHP_AUTH_PW"])) ზოლები ($_SERVER ["PHP_AUTH_PW"]);
    }
    თუ register_globals-ის კორექტირება არასწორია, სასიამოვნო გადაწყვეტილება იქნება იმის ცოდნა, რომ მნიშვნელოვანია, უმჯობესია - ვიმეორებ - დაუყოვნებლივ ივარჯიშოთ სწორი კორექტირებით.

    პატივისცემა

    • იმ მიზეზებს შორის, თუ რატომ არ არის ადვილი "მომხიბლავი თათების" დაყრდნობა, არის კიდევ ერთი. ის ცოტა ნაკლებად ძლიერია, მაგრამ მაინც. ნამდვილად არის არა ორი დირექტივა, არამედ სამი, რომ მივაღწიოთ „მომხიბვლელ თათებს“. მესამე არის magic_quotes_sybase. არა მხოლოდ ის, ნაცვლად იმისა, რომ დაამატო თათი, ასევე ამატებს magic_quotes_gpc. რაკი გასაკვირია, რომ ამ დირექტივებს აქვს სტატუსი „ჩართული“, მაშინ დანარჩენი არ მეკითხები!შემდეგ, ჩვენს „მომხიბვლელ თათებზე“ დაყრდნობით, ამ შემთხვევაში არასწორად ჩამოყალიბებული წინადადებების ყველა აქსესუარს ვხსნით. ახლა, თეორიულად, აუცილებელია ამ დირექტივის მოქმედების უზრუნველყოფა, ამიტომ იქნება კიდევ ერთი სიურპრიზი, როგორიც არის... დამატებისა და სტრიპსლეშების ფუნქციების ქცევის ცვლილება! თუ magic_quotes_sybase = ჩართულია, ეს ფუნქციები იწყებენ ხაზის შეცვლას ერთი ფეხის დამატებით და ამოღებით ანალოგიურად.
    • ყველა აპლიკაცია დაფუძნებულია MySQL მონაცემთა ბაზაზე. მოთხოვნების შედგენის სპეციფიკური წესები შეიძლება განსხვავდებოდეს სხვა DBMS-ებისთვის, მაგრამ ძირითადი პრინციპი იკარგება შემდეგნაირად:
      • თუ მონაცემთა ბაზასთან ან მესამე მხარის ბიბლიოთეკასთან მუშაობისთვის API უზრუნველყოფს სპეციალური ფუნქციები დასაკეცი სასმელებისთვისდა რადგან მათი სიცოცხლისუნარიანობა შესაძლებელია, მაშინ ჯერ უნდა ჩაერთოთ მათთან.
      • ასეთი ფუნქციები არ არსებობს, როგორც ხედავთ დოკუმენტაციაში ამ DBMS-ისთვის სპეციალური სიმბოლოების გაქცევის ფუნქციის შესახებ.
    შენიშვნა: ფორმა
    შეყვანის ფორმის ტეგებში მნიშვნელობების ჩვენებისას, დახრილობა არ ეხმარება.
    ისე, რომ ასეთი ველის ტექსტი გამოჩნდეს გარედან, მნიშვნელობა უნდა განთავსდეს თათებში, და სანამ მონაცემები, რა უნდა ნახოთ დააყენეთ htmlspecialchars() ფუნქცია
    კონდახი:

    ასევე აუცილებელია აღვნიშნოთ (თუმცა ეს საერთოდ არ ეხება ბალიშებს და დახრილებს), რომ htmlspecialchars ფუნქცია უნდა დაიბლოკოს ბრაუზერში გამოტანისას, სანამ ყველა მონაცემი უარყოფილი იქნება, როგორც დაუმოწმებელი კორესტუვაჩა. რატომ უნდა მუშაობდეს ეს, შეგიძლიათ წაიკითხოთ Google-ში შემდეგი კითხვა: რა არის XSS flow?
    phpfaq.ru-ს მიერ
  • იმისათვის, რომ ეს მკაფიო გაგება მივცეთ, ჯერ მოვიყვან გაოგნებული რიგის პატარა კონდახს. პრაქტიკაში, ვიკორისტების ნებისმიერი სახის პროგრამას აქვს განსაცვიფრებელი ჩვეულებრივი ცვლილების შეურაცხმყოფელი პრინციპი:

    Var text = "კომპანიის ბლოგის სახელია სახელი";

    ყველაფერი, რაც თათებს შორის ჯდება, თარჯიმანი ესმის, როგორც რიგი.
    თუ ჩვენ გვჭირდება ტექსტის გადაცემა რანგის და ფაილში, შევეცდებით ვიმუშაოთ ასე:

    Var text = "ბლოგის დასახელება: "ნაზვა" ";

    მაშინ შედეგი იქნება, რომ ერთი რიგის ნაცვლად, თარჯიმანი დაამატებს ორს:

    "ბლოგის სახელი: " "" და მათ შორის არის უცნობი ოპერატორი - სახელი.

    ამის თავიდან ასაცილებლად, საჭიროა თათების ეკრანი. ჯავასკრიპტში, მაგალითად, ასე გამოიყურება:

    Var text = "ბლოგის დასახელება: \"სახელი\"";

    ამ პრაქტიკული კონდახისთვის შეგიძლიათ განსაკუთრებული გაგება მისცეთ თათების ეკრანს.

    ფეხის ეკრანი- ეს არის მოქმედება, რომელიც იწყება რეგულარული ცვლილებით სკრიპტის მუშაობის დროს. ეს საშუალებას აძლევს თათებს ზედიზედ მოთავსდეს. პირადში, ასევე შეგიძლიათ დაამატოთ უფრო ფართო ეკრანის მეთოდი, ანუ უკანა ხაზის დადება შიდა ფეხების წინ.

    Php ფეხის ეკრანი

    php-ში შეგიძლიათ ჩანართების ეკრანიზაცია რამდენიმე გზით, რომელთაგან პირველი მსგავსია ზემოთ.
    მაგალითად, ჩვენ გვაქვს მწკრივი ავტორისა და უშუალოდ ჩემთან, როგორ მოვათავსოთ თათები:

    "როგორ ფიქრობ?" – ჰკითხა კატერინა ივანივნამ. "არაფერი, მე მკვდარი ვარ", - ვიდპოვი სტარცევი (ჩეხოვი)

    მათ გვერდზე გამოსატანად PHP უნდა მუშაობდეს ერთ-ერთი ხელმისაწვდომი გზით.

    უკანა ეკრანი:

    echo "\"როგორ ხედავ? \" - ჰკითხა კატერინა ივანივნამ. \"არაფერი, მკვდარი ვარ\" - ვიდპოვ სტარცევი (ჩეხოვი)";

    ეკრანის აბაზანა ერთი კლანჭებით

    echo ""როგორ ხარ?" - ჰკითხა კატერინა ივანივნამ. "არაფერი, მოდი, გავაფუჭოთ", - ვიდპოვ სტარცევი (ჩეხოვი)";

    ზედიზედ, თუ ზედიზედ არის შიდა ფეხები, ბევრად უფრო მარტივია ერთი ფეხების შექმნა შუაში მწკრივით. ან, სხვათა შორის, მნიშვნელოვანია აღინიშნოს, რომ ტექსტს სხვა კლანჭები აქვს.

    შეიძლება დაგჭირდეთ PHP-ში ჩანართების ეკრანიზაცია

    მონაცემთა ბაზასთან მუშაობისას ხშირად საჭიროა მბრუნავი კონდახის გამოყენება ნაჩვენები რიგებით, ფეხების ეკრანით და სხვა სპეციალისტებით.
    მონაცემთა ბაზასთან მუშაობისას სხვადასხვა პრობლემების თავიდან ასაცილებლად, ცხრილიდან მონაცემების შენახვამდე შეგიძლიათ გამოიყენოთ addslashes ფუნქცია

    $str = "შენი სახელია O"reilly?"; // print: არის შენი სახელი O\"reilly? echo addslashes($str); ან mysql_real_escape_string

    ეს ფუნქციები სტანდარტულია php-ში და მწკრივების ეკრანის სპეციალურ სიმბოლოებში. თუ თქვენ აპირებთ გამარჯვებას, დაწექით კონკრეტული ბრძანებების ქვეშ. მაგალითად, addslashes უფრო შეეფერება სერიულ მწკრივს მონაცემთა ბაზაში ჩაწერისას, ხოლო mysql_real_escape_string მომხმარებლის ყველა მონაცემისთვის, რომელიც მოვიდა საიტის ფორმიდან.
    მცირე ვებ დანამატებისთვის, თქვენ არ შეგიძლიათ ხელით აირჩიოთ addslashes ან mysql_real_escape_string, თუ გსურთ ჩართოთ „Magic Paws“ – magic_quotes_gpc

    თუ (!get_magic_quotes_gpc()) ( ini_set('magic_quotes_gpc', 'on'); )

    ყველაზე ხშირად, ჯადოსნური თათები ჩართულია სერვერზე დაბანის შემდეგ, ასე რომ თქვენ შეგიძლიათ ამოიცნოთ დაფიქსირებული ინფორმაცია, როდესაც ფუნქცია გამორთულია.

    Echo phpinfo();

    javascript თათის ეკრანი

    ძალიან გავრცელებულია, განსაკუთრებით JavaScript-ში, სტრიქონებში მუშაობა HTML მარკირების ჩასანაცვლებლად.
    ჯავასკრიპტში ჩანართების სკრინინგი ხდება ანალოგიურად, ან უკანა ხაზით ან სხვა ტიპის ჩანართი.

    კონდახი უკანა დახრილობით:

    var html = "
    ბლოკირება მწვანე ტექსტით
    ";

    კონდახი შიდა ფეხებით:

    var html = "
    ბლოკირება მწვანე ტექსტით
    ";

    თუ HTML მარკირებით მწკრივი ძალიან გრძელია და გადატანილი მწკრივი ჩანს, კვლავ საჭიროა ეკრანი, რომელშიც ფორმა აღარ არის თათები, არამედ გადატანილი მწკრივის სიმბოლო.

    Var html = "

    \დაბლოკვა მწვანე ტექსტით\
    ";

    თუ ამ აპლიკაციაში არ იყენებთ უკანა ხაზს მწკრივის გადაადგილებამდე, სკრიპტი არ დამუშავდება.
    ამის გაკეთება იშვიათია, წინააღმდეგ შემთხვევაში შეიძლება დაგჭირდეთ HTML მარკირების გადატანა სერიულ სტრიქონზე JSON ფორმატში. თუ სიმბოლოებს არასწორად განათავსებთ და დეფისით ჩაწერთ, JSON ფორმატი დაირღვევა.
    ამ პრობლემების აღმოსაფხვრელად, თქვენ უნდა გაუშვათ ტექსტი გადაცემული რიგებიდან ფუნქციის მეშვეობით

    JSON.stringify() text = JSON.stringify(ტექსტი);

    JSON.stringify() – ხელმისაწვდომია მხოლოდ jquery ბიბლიოთეკის დაკავშირების შემდეგ.

    Sql ჩანართის ეკრანი

    sql-ში ჩანართების სკრინინგს php-სა და js-ში ჩვენ მიერ შემუშავებული მეთოდების - backslash და შიდა ჩანართების გარდა, სხვა გამოსავალი აქვს.

    აირჩიეთ "თქვენი სახელი Oა" "რეილი?";

    SQL-ში ჩანართების ეკრანიზაციისთვის საჭიროა მათი დუბლიკატი.
    ჩაანაცვლე "ჩაწერა"
    ჩაანაცვლე "ჩაწერა"

    დაალაგეთ თათების ეკრანი

    თქვენ შეგიძლიათ შეცვალოთ ჩანართების ეკრანი PHP-ში სტანდარტული ფუნქციის stripslashes();
    JavaScript-ს არ აქვს სტრიპსლეშების ანალოგი, მაგრამ უფრო ადრე შეგვიძლია გამოვიყენოთ ჩვეულებრივი ვირუსი, რომელიც დაგვეხმარება javascript-ში სქრინსეივერების მიღებაში.

    Str.replace(/\0/g, "0").replace(/\\(.)/g, "$1")

    ამ სტატიაში შევეცადე გამეშუქებინა სკრინინგის ჩანართების თემა php, js, mysql და მეჩვენებინა, რომელ სიტუაციებშია საჭირო სკრინინგის შეწყვეტა. იმედი მაქვს, რომ სტატია ყავისფერი აღმოჩნდა.

    ეს მოკლე სტატია გვიჩვენებს, თუ როგორ de varto vicorista თათები PHP-ში.

    ერთი ფეხები (აპოსტროფები) PHP-ში

    ერთ ფეხზე დადებული რიგები არ არის მოჭრილი PHP-ით. ისე, რომ ცალკეული ფეხები წარმოადგენს ტექსტს, მათ შორის განლაგება ასეთია.

    // სწორი ექო „როგორ არის ცხოვრება?“; echo "როგორ არის ცხოვრება? $name"; echo "როგორ არის ცხოვრება?".$name; // არასწორი ექო "როგორ არის ცხოვრება? $name";

    სპეციალური სიმბოლოები ერთ და ორ ფეხში

    თუ, მაგალითად, tab სიმბოლო (\t) ინტერპრეტირებულია როგორც tab სიმბოლო და არა მხოლოდ ასო t, თქვენ უნდა მოათავსოთ ტექსტის მწკრივი, რომელშიც ჩანართის სიმბოლო მდებარეობს ფეხის ბოლოში. IN ერთი თათებითქვენ შეგიძლიათ მხოლოდ ვიკორიზაცია \' და \\. ეკრანის ყველა სხვა თანმიმდევრობა (\n, \r, \$ და ა.შ.) შეუძლებელია ცალკეულ ჩანართებში.

    // არასწორი ექო "როგორ არის ცხოვრება?\n"; // სწორი ექო „როგორ არის ცხოვრება?“;

    მწკრივის შუაში დასაკეცი თათების დასაკრავად მოათავსეთ თათები საყელოს ზოლის წინ.

    // არასწორი ექო "

    Როგორ არის ცხოვრება?

    // სწორი ექო

    Როგორ არის ცხოვრება?

    "; ექო"

    Როგორ არის ცხოვრება?

    ";

    ფეხების აწევა PHP-ში

    ფეხქვეშ მოთავსებული ტექსტი სულ სხვანაირად ჩანს. მაგალითად, დასაკეცი ფეხებში მოთავსებისას ისინი იცვლება მნიშვნელობებით. მნიშვნელოვანია SQL ხელით შედგენა და დამატებითი ბალიშების გამოყენება.

    $query = "INSERT INTO ცხრილში (პოსტი, ავტორი, ტექსტი, თარიღი) VALUES ("$id","$author","$text","$date"");