Dans le module en cours d'adptatation 2.5.11 , il y a dans le fichier /admin/index.php, une
function modDownloadS() qui sert à enregistrer une modification de fiche dans MySql et c'est cette fonction ne supportait pas la présence de simple guillemet dans le champ Descriptif :
function modDownloadS()
{
global $xoopsDB, $myts, $eh;
$cid = $_POST["cid"];
if (($_POST["url"]) || ($_POST["url"]!="")) {
$url = $myts->addSlashes($_POST["url"]);
}
$logourl = $myts->addSlashes($_POST["logourl"]);
$title = $myts->addSlashes($_POST["title"]);
$homepage = $myts->addSlashes($_POST["homepage"]);
$version = $myts->addSlashes($_POST["version"]);
$size = $myts->addSlashes($_POST["size"]);
$platform = $myts->addSlashes($_POST["platform"]);
$description = $myts->addSlashes($_POST["description"]);
$sql = sprintf("UPDATE %s SET cid = %u, title = '%s', url = '%s', homepage = '%s', version = '%s', size = %u, platform = '%s', logourl = '%s', status = %u, date = %u WHERE lid = %u", $xoopsDB->prefix("mydownloads_downloads"), $cid, $title, $url, $homepage, $version, $size, $platform, $logourl, 2, time(), $_POST['lid']);
$xoopsDB->query($sql) or $eh->show("0013");
$sql = sprintf("UPDATE %s SET description = '%s' WHERE lid = %u", $xoopsDB->prefix("mydownloads_text"), $description, $_POST['lid']);
$xoopsDB->query($sql) or $eh->show("0013");
redirect_header("index.php",1,_MD_DBUPDATED);
}
Pour échapper les car spéciaux, voici la correction :
// modif Hack GG
function modDownloadS()
{
global $xoopsDB, $myts, $eh;
$cid = intval($_POST["cid"]); // Assurez-vous que cid est un entier
// Vérifiez si l'URL est définie
$url = isset($_POST["url"]) && $_POST["url"] !== "" ? $myts->addSlashes($_POST["url"]) : '';
$logourl = $myts->addSlashes($_POST["logourl"]);
$title = $myts->addSlashes($_POST["title"]);
$homepage = $myts->addSlashes($_POST["homepage"]);
$version = $myts->addSlashes($_POST["version"]);
$size = intval($_POST["size"]); // Assurez-vous que size est un entier
$platform = $myts->addSlashes($_POST["platform"]);
// Échappez les guillemets simples dans la description
$description = addslashes($_POST["description"]); // Ajoutez une barre oblique inversée devant les guillemets simples
// Préparation de la requête SQL pour mettre à jour les téléchargements
$sql = sprintf(
"UPDATE %s SET cid = %u, title = '%s', url = '%s', homepage = '%s', version = '%s', size = %u, platform = '%s', logourl = '%s', status = %u, date = %u WHERE lid = %u",
$xoopsDB->prefix("mydownloads_downloads"),
$cid,
$title,
$url,
$homepage,
$version,
$size,
$platform,
$logourl,
2,
time(),
intval($_POST['lid']) // Assurez-vous que lid est un entier
);
// Exécution de la requête et gestion des erreurs
if (!$xoopsDB->query($sql)) {
$eh->show("0013");
error_log("SQL Error: " . $xoopsDB->error());
}
// Préparation de la requête SQL pour mettre à jour la description
$sqlDescription = sprintf(
"UPDATE %s SET description = '%s' WHERE lid = %u",
$xoopsDB->prefix("mydownloads_text"),
$description,
intval($_POST['lid']) // Assurez-vous que lid est un entier
);
// Exécution de la requête et gestion des erreurs
if (!$xoopsDB->query($sqlDescription)) {
$eh->show("0013");
error_log("SQL Error: " . $xoopsDB->error());
}
// Redirection après la mise à jour
redirect_header("index.php", 1, _MD_DBUPDATED);
}