justement y'a pas que les accents , y'a tout les autre carateres aussi, en gros ca qu'on cherche a faire, c'est du simple et lisible pour tout le monde (a peu pret), et ecrivable (ca se dit pas) par tous aussiIl n'y a pas que l'esthétisme qui est en cause, il y a aussi la facilité de lecture pour les visiteurs et l'optimisation pour le référencement, entre autre.
A part ça, essaies de faire afficher simplement une image avec un nom de fichier comportant des espaces et des accents dans un message de ce forum, peut-être tu comprendras mieux.
J'ai lu nul part que thekingkong destinait son site à un public japonais...justement y'a pas que les accents , y'a tout les autre carateres aussi, en gros ca qu'on cherche a faire, c'est du simple et lisible pour tout le monde (a peu pret), et ecrivable (ca se dit pas) par tous aussi
donc le minium requis : l' ASCII
je peu tres bien mettre un caratere japonnais dans un nom de fichier, mais je vais pas m'amuser a tous les mettres dans ton str_replace
le caratere japonnais etant un exmple, et n'importe qui peu faire un caractère japonnais 映画、音楽,J'ai lu nul part que thekingkong destinait son site à un public japonais...justement y'a pas que les accents , y'a tout les autre carateres aussi, en gros ca qu'on cherche a faire, c'est du simple et lisible pour tout le monde (a peu pret), et ecrivable (ca se dit pas) par tous aussi
donc le minium requis : l' ASCII
je peu tres bien mettre un caratere japonnais dans un nom de fichier, mais je vais pas m'amuser a tous les mettres dans ton str_replace
Et donc concrètement selon ton système - lequel ? - il se passe quoi si un visiteur tente de télécharger un fichier image avec un nom qui comporte des caractères accentués, des espaces ou des caractères spéciaux ?
Code : Tout sélectionner
<?php
session_start();
if (!session_is_registered(id_user))
{ header("location:index.php"); }
include ("config_ann.php");
include ("$include/header.inc");
echo "$del_sup_chapo<br>";
if (!isset($HTTP_GET_VARS[min])) $min=0;
$id_user=$HTTP_SESSION_VARS[id_user];
//on compte le nombre d'annonces passées par l'utilisateur
$query="select count(*) from $table_annonces where id_user='$id_user'";
$succes=mysql_query($query);
$count=mysql_fetch_array($succes);
$count=$count[0];
// les petites bornes pour le chiffrage des annonces dans le titre
$inf=$min+1;
if (($min+$max)>=$count)
{
$sup=$count;
} else {
$sup=$min+$max;
}
// soyons courtois et informatifs
echo "<span class='texte_maigre'>Vous avez </span>";
echo "<span class='lienblanc'>$count</span>";
echo "<span class='texte_maigre'> annonce(s) en ligne - ";
echo "annonce(s) </span>";
echo "<span class='lienblanc'>$inf</span>";
echo "<span class='texte_maigre'> à </span>";
echo "<span class='lienblanc'>$sup</span>\n";
// date du jour en timestamp
$date=time();
// on extrait les annonces en question
$query = "select * from $table_annonces where id_user='$id_user' order by id desc limit $min,$max";
$result = mysql_query($query);
while ($i=mysql_fetch_array($result))
{
$id=$i[id];
$tel=$i[tel];
$tel_2=$i[tel_2];
$text=stripslashes($i[text]);
$id_cat_sel=$i[id_cat]; //récup de la catégorie; l'erreur est humaine !
$img=$i[img];
// on affiche tout ça dans un formulaire
echo "<form method='POST' action='ann_del_modif.php?'.SID name='modif' enctype='multipart/form-data'>\n";
echo "<table width='550' cellspacing='0' cellpadding='2' border='0' bgcolor='$color_bordure'>\n";
echo "<tr><td>\n";
echo "<table width='100%' cellspacing='0' cellpadding='2' border='0'>\n";
echo "<tr bgcolor='$color'><td align='right'>\n";
echo "<input type='hidden' name='id' value='".$id."'>\n";
echo "<input type='hidden' name='date' value='".$date."'>\n";
echo "<span class='texte_gras'>tel</span>\n";
echo "</td><td>\n";
echo "<input type='text' name='tel' size='20' value='".$tel."'>\n";
echo "</td></tr>\n";
echo "<tr bgcolor='$color_alt'><td align='right'>\n";
echo "<span class='texte_gras'>tel 2</span>\n";
echo "</td><td>";
echo "<input type='text' name='tel_2' size='20' value='".$tel_2."'>\n";
echo "</td></tr>\n";
echo "<tr bgcolor='$color'><td align='right'>\n";
echo "<span class='texte_gras'>catégorie</span>\n";
echo "</td><td>\n";
echo "<select name='id_cat'>\n";
$query_list="select * from $table_cat order by id_cat";
$list=mysql_query($query_list);
while($e=mysql_fetch_array($list))
{
$categorie=$e[categorie];
$id_cat=$e[id_cat];
echo "<option value='";
echo $id_cat."'";
if ($id_cat==$id_cat_sel) echo "selected";
echo ">";
echo $categorie;
echo "</option>\n";
}
echo "</select>\n";
echo "</td></tr>\n";
echo "<tr bgcolor='$color_alt'><td align='right' valign='top'>\n";
echo "<span class='texte_gras'>annonce</span>\n";
echo "</td><td>\n";
echo "<textarea name='text' rows='5' cols='30' wrap='VIRTUAL'>".$text."</textarea>\n";
echo "</td></tr>\n";
if ($img!="")
{
echo "<tr bgcolor='$color'><td> </td><td>";
echo "<input type='hidden' name='img' value='img/$img'>\n";
echo "<img src='img/".$img."'>";
echo "</td></tr><tr bgcolor='$color'><td class='texte_gras'align='right'>image</td>";
echo "<td>";
echo "<input type='file' name='file'>";
echo "</td></tr>";
}
else
{
echo "<tr bgcolor='$color'><td span class='texte_gras' align='right'>\n";
echo "image\n";
echo "</td><td class='texte_maigre'>\n";
echo "<input type='file' name='file'>";
echo "</td></tr>";
}
echo "<tr bgcolor='$color_alt'><td>\n";
echo " \n";
echo "</td><td class='texte_maigre'>\n";
echo "<input type='submit' name='action' value='modifier'>\n";
echo " ::: ";
echo "<input type='submit' name='action' value='supprimer'>\n";
echo "</td></tr>\n";
echo "</table>\n";
echo "</td></tr>\n";
echo "</table><br>\n";
echo "</form>";
}
// un poil de navigation si nécessaire
if ($min>0)
{
echo "<A ";
echo "HREF='modif_ann.php?min=".($min-$max)."&".SID."'";
echo " class='lienblanc'>Page précedente</A> \n";
}
// lien vers la page suivante si nécessaire
if (($min+$max)<$count)
{
echo "<A ";
echo "HREF='modif_ann.php?min=".($min+$max)."&".SID."'";
echo " class='lienblanc'>Page suivante</A>\n";
}
echo "<br><a href='users_choice.php?'.SID class='lienblanc'>retour au choix utilisateurs</a>";
include ("$include/footer.inc");
?>Code : Tout sélectionner
session_start();
include ("$include/header.inc");
if ($HTTP_SESSION_VARS[id_user]!="") //récup données utilisateur si logué
{
$query="select * from $table_user where id_user='$HTTP_SESSION_VARS[id_user]'";
$res=mysql_query($query);
$var=mysql_fetch_object ($res);
$nom=$var->nom;
$prenom=$var->prenom;
$mail=$var->mail;
}
$date=time();
if ($HTTP_SESSION_VARS[id_user]!="")
{
$envoi_page="users_choice.php?".SID;
} else {
$envoi_page="index.php?".SID;
}
?>
<script language="JavaScript" src="js/verif_form.js">
</script>
<?php echo $mess_requis; ?>
<form action="<?php echo $envoi_page; ?>" method="post" enctype="multipart/form-data" name="annonce">
<table width="600" border="0" cellspacing="0" cellpadding="2" bgcolor="<?php echo $color_bordure; ?>" align="center">
<tr>
<td>
<table width="100%" border="0" cellspacing="0" cellpadding="4" bgcolor="<?php echo $color; ?>" align="center">
<tr>
<td width="30%" align="right" class="texte_gras"> <input type="hidden" name="id_user" value="<?php echo $id_user; ?>"> <input type="hidden" name="date" value="<?php echo $date; ?>">
nom ou pseudo <span class="texte_gras_rouge">®</span></td>
<td valign="top"> <input type="text" name="nom" size="25" maxlength="25" value="<?php echo $nom; ?>"> </td>
</tr>
<tr bgcolor="<?php echo $color_alt; ?>">
<td width="30%" align="right" class="texte_gras">prénom </td>
<td valign="top"> <input type="text" name="prenom" size="25" maxlength="25" value="<?php echo $prenom ?>"> </td>
</tr>
<tr>
<td width="30%" align="right" class="texte_gras">mail <span class="texte_gras_rouge">®</span></td>
<td valign="top"> <input type="text" name="mail" size="30" maxlength="30" value="<?php echo $mail; ?>"> </td>
</tr>
<tr bgcolor="<?php echo $color_alt; ?>">
<td width="30%" align="right" class="texte_gras">tél</td>
<td valign="top"> <input type="text" name="tel" size="20" maxlength="20" value="<?php echo $tel; ?>"> </td>
</tr>
<tr>
<td width="30%" align="right" class="texte_gras">tél 2</td>
<td valign="top"> <input type="text" name="tel_2" size="20" maxlength="20" value="<?php echo $tel_2; ?>"> </td>
</tr>
<tr bgcolor="<?php echo $color_alt; ?>">
<td width="30%" align="right" class="texte_gras">catégorie</td>
<td valign="top"> <select name="id_cat">
<?php
$query="select * from $table_cat order by id_cat";
$result=mysql_query($query);
while($i=mysql_fetch_array($result))
{
$categorie=$i[categorie];
$id_cat=$i[id_cat];
echo "<option value=\"".$id_cat."\">".$categorie."</option>\n";
} ?>
</select> </td>
</tr>
<tr>
<td width="30%" align="right" valign="top" class="texte_gras">texte de l'annonce <span class="texte_gras_rouge">®</span></td>
<td valign="top"> <textarea name="text" cols="30" rows="5" wrap="VIRTUAL"><?php echo $text; ?></textarea> </td>
</tr>
<tr bgcolor="<?php echo $color_alt; ?>">
<td align="right" valign="center" class="texte_gras">image<br><span class="texte_gras_rouge">(jpg ou gif, 50 ko maxi)</span></td>
<td valign="center"><input type="file" name="file"></td>
</tr>
<tr>
<td width="30%" align="right"> </td>
<td class="texte_maigre"> <input type="submit" name="action" value="Envoyer" onClick="MM_validateForm('nom','','R','mail','','RisEmail','text','','R');return document.MM_returnValue"> </td>
</tr>
</table>
</td>
</tr>
</table>
</form>
<?php
if ($HTTP_SESSION_VARS[id_user]!="")
{
echo "<a href='users_choice.php?'.SID class='lienblanc'>retour au choix utilisateurs</a><br>";
} else {
echo "<br><a href='index.php?' class='lienblanc'>retour à l'accueil des petites annonces</a><br>";
}
include("$include/footer.inc");
?>Code : Tout sélectionner
session_start();
if (!session_is_registered(id_user)) header("location:index.php");
include ("config_ann.php");
$id=$HTTP_POST_VARS[id];
$img_origine=$HTTP_POST_VARS[img];
$doss="img/";
$pref="small_";
// d'abord, détruire, c'est tjrs plus facile !!
if ($HTTP_POST_VARS[action]=="supprimer")
{
if ($img_origine != "")
{
unlink ($doss.$img_origine);
if (file_exists($doss.$pref.$img_origine)) unlink ($doss.$pref.$img_origine);
}
$query="delete from $table_annonces where id='$id'";
$succes=mysql_query($query);
if ($succes)
{
header("location:users_choice.php?mess=supp&".SID);
}
}
// modifier l'annonce
elseif ($HTTP_POST_VARS[action]=="modifier")
{
// le fichier joint
$file_name=virer_accents($file_name); //nettoyage du nom de fichier
$file_name=ereg_replace(" ","_",$file_name);
$file_name=ereg_replace("'","",$file_name);
//$file_name=addslashes($file_name);
$img=ereg_replace(" ","_",$file_name);
$img=ereg_replace("'","",$file_name);
$id_cat=$HTTP_POST_VARS[id_cat];
$tel=trim($HTTP_POST_VARS[tel]);
$tel_2=trim($HTTP_POST_VARS[tel_2]);
$date=$HTTP_POST_VARS[date];
$text=strip_tags(addslashes(trim($HTTP_POST_VARS[text])));
if ($img == "")
{
$query="UPDATE $table_annonces";
$query.=" SET id_cat='$id_cat', tel='$tel', tel_2='$tel_2', date='$date', text='$text'";
$query.=" WHERE id='$id'";
$succes=mysql_query($query);
if (($succes))
{
header ("location:users_choice.php?mess=modif&".SID);
}
}
elseif ($img != "")
{
if ($img_origine != "") unlink ($doss.$img_origine);
if (file_exists($doss.$pref.$img_origine)) unlink ($doss.$pref.$img_origine);
// vérification du type et du poids de l'image ou de l'existence d'une image identique
if (file_exists($doss.$img))
{
header ("location:users_choice.php?mess=memeimg&".SID);
}
if (($file_type!="image/jpeg") OR ($file_type!="image/pjpeg"))//vérif du type de l'image
{
header ("location:users_choice.php?mess=type&".SID);
}
elseif ($file_size>51200)//vérif du poids de l'image
{
header ("location:users_choice.php?mess=poids&".SID);
}
else
{
$file_name=virer_accents($file_name); //nettoyage du nom de fichier
$query="UPDATE $table_annonces";
$query.=" SET id_cat='$id_cat', tel='$tel', tel_2='$tel_2', date='$date', text='$text', img='$img'";
$query.=" WHERE id='$id'";
$succes=mysql_query($query);
}
if (copy($file, "$dest/$file_name") and ($succes))
{
header ("location:users_choice.php?mess=modif&".SID);
}
}
}
?>
Ah on avance un peu puisque quelques post plus haut tu ne voyais pas de raison de remplacer les caractères accentués dans un fichier image.le caratere japonnais etant un exmple, et n'importe qui peu faire un caractère japonnais 映画、音楽,J'ai lu nul part que thekingkong destinait son site à un public japonais...justement y'a pas que les accents , y'a tout les autre carateres aussi, en gros ca qu'on cherche a faire, c'est du simple et lisible pour tout le monde (a peu pret), et ecrivable (ca se dit pas) par tous aussi
donc le minium requis : l' ASCII
je peu tres bien mettre un caratere japonnais dans un nom de fichier, mais je vais pas m'amuser a tous les mettres dans ton str_replace
Et donc concrètement selon ton système - lequel ? - il se passe quoi si un visiteur tente de télécharger un fichier image avec un nom qui comporte des caractères accentués, des espaces ou des caractères spéciaux ?
par dessus tout ca, c'est soit un coup de url_encode, soit une conversion ascii moins les carateres non autoriser dans le nom d'un fichier (et les caratere qu'on veux en moins genre l'espace, un slash....)
en resumer url_encode ou iconv + preg
c'est bien de le reconnaitre enfin, je suis curieux de voir ta liste de caractère a remplacer.Et même si tu ne couvre pas toutes les possibilités
Je te laisse réfléchir; iconv n'est pas une fonction "magique"c'est bien de le reconnaitre enfin, je suis curieux de voir ta liste de caractère a remplacer.Et même si tu ne couvre pas toutes les possibilités
Je te laisse réfléchir; iconv n'est pas une fonction "magique"c'est bien de le reconnaitre enfin, je suis curieux de voir ta liste de caractère a remplacer.Et même si tu ne couvre pas toutes les possibilités
Encore une fois on s'en fou totalement d'avoir une liste non exhaustive puisqu'il s'agit simplement d'avoir un nom de fichier image valide et qu'un preg fera le reste du ménage à la suite.c'est un peu facile..., mais bon c'est ton droit