Takeaways Key
- Untuk menyediakan projek PHP di Jenkins, ia dinasihatkan untuk mempunyai alat seperti PHPUnit dan PHP-Codesniffer yang tersedia. Ini boleh dicapai dengan memasang pakej secara global pada pelayan Jenkins atau menentukan kebergantungan dalam fail komposer.json.
- Ant digunakan pada pelayan Jenkins untuk mengautomasikan proses membina perisian. Sasaran ditakrifkan dalam fail konfigurasi, dan ANT melakukan tindakan berdasarkan sasaran ini. Fail build.xml ditambah ke projek untuk Ant untuk melaksanakan tugas pada pelayan Jenkins.
- Fail build.xml mungkin memerlukan pengubahsuaian untuk memenuhi projek tertentu. Ini termasuk menentukan di mana alat seperti phpunit boleh didapati dan membersihkan beberapa arahan untuk dipadankan dengan projek dengan betul.
- Sasaran baru mungkin perlu dibuat untuk memastikan semua alat QA akan dijalankan seperti yang diharapkan. Ini termasuk berurusan dengan keperluan untuk menubuhkan projek dengan betul pada Jenkins, seperti kebergantungan yang dikawal oleh komposer dan bower.
- Selepas menyediakan projek itu, perlu membuat projek di Jenkins dan mengkonfigurasinya. Langkah -langkah termasuk memasang plugin GitHub dalam Jenkins, membuat item baru, dan mengkonfigurasi pengurusan sumber. Binaan itu kemudiannya boleh dimulakan dengan mengklik 'Build Now' di menu sampingan projek.
Kami akan menyediakan projek kami terlebih dahulu. Kami boleh menggunakan projek yang dibekalkan oleh Sebastian Bergmann, tetapi ia agak projek asas dan akan berjalan tanpa masalah di Jenkins. Dalam artikel ini, kita akan menggunakan repositori yang berbeza di mana kita perlu mengatasi beberapa halangan. Kami akan menggunakan garpu jumph sebagai asas kami.
Pertama dan terpenting, kita perlu memastikan bahawa kita mempunyai alat seperti phpunit dan php-codesniffer yang tersedia. Kita boleh melakukan ini dalam dua cara yang berbeza. Sama ada kami memasang pakej pada pelayan Jenkins kami melalui pir atau komposer di seluruh dunia, atau kami menentukan kebergantungan dalam fail komposer.json kami. Saya memutuskan untuk pergi dengan kaedah yang terakhir, jadi kami dapat dengan mudah mengawal versi alat -alat ini pada mesin tempatan kami sendiri serta pada Jenkins. Oleh itu, kita mulakan dengan menambahkan baris berikut ke fail komposer.json dan menjalankan kemas kini komposer.
"require-dev": { "squizlabs/php_codesniffer": "~1.5.*", "phpmd/phpmd": "~2.1.*", "sebastian/phpcpd": "~2.0.*", "pdepend/pdepend": "~2.0.*", "phploc/phploc": "~2.0.*", "phpunit/phpunit": "~4.3.*", "theseer/phpdox": "~0.7.*", },
Jika anda ingin mengetahui lebih lanjut mengenai apa yang setiap pakej lakukan, lihat artikel Bruno mengenai alat PHP QA.
Sediakan AntPada pelayan Jenkins kami, kami akan menggunakan ANT. Oleh itu, dalam kes Ant belum dipasang pada pelayan anda, pastikan ia dengan menjalankan perintah berikut.
"require-dev": { "squizlabs/php_codesniffer": "~1.5.*", "phpmd/phpmd": "~2.1.*", "sebastian/phpcpd": "~2.0.*", "pdepend/pdepend": "~2.0.*", "phploc/phploc": "~2.0.*", "phpunit/phpunit": "~4.3.*", "theseer/phpdox": "~0.7.*", },
Ant membantu anda mengautomasikan proses membina perisian. Anda menentukan tugas, yang dipanggil sasaran, dalam fail konfigurasi. ANT akan membaca fail ini dan melakukan tindakan yang sesuai. Anda boleh menentukan kebergantungan untuk menunjukkan di mana perintah semut harus melaksanakan tugas -tugas ini. Fail konfigurasi adalah fail binaan.xml yang dipanggil. Kami akan menambah ini kepada projek kami, jadi Ant boleh melaksanakan tugas -tugas ini pada pelayan Jenkins kami. Kami akan menggunakan templat yang disediakan oleh Sebastian Bergmann yang boleh didapati di sini. Kami menambah ini ke akar projek kami.
untuk menjalankan semut, anda boleh memulakan pembentukan semut pada baris arahan. Ini bermakna semut akan menjalankan sasaran binaan. Sekiranya tiada parameter diberikan, ANT akan menjalankan sasaran seperti yang ditunjukkan dalam konfigurasi sebagai lalai, yang dalam kes ini juga dibina.
mari kita lihat lebih dekat pada sasaran binaan.
sudo apt-get install ant
Sasarannya kosong, bagaimanapun, ia bergantung kepada banyak sasaran lain. Ia akan mula -mula menjalankan sasaran Sediakan dan kemudian teruskan dengan sasaran serat sehingga setiap sasaran telah dijalankan. Mari kita lihat sasaran PhPLOC-CI sebagai contoh.
<span><span><span><target> name<span>="build"</span> depends<span>="prepare,lint,phploc-ci,pdepend,phpmd-ci,phpcs-ci,phpcpd-ci,phpunit,phpdox"</span> description<span>=""</span>/></target></span></span></span>
Sasaran ini agak mudah difahami. Anda akan melihatnya bergantung pada sasaran yang disediakan. Oleh kerana itu sudah dijalankan oleh sasaran binaan, ia tidak akan berjalan lagi. Kemudian kita mendapat executable, iaitu phploc, yang akan dilaksanakan oleh ANT. Anda memasang ini lebih awal dengan komposer. Akhir sekali, kita akan melihat hujah -hujah khusus PHPLOC. ANT akan menjalankan input baris arahan berikut berdasarkan konfigurasi sasaran ini.
<span><span><span><target> name<span>="phploc-ci"</span> depends<span>="prepare"</span> description<span>="Measure project size using PHPLOC and log result in CSV and XML format. Intended for usage within a continuous integration environment."</span>></target></span> </span> <span><span><span><exec> executable<span>="${toolsdir}phploc"</span>></exec></span> </span> <span><span><span><arg> value<span>="--count-tests"</span>/></arg></span> </span> <span><span><span><arg> value<span>="--log-csv"</span>/></arg></span> </span> <span><span><span><arg> path<span>="${basedir}/build/logs/phploc.csv"</span>/></arg></span> </span> <span><span><span><arg> value<span>="--log-xml"</span>/></arg></span> </span> <span><span><span><arg> path<span>="${basedir}/build/logs/phploc.xml"</span>/></arg></span> </span> <span><span><span><arg> path<span>="${basedir}/src"</span>/></arg></span> </span> <span><span><span><arg> path<span>="${basedir}/tests"</span>/></arg></span> </span> <span><span><span></span>></span> </span><span><span><span></span>></span></span></span></span></span></span></span></span></span></span></span>
$ {toolsdir} dan $ {basedir} adalah 2 pembolehubah. Bergantung pada bagaimana mereka dikonfigurasikan, mereka mungkin memberi kesan kepada output baris perintah keseluruhan
Seperti yang ditunjukkan di atas, jika anda hanya mahu mencetuskan sasaran ini, anda harus menjalankan ant phploc-ci pada baris arahan.
Perhatikan bahawa arahan PHPLOC ini akan mengeluarkan fail phploc.csv dan fail phploc.xml. Plugin yang dipasang di Jenkins sebelum ini akan membaca fail -fail ini dan menukarnya kepada graf, sebagai contoh. Dalam artikel seterusnya kita akan menyelam lebih mendalam ke dalam topik ini.
Jika anda melihat melalui fail binaan.xml keseluruhan, anda akan melihat bahawa ia bergantung kepada 3 fail konfigurasi berasingan lain untuk alat tertentu; BUILD/PHPMD.XML, BUILD/PHPDOX.XML dan BUILD/PHPUNIT.XML. Fail konfigurasi ini diminta oleh alat sebenar. Untuk mengetahui lebih lanjut, lihat dokumen masing -masing.
Perhatikan bahawa phpunit.xml sangat diilhamkan oleh fail phpunit.xml.dist asal dari Symfony2 kerana kita berurusan dengan projek Symfony2. menukar fail build.xml
Jadi, adakah kita selesai? Malangnya, belum. Fail build.xml sangat generik dan tidak sesuai sepenuhnya untuk projek kami. Mula -mula kita perlu menentukan di mana alat seperti phpunit boleh didapati. Komposer kami memasangnya secara automatik dalam direktori bin dalam akar projek kami. Kita perlu menukar harta ToolSdir dengan nilai yang betul.
"require-dev": { "squizlabs/php_codesniffer": "~1.5.*", "phpmd/phpmd": "~2.1.*", "sebastian/phpcpd": "~2.0.*", "pdepend/pdepend": "~2.0.*", "phploc/phploc": "~2.0.*", "phpunit/phpunit": "~4.3.*", "theseer/phpdox": "~0.7.*", },
kita juga boleh membersihkan beberapa arahan. Fail Build.xml semasa mendefinisikan bahawa kami di satu pihak mempunyai direktori Src dan sebaliknya direktori ujian. Oleh kerana Symfony2 termasuk ujian dalam direktori SRC, kita boleh mengeluarkan semua laluan ke direktori ujian seperti contoh ini.
sudo apt-get install ant
Walaupun tidak diperlukan, saya lebih suka menyimpan segala -galanya yang bersih sehingga ia sesuai dengan projek kami dengan betul.
Akhir sekali, konfigurasi semasa untuk phpDox seperti yang ditunjukkan dalam fail Build.xml semasa menulis artikel ini tidak berfungsi dengan versi terkini dalam kes saya. Saya menukar sasaran seperti di bawah, jadi ia betul membaca fail konfigurasi kami.
<span><span><span><target> name<span>="build"</span> depends<span>="prepare,lint,phploc-ci,pdepend,phpmd-ci,phpcs-ci,phpcpd-ci,phpunit,phpdox"</span> description<span>=""</span>/></target></span></span></span>
Membuat sasaran baru
Segala -galanya telah ditubuhkan untuk memastikan semua alat QA kami akan berjalan seperti yang diharapkan. Walau bagaimanapun, projek kami hanya sedikit lebih rumit. Jika anda menganalisis repositori, anda akan melihat bahawa kebergantungan dikawal oleh komposer dan bower. Oleh kerana ia adalah projek Symfony, kami juga memerlukan fail parameter.yml lalai. Kita perlu menangani keperluan ini untuk dapat menubuhkan projek dengan betul pada Jenkins.
mari kita mulakan dengan fail parameter.yml. Kami boleh bekerja dengan kandungan lalai parameter.yml.dist, jadi kami hanya akan menyalin fail itu. Kami mulakan dengan membuat sasaran baru bernama Copy-Parameter yang melaksanakan arahan CP.
<span><span><span><target> name<span>="phploc-ci"</span> depends<span>="prepare"</span> description<span>="Measure project size using PHPLOC and log result in CSV and XML format. Intended for usage within a continuous integration environment."</span>></target></span> </span> <span><span><span><exec> executable<span>="${toolsdir}phploc"</span>></exec></span> </span> <span><span><span><arg> value<span>="--count-tests"</span>/></arg></span> </span> <span><span><span><arg> value<span>="--log-csv"</span>/></arg></span> </span> <span><span><span><arg> path<span>="${basedir}/build/logs/phploc.csv"</span>/></arg></span> </span> <span><span><span><arg> value<span>="--log-xml"</span>/></arg></span> </span> <span><span><span><arg> path<span>="${basedir}/build/logs/phploc.xml"</span>/></arg></span> </span> <span><span><span><arg> path<span>="${basedir}/src"</span>/></arg></span> </span> <span><span><span><arg> path<span>="${basedir}/tests"</span>/></arg></span> </span> <span><span><span></span>></span> </span><span><span><span></span>></span></span></span></span></span></span></span></span></span></span></span>
seterusnya adalah komposer dan bower. Saya memutuskan untuk memasang ini secara global di pelayan Jenkins dengan melaksanakan arahan berikut.
phploc --count-tests --log-csv /build/logs/phploc.csv --log-xml /build/logs/phploc.xml /src /tests
[ed: Perhatikan bahawa jika anda menjalankan semua ini dalam VM yang dihoskan pada Windows, BowerPhp akan menjadi pilihan yang lebih baik daripada Bower.]
sekarang mari buat sasaran untuk komposer.
<span><span><span><property> name<span>="toolsdir"</span> value<span>="bin/"</span> /></property></span></span></span>
Adalah penting untuk menetapkan symfony_env untuk menguji jadi Symfony tahu ia perlu membersihkan direktori cache ujiannya.
mari kita teruskan dengan Bower.
<span><span><span><arg> path<span>="${basedir}/tests"</span>/></arg></span></span></span>
Perkara terakhir yang perlu kita lakukan, adalah untuk memastikan sasaran ini dilaksanakan. Oleh itu, kami menukar sasaran binaan dan menambah 3 sasaran yang baru dibuat mengikut urutan yang kami mahu melaksanakannya.
<span><span><span><target> name<span>="phpdox"</span> depends<span>="phploc-ci,phpcs-ci,phpmd-ci"</span> description<span>="Generate project documentation using phpDox"</span>></target></span> </span> <span><span><span><exec> executable<span>="${toolsdir}phpdox"</span>></exec></span> </span> <span><span><span><arg> value<span>="--file"</span> /></arg></span> </span> <span><span><span><arg> value<span>="${basedir}/build/phpdox.xml"</span> /></arg></span> </span> <span><span><span></span>></span> </span> <span><span><span></span>></span></span></span></span></span></span>
git
Perkara terakhir yang perlu kita lakukan ialah menyediakan fail .gitignore kami. Sekiranya anda ingin menjalankan sasaran semut pada mesin tempatan anda, direktori binaan anda akan diisi dengan fail log yang anda tidak mahu komited ke repositori anda. Oleh itu, kami menambah baris berikut ke fail .gitignore.
<span><span><span><target> name<span>="copy-parameters"</span> description<span>="Copy parameters.yml file"</span>></target></span> </span> <span><span><span><exec> executable<span>="cp"</span> failonerror<span>="true"</span>></exec></span> </span> <span><span><span><arg> path<span>="app/config/parameters.yml.dist"</span> /></arg></span> </span> <span><span><span><arg> path<span>="app/config/parameters.yml"</span> /></arg></span> </span> <span><span><span></span>></span> </span> <span><span><span></span>></span></span></span></span></span></span>
Mungkin anda mendapat sedikit keliru dengan semua perubahan yang kami buat. Untuk kemudahan anda, berikut adalah pautan langsung kepada komit dengan semua perubahan yang kami nyatakan di atas.
Buat projek di Jenkins
Projek kami sudah siap. Mari kembali ke Jenkins dan konfigurasikannya. Ini akan menjadi bahagian paling mudah dalam artikel ini.
Sejak projek kami terletak di GitHub, saya cadangkan anda memasang plugin GitHub dalam Jenkins. Jika anda menggunakan pelayan git anda sendiri, anda hanya boleh memasang plugin git biasa. Jika anda tidak pasti cara memasang plugin, periksa artikel sebelumnya.
Apabila anda kembali ke gambaran keseluruhan, anda perlu mengklik item baru di menu kiri. Sebagai nama item, kami mengisi jumph. Seterusnya, kami memilih pilihan salinan item sedia ada dan isi PHP-templat sebagai projek untuk disalin dari.
Perkara terakhir yang perlu kita lakukan ialah memilih pengurusan sumber. Dalam kes kami, ini adalah git. Seterusnya, anda perlu mengisi pautan repositori. Jika anda menggunakan pautan HTTPS, anda tidak perlu memberikan sebarang kelayakan tambahan. Kita boleh menentukan cawangan mana yang harus dibina, tetapi kerana kita hanya mempunyai cawangan induk, kita akan meninggalkannya seperti itu.
Konfigurasi dilakukan - ia sangat mudah kerana kami menggunakan templat yang telah ditetapkan. Jika anda menatal ke bawah, anda akan melihat apa yang dikonfigurasikan templat untuk kami. Jangan lupa untuk menyimpan konfigurasi anda sebelum meneruskan.
Mulakan binaan
Jika anda mengikuti semua langkah setakat ini, anda kini boleh memulakan binaan. Anda boleh memulakan binaan dengan mengklik binaan sekarang di menu sebelah kiri projek. Anda akan melihat di meja kiri bawah yang binaan muncul.
Jika anda mengklik binaan itu sendiri, anda akan mendapat menu sampingan baru dengan pilihan untuk membina khusus ini. Klik pada output konsol untuk melihat apa yang sedang berlaku. Dalam kes saya, binaan pertama gagal kerana kehilangan beberapa sambungan PHP.
output konsol datang sangat berguna untuk mengetahui mengapa projek anda gagal. Dalam kes saya, saya hanya perlu menjalankan SUDO APT-GET Pasang PhP5-CURL PhP5-XSL PhP5-SQLITE PhP5-XDEBUG untuk memasang beberapa pakej yang diperlukan. Saya mengambil beberapa binaan untuk mengetahui apa yang hilang, tetapi dengan output konsol, mudah untuk mengetahui apa yang salah. Akhirnya, inilah yang kelihatan seperti sejarah binaan saya.
Mungkin anda menjangkakan bola hijau dan bukan bola biru apabila binaan berjaya. Terdapat plugin yang tersedia untuk menunjukkan bola hijau dan bukannya biru.
Kesimpulan
Dalam artikel ini, kami berusaha untuk membina yang berjaya. Kami terpaksa menyediakan projek kami dan mewujudkan pekerjaan di Jenkins. Akhirnya kami terpaksa debug beberapa binaan pertama kami kerana kami terlupa memasang beberapa perpustakaan.
Di bahagian seterusnya, kita akan melihat semua keputusan Jenkins memberikan kembali.
Soalan Lazim (Soalan Lazim) Mengenai Membina Projek PHP Dengan Jenkins
Bagaimana saya boleh menyediakan Jenkins untuk projek PHP saya?
Menyediakan Jenkins untuk projek PHP anda melibatkan beberapa langkah. Pertama, anda perlu memasang Jenkins pada pelayan anda. Anda boleh memuat turunnya dari laman web rasmi Jenkins dan ikuti arahan pemasangan. Setelah dipasang, anda perlu mengkonfigurasi Jenkins untuk bekerja dengan PHP. Ini melibatkan memasang plugin yang diperlukan seperti plugin PHP, plugin Git, dan lain -lain bergantung pada keperluan projek anda. Selepas memasang plugin, anda boleh membuat kerja Jenkins baru dan mengkonfigurasinya untuk membina projek PHP anda. Anda perlu menentukan lokasi kod sumber projek anda, pencetus binaan, dan langkah -langkah membina. Projek PHP. Ia mengautomasikan proses membina, menguji, dan menggunakan aplikasi PHP anda, yang dapat menjimatkan banyak masa dan usaha. Ia juga membantu memastikan bahawa kod anda sentiasa berada dalam keadaan yang boleh digunakan, yang dapat meningkatkan kualiti perisian anda. Tambahan pula, Jenkins menyokong integrasi berterusan dan penghantaran berterusan, yang dapat membantu anda menyampaikan kemas kini kepada pengguna anda dengan lebih cepat dan kerap. Jenkins boleh digunakan untuk mengautomasikan ujian untuk projek PHP anda dengan mengintegrasikan dengan pelbagai alat ujian. Sebagai contoh, anda boleh menggunakan plugin phpunit untuk menjalankan ujian unit, atau plugin selenium untuk menjalankan ujian fungsi. Anda hanya perlu mengkonfigurasi plugin ini dalam pekerjaan Jenkins anda, dan mereka secara automatik akan menjalankan ujian anda setiap kali anda membina projek anda. Ini dapat membantu menangkap pepijat lebih awal dan memastikan kod anda sentiasa berada dalam keadaan yang baik. Bahasa pengaturcaraan selain PHP. Ini termasuk Java, Python, Ruby, C#, dan banyak lagi. Anda boleh menggunakan Jenkins untuk membina, menguji, dan menggunakan aplikasi yang ditulis dalam bahasa ini dengan memasang plugin yang sesuai dan mengkonfigurasi pekerjaan Jenkins anda dengan sewajarnya.
Bagaimana saya boleh menggunakan Jenkins untuk menggunakan aplikasi PHP saya? Sebagai contoh, anda boleh menggunakan plugin SSH untuk menggunakan aplikasi anda ke pelayan jauh, atau plugin Docker untuk menggunakan aplikasi anda sebagai bekas Docker. Anda hanya perlu mengkonfigurasi plugin ini dalam pekerjaan Jenkins anda, dan mereka secara automatik akan menggunakan aplikasi anda setiap kali anda membina projek anda. Integrasi adalah amalan pembangunan perisian di mana pemaju mengintegrasikan kod mereka ke dalam repositori bersama sering, biasanya beberapa kali sehari. Ini membantu menangkap isu integrasi lebih awal dan mengurangkan masa dan usaha yang diperlukan untuk menyampaikan kemas kini perisian. Jenkins menyokong integrasi berterusan dengan mengautomasikan proses membina, menguji, dan menggunakan perisian anda setiap kali anda melakukan perubahan pada repositori anda. Penghantaran adalah amalan pembangunan perisian di mana perubahan kod dibina secara automatik, diuji, dan disediakan untuk pembebasan untuk pengeluaran. Ia bertujuan untuk membuat siaran kurang berisiko dan lebih kerap. Jenkins menyokong penghantaran berterusan dengan mengautomasikan keseluruhan proses pelepasan perisian, dari integrasi dan ujian ke penghantaran dan penempatan. Ini membolehkan anda membina, menguji, dan menggunakan perisian anda secara automatik setiap kali anda menolak perubahan pada repositori Git anda. Anda boleh mengkonfigurasi ini dengan memasang plugin git dan menyediakan webhook di repositori git anda untuk mencetuskan Jenkins membina setiap kali perubahan ditolak. Jenkins menyediakan beberapa alat untuk membantu anda menyelesaikan masalah. Ini termasuk membina log, yang boleh memberikan maklumat terperinci tentang apa yang berlaku semasa binaan, dan log sistem, yang dapat memberikan maklumat mengenai operasi keseluruhan pelayan Jenkins anda. Anda juga boleh menggunakan Jenkins CLI atau REST API untuk berinteraksi dengan pelayan Jenkins anda dan mendiagnosis isu.
Bagaimana saya boleh mengamankan pelayan Jenkins saya? Pertama, anda harus memastikan bahawa pelayan Jenkins anda menjalankan versi terkini, kerana ini termasuk patch keselamatan terkini. Anda juga harus mengkonfigurasi Jenkins untuk menggunakan HTTPS, yang akan menyulitkan komunikasi antara pelayan Jenkins anda dan pengguna anda. Di samping itu, anda harus menyekat akses kepada pelayan Jenkins anda dengan menggunakan mekanisme pengesahan dan kebenaran, dan mengehadkan keizinan pengguna Jenkins untuk hanya apa yang mereka perlukan untuk melaksanakan tugas mereka.
Atas ialah kandungan terperinci Menyediakan dan membina projek PHP di Jenkins. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Beban mengimbangi mempengaruhi pengurusan sesi, tetapi dapat diselesaikan dengan replikasi sesi, ketegangan sesi, dan penyimpanan sesi berpusat. 1. Sesi Replikasi Salinan Data Sesi Antara Pelayan. 2. Sesi Stickiness mengarahkan permintaan pengguna ke pelayan yang sama. 3. Penyimpanan Sesi Pusat menggunakan pelayan bebas seperti Redis untuk menyimpan data sesi untuk memastikan perkongsian data.

