PHPCMS发布页面的栏目选择问题_PHP教程
在PHPCMS的发布页面中有个BUG,即使编辑无权限访问某个栏目,但是也还都可以在发布页面的栏目下拉菜单中选择该栏目,并可以将文章发布到该栏目下。这个BUG如何修复呢?我们先来看看发布页面的下拉菜单是如何生成的。
发布页面的模板文件是在 /admin/templates/content_add.tpl.php,其表单是通过下面语句输出的:
if(is_array($forminfos['base'])) { foreach($forminfos['base'] as $field=>$info) { } }
线索找到了,就是 $forminfos 这个数组。这个数组实在 /admin/content.inc.php 这个文件中生成的,我们看看生成代码:
$data['catid'] = $catid; $data['template'] = isset($template_show) ? $template_show :$MODEL[$modelid]['template_show']; require CACHE_MODEL_PATH.'content_form.class.php'; $content_form = new content_form($modelid); $forminfos = $content_form->get($data);
把数组 $forminfos 打印出来可以发现,下拉菜单的代码保存在 $forminfos['base']['catid']['form'] 中:
<select name="info[catid]" id="catid"><option value="96" >扶贫动态</option><option value="95" >通知公告</option><option value="35" >最新动态</option><option value="36" selected>新闻</option><option value="37" >爱心捐助</option><option value="83" >捐助纪实</option><option value="38" >爱心回馈</option><option value="40" >捐款名单</option><option value="41" >紧急求助</option><option value="73" >帮助中心</option><option value="74" >友情连接</option><option value="43" >对口地区</option><option value="44" >新闻动态</option><option value="45" >援建项目</option><option value="47" >爱心捐助</option><option value="48" >情系三峡</option><option value="50" >新闻专区</option><option value="51" >爱心捐助</option><option value="52" >政策动态</option><option value="53" >结对帮扶</option><option value="54" >援建项目</option><option value="56" >扶贫现状</option><option value="57" >扶助对象</option><option value="58" >新闻动态</option><option value="59" >爱心捐助</option><option value="60" >扶贫项目</option><option value="62" >基金简介</option><option value="64" >募捐情况</option><option value="65" >基金用途</option><option value="66" >账户情况</option><option value="67" >新闻动态</option><option value="68" >义工</option><option value="69" >政策法规</option><option value="87" >顶新闻栏</option><option value="88" >顶新闻栏</option><option value="89" >顶新闻栏</option><option value="98" >顶新闻栏</option><option value="99" >顶新闻栏</option></select><input type="hidden" name="old_catid" value="36"> <a href=\'\' class="jqModal" onclick="$(\'.jqmWindow\').show();"/> [同时发布到其他栏目]</a>
还是投机了一把,只要把里面的数字正则抽取出来,进行权限验证,没权限的unset掉,余下的再组合到一起,重新生成 $forminfos['base']['catid']['form'] 即可:
$data['catid'] = $catid; $data['template'] = isset($template_show) ? $template_show :$MODEL[$modelid]['template_show']; require CACHE_MODEL_PATH.'content_form.class.php'; $content_form = new content_form($modelid); $forminfos = $content_form->get($data); // 判断权限 preg_match_all("//", $forminfos['base']['catid']['form'], $matches['str']); preg_match_all("/[1-9]\d/", $forminfos['base']['catid']['form'], $matches['num']); foreach($matches['num'][0] as $key=>$value) { $allow_manage = $priv_role->check('catid', $matches['num'][0][$key], 'manage'); if(!$allow_manage) { unset($matches['num'][0][$key]); unset($matches['str'][0][$key]); } } foreach($matches['str'][0] as $key=>$value) { $opstr .= $matches['str'][0][$key]; } $forminfos['base']['catid']['form'] = preg_replace('/ /', $opstr, $forminfos['base']['catid']['form']);
投机成分很高,仅作参考。

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

AI Hentai Generator
Menjana ai hentai secara percuma.

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)

Topik panas

Pengesahan ungkapan biasa PHP: Pengesanan format nombor Semasa menulis program PHP, selalunya perlu untuk mengesahkan data yang dimasukkan oleh pengguna Salah satu pengesahan biasa adalah untuk memeriksa sama ada data mematuhi format nombor yang ditentukan. Dalam PHP, anda boleh menggunakan ungkapan biasa untuk mencapai pengesahan jenis ini. Artikel ini akan memperkenalkan cara menggunakan ungkapan biasa PHP untuk mengesahkan format nombor dan memberikan contoh kod khusus. Mula-mula, mari kita lihat keperluan pengesahan format nombor biasa: Integer: hanya mengandungi nombor 0-9, boleh bermula dengan tanda tambah atau tolak dan tidak mengandungi titik perpuluhan. titik terapung

