Page 1 sur 1

Petit soucis de redirection

Posté : 11 août 2008, 22:02
par Invité
Bonjour, j 'ai un petit soucis avec le code suivant:
echo "<meta http-equiv='refresh' content='0; URL=images.php?select=$lien>'";
Le soucis, c'est que la variable $lien n'est pas accepté.
Tandis que header ne fonctionne pas :
$bdd =trim($_GET['select']);// récuperation de l'image qu'on veut supprimer.
include 'connexion.php';
$query = "SELECT * FROM images WHERE id = '$bdd' && site = '$site'"; 
mysql_query ($query) or die ('error');
$lecture = mysql_query ($query);
$result = mysql_fetch_array($lecture);
$suppression = $result['2'];
$lien = $result['7'];
unlink('images/'.$suppression); 
$query = "DELETE FROM images where id = '$bdd' && site = '$site'";
mysql_query($query) or die ('query failed');
header('location: https://ssl.1and1.fr/administration.site.org/images.php?select=$lien' );

Re: Petit soucis de redirection

Posté : 11 août 2008, 22:24
par Victor BRITO
D'abord, évite autant que possible les redirections par meta "refresh" (technique qui, soit dit en passant, détourne cette balise de son usage originel).

Ensuite, pour la dernière ligne de ton code exposé, essaie de procéder comme suit :
header('location: https://ssl.1and1.fr/administration.site.org/images.php?select='.$lien);
Les guillemets simples, en effet, ne permettent pas d'interpréter les variables. Autrement dit, soit tu utilises la concaténation soit tu remplaces les guillemets simples par des guillemets doubles (qui, eux, permettent l'interprétation des variables) :
$ma_variable = 'toto';
echo 'Ma variable a pour valeur $ma_variable'; // Affiche Ma variable a pour valeur $ma_variable
echo 'Ma variable a pour valeur '.$ma_variable; // Affiche Ma variable a pour valeur toto
echo "Ma variable a pour valeur $ma_variable"; // Affiche Ma variable a pour valeur toto

Posté : 11 août 2008, 22:36
par Invité
Déjà, déjà merci pour la réponse, j avais oublié de préciser que j'avais utilisé la concaténation, mais sans résultat, la redirection ne se fait pas...

Posté : 11 août 2008, 23:31
par Invité
Ici, le problème n'est pas la concaténation, mais l'emplacement du header. Voici le code dans son intégralité et comme vous pouvez le constater, il n'y a pas d'echo, ni même de code html avant le header.
<?php
session_start();
if (isset($_SESSION['site']))
{
$site = $_SESSION['site'];

$bdd =trim($_GET['select']);// récuperation de l'image qu'on veut supprimer.
include 'connexion.php';
$query = "SELECT * FROM images WHERE id = '$bdd' && site = '$site'"; 
mysql_query ($query) or die ('error');
$lecture = mysql_query ($query);
$result = mysql_fetch_array($lecture);
$suppression = $result['2'];
$lien = $result['7'];
unlink('images/'.$suppression);// suppression de l'image en question dans le repertoire imagessites 
$query = "DELETE FROM images where id = '$bdd' && site = '$site'";
mysql_query($query) or die ('query failed');
header('location: https://ssl.1and1.fr/administration.site.fr/images.php?select='.$lien );
//echo "<meta http-equiv='refresh' content='0; URL=images.php?select=$lien>'";
}
else
{
echo "<meta http-equiv='refresh' content='0; URL=index.html'>";
}
?>

Si quelqu'un a une autre alternative, ou m'explique pourquoi le header ne fonctionne pas. Dans l'attente de vos réponse, je vous souhaite une bonne soirée.

Posté : 12 août 2008, 00:04
par Hywan
Hey :),

Dans ton premier code, tu as écrit :
echo "<meta http-equiv='refresh' content='0; URL=images.php?select=$lien>'";
Tu as des problèmes de guillemet mal placé :
echo '<meta http-equiv="refresh" content="0; url=images.php?select=' . $lien . '">';
Comme Victor te l'a dit, évite les meta, mais plutôt la fonction header avec l'en-tête location. Tu nous dit que ça ne fonctionne pas, pourquoi ? Tu as quelle erreur ? Tes rapports d'erreur sont bien activés ? Si tu déplaces ta fonction header, il se passe quoi ? Tu as fait quels tests ?

Posté : 12 août 2008, 06:01
par Invité
Bonjour, Alors en ce qui concerne les erreurs, ben il y en a pas, la page reste blanche. En ce qui concerne les test, effectivement ça fonctionne lorsque je déplace le header. Cependant je dois attendre que tout le code que vous avez pu voir puisse s'exécuter avant de faire la redirection. j'ai bien quelque idées pour y remédie (par exemple si j'utilise une structure de contrôle tout au début du code, et que je passe la condition à true dès que je veux réaliser la redirection.) Cependant, Ça ressemble un peu à une magouille, et je me demandais s'il y avait une autre manière pour arriver à mes fins.
Je ne pourrais vous répondre maintenant que tard ce soir. Je vous souhaite une bonne journée et bon courage à tous.

Posté : 12 août 2008, 10:05
par Hywan
Hmm, surtout bon courage à toi ! C'est à toi de chercher avant de nous ;-).

À mon avis, tu dois avoir une erreur qui se déclenche avant ton header, et elle ne doit pas être affichée (ou bizarrement). Je te conseille de vérifier ligne par ligne si tu n'as pas d'erreur avant de lancer ton header (tu peux commencer par l'enlever ce header, on y verra plus clair).

Posté : 12 août 2008, 18:58
par Invité
Heu, je crois qu'il y a une mauvaise interprétation, lorsque j'ai dis bon courage, ce n'étais pas pour m'aider, mais je pensais à toutes les personnes qui partaient travaillés.....Désolé.
Bon, maintenant que je suis rentré je vais faire comme tu me l'as dis, je vais tester le code ligne après ligne jusqu' à temps de trouver. Dès que c'est fait, je tiens au courant.

Posté : 12 août 2008, 22:46
par Invité
Après avoir fais quelques tests, le soucis vient de l'include... Merci beaucoup pour l'aide que vous m'avez apporté notamment de tous les renseignements concernant le header l

Posté : 13 août 2008, 08:06
par zeus
Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)