changer une variable de session.

Répondre
papigato
le 01/09/2009 à 15:49
papigato
bonjour :p

je souhaites laisser la possibilité a mes membres de créer des campagnes qui sont apellés dans mon while comme ca :
if (mysql_num_rows($requete2) < 1)
{
echo'</table><center>vous n\'avez pas de campagne
<br /><a href="nouvelle_campagne.php">créer une campagne</a></center>';
}
else
{
?>


<?php

while ($donnees = mysql_fetch_array($requete2))
{
?>

<tr>
<td><center><input type="checkbox" name="supp[]" value="<?php echo $donnees['campagne_id'];?>" class="noborder" /></center></td>
<td><?php echo'<a href="voircampagne.php?m='.stripslashes(htmlspecialchars($donnees['campagne_id'])).'&action=consulter">'; ?><?php echo $donnees['campagne_nom']; ?></td>
<td><span style="float:left;"><?php echo $donnees['campagne_description'];?></span></td>
<td><center><?php echo ''.date('d/M/Y',$donnees['campagne_creation']).''; ?></center></td>
<td><center><?php if($donnees['campagne_status'] == 0) echo '<span style="color:red">Inactive</span>'; else echo '<span style="color:green">Active</span>'; ?></center></td>
<td><center><a href="switch_campagne.php?id=<?php echo $donnees['campagne_id'];?>"><img src="../images/switch.png" title="s&eacute;l&eacute;ctionner" /></a></center></td>
</tr>
<?php
}

a la ligne 23, je souhaites leur proposer de switcher entre leur campagnes pour rentrer une variable de session qui ferait que si MR A clique sur le switche de sa campagne A, toute action réalisée par la suite ne concerne que cette campagne.(c est pour un site de mailing)

en gros, il clique sur la campagne A et décide de rentrer un prospect , le prospect sera lié a la campagne A.

il décide alors d'envoyer une news aux abonnés de sa liste B .
il retourne sur la page qui contient le code ci-dessus et switch sur la campagne B et se rend sur la page d'envoi de newsletter et envois ca news mais que les membres de la campagne B la recevront .
j'ésperes avoir été clair ...

ma question est comment remplir ma page switch_campagne.php pour séléctionner la campagne et transmettre la variable de page en page ...
LA GLOBULE
le 01/09/2009 à 22:45
LA GLOBULE
Pourquoi n'utilises tu pas les sessions ?

En fait, je ne vois pas le lien qu'il y'a entre campagne A et campagne B.

Car tu dis que le mec modifie A, et qu'ensuite il va sur B, il balance un mailing pour les gens de la campagne B.
Quel est le lien avec A ? Qu'il modifie A ou non, cela revient au même non ?
papigato
le 02/09/2009 à 11:58
papigato
Salut,
j'utilises déjas les sessions . mais le truc c est que les membres n'auront pas de réstriction sur la quantité de campagne qu'ils pourront créer donc ils risquent de se perdre un peu . Mon objectif, est de créer une variable de session lors du clic sur l'url et un redirect automatique une fois le clic éffectué et la variable de session créée. une fois cliqué, en haut a droite il verra notifié: "vous gérez la campagne : campagne X" avec un lien a coté pour re switcher. En fait mon idée est de facilité le repèrage en cas d'un nombre important de campagne et surtout une facilitation de l'utilisation de l'outil.
Ce qui fait que si il séléctionne la campagne X et qu'il se dirige vers la création d'un message, il sera créer directement pour la campagne X, il désire savoir combien de prospects il a sur sa campagne Y, il switch et vas voir sa liste qui sera automatiquement en rapport avec la campagne Y.
Peut être que j'éxplique mal mon histoire aussi :p

j'ai ejas fait ca pour ma page de switch mais ca marche pas :

<?php
session_start();
include("include/identifiants.php");
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);

$camgagne_selectionnee = mysql_query('SELECT * FROM campagne WHERE campagne_membre_id = '.$_GET['id'].'') or die(mysql_error());


$_SESSION['campagne_selectionnee'] = '.$camgagne_selectionnee.';

