Les liens dans une base de donné mysql
aure2015
Messages postés
93
Date d'inscription
Statut
Membre
Dernière intervention
-
aure2015 Messages postés 93 Date d'inscription Statut Membre Dernière intervention -
aure2015 Messages postés 93 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
en faite j'ai un probleme assez ennuyeux, je dois mettre des liens dans une base de donnée mysql, je les mets dans un endroit de type text et en html (ex: <a href="page1.html> Page 1 </a>) mais le seul probleme est que la base me rajoute des slash (ex:<a href=/"page1.html"/> Page1 </a>) et donc cela rend mon lien inutil... Il est possible de modifier ca structure de la base mais y aurait il un moyen que ca soit juste du premier coup ?
en faite j'ai un probleme assez ennuyeux, je dois mettre des liens dans une base de donnée mysql, je les mets dans un endroit de type text et en html (ex: <a href="page1.html> Page 1 </a>) mais le seul probleme est que la base me rajoute des slash (ex:<a href=/"page1.html"/> Page1 </a>) et donc cela rend mon lien inutil... Il est possible de modifier ca structure de la base mais y aurait il un moyen que ca soit juste du premier coup ?
A voir également:
- Les liens dans une base de donné mysql
- Base de registre - Guide
- Vérificateur de liens - Guide
- Formules mathématiques de base - Télécharger - Études & Formations
- Formules excel de base - Guide
- Mysql community server - Télécharger - Bases de données
11 réponses
Bonjour
Ça m'étonnerait beaucoup que mysql ajoute des slashes à tes données. Je pense que c'est plutôt toi qui les ajoute en enregistrant tes données avec addslashes au lieu de mysql_real_escape_string.
Peux-tu montrer le code qui fait l'insertion ?
Ça m'étonnerait beaucoup que mysql ajoute des slashes à tes données. Je pense que c'est plutôt toi qui les ajoute en enregistrant tes données avec addslashes au lieu de mysql_real_escape_string.
Peux-tu montrer le code qui fait l'insertion ?
<?php
mysql_connect("localhost", "utilisateur", "mot_passe");
mysql_select_db("base");
if (isset($_GET['modifier_hitg']))
{
$_GET['modifier_hitg'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_hitg']));
$retour = mysql_query('SELECT * FROM hitg WHERE id=\'' . $_GET['modifier_hitg'] . '\'');
$donnees = mysql_fetch_array($retour);
$id = stripslashes($donnees['id']);
$chanteur = stripslashes($donnees['chanteur']);
$chanson = stripslashes($donnees['chanson']);
$votes = stripslashes($donnees['votes']);
$id_hitg = $donnees['id'];
}
else
{
$id = '';
$chanteur = '';
$chanson = '';
$votes = '';
$id_hitg = 0;
}
?>
<form action="liste_hitg.php" method="post">
<p>numero : <input type="text" size="30" name="id" value="<?php echo $id; ?>" /></p>
<br>
chanteur :<br />
<input type="text" size="30" name="chanteur" value="<?php echo $chanteur; ?>" />
<br>
Chanson: <br/>
<input type="text" size="30" name="chanson" value="<?php echo $chanson; ?>" />
<br>
Nmbr de votes:<br/>
<input type="text" size="30" name="votes" value="<?php echo $votes; ?>" />
<input type="hidden" name="id_hitg" value="<?php echo $id_hitg; ?>" />
<input type="submit" value="Envoyer" />
</p>
</form>
</body>
</html>
mysql_connect("localhost", "utilisateur", "mot_passe");
mysql_select_db("base");
if (isset($_GET['modifier_hitg']))
{
$_GET['modifier_hitg'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_hitg']));
$retour = mysql_query('SELECT * FROM hitg WHERE id=\'' . $_GET['modifier_hitg'] . '\'');
$donnees = mysql_fetch_array($retour);
$id = stripslashes($donnees['id']);
$chanteur = stripslashes($donnees['chanteur']);
$chanson = stripslashes($donnees['chanson']);
$votes = stripslashes($donnees['votes']);
$id_hitg = $donnees['id'];
}
else
{
$id = '';
$chanteur = '';
$chanson = '';
$votes = '';
$id_hitg = 0;
}
?>
<form action="liste_hitg.php" method="post">
<p>numero : <input type="text" size="30" name="id" value="<?php echo $id; ?>" /></p>
<br>
chanteur :<br />
<input type="text" size="30" name="chanteur" value="<?php echo $chanteur; ?>" />
<br>
Chanson: <br/>
<input type="text" size="30" name="chanson" value="<?php echo $chanson; ?>" />
<br>
Nmbr de votes:<br/>
<input type="text" size="30" name="votes" value="<?php echo $votes; ?>" />
<input type="hidden" name="id_hitg" value="<?php echo $id_hitg; ?>" />
<input type="submit" value="Envoyer" />
</p>
</form>
</body>
</html>
Euh.. ça c'est le formulaire de saisie. L'insertion des données dans la base semble faite dans liste_hitg.php.
<?php
mysql_connect("localhost", "", "");
mysql_select_db("");
if (isset($_POST['id']) AND isset($_POST['chanteur']) AND isset($_POST['chanson']) AND isset($_POST['votes']))
{
$id = addslashes($_POST['id']);
$chanteur= addslashes($_POST['chanteur']);
$chanson = addslashes($_POST['chanson']);
$votes = addslashes($_POST['votes']);
if ($_POST['id_hitg'] == 0)
{
mysql_query("INSERT INTO hitg VALUES('', '" . $id . "', '" . $chanteur . "', '" . $chanson . "', '" . $votes . "', '" . time() . "')");
}
else
{
$_POST['id_hitg'] = addslashes($_POST['id_hitg']);
mysql_query("UPDATE hitg SET id='" . $id . "', chanteur='" . $chanteur . "', chanson='" . $chanson . "', votes='" . $votes . "' WHERE id='" . $_POST['id_hitg'] . "'");
}
}
if (isset($_GET['supprimer_hitg']))
{
$_GET['supprimer_hitg'] = addslashes($_GET['supprimer_hitg']);
mysql_query('DELETE FROM hitg WHERE id=\'' . $_GET['supprimer_hitg'] . '\'');
}
?>
<table><tr>
<th>Modifier</th>
<th>Supprimer</th>
<th>numero</th>
<th>chanteur</th>
<th>chanson</th>
<th>nmbr de votes</th>
<th>Date</th>
</tr>
<?php
$retour = mysql_query('SELECT * FROM hitg ORDER BY id DESC');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
{
?>
<tr>
<td><?php echo '<a href="rediger_hitg.php?modifier_hitg=' . $donnees['id'] . '">'; ?>Modifier</a></td>
<td><?php echo '<a href="liste_hitg.php?supprimer_hitg=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
<td><?php echo stripslashes($donnees['id']); ?></td>
<td><?php echo stripslashes($donnees['chanteur']); ?></td>
<td><?php echo stripslashes($donnees['chanson']); ?></td>
<td><?php echo stripslashes($donnees['votes']); ?></td>
<td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
</tr>
<?php
}
?>
</table>
<br>
<p><a href="protection.php">Retour a la partie moderateur</a></p>
</body>
</html>
mysql_connect("localhost", "", "");
mysql_select_db("");
if (isset($_POST['id']) AND isset($_POST['chanteur']) AND isset($_POST['chanson']) AND isset($_POST['votes']))
{
$id = addslashes($_POST['id']);
$chanteur= addslashes($_POST['chanteur']);
$chanson = addslashes($_POST['chanson']);
$votes = addslashes($_POST['votes']);
if ($_POST['id_hitg'] == 0)
{
mysql_query("INSERT INTO hitg VALUES('', '" . $id . "', '" . $chanteur . "', '" . $chanson . "', '" . $votes . "', '" . time() . "')");
}
else
{
$_POST['id_hitg'] = addslashes($_POST['id_hitg']);
mysql_query("UPDATE hitg SET id='" . $id . "', chanteur='" . $chanteur . "', chanson='" . $chanson . "', votes='" . $votes . "' WHERE id='" . $_POST['id_hitg'] . "'");
}
}
if (isset($_GET['supprimer_hitg']))
{
$_GET['supprimer_hitg'] = addslashes($_GET['supprimer_hitg']);
mysql_query('DELETE FROM hitg WHERE id=\'' . $_GET['supprimer_hitg'] . '\'');
}
?>
<table><tr>
<th>Modifier</th>
<th>Supprimer</th>
<th>numero</th>
<th>chanteur</th>
<th>chanson</th>
<th>nmbr de votes</th>
<th>Date</th>
</tr>
<?php
$retour = mysql_query('SELECT * FROM hitg ORDER BY id DESC');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
{
?>
<tr>
<td><?php echo '<a href="rediger_hitg.php?modifier_hitg=' . $donnees['id'] . '">'; ?>Modifier</a></td>
<td><?php echo '<a href="liste_hitg.php?supprimer_hitg=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
<td><?php echo stripslashes($donnees['id']); ?></td>
<td><?php echo stripslashes($donnees['chanteur']); ?></td>
<td><?php echo stripslashes($donnees['chanson']); ?></td>
<td><?php echo stripslashes($donnees['votes']); ?></td>
<td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
</tr>
<?php
}
?>
</table>
<br>
<p><a href="protection.php">Retour a la partie moderateur</a></p>
</body>
</html>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est là que tu ajoutes les slashes qui te posent un problème.
$id = addslashes($_POST['id']);
$chanteur= addslashes($_POST['chanteur']);
$chanson = addslashes($_POST['chanson']);
$votes = addslashes($_POST['votes']);
Il est possible que tu aies de plus un problèmes de magic_quotes_gpc : dans certaines configurations, c'est PHP lui-même qui ajoute les slashes au niveau des variables $_GET, $_POST et $_COOKIE (g,p,c)
Comme tu as aussi des stripslashes au niveau de ton affichage, c'est peut-être bien le cas.
Il faut alors utiliser une fonction qui fait un stripslashes ou non des données $_POST selon la valeur de magic_quotes_gpc, comme ça ça marche dans tous les cas de figure :
Dès le début de ton script :
function RecupChaine($chaine) {
if (get_magic_quotes_gpc()==1) return stripslashes($chaine); // il y avait magic
return $chaine; // il n'y avait pas magic
}
puis, pour récupérer tes variables
$id = mysql_real_escape_string(RecupChaine($_POST['id']));
$chanteur= mysql_real_escape_string(RecupChaine($_POST['chanteur']));
$chanson = mysql_real_escape_string(RecupChaine($_POST['chanson']));
$votes = mysql_real_escape_string(RecupChaine($_POST['votes']));
Et par ailleurs aucun autre addslahes ni stripslashes, qui n'ont aucun sens avec mysql.
(Note que ça ne va malheureusement rien changer pour les données déjà enregistrées dans ta base)
$id = addslashes($_POST['id']);
$chanteur= addslashes($_POST['chanteur']);
$chanson = addslashes($_POST['chanson']);
$votes = addslashes($_POST['votes']);
Il est possible que tu aies de plus un problèmes de magic_quotes_gpc : dans certaines configurations, c'est PHP lui-même qui ajoute les slashes au niveau des variables $_GET, $_POST et $_COOKIE (g,p,c)
Comme tu as aussi des stripslashes au niveau de ton affichage, c'est peut-être bien le cas.
Il faut alors utiliser une fonction qui fait un stripslashes ou non des données $_POST selon la valeur de magic_quotes_gpc, comme ça ça marche dans tous les cas de figure :
Dès le début de ton script :
function RecupChaine($chaine) {
if (get_magic_quotes_gpc()==1) return stripslashes($chaine); // il y avait magic
return $chaine; // il n'y avait pas magic
}
puis, pour récupérer tes variables
$id = mysql_real_escape_string(RecupChaine($_POST['id']));
$chanteur= mysql_real_escape_string(RecupChaine($_POST['chanteur']));
$chanson = mysql_real_escape_string(RecupChaine($_POST['chanson']));
$votes = mysql_real_escape_string(RecupChaine($_POST['votes']));
Et par ailleurs aucun autre addslahes ni stripslashes, qui n'ont aucun sens avec mysql.
(Note que ça ne va malheureusement rien changer pour les données déjà enregistrées dans ta base)
n changeant simplement les :
$id = addslashes($_POST['id']);
$chanteur= addslashes($_POST['chanteur']);
$chanson = addslashes($_POST['chanson']);
$votes = addslashes($_POST['votes']);
en:
$id = mysql_real_escape_string(RecupChaine($_POST['id']));
$chanteur= mysql_real_escape_string(RecupChaine($_POST['chanteur']));
$chanson = mysql_real_escape_string(RecupChaine($_POST['chanson']));
$votes = mysql_real_escape_string(RecupChaine($_POST['votes']));
Ca a marché... Mais merci beaucoup
$id = addslashes($_POST['id']);
$chanteur= addslashes($_POST['chanteur']);
$chanson = addslashes($_POST['chanson']);
$votes = addslashes($_POST['votes']);
en:
$id = mysql_real_escape_string(RecupChaine($_POST['id']));
$chanteur= mysql_real_escape_string(RecupChaine($_POST['chanteur']));
$chanson = mysql_real_escape_string(RecupChaine($_POST['chanson']));
$votes = mysql_real_escape_string(RecupChaine($_POST['votes']));
Ca a marché... Mais merci beaucoup
C'est que magic_quotes_gpc est à 0. Ce qui est le cas normal, mais j'ai pris l'habitude d'utiliser cette fonction parce qu'un hébergeur que j'ai eu autrefois avait cette variable à 1
Tu devrais quand même retirer les stripslahes de l'affichage. Essaye de saisir un titre avec un slash suivi d'un apostrophe (pourquoi pas ?), il sera correctement enregistré dans la base, mais le stripslahes les effacera.
<?php
mysql_connect("localhost", "", "");
mysql_select_db("");
function RecupChaine($chaine) {
if (get_magic_quotes_gpc()==1) return stripslashes($chaine); // il y avait magic
return $chaine; // il n'y avait pas magic
}
if (isset($_POST['id']) AND isset($_POST['chanteur']) AND isset($_POST['chanson']) AND isset($_POST['votes']))
{
$id = addslashes($_POST['id']);
$chanteur= mysql_real_escape_string($_POST['chanteur']);
$chanson =mysql_real_escape_string($_POST['chanson']);
$votes = addslashes($_POST['votes']);
if ($_POST['id_hitg'] == 0)
{
mysql_query("INSERT INTO hitg VALUES('', '" . $id . "', '" . $chanteur . "', '" . $chanson . "', '" . $votes . "', '" . time() . "')");
}
else
{
$_POST['id_hitg'] = addslashes($_POST['id_hitg']);
mysql_query("UPDATE hitg SET id='" . $id . "', chanteur='" . $chanteur . "', chanson='" . $chanson . "', votes='" . $votes . "' WHERE id='" . $_POST['id_hitg'] . "'");
}
}
if (isset($_GET['supprimer_hitg']))
{
$_GET['supprimer_hitg'] = addslashes($_GET['supprimer_hitg']);
mysql_query('DELETE FROM hitg WHERE id=\'' . $_GET['supprimer_hitg'] . '\'');
}
?>
<table><tr>
<th>Modifier</th>
<th>Supprimer</th>
<th>numero</th>
<th>chanteur</th>
<th>chanson</th>
<th>nmbr de votes</th>
<th>Date</th>
</tr>
<?php
$retour = mysql_query('SELECT * FROM hitg ORDER BY id DESC');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
{
?>
<tr>
<td><?php echo '<a href="rediger_hitg.php?modifier_hitg=' . $donnees['id'] . '">'; ?>Modifier</a></td>
<td><?php echo '<a href="liste_hitg.php?supprimer_hitg=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
<td><?php echo stripslashes($donnees['id']); ?></td>
<td><?php echo stripslashes($donnees['chanteur']); ?></td>
<td><?php echo stripslashes($donnees['chanson']); ?></td>
<td><?php echo stripslashes($donnees['votes']); ?></td>
<td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
</tr>
<?php
}
?>
</table>
<br>
<p><a href="protection.php">Retour a la partie moderateur</a></p>
</body>
</html>
Ca donne ca?
mysql_connect("localhost", "", "");
mysql_select_db("");
function RecupChaine($chaine) {
if (get_magic_quotes_gpc()==1) return stripslashes($chaine); // il y avait magic
return $chaine; // il n'y avait pas magic
}
if (isset($_POST['id']) AND isset($_POST['chanteur']) AND isset($_POST['chanson']) AND isset($_POST['votes']))
{
$id = addslashes($_POST['id']);
$chanteur= mysql_real_escape_string($_POST['chanteur']);
$chanson =mysql_real_escape_string($_POST['chanson']);
$votes = addslashes($_POST['votes']);
if ($_POST['id_hitg'] == 0)
{
mysql_query("INSERT INTO hitg VALUES('', '" . $id . "', '" . $chanteur . "', '" . $chanson . "', '" . $votes . "', '" . time() . "')");
}
else
{
$_POST['id_hitg'] = addslashes($_POST['id_hitg']);
mysql_query("UPDATE hitg SET id='" . $id . "', chanteur='" . $chanteur . "', chanson='" . $chanson . "', votes='" . $votes . "' WHERE id='" . $_POST['id_hitg'] . "'");
}
}
if (isset($_GET['supprimer_hitg']))
{
$_GET['supprimer_hitg'] = addslashes($_GET['supprimer_hitg']);
mysql_query('DELETE FROM hitg WHERE id=\'' . $_GET['supprimer_hitg'] . '\'');
}
?>
<table><tr>
<th>Modifier</th>
<th>Supprimer</th>
<th>numero</th>
<th>chanteur</th>
<th>chanson</th>
<th>nmbr de votes</th>
<th>Date</th>
</tr>
<?php
$retour = mysql_query('SELECT * FROM hitg ORDER BY id DESC');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
{
?>
<tr>
<td><?php echo '<a href="rediger_hitg.php?modifier_hitg=' . $donnees['id'] . '">'; ?>Modifier</a></td>
<td><?php echo '<a href="liste_hitg.php?supprimer_hitg=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
<td><?php echo stripslashes($donnees['id']); ?></td>
<td><?php echo stripslashes($donnees['chanteur']); ?></td>
<td><?php echo stripslashes($donnees['chanson']); ?></td>
<td><?php echo stripslashes($donnees['votes']); ?></td>
<td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
</tr>
<?php
}
?>
</table>
<br>
<p><a href="protection.php">Retour a la partie moderateur</a></p>
</body>
</html>
Ca donne ca?