Bonjour two3d
En fait, j'utilise un vieux CMS que j'essaye de passer en php8.
Je suis vraiment débutant en PHP.
J'ai plutôt bien avancé, mais en effet, je ne suis pas à la base du code, et j'en serai bien incapable d'ailleurs.
Le fichier en question est le suivant
<?php
include_once './modules/tete_de_module.php';
if ($K_ac=='index' OR $K_ac=='nonlu' OR $K_ac=='rubrique' OR $K_ac=='voir')
{
if( ( (isset($_SESSION['not_in']) AND $_SESSION['not_in']) OR !isset($_SESSION['forum_lu']['all']) ) AND $K_grade >= GRD_MEMBR )
{
$ReqNonLu = reqmysql('SELECT `lu` FROM `forum_lecture` WHERE `ref`="'.intval($K_user->id).'"') or die(Kws_mysql_error());
if(Kws_mysql_num_rows($ReqNonLu) > 0)
{
$RepNonLu = Kws_mysql_fetch_array($ReqNonLu);
$ListeNonLu = '';
for($i=0; $i < strlen($RepNonLu['lu']); $i++)
{
$ListeNonLu = chr(ord($RepNonLu['lu'][$i])-60).$ListeNonLu;
}
if(isset($_SESSION['not_in']) AND $_SESSION['not_in'] == TRUE)
{
$ArrayNonLu = unserialize($ListeNonLu);
if(is_array($ArrayNonLu) && count($ArrayNonLu) > 0)
{
foreach($ArrayNonLu as $IdNonLu => $DateNonLu)
{
if (!empty($IdNonLu) and !empty($DateNonLu))
{
if(isset($_SESSION['forum_lu'][$IdNonLu]) AND intval($IdNonLu)!=0 AND $DateNonLu > $_SESSION['forum_lu'][$IdNonLu])
{
$_SESSION['forum_lu'][$IdNonLu] = $DateNonLu;
}
elseif(!isset($_SESSION['forum_lu'][$IdNonLu]) OR intval($IdNonLu) == 0)
{
$_SESSION['forum_lu'][$IdNonLu] = $DateNonLu;
}
}
}
}
}
else
{
$_SESSION['forum_lu'] = unserialize($ListeNonLu);
}
}
else
{
$DateNonLu = date('U');
$ListeNonLu = serialize(array('all'=>$DateNonLu));
$ListeNonLuBis = '';
for($i=0; $i < strlen($ListeNonLu); $i++)
{
$ListeNonLuBis = chr(ord($ListeNonLu[$i])+60).$ListeNonLuBis;
}
reqmysql('INSERT INTO `forum_lecture` SET `ref`="'.$K_user->id.'",`lu`="'.sp($ListeNonLuBis).'"') or die(Kws_mysql_error());
$_SESSION['forum_lu']['all'] = $DateNonLu;
}
}
elseif(!isset($_SESSION['forum_lu']['all']) AND $K_grade < GRD_MEMBR)
{
$DateNonLu = date('U');
$_SESSION['forum_lu']['all'] = $DateNonLu;
$_SESSION['not_in'] = TRUE;
}
}
##########################
## Fin Non-lu ##
##########################
if (empty($Ref_cat_forum)) $Ref_cat_forum = 0;
// Sous forum
if ($K_ac=='index' and !empty($_REQUEST['ref'])) $Ref_cat_forum = intval($_REQUEST['ref']);
if ($K_forum_entete == 'haut' AND
(
$K_ac=='affgrd' OR
$K_ac=='aide' OR
$K_ac=='dePrev' OR
$K_ac=='index' OR
$K_ac=='nonlu' OR
$K_ac=='noReponse' OR
$K_ac=='regles'
)
)
{
include_once 'modules/'.$K_mod.'/entete.php';
}
$StylePuceFofo = 'margin:auto 5px;vertical-align:middle;';
?>
Je pense que ça permet de noter les sujets lu/non lus des membres pour le forum.
Ce qui se passe:
Quand je viens sur le forum en tant que membre, dans la DB ça inscrit
?w^msssmqolsm^vlmv?w^???^vov??vmv?
dans la colonne 'lu" de "forum_lecture"
Au passage suivant sur le forum j'ai
Notice: unserialize(): Error at offset 0 of 34 bytes in /home/crfr8905/php8.limporiaphoto.com/modules/forum/tete_de_module.php on line 39
J'en déduis donc que ce que ça écrit en DB n'est pas du tout ce qu'il faut pour la fonction unserialize()...
Mais je me trompe peut-être.