header('location:campagne.php');
?>
LA GLOBULE
le 02/09/2009 à 13:59
LA GLOBULE
Cela ne fonctionne pas, car tu stockes en session la chaine de caractère '.$camgagne_selectionnee.' et non un identifiant de campagne.

Fais un echo de ta session, tu verras bien.

Et vu ce que tu as écrit, tu pourrais te dire qu'il te suffirait de mettre $_SESSION['campagne_selectionnee'] = $camgagne_selectionnee; pour que cela fonctionne, mais la, tu stockeras en session un identifiant de ressource MySQL. Donc ca ne collera toujours pas.

Sinon, ta requete me semble fausse : la, tu cherches toutes les campagnes d'un membre.
Alors, qu'il faudrait plutôt tester si la campagne existe pour le membre non ?

Et il y'a un autre problème, tu ne check pas si la requete retourne un élément ou non.

Bref, voici un truc qui devrait tourner :

<?php
session_start();
include("include/identifiants.php");
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);

$camgagne_selectionnee = mysql_query("SELECT campagne_id FROM campagne WHERE campagne_membre_id = ".intval($_GET['membre_id'])." AND campagne_id = ".intval($_GET['campagne_id'])) or die(mysql_error());

if (mysql_num_rows($camgagne_selectionnee) == 1) {
$_SESSION['campagne_selectionnee'] = intval($_GET['campagne_id']);
}

header('location: campagne.php');
exit()
?>


Notes bien que tu as besoin de l'identifiant du membre et de la campagne en GET.
papigato
le 02/09/2009 à 18:57
papigato
salut,

en fait entre temps, j'ai réussi a trouver la solution a ce que je cherchais :
<?php
session_start();
include("include/identifiants.php");
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);
//requete pour le switch de variables
$requete3 = mysql_query('SELECT * FROM campagne where campagne_id ='.$_GET['id'].'') or die(mysql_error());
$campselect = mysql_fetch_array($requete3);

// nouvelles variables de session
$_SESSION['campselect'] = $campselect['campagne_nom'] ;
$_SESSION['campid'] = $_GET['id'] ;

header("Location: http://www.velipro-autorepondeur.com/test/campagne/campagnes.php");

?>


la vérif est pas nécessaire car si la table ramene rien en resultat le lien n'éxiste pas

merci
(c est dommage on peut pas mettre en résolu)
LA GLOBULE
le 02/09/2009 à 20:59
LA GLOBULE
J'ai aussi oublié de te dire que tu dois tester si $_GET['id'] existe ou non avant de lancer la requete.

Si la variable n'existe pas, fait une redirection quelque part.
papigato
le 03/09/2009 à 00:57
papigato
si je ne fais pas de redirection si GET n'éxiste pas ca pourrait craindre pour les données au niveau sécurité ?
LA GLOBULE
le 03/09/2009 à 06:46
LA GLOBULE
Ben disons que le plus grave, c'est que tu ne fais pas un intval sur $_GET['id'] (regarde mon code et la doc. de la fonction pour comprendre à quoi cela sert).

Et oui, c'est "grave" de ne pas tester si $_GET['id'] existe.
Si ce cas arrive, ca ne cassera pas des données (si tu mets bien le intval), mais ca claquera une erreur SQL (que tu peux donc éviter en faisant ce test).

Qui peut le plus peut le moins, faut toujours tout tester quand on code. C'est ce qui fais la différence entre un dev. du dimanche et un dev. pro.
papigato
le 03/09/2009 à 16:11
papigato
ok bien chef ! je vais appliquer .
POur le moment je fais la conception du script total du site et je verrais une fois fini pour les sécurités, etc.

Merci :p
LA GLOBULE
le 04/09/2009 à 09:45
LA GLOBULE
D'après mon expérience pro., si la sécurité n'est pas gérée dès le départ, elle ne sera jamais gérée.

Parce que déjà, ca saoule de revenir sur son code, alors que ca aurait pu se faire dès le départ.

Et les dev. subissent une pression constante de la part du marketing ou des commerciaux pour que les pages passent en ligne le plus vite possible : "bah, la, la page elle marche, pourquoi on ne la met pas en ligne ?" Tu ne pourras pas dire au mec "Ben, y'a des failles de sécu. je dois relire / modifier mon code".
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours