ilch Forum » Ilch Clan 1.1 » Fehlersuche und Probleme » Fatal error: PwCrypt

Geschlossen
  1. #1
    User Pic
    Sub-Zero Mitglied
    Registriert seit
    11.02.2008
    Beiträge
    57
    Beitragswertungen
    1 Beitragspunkte
    Moin @ll

    Ich bekomme seit gestern immer diese fehler meldung:

    Fatal error: Class 'PwCrypt' not found in Clan-SW/Page/include/includes/func/user.php on line 87

    Wo ist da der fehler?

    <?php
    
    # hier werden alle user spezifischen funktionen
    # definert...
    
    function user_identification () {
    user_auth();
    user_login_check();
    user_update_database();
    user_check_url_rewrite();
    }
    
    function user_auth () {
    debug (\'user - auth gestartet\'. session_id());
    $cn = session_und_cookie_name();
    if (!user_key_in_db()
    OR !isset($_SESSION[\'authid\'])
    OR (isset($_SESSION[\'authsess\']) AND $_SESSION[\'authsess\'] != $cn)) {
    
    debug (\'user - nicht in db oder nicht authid\');
    
    user_set_guest_vars();
    user_set_user_online ();
    
    # wenn cn cookie vorhanden
    # dann checken ob er sich damit einloggen darf
    if (isset($_COOKIE[$cn])) {
    user_auto_login_check();
    }
    
    # gruppen, und modulzugehoerigkeit setzten
    user_set_grps_and_modules();
    }
    }
    
    function user_check_url_rewrite() {
    global $allgAr;
    if ( !loggedin() AND $allgAr[\'show_session_id\'] == 0 ) {
    # loescht die sessionid von allen urls
    # auch urls wie formulare usw. damit
    # suchmaschienen bots nicht iritiert sind Zwinker
    # output_reset_rewrite_vars ist eine php funktion
    # nicht unnoetig dannach suchen Zwinker ...
    output_reset_rewrite_vars ();
    }
    }
    
    function user_update_database () {
    $dif = date(\'Y-m-d H:i:s\', time() - 7200);
    db_query(\"UPDATE prefix_online SET uptime = now() WHERE sid = \'\".session_id().\"\'\"Zwinker;
    db_query(\"DELETE FROM prefix_online WHERE uptime < \'\". $dif.\"\'\"Zwinker;
    if ( loggedin() ) {
    db_query(\"UPDATE prefix_user SET llogin = \'\".time().\"\' WHERE id = \'\".$_SESSION[\'authid\'].\"\'\"Zwinker;
    }
    }
    
    function user_set_user_online () {
    global $allgAr;
    if (0 == db_result(db_query(\"SELECT COUNTStar FROM prefix_online WHERE sid = \'\".session_id().\"\'\"Zwinker,0) ) {
    db_query(\"INSERT INTO prefix_online (sid,uptime,ipa) VALUES (\'\".session_id().\"\',now(),\'\".getip().\"\')\"Zwinker;
    }
    $_SESSION[\'authgfx\'] = $allgAr[\'gfx\'];
    }
    
    function user_key_in_db() {
    if ( 1 == db_result(db_query(\"SELECT COUNTStar FROM prefix_online WHERE sid = \'\".session_id().\"\'\"Zwinker,0) ) {
    return ( true );
    } else {
    return ( false );
    }
    }
    
    function session_und_cookie_name () {
    return (md5(dirname($_SERVER[\"HTTP_HOST\"].$_SERVER[\"SCRIPT_NAME\"]).DBPREF));
    }
    
    function user_pw_crypt($plainPassword) {
    if (version_compare(PHP_VERSION, \'5.0\') !== -1) {
    $pwCrypt = new PwCrypt();
    return $pwCrypt->cryptPasswd($plainPassword);
    }
    return md5($plainPassword);
    }
    
    function user_pw_check($plainPassword, &$passwordHash, $userId = false) {
    if (version_compare(PHP_VERSION, \'5.0\') !== -1) {
    $pwCrypt = new PwCrypt();
    $correct = $pwCrypt->checkPasswd($plainPassword, $passwordHash);
    if ($correct && $userId !== false && $pwCrypt->checkHashStrength($passwordHash)) {
    $passwordHash = $pwCrypt->cryptPasswd($plainPassword);
    if ($passwordHash) {
    db_query(\'UPDATE `prefix_user` SET `pass` = \"\' . $passwordHash . \'\" WHERE `id` = \' . $userId);
    }
    }
    return $correct;
    }
    return md5($plainPassword) === $passwordHash;
    }
    
    function user_set_cookie($id, $cryptedPassword) {
    $cookieString = $id . \'=\' . md5(DBUSER . $cryptedPassword);
    setcookie($_SESSION[\'authsess\'], $cookieString , strtotime(\'+1 year\'), \'/\' );
    }
    
    function user_cookie_check($cookieHash, $cryptedPassword) {
    return md5(DBUSER . $cryptedPassword) == $cookieHash;
    }
    
    function user_login_check () {
    if ( isset ($_POST[\'user_login_sub\']) AND isset ($_POST[\'name\']) AND isset ($_POST[\'pass\']) ) {
    debug (\'posts vorhanden\');
    $name = escape_nickname($_POST[\'name\']);
    if ($name != $_POST[\'name\'] OR strlen($_POST[\'name\']) > 15) {
    return false;
    }
    $erg = db_query(\"SELECT name,id,recht,pass,llogin FROM prefix_user WHERE name = BINARY \'\".$name.\"\'\"Zwinker;
    if ( db_num_rows($erg) == 1 ) {
    debug (\'user gefunden\');
    $row = db_fetch_assoc($erg);
    if (user_pw_check($_POST[\'pass\'], $row[\'pass\'], $row[\'id\']) ) {
    debug (\'passwort stimmt ... \'.$row[\'name\']);
    $_SESSION[\'authname\'] = $row[\'name\'];
    $_SESSION[\'authid\'] = $row[\'id\'];
    $_SESSION[\'authright\'] = $row[\'recht\'];
    $_SESSION[\'lastlogin\'] = $row[\'llogin\'];
    $_SESSION[\'authsess\'] = session_und_cookie_name();
    db_query(\"UPDATE prefix_online SET uid = \".$_SESSION[\'authid\'].\" WHERE sid = \'\".session_id().\"\'\"Zwinker;
    user_set_cookie($row[\'id\'], $row[\'pass\']);
    user_set_grps_and_modules();
    return (true);
    }
    }
    global $menu;
    $menu->set_url (0, \'user\');
    $menu->set_url (1, \'login\');
    }
    return ( false );
    }
    
    function user_auto_login_check () {
    $cn = session_und_cookie_name();
    $dat = explode(\'=\',$_COOKIE[$cn]);
    $id = $pw = 0;
    if (isset($dat[0])) { $id = escape($dat[0], \'integer\'); }
    if (isset($dat[1])) { $pw = $dat[1]; }
    debug (\' pw \' . $pw );
    debug (\' id \' . $id );
    $erg = db_query(\"SELECT name,id,recht,pass,llogin FROM prefix_user WHERE id = \".$id);
    if (db_num_rows($erg) == 1) {
    debug (\'benutzer gefunden\');
    $row = db_fetch_assoc($erg);
    if (user_cookie_check($pw, $row[\'pass\'])) {
    debug (\'passwoerter stimmen\');
    debug ($row[\'name\']);
    $_SESSION[\'authname\'] = $row[\'name\'];
    $_SESSION[\'authid\'] = $row[\'id\'];
    $_SESSION[\'authright\'] = $row[\'recht\'];
    $_SESSION[\'lastlogin\'] = $row[\'llogin\'];
    $_SESSION[\'authsess\'] = $cn;
    db_query(\"UPDATE prefix_online SET uid = \".$_SESSION[\'authid\'].\" WHERE sid = \'\".session_id().\"\'\"Zwinker;
    user_set_cookie($row[\'id\'], $row[\'pass\']);
    return (true);
    }
    }
    
    user_logout ();
    return (false);
    }
    
    function user_set_guest_vars() {
    $_SESSION[\'authname\'] = \'Gast\';
    $_SESSION[\'authid\'] = 0;
    $_SESSION[\'authright\'] = 0;
    $_SESSION[\'lastlogin\'] = time();
    $_SESSION[\'authgrp\'] = array();
    $_SESSION[\'authmod\'] = array();
    $_SESSION[\'authsess\'] = session_und_cookie_name();
    }
    
    function user_markallasread () {
    $_SESSION[\'lastlogin\'] = time();
    }
    
    function user_logout () {
    #global $allgAr;
    #$_SESSION = array();
    #$_SESSION[\'authgfx\'] = $allgAr[\'gfx\'];
    user_set_guest_vars();
    db_query(\"UPDATE prefix_online SET uid = \".$_SESSION[\'authid\'].\" WHERE sid = \'\".session_id().\"\'\"Zwinker;
    setcookie(session_und_cookie_name(), \"\", time()-999999999999, \"/\" );
    #if (isset($_COOKIE[session_name()])) {
    # setcookie(session_name(), \'\', time()-99999999999931104000, \'/\');
    #}
    #setcookie(session_und_cookie_name(), \"\", time()-999999999999, \"/\" );
    #session_destroy();
    }
    
    function user_set_grps_and_modules() {
    $_SESSION[\'authgrp\'] = array();
    $_SESSION[\'authmod\'] = array();
    $_SESSION[\'adminaccess\'] = array();
    if (loggedin()) {
    $erg = db_query(\'SELECT gid FROM prefix_groupusers WHERE uid = \' . $_SESSION[\'authid\']);
    while ($row = db_fetch_assoc($erg)) {
    $_SESSION[\'authgrp\'][$row[\'gid\']] = true;
    }
    $erg = db_query(\'SELECT DISTINCT m.url, m.gshow \'
    . \'FROM prefix_modulerights mr \'
    . \'INNER JOIN prefix_modules m ON m.id = mr.mid \'
    . \'WHERE mr.uid = \' . $_SESSION[\'authid\']);
    while ($row = db_fetch_assoc($erg)) {
    $_SESSION[\'authmod\'][$row[\'url\']] = true;
    if ($row[\'gshow\']) {
    $_SESSION[\'adminaccess\'][$row[\'url\']] = true;
    }
    }
    }
    }
    
    function loggedin () {
    if ( has_right(-1) ) { return ( true ); } else { return ( false ); }
    }
    function is_admin () {
    if ( has_right(-9) ) { return ( true ); } else { return ( false ); }
    }
    function is_coadmin () {
    if ( has_right(-8) ) { return ( true ); } else { return ( false ); }
    }
    function is_siteadmin ($m = NULL) {
    if ( has_right(-7) ) { return ( true ); }
    if ( !is_null($m) AND has_right(NULL, $m)) { return (true); }
    return ( false );
    }
    
    # diese funktion liefert immer true wenn es ein admin ist.
    # wenn kein kein admin wird geprueft ob der user
    # entweder ein angegebenes recht oder in einer angegebene
    # gruppe ist. oder ob er fals angegben das modulrecht hat.
    # wenn eines von diesen 3 kriterien stimmt wird true ansonsten
    # wenn keins uebereinstimmt false zurueck gegeben.
    function has_right ($recht,$modul = \'\') {
    if ( !is_array($recht) AND !is_null($recht) ) {
    $recht = array ( $recht );
    }
    
    if ( $_SESSION[\'authright\'] == -9 ) {
    return ( true );
    }
    
    if ( !is_null($recht) ) {
    foreach ( $recht as $v ) {
    if ( ($v <= 0 AND $v >= $_SESSION[\'authright\'] ) OR (isset($_SESSION[\'authgrp\'][$v]) AND $_SESSION[\'authgrp\'][$v] === true) ) {
    return (true);
    }
    }
    }
    
    if ( !empty($modul) AND isset($_SESSION[\'authmod\'][$modul]) AND $_SESSION[\'authmod\'][$modul] === true ) {
    return ( true );
    }
    
    return (false);
    }
    
    ### admin
    # wenn der 2. parameter weggelassen wird oder auf true gesetzt wird
    # dann wird ein login formular angezeigt, wenn der user kein admin ist.
    # wird der parameter auf false gesetzt wird das login formular nicht angezeigt.
    # erste parameter ist das menu objekt...
    function user_has_admin_right($menu, $sl = true) {
    if ($_SESSION[\'authright\'] <= -8) { # co leader...
    return true;
    } else {
    $uri_to_check1 = $menu->get(0);
    $uri_to_check2 = $menu->get(1);
    if (count($_SESSION[\'adminaccess\']) < 1 OR !loggedin()) {
    if ($sl === true) {
    if (!loggedin()) {
    $tpl = new tpl(\'user/login.htm\');
    $tpl->set_out(\'WDLINK\', \'admin.php\', 0);
    } else {
    echo \'<strong>Keine Berechtigung!</strong> <a href=\"index.php\">Startseite</a>\';
    }
    }
    return false;
    } elseif ((isset($_SESSION[\'adminaccess\'][$uri_to_check1]) AND $_SESSION[\'adminaccess\'][$uri_to_check1] == true)
    || (isset($_SESSION[\'adminaccess\'][$uri_to_check1 . \'-\' . $uri_to_check2]) AND $_SESSION[\'adminaccess\'][$uri_to_check1 . \'-\' . $uri_to_check2] == true)
    ) {
    return true;
    } elseif (count($_SESSION[\'adminaccess\']) > 0 AND loggedin()) {
    if ($sl === true) {
    foreach ($_SESSION[\'adminaccess\'] as $k => $v) {
    $x = $k;
    break;
    }
    $x = explode(\'-\', $x);
    $menu->set_url(0, $x[0]);
    if (isset($x[1])) {
    $menu->set_url(1, $x[1]);
    }
    }
    return true;
    }
    }
    return false;
    }
    
    function user_regist ($name, $mail, $pass) {
    global $allgAr, $lang;
    
    $erg = db_query(\"SELECT id FROM prefix_user WHERE name = BINARY \'\".$name.\"\'\"Zwinker;
    if (db_num_rows($erg) > 0) {
    return (false);
    }
    
    if ( $allgAr[\'forum_regist_user_pass\'] == 0 ) {
    $new_pass = genkeybeer;
    } else {
    $new_pass = $pass;
    }
    
    $passwordHash = user_pw_crypt($new_pass);
    $confirmlinktext = \'\';
    
    # confirm insert in confirm tb not confirm insert in user tb
    if ( $allgAr[\'forum_regist_confirm_link\'] == 1 ) {
    # confirm link + text ... bit of shit put it in languages file
    $page = $_SERVER[\"HTTP_HOST\"].$_SERVER[\"SCRIPT_NAME\"];
    $id = md5 (uniqid (rand()));
    $confirmlinktext = \"\\n\".$lang[\'registconfirm\'].\"\\n\\n\".sprintf($lang[\'registconfirmlink\'], $page, $id );
    db_query(\"INSERT INTO prefix_usercheck (`check`,name,email,pass,datime,ak)
    VALUES (\'\".$id.\"\',\'\".$name.\"\',\'\".$mail.\"\',\'\".$passwordHash.\"\',NOW(),1)\"Zwinker;
    } else {
    db_query(\"INSERT INTO prefix_user (name,pass,recht,regist,llogin,email,status,opt_mail,opt_pm)
    VALUES(\'\".$name.\"\',\'\".$passwordHash.\"\',-1,\'\".time().\"\',\'\".time().\"\',\'\".$mail.\"\',1,1,1)\"Zwinker;
    $userid = db_last_id();
    }
    $regmail = sprintf($lang[\'registemail\'],$name, $confirmlinktext, $name, $new_pass);
    
    icmail($mail,\'Anmeldung\',$regmail); # email an user
    
    return (true);
    }
    
    function user_remove($uid){
    $row = @db_fetch_object(db_query(\"SELECT recht,avatar FROM prefix_user WHERE id = \".$uid));
    if ( $uid <> 1 AND ($_SESSION[\'authid\'] == $uid OR $_SESSION[\'authid\'] == 1 OR (is_coadmin() AND $_SESSION[\'authright\'] < $row->recht))) {
    db_query(\"DELETE FROM prefix_user WHERE id = \".$uid);
    db_query(\"DELETE FROM prefix_userfields WHERE uid = \".$uid);
    db_query(\"DELETE FROM prefix_groupusers WHERE uid = \".$uid);
    db_query(\"DELETE FROM prefix_modulerights WHERE uid = \".$uid);
    db_query(\"DELETE FROM prefix_pm WHERE eid = \".$uid);
    db_query(\"DELETE FROM prefix_online WHERE uid = \".$uid);
    //Usergallery entfernen
    $sql = db_query(\"SELECT id,endung FROM prefix_usergallery WHERE uid = \".$uid);
    while( $r = db_fetch_object($sql) ){
    @unlink(\"include/images/usergallery/img_$r->id.$r->endung\"Zwinker;
    @unlink(\"include/images/usergallery/img_thumb_$r->id.$r->endung\"Zwinker;
    }
    db_query(\"DELETE FROM prefix_usergallery WHERE uid = \".$uid);
    //Avatar
    @unlink($row->avatar);
    }
    }
    
    function sendpm ($sid,$eid,$ti,$te,$status = 0) {
    if (is_array($eid)) {
    db_query(\"INSERT INTO `prefix_pm` (`sid`,`eid`,`time`,`titel`,`txt`,`status`) \".
    \"SELECT \".$sid.\",`prefix_user`.`id`,\'\".time().\"\',\'\".$ti.\"\',\'\".$te.\"\',\".$status.\" FROM `prefix_user` WHERE `prefix_user`.`id` IN (\" . implode(\',\', $eid) . \"Zwinker\"Zwinker;
    } else {
    db_query(\"INSERT INTO `prefix_pm` (`sid`,`eid`,`time`,`titel`,`txt`,`status`) VALUES (\".$sid.\",\".$eid.\",\'\".time().\"\',\'\".$ti.\"\',\'\".$te.\"\',\".$status.\"Zwinker\"Zwinker;
    }
    }
    ?>



    verwendete ilch Version: 1.1 P

    betroffene Homepage: externer Link


    Zuletzt modifiziert von Sub-Zero am 20.01.2014 - 12:05:20
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Outi77 Mitglied
    Registriert seit
    31.03.2013
    Beiträge
    1.337
    Beitragswertungen
    143 Beitragspunkte
    Hast Du ein Update auf Version P gemacht und wenn ja, wie?
    Oder irgendeine andere Aktion, es fehlt offensichtlich was.
    Die richtige Formulierung eines Problems ist nicht selten bereits die halbe Lösung.
    »Albert Einstein«
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Sub-Zero Mitglied
    Registriert seit
    11.02.2008
    Beiträge
    57
    Beitragswertungen
    1 Beitragspunkte
    Hab gestern normal den Update auf P gemacht wie immer und seit dem ist das -.-

    Kann es sein das der fehler da ist weil ich BBCode 2.0 drauf hatte? mairu.ilch.de/index.php?downloads-show-34
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    holz Hall Of Fame
    Registriert seit
    17.11.2005
    Beiträge
    4.606
    Beitragswertungen
    117 Beitragspunkte
    eher daran dass du eventuell eine andere user.php hast ... hast du module installiert die die user.php überschrieben haben?

    hast du die user.php aus dem update hochgeladen und die alter upser.php überschrieben?
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Sub-Zero Mitglied
    Registriert seit
    11.02.2008
    Beiträge
    57
    Beitragswertungen
    1 Beitragspunkte
    hab die user.php beim update überschrieben
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Outi77 Mitglied
    Registriert seit
    31.03.2013
    Beiträge
    1.337
    Beitragswertungen
    143 Beitragspunkte
    Also da in der Fehlermeldung "Class" steht, glaube ich nicht, dass es an der user.php liegt. Sonst würde da was von function stehen...glaube ich.
    Die richtige Formulierung eines Problems ist nicht selten bereits die halbe Lösung.
    »Albert Einstein«
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    holz Hall Of Fame
    Registriert seit
    17.11.2005
    Beiträge
    4.606
    Beitragswertungen
    117 Beitragspunkte
    ja das problem ist ja dass die in zeile 87 versucht wird ein neues Objekt der Classe pwcrypt zu erzeugen. ... und er die classe pwtcrypt nicht findet ...

    ich weiß nicht auswendig wo die drin sein sollte ... die fehlt aber auf jedenfall


    hab grad mal geschaut ... schau mal im ordner include/includes/class ob es da einen pwcrypt.php gibt


    Zuletzt modifiziert von holz am 19.01.2014 - 17:37:36
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Sub-Zero Mitglied
    Registriert seit
    11.02.2008
    Beiträge
    57
    Beitragswertungen
    1 Beitragspunkte
    da ist ein pwcrypt.php

    <?php
    /**
     * @license http://opensource.org/licenses/gpl-2.0.php The GNU General Public License (GPL)
     * @copyright (C) 2000-2012 ilch.de
     */
    defined('main') or die('no direct access');
    
    /**
     * PwCrypt
     * 
     * Achtung: beim Übertragen von mit 2a erzeugten Passwörtern auf einen anderen PC/Server,
     * dort kann es u.U. passieren, dass eine Authentifikation nicht mehr möglich ist,
     * da 2a auf einigen System fehlerhafte Ergebnisse liefert.
     * Verwende dann die $backup Parameter bei checkPasswd
     *
     * @author finke <Surf-finke@gmx.de>
     * @autor Mairu
     * @copyright Copyright (c) 2012 - 2013
     */
    class PwCrypt
    {
        const LETTERS = 1;    //0001
        const NUMBERS = 2;    //0010
        const ALPHA_NUM = 3;    //0011
        const URL_CHARACTERS = 4;   //0100
        const FOR_URL = 7;    //0111
        const SPECIAL_CHARACTERS = 8; //1000
        //Konstanten für die Verschlüsselung
        const MD5 = '1';
        const BLOWFISH_OLD = '2a';
        const BLOWFISH = '2y';
        const BLOWFISH_FALSE = '2x';
        const SHA256 = '5';
        const SHA512 = '6';
    
        private $hashAlgorithm = self::SHA256;
    
        /**
         * PwCrypt::checkHashStrength wird immer false zurückliefern, wenn dieser Wert true ist
         *
         * @var boolean
         */
        private $dontCheckHashStrength = false;
    
        /**
         * @param string $lvl Gibt den zu verwendenden Hashalgorithmus an (Klassenkonstante)
         */
        public function __construct($lvl = '')
        {
            if (!empty($lvl)) {
                $this->hashAlgorithm = $lvl;
            }
    
            // wenn 2x oder 2y gewählt, aber nicht verfügbar, nutze 2a
            if (version_compare(PHP_VERSION, '5.3.7', '<')
                && in_array($this->hashAlgorithm, array(self::BLOWFISH, self::BLOWFISH_FALSE))
            ) {
                $this->hashAlgorithm = self::BLOWFISH_OLD;
            }
    
            // Prüfen welche Hash Funktionen Verfügbar sind. Ab 5.3.2 werden alle mitgeliefert
            if (version_compare(PHP_VERSION, '5.3.2', '<')) {
                if ($this->hashAlgorithm === self::SHA512 && (!defined('CRYPT_SHA512') || CRYPT_SHA512 !== 1)) {
                    $this->hashAlgoriathm = self::SHA256; // Wenn SHA512 nicht verfügbar, versuche SHA256
                }
                if ($this->hashAlgorithm === self::SHA256 && (!defined('CRYPT_SHA256') || CRYPT_SHA256 !== 1)) {
                    $this->hashAlgorithm = self::BLOWFISH_OLD; // Wenn SHA256 nicht verfügbar, versuche BLOWFISH
                }
                if ($this->hashAlgorithm === self::BLOWFISH_OLD && (!defined('CRYPT_BLOWFISH') || CRYPT_BLOWFISH !== 1)) {
                    $this->hashAlgorithm = self::MD5; // Wenn BLOWFISH nicht verfügbar, nutze MD5
                }
            }
    
            /* Wenn 2a oder 2x gewählt, aber 2y verfügbar: nutze trotzdem 2y, da dies sicherer ist; */
            if (version_compare(PHP_VERSION, '5.3.7', '>=')
                && in_array($this->hashAlgorithm, array(self::BLOWFISH_OLD, self::BLOWFISH_FALSE))
            ) {
                $this->hashAlgorithm = self::BLOWFISH;
            }
        }
    
        /**
         * Erstellt eine zufällige Zeichenkette
         *
         * @param integer $size Länge der Zeichenkette
         * @param integer $chars Angabe welche Zeichen für die Zeichenkette verwendet werden
         * @return string
         */
        public static function getRndString($size = 20, $chars = self::LETTERS)
        {
            if ($chars & self::LETTERS) {
                $pool = 'abcdefghijklmnopqrstuvwxyz';
                $pool .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
            }
    
            if ($chars & self::NUMBERS) {
                $pool .='0123456789';
            }
    
            //in einer URL nicht reservierte Zeichen
            if ($chars & (self::URL_CHARACTERS | self::SPECIAL_CHARACTERS)) {
                $pool .= '-_.~';
            }
    
            //restiliche Sonderzeichen
            if ($chars & self::SPECIAL_CHARACTERS) {
                $pool .= '!#$%&()*+,/:;=?@[]';
            }
    
            $pool = str_shuffle($pool);
            $pool_size = strlen($pool);
            $string = '';
            for ($i = 0; $i < $size; $i++) {
                //TODO: Zufallszahlen aus /dev/random bzw /dev/urandom wenn verfügbar
                $string .= $pool[mt_rand(0, $pool_size - 1)];
            }
            return $string;
        }
    
        /**
         * Prüft, ob der übergebene Hash, im crypt Format ist
         *
         * @param mixed $hash
         * @return boolean
         */
        public static function isCryptHash($hash)
        {
            return (preg_match('/^\$([156]|2[axy])\$/', $hash) === 1);
        }
    
        /**
         * Wenn der übergebene Hash einen schwächeren Algorithmus verwendet (kleinere Zahl) wird true zurück geliefert
         * (schwächere Hashs werden an andere Stelle (user_pw_check()) mit neuem Algorithmus gespeichert)
         * 
         * @param string $hash
         * @return boolean
         */
        public function checkHashStrength($hash)
        {
            $matches = array();
            if ($this->dontCheckHashStrength) {
                return false;
            }
            if (!self::isCryptHash($hash)) {
                return true;
            }
            if (preg_match('/^\$([1256])([axy])?\$/', $hash, $matches) === 1) {
                $hashAlgoNumber = $matches[1];
                $hashAlgoLetter = isset($matches[2]) ? $matches[2] : '';
                if (preg_match('/^([1256])([axy])?$/', $this->hashAlgorithm, $matches) === 1) {
                    if ($matches[1] > $hashAlgoNumber) {
                        return true;
                    } elseif ($matches[1] === '2' && $hashAlgoNumber === '2' && $matches[2] > $hashAlgoLetter) {
                        return true;
                    }
                }
            }
            return false;
        }
    
        /**
         * Gibt den Code der gewählten/genutzen Hashmethode zurück (Crypt Konstante)
         *
         * @return string
         */
        public function getHashAlgorithm()
        {
            return $this->hashAlgorithm;
        }
    
        /**
         * Erstellt ein Hash für das übergebene Passwort
         *
         * @param string $passwd Klartextpasswort
         * @param string $salt Salt für den Hashalgorithus
         * @param integer $rounds Anzahl der Runden für den verwendeten Hashalgorithmus
         * @return string Hash des Passwortes (Ausgabe von crypt())
         */
        public function cryptPasswd($passwd, $salt = '', $rounds = 0)
        {
            $salt_string = '';
            switch ($this->hashAlgorithm) {
                case self::SHA512:
                case self::SHA256:
                    $salt = (empty($salt) ? self::getRndString(16, self::LETTERS | self::NUMBERS) : $salt);
                    if ($rounds < 1000 || $rounds > 999999999) {
                        $rounds = mt_rand(2000, 10000);
                    }
                    $salt_string = '$' . $this->hashAlgorithm . '$rounds=' . $rounds . '$' . $salt . '$';
                    break;
                case self::BLOWFISH:
                case self::BLOWFISH_OLD:
                    $salt = (empty($salt) ? self::getRndString(22, self::LETTERS | self::NUMBERS) : $salt);
                    if ($rounds < 4 || $rounds > 31) {
                        $rounds = mt_rand(6, 10);
                    }
                    $salt_string = '$' . $this->hashAlgorithm . '$' . str_pad($rounds, 2, '0', STR_PAD_LEFT) . '$' . $salt . '$';
                    break;
                case self::MD5:
                    $salt = (empty($salt) ? self::getRndString(12, self::LETTERS | self::NUMBERS) : $salt);
                    $salt_string = '$' . $this->hashAlgorithm . '$' . $salt . '$';
                    break;
                default:
                    return false;
            }
            $crypted_pw = crypt($passwd, $salt_string);
            if (strlen($crypted_pw) < 13) {
                return false;
            }
            return $crypted_pw;
        }
    
        /**
         * Prüft, ob das Klartextpasswort dem Hash "entspricht"
         *
         * @param mixed $passwd Klartextpasswort
         * @param mixed $crypted_passwd Hash des Passwortes (aus der Datenbank)
         * @param boolean $backup wenn Check fehlschlägt und das alte passwort mit BLOWFISH_OLD verschlüsselt wurde,
         *      werden beide Varianten noch einmal explizit geprüft, wenn verfügbar. Nur nach Transfer der Datenbank verwenden,
         *      da dies ein Sicherheitsrisiko darstellen kann
         * @return boolean
         */
        public function checkPasswd($passwd, $crypted_passwd, $backup = false)
        {
            if (empty($crypted_passwd)) {
                return false;
            }
            if (self::isCryptHash($crypted_passwd)) {
                $new_chrypt_pw = crypt($passwd, $crypted_passwd);
                if (strlen($new_chrypt_pw) < 13) {
                    return false;
                }
            } else {
                $new_chrypt_pw = md5($passwd);
            }
            if ($new_chrypt_pw == $crypted_passwd) {
                return true;
            } else {
                if ($backup == true
                    && version_compare(PHP_VERSION, '5.3.7', '>=')
                    && substr($crypted_passwd, 0, 4) == '$2a$'
                ) {
                    $password_x = '$2x$' . substr($crypted_passwd, 4);
                    $password_y = '$2y$' . substr($crypted_passwd, 4);
                    $password_neu_x = crypt($passwd, $password_x);
                    $password_neu_y = crypt($passwd, $password_y);
                    if ($password_neu_x === $password_x || $password_neu_y === $password_y) {
                        return true;
                    }
                }
            }
            return false;
        }
    }
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    holz Hall Of Fame
    Registriert seit
    17.11.2005
    Beiträge
    4.606
    Beitragswertungen
    117 Beitragspunkte
    hmm komisch ... mach mal in der user.php

    require_once('include/includes/class/pwcrypt.php');
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Sub-Zero Mitglied
    Registriert seit
    11.02.2008
    Beiträge
    57
    Beitragswertungen
    1 Beitragspunkte
    bei welcher zeile?
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    holz Hall Of Fame
    Registriert seit
    17.11.2005
    Beiträge
    4.606
    Beitragswertungen
    117 Beitragspunkte
    nach <?php
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    Sub-Zero Mitglied
    Registriert seit
    11.02.2008
    Beiträge
    57
    Beitragswertungen
    1 Beitragspunkte
    jetzt kommt bei Member liste:

    Fatal error: Call to undefined function getage() in Clan-SW/Page/include/contents/user/memb_list.php on line 24

    <?php
    #   Copyright by: Manuel Staechele
    #   Support: www.ilch.de
    
    
    defined ('main') or die ( 'no direct access' );
    
    $title = $allgAr['title'].' :: User :: '.$lang['listofmembers'];
    $hmenu = $extented_forum_menu.'User <b> &raquo; </b> '.$lang['listofmembers'].$extented_forum_menu_sufix;
    $design = new design ( $title , $hmenu, 1);
    $design->header();
    
    $limit = 20;  // Limit
    $page = ($menu->getA(1) == 'p' ? $menu->getE(1) : 1 );
    $MPL = db_make_sites ($page , "" , $limit , '?user' , 'user' );
    $anfang = ($page - 1) * $limit;
    
    $tpl = new tpl ( 'user/memb_list.htm' );
    $tpl->set_out ( 'SITELINK', $MPL, 0);
    
    $class = '';
    $erg = db_query("SELECT id, staat, name, gebdatum, status, recht, posts, regist, geschlecht, cpoints, fwarn FROM prefix_user ORDER by recht,posts DESC LIMIT ".$anfang.",".$limit);
    while ($row = db_fetch_object($erg)) {
    if($row->gebdatum=='0000-00-00'){$age='n/a'; } else {$age=getage($row->gebdatum); }   
    
    if(!empty($row->staat)){
    $flag='<img src="include/images/flags/'.$row->staat.'" border="0">';
    } else {
    $flag='';
    }
    $state['0']='inaktiv';
    $state['1']='aktiv';
    $state['2']='gesperrt';
    	$class='Cmite';
    	if ($class == 'Cmite') { $class = 'Cnorm'; } else { $class = 'Cmite'; }
             $rangcount=rangcount($row->id,$row->posts,$row->cpoints,$row->fwarn);
    	$rang=userrang($rangcount,$row->id);
    	$spezrank=spezrang($row->id);
    	if(!empty($spezrank)){$rang=$rang.'<br/>und&nbsp;'.$spezrank;}
    	$ar = array (
    	'NAME' => getgender($row->name,$row->geschlecht).'&nbsp;('.$age.')',
    	'RANG' => $rang,
    	'CLASS' => $class,
    	'POSTS' => $row->posts,
    	'UID'   => $row->id,
    	'DATE' => date('d.m.Y',$row->regist),
    	'RECHT' => getlistrecht($row->recht),
    	'STATE' => $state[$row->status],
    	'FLAG' => $flag
    	);
    	$tpl->set_ar_out($ar,1);
    }
    $tpl->out(2);
    
    $design->footer();
    ?>
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    holz Hall Of Fame
    Registriert seit
    17.11.2005
    Beiträge
    4.606
    Beitragswertungen
    117 Beitragspunkte
    ja da fehlt halt auch was .... da fehlt halt auch ein include oder require ...
    0 Mitglieder finden den Beitrag gut.
  14. #14
    User Pic
    Sub-Zero Mitglied
    Registriert seit
    11.02.2008
    Beiträge
    57
    Beitragswertungen
    1 Beitragspunkte
    was genau und wo hin?
    1 Mitglieder finden den Beitrag gut.
  15. #15
    User Pic
    holz Hall Of Fame
    Registriert seit
    17.11.2005
    Beiträge
    4.606
    Beitragswertungen
    117 Beitragspunkte
    ja du musst einfach mal lesen was da steht ....

    die meisten leute gehen so vor: öh fehler öh was tun ... ???


    da steht doch das die funktion getage() fehlt

    jetzt musst du mal schauen wo die drin ist ..

    mir stellt sich aber die frage wieso es zu solchen fehlern kommt die dürfte es nicht geben ...
    0 Mitglieder finden den Beitrag gut.
  16. #16
    User Pic
    Sub-Zero Mitglied
    Registriert seit
    11.02.2008
    Beiträge
    57
    Beitragswertungen
    1 Beitragspunkte
    Alles klar hab es hinbekommen, in den Loader.php waren so welche daten nicht eingetragen -.-

    Vielen dank für die hilfe


    Zuletzt modifiziert von Sub-Zero am 20.01.2014 - 15:02:36
    0 Mitglieder finden den Beitrag gut.
  17. #17
    User Pic
    ZfX I SaW Mitglied
    Registriert seit
    29.01.2014
    Beiträge
    4
    Beitragswertungen
    0 Beitragspunkte
    hi leute ich hab das gleiche problem nur ist es bei mir wegen der startseite nur bei der index.php finde ich nichts was nicht passt

    dieser fehler wird mir angezeigt:

    Fatal error: require_once() [function.require]: Failed opening required 'include/contents/Startseite.php' (include_path='.:/usr/lib/php') in /data/multiserv/users/664085/projects/2628725/www/index.php on line 38

    verwende ilch 1.1

    <?php
    #   Copyright by: Manuel
    #   Support: www.ilch.de
    
    define ( 'main' , TRUE );
    
    //Konfiguration zur Anzeige von Fehlern
    //Auf http://www.php.net/manual/de/function.error-reporting.php sind die verfügbaren Modi aufgelistet
    
    //Seit php-5.3 ist eine Angabe der TimeZone Pflicht
    if (version_compare(phpversion(), '5.3') != -1) {
    	if (E_ALL > E_DEPRECATED) {
    		@error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED);
    	} else {
    		@error_reporting(E_ALL ^ E_NOTICE);
    	}
    	date_default_timezone_set('Europe/Berlin');
    } else {
    	@error_reporting(E_ALL ^ E_NOTICE);
    }
    @ini_set('display_errors','On');
    
    session_name  ('sid');
    session_start ();
    
    require_once ('include/includes/config.php');
    require_once ('include/includes/loader.php');
    
    db_connect();
    $allgAr = getAllgAr ();
    $menu = new menu();
    user_identification();
    site_statistic();
    
    if ( isset ( $_GET['messenger'] ) ) {
        require_once('include/includes/func/messenger.php');
    }
    require_once ('include/contents/'.$menu->get_url());
    
    db_close();
    if (false) { //debugging aktivieren
    	debug('anzahl sql querys: '.$count_query_xyzXYZ);
    	debug('',1,true);
    }
    ?>


    hoffe ihr könnt mir helfen bin schon am verzweifeln..

    danke im vorraus


    Zuletzt modifiziert von ZfX I SaW am 29.01.2014 - 01:21:54


    Zuletzt modifiziert von ZfX I SaW am 29.01.2014 - 01:22:11
    0 Mitglieder finden den Beitrag gut.
  18. #18
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.629
    Beitragswertungen
    1192 Beitragspunkte
    Failed opening required 'include/contents/Startseite.php'

    Die benötigte Datei include/contents/Startseite.php fehlt und oder wurde vielleicht klein geschrieben.

    Prüfen ob die Datei da ist und/oder überhaupt noch verwendet wird.
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  19. #19
    User Pic
    ZfX I SaW Mitglied
    Registriert seit
    29.01.2014
    Beiträge
    4
    Beitragswertungen
    0 Beitragspunkte
    die fehlt hab sie nicht gefunden bei denn ordner wo sie drinnen sein sollte muss ich da jetzt dann einfach einen code löschen in der index.php wo es versucht das zu öffnen oder was muss ich genau machen sorry


    Zuletzt modifiziert von ZfX I SaW am 29.01.2014 - 14:17:29
    0 Mitglieder finden den Beitrag gut.
  20. #20
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.629
    Beitragswertungen
    1192 Beitragspunkte
    Die Frage ist, wie Du diese Datei eingebunden hast. Gibt es eine Introseite, wurde diese als Startseite in der Konfiguration eingetragen ...

    Am Besten mal nach include/contents/Startseite.php suchen und diese enfernen/ändern.

    Wenn Du komplett nicht klar kommst ... schau ich es mir, wenn gewollt, per FTP an. Dann bitte die Zugangsdaten per PN an mich.
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  21. #21
    User Pic
    ZfX I SaW Mitglied
    Registriert seit
    29.01.2014
    Beiträge
    4
    Beitragswertungen
    0 Beitragspunkte
    also die startseite wurde bei der konfig eingebunden aber ich kann dir gerne die daten schicken weil ich weis echt nicht mehr weiter. danke
    0 Mitglieder finden den Beitrag gut.
  22. #22
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.629
    Beitragswertungen
    1192 Beitragspunkte
    So ... ich habe Dir einfach eine Startseite.php erstellt, damit zumindest mal der Fehler weg ist und die Seite gefunden wird. Nun kannst Du im Adminbereich unter Konfiguration ein anderes Start Modul der Seite auswählen. Im Anschluss einfach die include/contents/Startseite.php wieder löschen.
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  23. #23
    User Pic
    ZfX I SaW Mitglied
    Registriert seit
    29.01.2014
    Beiträge
    4
    Beitragswertungen
    0 Beitragspunkte
    danke danke danke danke danke bist der hammer gg
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Fehlersuche und Probleme

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten