


Apakah ciri -ciri yang ditetapkan dalam PHP, dan bagaimana saya mengelakkannya?
Jun 26, 2025 am 04:44 AMApabila menggunakan PHP moden, anda perlu mengelakkan ciri -ciri lama untuk keselamatan dan keserasian. 1. Lanjutan MySQL lama (seperti MySQL_Connect) telah dikeluarkan, dan harus digantikan dengan MySQLI atau PDO yang menyokong pernyataan pra -proses; 2. Pilihan konfigurasi register_globals dan Magic_quotes telah dihapuskan, dan input harus diproses secara manual dan pembolehubah global seperti $ _get dan $ _post harus digunakan; 3. Pelbagai fungsi seperti create_function (), ereg (), dan lain -lain telah ditetapkan dan harus digantikan dengan fungsi tanpa nama atau fungsi preg_; 4. Pembolehubah lulus melalui rujukan dalam foreach memerlukan unset selepas gelung, atau menggunakan kekunci untuk secara langsung mengubah suai array. Kemas kini tepat pada masanya untuk kod boleh meningkatkan keselamatan dan penyelenggaraan.
Sekiranya anda bekerja dengan PHP moden, penting untuk mengetahui bahawa beberapa ciri yang lebih lama telah ditamatkan selama bertahun -tahun. Menggunakannya boleh membawa kepada masalah keselamatan, masalah prestasi, atau hanya kod pecah biasa apabila anda menaik taraf versi PHP anda. Mari kita pergi ke apa yang biasa ditetapkan dan bagaimana untuk mengemas kini tabiat anda.
1.* Sambungan MySQL lama (fungsi mysql_ ) **
Salah satu ciri yang paling terkenal adalah fungsi mysql_*
yang lama-seperti mysql_connect()
dan mysql_query()
. Ini telah dikeluarkan dalam Php 7.0 kerana mereka tidak mempunyai sokongan untuk ciri -ciri pangkalan data moden dan terdedah kepada suntikan SQL.
Apa yang perlu dilakukan:
- Gunakan fungsi mysqli (
mysqli_*
) atau lebih baik lagi, PDO (objek data PHP) . - Kedua -dua sokongan yang disediakan, yang membantu mencegah suntikan SQL.
- Contoh:
// Contoh PDO $ pdo = pdo baru ('mysql: host = localHost; dbName = test', 'user', 'kata laluan'); $ STMT = $ pdo-> Sediakan ('pilih * dari pengguna di mana id =?'); $ stmt-> Execute ([1]); $ user = $ stmt-> fetch ();
Pastikan anda tidak menggunakan mana -mana mysql_*
panggilan di mana sahaja di codebase anda - cari fail anda jika anda tidak pasti.
2. Register_globals dan Magic_Quotes
Ini adalah pilihan konfigurasi PHP yang secara automatik menyuntik data input ke dalam pembolehubah global ( $_GET
, $_POST
, dll) atau melepaskan petikan dalam data masuk.
-
register_globals
telah ditutup dalam Php 5.3 dan dikeluarkan dalam 5.4. -
magic_quotes_gpc
telah ditolak dalam 5.3 dan dikeluarkan dalam 5.4.
Mengapa penting:
- Mereka membuat kod kurang selamat dan lebih sukar untuk mengesan di mana pembolehubah datang.
- Sekiranya anda mengekalkan kod warisan yang menganggapnya, uji dengan teliti selepas menaik taraf.
Cara mengelakkan masalah:
- Jangan bergantung pada auto-global-selalu gunakan
$_GET
,$_POST
, dan$_SERVER
. - Sanitize secara manual dan sahkan semua input pengguna menggunakan fungsi seperti
filter_var()
atau pernyataan yang disediakan.
3. Fungsi dan ciri bahasa yang tidak ditetapkan
Dari masa ke masa, pelbagai fungsi yang lebih kecil dan pembinaan bahasa telah ditandakan sebagai tidak ditetapkan. Beberapa perkara biasa termasuk:
-
create_function()
- Gunakan fungsi tanpa nama (function() {}
) sebaliknya. -
each()
- Gunakan gelungforeach
. -
call_user_method()
dancall_user_method_array()
- Gunakancall_user_func()
atau panggilan kaedah langsung. -
ereg()
Fungsi - Tukar kepreg_()
Fungsi (PCRE).
Petua:
Semak dokumentasi PHP rasmi untuk senarai fungsi yang tidak ditetapkan dalam versi PHP semasa anda. Anda juga boleh membolehkan pelaporan ralat untuk menangkapnya semasa pembangunan.
error_reporting (e_all); INI_SET ('Display_errors', 1);
Ini membantu anda melihat amaran penolakan semasa ujian.
4. Pembolehubah lulus dengan rujukan dalam foreach
Dalam versi lama PHP, menulis sesuatu seperti ini digunakan untuk dibenarkan:
foreach ($ array as & $ value) { // buat sesuatu }
Tetapi jika anda lupa untuk $value
yang tidak jelas selepas itu, ia boleh menyebabkan tingkah laku yang tidak dijangka kerana ia masih merujuk item terakhir dalam array.
Amalan terbaik:
- Tabap pemboleh ubah rujukan selepas gelung:
foreach ($ array as & $ value) { // Ubah suai nilai $ } unset ($ nilai); // Membersihkan rujukan
Atau lebih baik lagi, pertimbangkan untuk mengubah suai array secara langsung menggunakan kekunci jika boleh.
Mengelakkan ciri-ciri yang tidak ditetapkan bukan hanya untuk mengekalkan kod anda bersih-ia penting untuk keserasian, keselamatan, dan penyelenggaraan jangka panjang. Kebanyakan penggantian adalah mudah, dan dokumen PHP menjadikannya mudah untuk mencari alternatif.
Anda tidak perlu membaik pulih segala -galanya sekaligus, tetapi perhatikan notis penolakan semasa anda bekerja. Dengan cara itu, apabila anda menaik taraf versi PHP, perkara -perkara tidak akan pecah tanpa diduga.
Pada dasarnya itu sahaja.
Atas ialah kandungan terperinci Apakah ciri -ciri yang ditetapkan dalam PHP, dan bagaimana saya mengelakkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Masalah dan penyelesaian biasa untuk skop pembolehubah PHP termasuk: 1. Pembolehubah global tidak dapat diakses dalam fungsi, dan ia perlu diluluskan menggunakan kata kunci atau parameter global; 2. Pembolehubah statik diisytiharkan dengan statik, dan ia hanya dimulakan sekali dan nilai dikekalkan antara pelbagai panggilan; 3. Pembolehubah hyperglobal seperti $ _get dan $ _post boleh digunakan secara langsung dalam mana -mana skop, tetapi anda perlu memberi perhatian kepada penapisan yang selamat; 4. Fungsi Anonymous perlu memperkenalkan pembolehubah skop induk melalui kata kunci penggunaan, dan apabila mengubah suai pembolehubah luaran, anda perlu lulus rujukan. Menguasai peraturan ini boleh membantu mengelakkan kesilapan dan meningkatkan kestabilan kod.

Untuk mengendalikan muat naik fail PHP dengan selamat, anda perlu mengesahkan sumber dan jenis, mengawal nama fail dan laluan, menetapkan sekatan pelayan, dan memproses fail media dua kali. 1. Sahkan sumber muat naik untuk mengelakkan CSRF melalui token dan mengesan jenis mime sebenar melalui finfo_file menggunakan kawalan putih; 2. Namakan semula fail ke rentetan rawak dan tentukan pelanjutan untuk menyimpannya dalam direktori bukan web mengikut jenis pengesanan; 3. Konfigurasi PHP mengehadkan saiz muat naik dan direktori sementara Nginx/Apache melarang akses ke direktori muat naik; 4. Perpustakaan GD menyambung semula gambar -gambar untuk membersihkan data yang berpotensi.

Terdapat tiga kaedah umum untuk kod komen PHP: 1. Use // atau # untuk menyekat satu baris kod, dan disyorkan untuk menggunakan //; 2. Gunakan /.../ untuk membungkus blok kod dengan pelbagai baris, yang tidak boleh bersarang tetapi boleh diseberang; 3. Komen -komen kemahiran gabungan seperti menggunakan / jika () {} / untuk mengawal blok logik, atau untuk meningkatkan kecekapan dengan kunci pintasan editor, anda harus memberi perhatian kepada simbol penutupan dan mengelakkan bersarang apabila menggunakannya.

Ageneratorinphpisamemory-efficientwaytoiterateOverlargedatasetsbyieldingvaluesonateatimeNsteadofreturningthemallatonce.1.GeneratorSuseTheyEldeyWorderWorderToProducevaluuesondemand,

Kunci untuk menulis komen PHP adalah untuk menjelaskan tujuan dan spesifikasi. Komen harus menjelaskan "mengapa" dan bukannya "apa yang dilakukan", mengelakkan redundansi atau terlalu kesederhanaan. 1. Gunakan format bersatu, seperti docblock (/*/) untuk deskripsi kelas dan kaedah untuk meningkatkan keserasian dan keserasian alat; 2. Menekankan sebab -sebab di sebalik logik, seperti mengapa JS melompat perlu dikeluarkan secara manual; 3. Tambahkan gambaran keseluruhan gambaran sebelum kod kompleks, terangkan proses dalam langkah -langkah, dan membantu memahami idea keseluruhan; 4. Gunakan Todo dan Fixme secara rasional untuk menandakan item dan masalah untuk memudahkan penjejakan dan kerjasama berikutnya. Anotasi yang baik dapat mengurangkan kos komunikasi dan meningkatkan kecekapan penyelenggaraan kod.

Tolearnphpeffectively, startbysettingupalocalverenvironmentusingToolsLikexamppandaCodeDitorLikevscode.1) InstallXamppforapa Che, MySql, danPhp.2) UseAcodeeditorForsyntaxSupport.3) testyoursetupwithasimplephpfile.next, learnphpbasicsincludingvariables, ech

Dalam PHP, anda boleh menggunakan kurungan persegi atau pendakap keriting untuk mendapatkan aksara indeks spesifik rentetan, tetapi kurungan persegi disyorkan; Indeks bermula dari 0, dan akses di luar julat mengembalikan nilai null dan tidak dapat diberikan nilai; MB_SUBSTR dikehendaki mengendalikan watak multi-bait. Sebagai contoh: $ str = "hello"; echo $ str [0]; output h; dan watak -watak Cina seperti MB_SUBSTR ($ str, 1,1) perlu mendapatkan hasil yang betul; Dalam aplikasi sebenar, panjang rentetan perlu diperiksa sebelum gelung, rentetan dinamik perlu disahkan untuk kesahihan, dan projek berbilang bahasa mengesyorkan menggunakan fungsi keselamatan multi-bait secara seragam.

Toinstallphpquickly, usexampponwindowsorhomeBrewonmacos.1.onwindows, downloadandInstallxampp, selectcomponents, startapache, andplaceFilesinhtdocs.2.alternative, secara manualstallphpfromphp.netandsheBerver.3