Sessionlockingisatechniqueusedtoensureauserererersessionremainsexclusivetooneuseratatime.IScrucialFreventingDataCorruptionSandsecuritybreachesinmulti-userapplications.SessionLockingISimplementedusingserverververveChan

Alternatif untuk sesi PHP termasuk kuki, pengesahan berasaskan token, sesi berasaskan pangkalan data, dan redis/memcached. 1.Cookies Menguruskan sesi dengan menyimpan data pada klien, yang mudah tetapi rendah dalam keselamatan. 2. Pengesahan berasaskan token menggunakan token untuk mengesahkan pengguna, yang sangat selamat tetapi memerlukan logik tambahan. 3.Database-berasaskan data menyimpan data dalam pangkalan data, yang mempunyai skalabilitas yang baik tetapi boleh menjejaskan prestasi. 4. Redis/Memcached menggunakan cache yang diedarkan untuk meningkatkan prestasi dan skalabiliti, tetapi memerlukan pemadanan tambahan

SessionHijacking merujuk kepada penyerang yang menyamar sebagai pengguna dengan mendapatkan sessionId pengguna. Kaedah pencegahan termasuk: 1) menyulitkan komunikasi menggunakan HTTPS; 2) mengesahkan sumber sessionId; 3) menggunakan algoritma generasi sesi yang selamat; 4) Secara kerap mengemas kini sessionId.

Artikel ini membincangkan PHP, memperincikan bentuk penuhnya, kegunaan utama dalam pembangunan web, perbandingan dengan Python dan Java, dan kemudahan pembelajarannya untuk pemula.

PHP mengendalikan data borang menggunakan $ \ _ post dan $ \ _ mendapatkan superglobals, dengan keselamatan memastikan melalui pengesahan, sanitisasi, dan interaksi pangkalan data yang selamat.

Artikel ini membandingkan PHP dan ASP.NET, memberi tumpuan kepada kesesuaian mereka untuk aplikasi web berskala besar, perbezaan prestasi, dan ciri keselamatan. Kedua-duanya berdaya maju untuk projek besar, tetapi PHP adalah sumber terbuka dan bebas platform, sementara ASP.NET,

Kepekaan kes PHP berbeza -beza: Fungsi tidak sensitif, manakala pembolehubah dan kelas sensitif. Amalan terbaik termasuk penamaan yang konsisten dan menggunakan fungsi kes-insensitif untuk perbandingan.


Alat AI Hot

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

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

Undress AI Tool
Gambar buka pakaian secara percuma

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

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Dreamweaver Mac版
Alat pembangunan web visual

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod
