payetonju
Messages postés436Date d'inscriptionmercredi 26 septembre 2007StatutMembreDernière intervention 2 juillet 2014
-
31 août 2010 à 15:18
payetonju
Messages postés436Date d'inscriptionmercredi 26 septembre 2007StatutMembreDernière intervention 2 juillet 2014
-
2 sept. 2010 à 15:45
Bonjour,
Sur mon site, il y a possibilité d'ajouter des albums photos, ça fonctionne très bien, jusqu'à ce qu'un membre ajoute un album contenu une apostrophe. J'ai pourtant utilisé mysql_real_escape_string mais ça ne fait rien.
Voici mon code :
if( isset( $_POST['ajout_album'] ) )
{
$_POST['nom_album'] = explode("\", $_POST['nom_album']);
$_POST['nom_album'] = $_POST['nom_album'][0];
if( isset( $_POST['nom_album'] ) && $_POST['nom_album'] == "" )
{
$ErreurAlbum = "Il faut que tu remplisses ce champs !";
}
if( isset( $_POST['sorties'] ) && $_POST['sorties'] == "rien" )
{
$ErreurSortie = "Il faut que tu sélectionne ce champs !";
}
if( ( isset( $_POST['sorties'] ) && $_POST['sorties'] != "rien" ) && ( isset( $_POST['nom_album'] ) && $_POST['nom_album'] != "" ) )
{
$PostCodeSortie = $_POST['sorties'];
$PostAlbum = $_POST['nom_album'];
// Verifie si l'utilisateur a rentre des caracteres speciaux, si c'est le cas, le programme renvoie une erreur
if( VerifAlphanumerique($PostAlbum) == false )
{
$ErreurAlbum = "Erreur de caractère ! Caractères acceptés :
";
$ErreurAlbum.= " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789_-+()*%/.!?
";
$ErreurAlbum. = "(ATTENTION ! les accents ne sont pas acceptès";
}
else
{
$PostCodeAlbum = str_replace(" ", "_", $PostAlbum );
$Conn = mysql_connect($host,$user,$pwd);
mysql_select_db($bdd,$Conn);
mysql_query("SET NAMES 'UTF-8'");
// Verification de doublon
$sql "select CODE_DOSSIER from albums where CODE_DOSSIER '".$PostCodeAlbum."' ";
$res = mysql_query($sql);
$num = mysql_num_rows($res);
if( $num > 0 )
{
$ErreurAlbum = "Un album porte déjà ce nom. Utilise en un autre stp.";
}
else
{
//$PostCodeAlbum = str_replace("'", "", $PostCodeAlbum);
$PostCodeAlbum = mysql_real_escape_string( $PostCodeAlbum );
$AlbumFolder = "..".$CheminPhotos.$PostCodeSortie."/".$PostCodeAlbum;
$sql = "insert into albums (CODE_DOSSIER,DOSSIER,CODE_SORTIE,AJOUTE_PAR,DATE_AJOUT,IP_AJOUT) values ";
$sql.= "('".strtolower($PostCodeAlbum)."','".$PostAlbum."','$PostCodeSortie','$SessionLogin','$date','$ip') ";
mysql_query("SET NAMES 'UTF-8'");
$res = mysql_query($sql);
//echo $sql;
// traitement de copie du dossier de l'album, dans le dossier du type de sortie correspondante
// Apres Insertion du dossier dans la BDD, copie physique de ce dossier sur le serveur
if(!is_dir(strtolower($AlbumFolder)))
{
echo "[".$AlbumFolder."]";
mkdir(strtolower($AlbumFolder));
$FolderCreated = "<center>Dossier copié et enregistré avec succès.</center>";
}
}
mysql_close($Conn);
}
}
}
Je veux essayer d'inserer "salut' sa va" en tant que nom d'albums, mais ma base ne prend en compte que "salut" et donc la suite du code ne s'execute pas.
cs_47
Messages postés197Date d'inscriptionmardi 20 janvier 2004StatutMembreDernière intervention20 février 20131 31 août 2010 à 16:38
Bonjour,
vérifie si tu n'as pas magic_quotes_gpc activé (voir la fonction get_magic_quotes_gpc() ou dans ton php.ini)
s'il est activé le problème est ici:
$_POST['nom_album'] = explode("\", $_POST['nom_album']);
à remplacer par:
$_POST['nom_album'] = explode("\", stripslashes($_POST['nom_album']));
car le ' est remplacer par \' donc quand tu fais ton explode tu te retrouve avec la 1ère partie de ta chaine
payetonju
Messages postés436Date d'inscriptionmercredi 26 septembre 2007StatutMembreDernière intervention 2 juillet 20144 31 août 2010 à 17:50
Probleme corrigé en partie. Ma page ne saute plus, et certains programmes se mettent à marcher.
Mais là mon dossier se créé sous "test\'test" quand je tappe "test'test", mais aucune insertion dans la base ne se fait :/
Vous n’avez pas trouvé la réponse que vous recherchez ?