Neden benim özel CodeIgniter kütüphanesi oldukça kafa karıştırıcı bir hata mesajı ile başarısız oluyor?

0 Cevap php

Yani Base62 içine şeyler şifrelemek ve tekrar tekrar şifresini birlikte bu CodeIgniter kütüphane koyduk.

Soran hemen önce, dosya application / libraries / Basecrypt.php olduğunu

Burada Basecrypt.php içeriğini Var:

    <?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Basecrypt
{       
    function encode($val) {
        // can't handle numbers larger than 2^31-1 = 2147483647
        $base = 62;
        $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $str = '';
        do {
            $i = $val % $base;
            $str = $chars[$i] . $str;
            $val = ($val - $i) / $base;
        } while($val > 0);

        return $str;
    }

    function decode($str) {
        $base = 62;
        $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

        $len = strlen($str);
        $val = 0;
        $arr = array_flip(str_split($chars));
        for($i = 0; $i < $len; ++$i) {
            $val += $arr[$str[$i]] * pow($base, $len-$i-1);
        }

        return $val;
    }

}

/* End of file Basecrypt.php */
/* Location: ./application/libraries/Basecrypt.php */

Bu konuda özellikle şaşırtıcı bir şey yok. Sadece kodlar ve dekode etmektedir. Bildiğim kadarıyla söyleyebilirim, ben CodeIgniter'ın kılavuzu belirten HER kuralı takip ettik.

Şimdi, sadece% 100 emin olmak için, ben de autoload de Basecrypt yüklenen VE benim Kontrolör ettik. Ben bunu kullanıyorum İşte burada:

$id = $this->input->post('id');
echo $this->basecrypt->encrypt($id);

Evet, $ id kesinlikle ayarlanır. Ama, hiçbir şey olmuyor ve benim PHP günlüğüne yazılmış bu hata mesajını alıyorum:

PHP Ölümcül hata: tanımsız yöntemi CI_Form_validation :: encrypt'in () in / satırında 4 Users / Kriko / Siteler / mysite.com / sistem / uygulama / izleme / kod / viewajax.php Çağrı

Ben biraz balık var, düşündüm. CI_Form_validation?! Ben her yerde ... ben yaptım hiç bahsetmedi?

Yani nihai onay olarak ben (Awards.php denir) kullanan başka bir özel kitaplığa iki işlevi kodlamak () ve decode () koymak ve üzeri $this->awards->encode($id) - denilen ve that worked entirely fine !

Meseleyi daha da karmaşık hale getirmek için, ben sadece sınıf bildirimi yeniden adlandırma, tüm Awards.php Basecrypt.php dosyası içine yapıştırılan-kopyalama, ve bir kez daha üzerinden arama $this->basecrypt->encode($id) çalıştı - aynı çıkardığını, ancak hatası. Basecrypt bu sürümünde ve mükemmel iyi çalıştı hangi Ödülleri sürümü arasında hiçbir farklılıklara rağmen. Hatta fonksiyonları ve bir şey ayrıldı örtmek sınıfını yeniden adlandırma denedim, ama hiç fark etmez.

Herhangi bir fikir? Teşekkürler, ben gerçekten yardım ederiz!

Kriko

0 Cevap