Problema di accesso
Autore: Franco F.
Visite 1321,
Followers 2,
Condiviso 0
Avevo una versione 2019.
Oggi ho aggiornato alla versione 2020.1.7.
Non funziona piú il sistema di LogIn! Mi dá il seguente errore:
Fatal error: Uncaught Error: Call to undefined method ImDb::from_db_data() in /web/htdocs/www.onenesstkd.it/home/imlogin.php:12 Stack trace: #0 {main} thrown in /web/htdocs/www.onenesstkd.it/home/imlogin.php on line 12
COSA DEVO FARE?
Ho giá reimportato gli utenti. Ho visto che su database avete criptato le password che prima erano in chiaro. Ma adesso? Gli utenti che avevo giá registrato?
Postato il
Ciao Franco,
hai impostato correttamente la versione del PHP?
https://helpcenter.websitex5.com/it/post/225980
Le password, così come il PHP, sono state migliorate per aumentare la sicurezza dei Siti WebSite x5.
Se non erro la conversione è tutta automatica. Non era necessario dunque reimportare gli utenti, anche perché con la password criptata non è possibile risalire a quella originale.
Accedi in /admin del tuo sito e verifica in "Web Test" che tutte le voci risultano "PASS".
Se hai effettuato modifiche al database potresti aver creato un problema.
Autore
Ho verificato, NON avevo impostato l'ultima versione, ma la penultima (PHP: 7.2.26.). Ora sono passato alla PHP: 7.3.17.
Sarebbe bello accedere al pannello admin, ma peccato che anche quello mi dá il segunete errore:
Call to undefined method ImDb::from_db_data() .
Andró a modificare la generazione del database alla riga indicata per tornare al codice precedente e verificare il funzionamento.
Per quanto riguarda il fatto che abbiate reso piú sicure le password ok, ho visto che le avete criptate, ma se vado a recuperare la password ottengo come risposta questa criptata e non ho trovato nulla nella pagina imlogin.php che vada a decriptare la password.
Autore
In pratica ho modificato la riga 94 del file imadmintest.php.
Era: $database = ImDb::from_db_data($db);
Ho tornato a mettere: $database = new ImDb($db['host'], $db['user'], $db['password'], $db['database']);
Ora accedo alla pagina.
Versione di PHP (versione minima richiesta 7.1.0): 7.3.17 PASS
Supporto sessioniPASSCartella su Server con accesso in scrittura (App_Data) PASS
Cartella su Server con accesso in scrittura (App_Data/BlogComments) PASS
Supporto MySQL ed impostazioni database (Linux_DBX5_Oneness) PASS
Autore
Ho ricercato la funzione "from_db_data" PHP e NON la ho trovata, quindi ne deduco che sia una funzione WebSite X5! Se si, NON la ho trovata dichiarata da nessuna parte?
Le casistiche sono 2:
Visto che hai il PHP idoneo e tutte le voci danno PASS, suppongo possa essere un errore DB ad esempio inserendo un valore non previsto dal record.
Ti consiglierei di creare una versione "pulita" priva di codici opzionali e testare ma il problema potrebbe essere dato dal database corrotto.
Attenderei un riscontro da parte dello Staff o qualche utente che ha familiarità con l'errore.
Autore
Ho in parte risolto. In pratica NON si era aggiornato il file x5engine.php da sé che quindi non era presente la funzione "from_db_data".
Ora, mi sembra di capire che sono cambiate diverse cose nell'accesso al database MySql.
Per creare l'oggetto database ho sempre usato:
new ImDb($qdati['host'], $qdati['user'], $qdati['password'], $qdati['database']);
Ma adesso mi torna errore. Cosa devo usare?
Per rigenerare correttamente il progetto, consigliano di eliminare i file presenti nella cartella relativi lo stesso (Preview e Anteprima), e di premere CTRL + Anteprima.
Così dovresti ricreare ogni pagina.
Purtroppo non sono eccellente in materia. Dovresti attendere un riscontro da parte di altri utenti.
Non comprendo perché modifichi il file x5engine.php o altri per il login.
Con la versione attuale funziona tutto correttamente. Ovviamente con gli aggiornamenti può succedere che alcuni contenuti subiscano modifiche e di conseguenza codici extra causino errori.
Potresti consultare i file relativi l'SDK se sono stati aggiornati.
Autore
Ho alla fine generato un nuovo progetto e ne ho confrontato i due file x5engine.php. Effettivamente sul mio progetto il file NON era aggiornato, mancavano delle funzioni.
Ora li ho allineati e il sito é tornato operativo.
Per l'accesso al database ho invece inserito questo codice per andare a usare direttamente MySQL invece di passare dalla classe ImDB usando il codice di seguito e ora funziona.
if (function_exists("mysqli_connect")) {
$sitedb = new MySQLiDriver($qhost, $quser, $qpassword, $qdatabase);
} else if (function_exists("mysql_connect")) {
$sitedb = new MySQLDriver($qhost, $quser, $qpassword, $qdatabase);
} else {
die("No database support detected");
}
Grazie mille
Prego! Sono felice che tu abbia risolto il problema