Salut à tous,
J'ai un code sur lequel pendant 3 jours je me prend la tete... espérons que l'on puisse m'aider..
je vous le donne :
$artiste = str_replace("'", "''", $_POST['artiste']);
$support = str_replace("'", "''", $_POST['support']);
$album = str_replace("'", "''", $_POST['album']);
$pec = $_POST['pec'];
$nbr = $_POST['nbr'];
for($i=1; $i<=$nbr; $i++)
{
$j = $i;
$titre = $_POST[$i];
if ($pec == "album")
{
$reqstyle = "SELECT nom_artist, style
FROM artistes
WHERE nom_artist='$artiste'";
$demandestyle = mysql_query($reqstyle);
//Vérification du programme MODE WARNED
if (!$verif2=mysql_query($reqstyle))
{
$_SESSION['errormod'] = 'probalbumstyle';
header ("Location: errormod.php");
exit;
}
$tablestyle = mysql_fetch_array($demandestyle);
$style = $tablestyle['style'];
}
elseif ( $pec == "compil")
{
$reqstyle = "SELECT nom, style
FROM inclassables
WHERE nom='$album'";
$compstyle = mysql_query($reqstyle);
//Vérification du programme MODE WARNED
if (!$verif3 = mysql_query($reqstyle))
{
$_SESSION['errormod'] = 'probcompilstyle';
header ("Location: errormod.php");
exit;
}
$comptable = mysql_fetch_array($compstyle);
$style = $comptable['style'];
}
$reqveriftitr = "SELECT titre, num_piste, album, artiste
FROM titres
WHERE artiste='$artiste'
AND titre='$titre'
AND album='$album'
AND num_piste='$j'";
$demande = mysql_query($reqveriftitr);
//Vérification du programme MODE WARNED
if (!$verif4 = mysql_query($reqveriftitr))
{
$_SESSION['errormod'] = 'probveriftitre';
header ("Location: errormod.php");
exit;
}
if ( mysql_fetch_assoc($demande) == true)
{
$_SESSION['errormod'] = "titresexistants";
header ("Location: errormod.php");
exit;
}
echo "Titre : $titre<br>
Artiste : $artiste<br>
Album : $album<br>
numéro de piste : $j<br>
style : $style<br>
support : $support<br>";
}
Voilà pour le code de la page. Le souci se produit avec un album contenant un slash comme par exemple "l'album"
ce qui efface tous les caractéres suivant l'apostrophe...
j'ai essayé d'y palier avec une fonction de ce style :
function getval($var, $type=0, $bdd=0, $filtre_url=0)
{
///anti XSS
if ($filtre_url == 0)
{
$value = ($type == 0) ? htmlspecialchars($var, ENT_NOQUOTES) : intval($var);
}
else
{
$value = ($type == 0) ? str_replace(array(':','/','.'), '', htmlspecialchars($var, ENT_NOQUOTES)) : intval($var);
}
///anti injection SQL
if ($bdd != 0)
{
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
if (function_exists('mysql_real_escape_string'))
{
$value = mysql_real_escape_string($value);
}
//pour version de PHP < 4.3.0 on utilise addslashes
else
{
$value = addslashes($value);
}
}
///on retourne une valeur filtrée
return $value;
}
mais rien n'y fait...
Comment dois je faire?
Merci à vous!![]()
Partager