ኮምፒውተሮች, ሶፍትዌር
ተግባሩ ውስጥ ፒኤችፒ አቀፍ ተለዋዋጭ. ፒኤችፒ ውስጥ አቀፍ ተለዋዋጭ አድርግ
እርስዎ ብዙ ነገር ማወቅ አለብን ይህም ሰፊ ተግባር ሙሉ ጣቢያ, ለመፍጠር. ነገር ግን እሱ በእውነት ልዩ ምን ማድረግ ይችላል - ፒኤችፒ ነው. በ የፕሮግራም ቋንቋ አቀፍ ተለዋዋጭ በጣም ብዙውን ጊዜ ጥቅም ላይ አይደለም, ነገር ግን አንዳንድ ጊዜ እንዴት እንደሚሰራ ማወቅ, አንዳንድ ጊዜ አስፈላጊ ነው. ይህም ነው እና እንዴት እንደሚሰራ, በዚህ ርዕስ ውስጥ ማድረግ ይሄዳሉ ነገር ጥናት ነው.
አድማስ
በነባሪ, እነርሱ በአካባቢው ተግባር ወሰን የተገደበ ነው. እና እንዴት የበለጠ የትኛው መጠቀም ይችላል, ወሰን ውስጥ ተለዋዋጭ አይተናል ፋይሎች ለማድረግ? ይህን መጨረሻ ድረስ, እና ፒኤችፒ አቀፍ ተለዋዋጮች ውስጥ የቀረበ ነው.
በ ቁልፍ ቃል "ዓለም አቀፋዊ"
እንዲህ የሚጠቁም ትግበራ በኋላ ውሂብ ማንኛውም ፋይል ጋር መስራት ይችላሉ. ቦታ ይህን ተለዋዋጭ ዋቢዎችን አሉ ከሆነ, ፕሮግራሙ ሁልጊዜ አቀፍ ስሪት ላይ ትኩረት ያደርጋል.
ለምንድን ነው እንደዚህ ያለ እንግዳ ቋንቋ? እውነታ በተመሳሳይ ጊዜ በአካባቢው ስሪቶች ሊኖሩ ይችላሉ. ነገር ግን እነርሱ ይፋ የት እነዚህ ፋይሎች ብቻ የሚገኝ ይሆናል. ሁሉ ለቀሪው ዓለም አቀፍ ተለዋዋጮች ፒኤችፒ ክፍል እርምጃ ይሆናል. ስለዚህ እናንተ ጥንቃቄ መሆን አለበት. በዓለም አቀፍ ደረጃ አንድ: ምንም ጥርጥር የለም ነበር, እዚህ እነርሱ ምን እንደሚመስሉ የሚያሳይ ምሳሌ ነው.
አንድ ፋይል ተለዋዋጮች በርካታ መዳረሻ ይኖራቸዋል ከሆነ ስለሆነ እነሱን የሚጋጭ ምክንያት ይሆናል. የአካባቢ ወይም አቀፍ ተለዋዋጭ ካልተሳካ ሙሉ በሙሉ ማንበብ ወይም ነው - በእርግጠኝነት ግን መናገር አንችልም. ይህ ተግባር ውስጥ ለመመዝገብ ነው ከሆነ, ምንም ችግር መሆን አለበት. ነገር ግን በውስጡ ድንበሮች አንድ ተለዋዋጭ መጠቀም አስቸጋሪ መሆን. ስለዚህ የትም እንዳለ በቅርበት መከታተል እና ለማረጋገጥ አስፈላጊ ኮድ የማርቀቅ መዋቅር እንኳ እንዲህ ግጭት ቅድመ ተነሣ.
ቀረጻውን ሌላው የተላበሰ
የተሰየሙ / superglobals
በእያንዳንዱ ፕሮግራም ቋንቋ ውስጥ ተግባራትን አንዳንድ ቻርተርድ ናቸው አንዳንድ ስሞች አሉ. ስለዚህ አይሰራም ተመሳሳይ ስም ፒኤችፒ አቀፍ ተለዋዋጮች ውስጥ ለመፍጠር.
ይህ ፕሮግራም ቋንቋ የራሱ ባህርያት አሉት. ስለዚህ, እዚህ የተሰየሙ ተለዋዋጮች, "ሱፐር" በመጫን አይደለም መሆናቸው ነው, ሁሉም አካባቢዎች ውስጥ የማይገኙ አስፈላጊ ነው. እንዴት ማስተካከል እችላለሁ? የተሰየሙ ተለዋዋጮች አንዳንድ የአካባቢው አካባቢ ላይ ይገኛል ነበር ወደ እንደሚከተለው :. ግሎባል «ተለዋዋጭ, እሱ" መታወጅ አለበት ይህ ትክክለኛ, በፊት እንዲህ ዓይነት መሆን ይመስላል? ይህ ግን በጣም እውነት ነው. እኛን አስቀድሞ አንድ ምሳሌ "ትግል" ላይ ትኩረት እናድርግ:
- ዓለም አቀፍ $ HTTP_POST_VARS;
- $ HTTP_POST_VARS [ 'ስም'] የሚያስተጋባ ነው.
ከእነሱ መካከል ያለውን ልዩነት ይሰማሃል? ፒኤችፒ አቀፍ ተለዋዋጮች ውስጥ የግድ ተግባር ውስጥ ጥቅም ላይ መሆን የለበትም መሆኑን ልብ ይበሉ. እንዲያውም ውስጥ የተካተተ አንድ ፋይል ውስጥ ሊቀመጥ ይችላል.
አገናኞች እና ደህንነት
ከዚህ ማየት እንደምትችለው, ፒኤችፒ ውስጥ አቀፍ ተለዋዋጭ ችግር አይደለም መፍጠር. ነገር ግን ማንኛውም የተወሰነ አንጻራዊ አገናኞች ነው? ዓለም አቀፍ በመጠቀም ጊዜ አዎን, ያልተጠበቀ ባህሪ ሊኖሩ ይችላሉ. ነገር ግን ከዚያ በፊት, ትንሽ backstory.
ስሪት 4.2.0 ውስጥ ነባሪ register_globals በ መመሪያ ላይ-ግዛት ከ ለማጥፋት ተቀይሯል. አብዛኞቹ ተጠቃሚዎች, ይህ በጣም አስፈላጊ, ነገር ግን በከንቱ አይደለም. ሁሉም በኋላ በቀጥታ ባደጉ ምርት ደህንነት ይነካል. እርስዎ ማድረግ ከፈለጉ በዚህ ልኬት ላይ ተለዋዋጭ ዓለም አቀፋዊ, PHP-መመሪያ በቀጥታ አይነካም. ይሁን እንጂ, የተሳሳተ አጠቃቀም አስቀድሞ ክንውኖች ደህንነት መፍጠር ይችላሉ.
ለምሳሌ ኤችቲኤምኤል-ቅጾች ለመላክ ስለ የተጻፈ ሕግ መገደል, አስፈላጊ እንደሆነ የተለያዩ ተለዋዋጮች አልተነሳም በፊት ስለዚህ register_globals, መብራቱን ከሆነ. ስለዚህ እሱን ለማጥፋት ወሰነ ነበር.
ለምንድን ነው ፒኤችፒ አቀፍ ተለዋዋጭ ውስጥ በዚህ መመሪያ ሁኔታ እጅግ ስያሜውን ነው? እንደ እውነቱ ከሆነ ገንቢዎች ሁኔታ በእርግጠኝነት ሳይሆን ሁልጊዜ ማድረግ ጊዜ ራሳቸው ከእርሱ መጣ የት ጥያቄ መልስ እንደሚችል ነው. በአንድ በኩል, ይህ ኮድ መጻፍ ቀላል ነው. ይሁን እንጂ በሌላ ላይ - ይህ የደህንነት ስጋት ነው. ስለዚህ, በመቀላቀል ስህተቶች, እንዲሁም ውሂብ ለማስወገድ እና መመሪያ ተሰናክሏል.
አሁን ያለው አይደለም / አስተማማኝ ኮድ, እንዲሁም እንዴት እንደ አቀፍ ፒኤችፒ ተለዋዋጭ ከወጣበት ውሂብ ጋር ለረቂቅ ላይ ሙከራዎች ማስያዝ በሚገኙበት ሁኔታዎች ለማወቅ እንመልከት. ይህ ብቻ ሳይሆን ውብ ለመፍጠር ሲሉ አስፈላጊ ነው, ነገር ግን ደግሞ ከጊዜ ወደጊዜ የመጀመሪያው የሚገኝ ሰው ሊሰነጠቅ አይደለም ጣቢያዎች እየሰራ.
ተንኮል አዘል ኮድ
የአምላክ ይህ ተለዋዋጭ ስልጣን ቆይተዋል ሰዎች እውነት ነው ማዘጋጀት እንመልከት:
ከሆነ (authenticate_user ()) {
$ Authorize = እውነተኛ;
}
ከሆነ ($ ፈቃዳዎችን) {
"/highly/sensitive/data.php" ይገኙበታል;
}
በዚህ ሁኔታ ውስጥ, ተለዋዋጭ ሰር ሊዘጋጅ ይችላል. ውሂብ በቀላሉ ሊተካ ይችላል, እና መሠረታቸው ምንጭ ካልተዋቀረ መሆኑን ከግምት ውስጥ በማስገባት, ከዚያም ሰው እንዲህ ያለ ፈተና ማለፍ እና ሌላ ሰው መሆን ማስመሰል እንችላለን. የተፈለገውን ከሆነ, አጥቂ (ወይም የማወቅ ጉጉት ግን ተላላ ሰው), የእኛን ሎጂክ ለተሳናቸው ሊሆን ይችላል.
እኛ መመሪያ ዋጋ መለወጥ ከሆነ እኛ ያስፈልጋል እንደ ይህ ኮድ, በትክክል ይሰራሉ. ነገር ግን ተለዋዋጮች ማስጀመር በ ፕሮግራም ውስጥ ብቻ ሳይሆን ጥሩ ቃና ነው, ነገር ግን ደግሞ እኛን በስክሪፕቱ መረጋጋት የተወሰነ ዋስትና ይሰጣል.
ኮድ አስተማማኝ ስሪት
እርስዎ ማጥፋት ወይም መመሪያዎች መሥራት, ወይም ይህን ግብ ለማሳካት የበለጠ ውስብስብ ኮድ መድኃኒት ይችላሉ. ለምሳሌ ያህል, እንዲህ ዓይነት:
ከሆነ (isset ($ _ SESSION [ 'የተጠቃሚ ስም'])) {
ማሚቶ "ሄሎ {$ _ SESSION [ 'የተጠቃሚ ስም']} b>";
} እንዲያማ {
ማሚቶ "ሄሎ እንግዳ b>
";
"እንኳን ደህና ተጠቃሚ!" ማስተጋባት;
}
በዚህ ጉዳይ ላይ አንድ መተካት አድርግ, አስቸጋሪ ይሆናል. ነገር ግን አሁንም - ይቻላል. ይህንን ለማድረግ, የ ፈጣን ምላሽ መሣሪያዎች የሚሰጡ የነበሩ ጥንቃቄ መውሰድ ይኖርባቸዋል. እናንተ ፒኤችፒ ውስጥ አቀፍ ተለዋዋጮች ማካተት የሚፈልጉ ከሆነ, የሚከተሉት መሣሪያዎች መጠቀም ይችላሉ: እኛ ክልል አገኘ ዋጋ ምን እንደሆነ ታውቃላችሁ ከሆነ, ይህ ግጥሚያ ጋር ይህን ለማረጋገጥ አንድ ስክሪፕት ለመመዝገብ ይቻላል. እርግጥ ነው, በተጨማሪም የመተካት እሴቶች ላይ ሙሉ ጥበቃ ዋስትና አይሰጥም. ነገር ግን በጣም ብዙ አማራጮች ጉልህ ያወሳስበዋል ነው.
እንዲመስሉ ለማድረግ ሙከራዎች ያገኛል
የአምላክ ቀደም የተጻፈው እንደሚያስተምር እንዴት እንደሆነ እስቲ እንመልከት. ፒኤችፒ ውስጥ ከዚህ በታች ይሰጠዋል በዚያ ተግባር ውስጥ አቀፍ ተለዋዋጮች, አንተ ራስህን ማወጅ ይኖርብዎታል. እኛ ይህን ትምህርት ርዕስ ያለውን ለውህደት ላይ የቤት ውስጥ አንድ ዓይነት ነው ማለት እንችላለን. እዚህ ላይ ኮድ ነው:
ይመክራቸዋል
ከሆነ (isset ($ _ ኩኪ [ 'C_COOKIE'])) {
} Elseif (isset ($ _ አግኝ [ 'C_COOKIE']) || isset ($ _ POST [ 'C_COOKIE'])) {
ሜል ( "administrarot@example.com", "ትኩረት, የስክሪፕት እንደዘረፋ ላይ ሙከራ እና ውሂብ ለረቂቅ ተመዝግቧል" $ _SERVER [ 'REMOTE_ADDR']);
"የተሰበረ የደህንነት ነበር ወይም ይህን ለማድረግ ወደ አስተዳዳሪ ማሳወቂያ መሞከር." ማስተጋባት;
መውጫ;
} እንዲያማ {
}
?>
አሁን ማብራሪያ በውስጥም. በከፊል C_COOKIE አስተማማኝ ምንጭ ወደ እኛ ይመጣል. ሙሉ በሙሉ የሚጠበቀውን ውጤት መሠረት ተሟልቶ ከፈለግን በውስጡ ዋጋ ያረጋግጡ እና ችግሮች ጉዳይ አስተዳዳሪ ማሳወቅ. ይህ ሊመጣ አይደለም ከሆነ, ምንም እርምጃ ማድረግ አያስፈልገውም ነበር እና. እርስዎ በቀላሉ register_globals መመሪያ የእርስዎን ኮድ አስተማማኝ ነው ማለት አይደለም በማሰናከል መሆኑን መረዳት አለብን. ስለዚህ ተጠቃሚው አንድ ስክሪፕት የሚቀበል ማንኛውም ተለዋዋጭ, ከተጠበቀው ዋጋ ለማግኘት ሊረጋገጥ ይገባል.
መደምደሚያ
እነሆ, በአጠቃላይ, እና ሁሉም ነገር በተሳካ ሁኔታ እና በተጠበቀ ያላቸውን ሥራ ውስጥ እነሱን ለመጠቀም አቀፍ ተለዋዋጮች ማወቅ ይኖርብናል. አጥቂዎች በየጊዜው ያላቸውን ዘዴዎች እና ችሎታቸውን ማሻሻል ነው - እርግጥ ነው, ማንም ሰው ከእነርሱ አይችልም ይጠቀምበታል አንድ ሙሉ ዋስትና አለ ማለት ነው. ይህ ኮድ ውስጥ አቀፍ ተለዋዋጮች ላይ ከፍተኛ አጠቃቀም ለመገደብ ስለዚህ የሚፈለግ ነው. ደግነቱ, በዚህ ፕሮግራም ቋንቋ አወቃቀር እና የንድፍ ባህሪያት ይህን ግብ ለማሳካት ይችላሉ. መልካም ዕድል!
Similar articles
Trending Now