解决Yii 输入正确验证码验证失败
在做一个需求时,发现输入正确验证码,但是都提示验证码错误
最后追踪代码发现,如果 Model 在 save
前,单独做了 validate
验证,则在验证结束后,会重新生成验证码
然后在我们 Model save
时,也会进行 validate
验证,验证时,验证码已经重新生成了,所以会匹配不上
<code>// 如果这里用到了验证码,就会出问题 $model = new Test(); $model->validate(); $model->save(); </code>
<code> // 这样是正确的 $model = new Test(); // 把需要验证的 attribute 放进去,排除验证码字段 $model->validate(array('test1','test2')); $model->save()</code>
我们可以看framework/web/widgets/captcha/CCaptchaAction.php
可以很容易就发现问题了
<code> <?php class CaptchaAction extends CCaptchaAction { public function validate($input, $caseSensitive) { $code = $this->getVerifyCode(); $valid = $caseSensitive ? ($input === $code) : !strcasecmp($input, $code); $session = Yii::app()->session; $session->open(); $name = $this->getSessionKey() . 'count'; if (!Yii::app()->request->isAjaxRequest) { $session[$name] = $session[$name] + 1; } // 这里会重新生成 if ($session[$name] > $this->testLimit && $this->testLimit > 0) { $this->getVerifyCode(true); } return $valid; } } </code>
以上就介绍了解决Yii 输入正确验证码验证失败,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

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

Ramai pengguna akan memilih jenama Huawei apabila memilih jam tangan pintar Antaranya, Huawei GT3pro dan GT4 adalah pilihan yang sangat popular. Apakah perbezaan antara Huawei GT3pro dan GT4? 1. Rupa GT4: 46mm dan 41mm, bahan cermin kaca + badan keluli tahan karat + cangkang belakang gentian resolusi tinggi. GT3pro: 46.6mm dan 42.9mm, bahannya ialah kaca nilam + badan titanium/badan seramik + cangkerang belakang seramik 2. GT4 yang sihat: Menggunakan algoritma Huawei Truseen5.5+ terkini, hasilnya akan lebih tepat. GT3pro: Penambahan elektrokardiogram ECG dan saluran darah serta keselamatan

Masalah ditemui dalam masa tamat masa pengeluaran projek springboot Masalahnya diterangkan di bawah: Dalam persekitaran ujian, sesi keluar telah dikonfigurasikan dengan menukar aplikasi.yaml Selepas menetapkan masa yang berbeza untuk mengesahkan bahawa konfigurasi keluar sesi berkuat kuasa, masa tamat tempoh ditetapkan terus kepada 8 jam untuk dilepaskan. Walau bagaimanapun, saya menerima maklum balas daripada pelanggan pada waktu tengah hari bahawa masa tamat projek ditetapkan menjadi singkat Jika tiada operasi dilakukan selama setengah jam, sesi akan tamat tempoh dan memerlukan log masuk berulang. Selesaikan masalah pengendalian persekitaran pembangunan: projek springboot mempunyai Tomcat terbina dalam, jadi sesi keluar yang dikonfigurasikan dalam application.yaml dalam projek adalah berkesan. Persekitaran pengeluaran: Keluaran persekitaran pengeluaran ialah

Kegagalan sesi biasanya disebabkan oleh tamat tempoh seumur hidup sesi atau penutupan pelayan. Penyelesaian: 1. Memanjangkan hayat sesi; 2. Gunakan storan berterusan;

Penyelesaian kepada masalah silang domain PHPSession Dalam pembangunan pemisahan front-end dan back-end, permintaan merentas domain telah menjadi kebiasaan. Apabila menangani isu merentas domain, kami biasanya melibatkan penggunaan dan pengurusan sesi. Walau bagaimanapun, disebabkan oleh sekatan dasar asal penyemak imbas, sesi tidak boleh dikongsi secara lalai merentas domain. Untuk menyelesaikan masalah ini, kita perlu menggunakan beberapa teknik dan kaedah untuk mencapai perkongsian sesi merentas domain. 1. Penggunaan kuki yang paling biasa untuk berkongsi sesi merentas domain

Mengapa Alat Snipping Tidak Berfungsi pada Windows 11 Memahami punca masalah boleh membantu mencari penyelesaian yang betul. Berikut ialah sebab utama Alat Snipping mungkin tidak berfungsi dengan betul: Focus Assistant dihidupkan: Ini menghalang Snipping Tool daripada dibuka. Aplikasi rosak: Jika alat snipping ranap semasa pelancaran, ia mungkin rosak. Pemacu grafik lapuk: Pemacu yang tidak serasi mungkin mengganggu alat snipping. Gangguan daripada aplikasi lain: Aplikasi lain yang sedang berjalan mungkin bercanggah dengan Alat Snipping. Sijil telah tamat tempoh: Ralat semasa proses naik taraf boleh menyebabkan penyelesaian mudah ini sesuai untuk kebanyakan pengguna dan tidak memerlukan sebarang pengetahuan teknikal khusus. 1. Kemas kini apl Windows dan Microsoft Store

Penyelesaian kepada masalah bahawa sesi php hilang selepas menyegarkan: 1. Buka sesi melalui "session_start();" 2. Tulis semua konfigurasi awam dalam fail php 3. Nama pembolehubah tidak boleh sama dengan subskrip tatasusunan; 4. Dalam Hanya semak laluan penyimpanan data sesi dalam phpinfo dan semak sama ada sesio dalam direktori fail berjaya disimpan.

Masa tamat lalai PHP sesi ialah 1440 saat, iaitu 24 minit, yang bermaksud bahawa jika pelanggan tidak memuat semula selama lebih daripada 24 minit, sesi semasa akan tamat tempoh jika pengguna menutup penyemak imbas, sesi akan tamat dan Sesi tidak akan wujud lagi.

Apabila anda menggunakan sesi PHP (Sesi), kadangkala anda akan mendapati bahawa Sesi boleh dibaca secara normal dalam satu fail, tetapi tidak boleh dibaca dalam fail lain. Ini mungkin mengelirukan anda kerana data sesi sepatutnya dikongsi di seluruh aplikasi. Artikel ini akan menerangkan cara membaca dan menulis data sesi PHP dengan betul dalam berbilang fail.
