Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/06/2006, 13h40   #1
Invité régulier
 
Inscription : avril 2006
Messages : 31
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 31
Points : 9
Points : 9
Par défaut [Conception] Problèmes après apostrophe

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!
satyre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2006, 13h49   #2
Invité régulier
 
Inscription : avril 2006
Messages : 31
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 31
Points : 9
Points : 9
désolé, je me suis trompé dans mon post, le problème survient dans une chaine de caractére contenant un apostrophe...

voila le résultat sur le navigateur

Titre : first
Artiste : compil
Album : nom de l
numéro de piste : 1
style :
support : cd

Titre : second
Artiste : compil
Album : nom de l
numéro de piste : 2
style :
support : cd
satyre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2006, 13h50   #3
Invité régulier
 
Inscription : avril 2006
Messages : 31
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 31
Points : 9
Points : 9
et ce résultat pour un album au nom de
"nom de l'album"

Merci de vos réponses
satyre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2006, 11h24   #4
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
Soit tu echappe els carctere soit au lieu de ca :

Code :
1
2
3
4
5
6
 echo "Titre : $titre<br>
Artiste : $artiste<br>
Album : $album<br>
numéro de piste : $j<br>
style : $style<br>
support : $support<br>";
tu fais
Code :
1
2
3
4
5
6
 echo 'Titre : '.$titre.'<br>
Artiste : '.$artiste.'<br>
Album : '.$album.'<br>
numéro de piste : '.$j.'<br>
style : '.$style.'<br>
support : '.$support.'<br>';
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h07.


 
 
 
 
Partenaires

Hébergement Web