Passare da GDRCD 5.4.1 a GDRCD 5.6.0.3
15/06/2022 21:01:33
Guarda, in questi casi google (ed in particolare il sito https://www.php.net/) è sempre il tuo migliore amico. Inoltre, nell'errore trovi esattamente le righe e le pagine in cui vengono restituiti gli errori.
Nel primo caso, nella pagina scheda.inc.php alla riga 22 hai questo:
gdrcd_query($personaggio, 'free');
questa funzione richiama, nella pagina includes/functions.inc.php questo case:
case 'free':
return mysqli_free_result($sql);
break;
Direttamente da internet, trovo che la funzione mysqli_free_result serve a liberare la memoria associata alla variabile $personaggio. Ad occhio e croce, credo che non stia passando nulla all'interno della variabile $personaggio e di conseguenza ti da errore. Il suggerimento che posso darti è quello di commentare la riga 22 e fare un var_dump($personaggio) per vedere se contiene o meno qualcosa.
Per quel che riguarda invece il secondo errore, è molto semplice il problema (ed andrò a segnalarlo anche ai ragazzi per la prossima rel).
L'apertura dei tag php dalla versione 7 è tassativo che venga eseguito in questo modo:
<?php
Alla riga 9, 38, 50 e via dicendo, se noti l'apertura del tag php è così:
<?
La short è concessa solo nel caso di un echo veloce:
<?=$variabile?>
Altrimenti restituisce un errore bloccante, come nel tuo caso. Questo è un refuso, che verrà sistemato sicuramente.
15/06/2022 23:53:34
Allora ho provato ed escludendo //gdrcd_query($personaggio, 'free'); la scheda va fino alle abilità, poi mi sa che ce n'è un altro.
Facendo il dump come mi hai suggerito ed escludendo gdrcd_query($personaggio, 'free'); mi fa un arry completo quindi il passaggio dei valori è corretto.
A questo punto il problema sta proprio nella definizione del caso free?
16/06/2022 17:17:41
amarantus ha scritto: Allora ho provato ed escludendo //gdrcd_query($personaggio, 'free'); la scheda va fino alle abilità, poi mi sa che ce n'è un altro.
Facendo il dump come mi hai suggerito ed escludendo gdrcd_query($personaggio, 'free'); mi fa un arry completo quindi il passaggio dei valori è corretto.
A questo punto il problema sta proprio nella definizione del caso free?
Dunque, quel che posso dirti è che sicuramente è un qualcosa che andrà in disuso. Lo abbiamo ancora in 6, ma solo per una questione che si trova in quelle pagine che non sono ancora state allineate. Per la mole di dati che passano su un gdr (e su gdrcd) onestamente non vedo il motivo di esistere di quella funzione. Forse qualcuno più esperto di me si, ma qui alzo le mani XD
16/06/2022 18:14:39 e modificato da amarantus il 16/06/2022 18:57:22
Quindi dici che posso levarla senza creare una falla di sicurezza?
anneth ha scritto: [quote]amarantus ha scritto: Allora ho provato ed escludendo //gdrcd_query($personaggio, 'free'); la scheda va fino alle abilità, poi mi sa che ce n'è un altro.
Facendo il dump come mi hai suggerito ed escludendo gdrcd_query($personaggio, 'free'); mi fa un arry completo quindi il passaggio dei valori è corretto.
A questo punto il problema sta proprio nella definizione del caso free?
Dunque, quel che posso dirti è che sicuramente è un qualcosa che andrà in disuso. Lo abbiamo ancora in 6, ma solo per una questione che si trova in quelle pagine che non sono ancora state allineate. Per la mole di dati che passano su un gdr (e su gdrcd) onestamente non vedo il motivo di esistere di quella funzione. Forse qualcuno più esperto di me si, ma qui alzo le mani XD[/quote]
PS. Aggiungo che dopo quell'errore me ne dava un altro nella pagina skillsystem.inc.php riga 82:
<?php echo 0 + gdrcd_filter('out', $ranks[$row['id_abilita']]); ?>
Ho risolto spostando l'addizione all'interno del filtro:
<?php echo gdrcd_filter('out', 0 + $ranks[$row['id_abilita']]); ?>
PPS. Per il secondo errore in esiti_master, pare che il php dopo <? non centrasse niente, li ho lasciati e invece a riga 50 mi da questo:
<? if ($tit['closed']==0) { ?>
Ora leggendo un po' il codice direi che $tit non centra niente con un controllo ad un link, quindi ho sostituito così:
<? if ($blocco['closed']==0) { ?>
che dovrebbe quindi richiamare la voce closed nella tabella blocco_esiti. Spero? Boh u.u
04/07/2022 14:45:34 e modificato da kasa il 04/07/2022 15:35:15
amarantus ha scritto: Quindi dici che posso levarla senza creare una falla di sicurezza?
Consiglio vivamente di lasciarlo lì, per il momento, venendo richiamato un poco ovunque.
Si tratta di una funzione che "va mandata in pensione" con un minimo di accorgimento, dato che qualche caso lo svuotamento è una logica da mantenere, vista la mole di lavoro/chiamate che vengono fatte a DB, molto spesso esenti da ottimizzazioni e best practices, e la possibilità che questi possano rimanere "in memoria" (non è il termine corretto, ma serve per dare l'idea).
Va effettuato un refactor generale, di sezione in sezione, per rendere sicuro la rimozione di quel metodo, in sostanza.
amarantus ha scritto: ... Spero? Boh u.u
Come spiegato giustamente da @anneth, lo short tag <? è una formula deprecata da PHP 7 e nella 8 comporta direttamente un errore bloccante, motivo per cui crediamo che sia meglio operare per la rimozione di qualsiasi suo utilizzo. Data la necessità, abbiamo provveduto a pubblicare an aggiornamento che va ad allineare tutti gli short tag con quelli supportati da PHP7+, in modo da non generare simili anomalie.
Qui trovi tutti i file modificati: https://github.com/GDRCD/GDRCD/commit/3c52b63e980b6fc3d25425d7a0b2b4b0707e53b6 ↗
Questa modifica sarà integrata dalla successiva versione di GDRCD, ossia 5.6.0.4.
@everyone
Rendiamo noto che GDRCD 5.6 (in tutte le sue versioni) supporta PHP 5.6+ e PHP 7+ e garantiamo il nostro sostegno nel mantenere la compatibilità dell'engine con queste versioni. Non garantiamo (per la versione indicata) il supporto per PHP 8+.
Consigliamo caldamente a chiunque utilizzi GDRCD 5.6 di utilizzare le versioni supportate.
Provvederemo a renderlo noto nelle note informative dell'engine.
Kasa.
14/07/2022 12:32:58
Grazie per la risposta. :)
Seguirò il tuo consiglio, rimetto quel parametro e lascio alla versione 7.
Discussione seguita da
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Fallen Gods ↗
New Orleans ↗
Tiles Survive ↗
World of the Sea Battle ↗
CRSED: F.O.A.D. ↗