Untuk mengesahkan alamat e-mel di Golang menggunakan ungkapan biasa, ikut langkah berikut: Gunakan regexp.MustCompile untuk mencipta corak ungkapan biasa yang sepadan dengan format alamat e-mel yang sah. Gunakan fungsi MatchString untuk menyemak sama ada rentetan sepadan dengan corak. Corak ini merangkumi kebanyakan format alamat e-mel yang sah, termasuk: Nama pengguna tempatan boleh mengandungi huruf, nombor dan aksara khas: !.#$%&'*+/=?^_{|}~-`Nama domain mesti mengandungi sekurang-kurangnya Satu huruf, diikuti dengan huruf, nombor atau sempang Domain peringkat teratas (TLD) tidak boleh lebih daripada 63 aksara.

Ungkapan Biasa PHP: Padanan Tepat dan Pengecualian Ungkapan tetap kemasukan kabur ialah alat padanan teks yang berkuasa yang boleh membantu pengaturcara melakukan carian, penggantian dan penapisan yang cekap semasa memproses teks. Dalam PHP, ungkapan biasa juga digunakan secara meluas dalam pemprosesan rentetan dan pemadanan data. Artikel ini akan menumpukan pada cara melakukan pemadanan tepat dan mengecualikan operasi kemasukan kabur dalam PHP dan akan menggambarkannya dengan contoh kod khusus. Padanan tepat Padanan tepat bermaksud padanan hanya rentetan yang memenuhi syarat yang tepat, bukan sebarang variasi atau perkataan tambahan.

Dalam Go, anda boleh menggunakan ungkapan biasa untuk memadankan cap masa: susun rentetan ungkapan biasa, seperti yang digunakan untuk memadankan cap masa ISO8601: ^\d{4}-\d{2}-\d{2}T \d{ 2}:\d{2}:\d{2}(\.\d+)?(Z|[+-][0-9]{2}:[0-9]{2})$ . Gunakan fungsi regexp.MatchString untuk menyemak sama ada rentetan sepadan dengan ungkapan biasa.

PHP CMS ialah sistem pengurusan kandungan sumber terbuka berasaskan PHP untuk mengurus kandungan tapak web Ciri-cirinya termasuk kemudahan penggunaan, kefungsian berkuasa, berskala, keselamatan tinggi dan sumber terbuka percuma. Ia boleh menjimatkan masa, meningkatkan kualiti laman web, meningkatkan kerjasama dan mengurangkan kos pembangunan, dan digunakan secara meluas dalam pelbagai laman web seperti laman web berita, blog, laman web korporat, laman web e-dagang dan forum komuniti.

Kaedah menggunakan ungkapan biasa untuk mengesahkan kata laluan dalam Go adalah seperti berikut: Tentukan corak ungkapan biasa yang memenuhi keperluan kata laluan minimum: sekurang-kurangnya 8 aksara, termasuk huruf kecil, huruf besar, nombor dan aksara khas. Susun corak ungkapan biasa menggunakan fungsi MustCompile daripada pakej regexp. Gunakan kaedah MatchString untuk menguji sama ada rentetan input sepadan dengan corak ungkapan biasa.

Langkah-langkah untuk mengesan URL di Golang menggunakan ungkapan biasa adalah seperti berikut: Susun pola ungkapan biasa menggunakan regexp.MustCompile(pattern). Corak perlu sepadan dengan protokol, nama hos, port (pilihan), laluan (pilihan) dan parameter pertanyaan (pilihan). Gunakan regexp.MatchString(pattern,url) untuk mengesan sama ada URL sepadan dengan corak.

Ketahui petua praktikal untuk sintaks ungkapan biasa Java, langkah demi langkah, dengan contoh kod tertentu Ungkapan biasa ialah alat berkuasa yang boleh digunakan untuk padanan corak dan penggantian rentetan. Di Java, operasi rentetan boleh dikendalikan dengan mudah menggunakan ungkapan biasa. Artikel ini akan memperkenalkan anda kepada beberapa petua praktikal tentang sintaks ungkapan biasa Java dan memberikan contoh kod khusus. Corak padanan asas untuk ungkapan biasa dalam Java menggunakan pakej java.util.regex. Untuk menggunakan ungkapan biasa, anda boleh menggunakan Patter
