Transmettre une variable de session?

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


tryan
WRInaute accro
WRInaute accro
 
Messages: 1499
Inscription: Dim Fév 20, 2005 14:14

Transmettre une variable de session?

Message le Dim Fév 10, 2008 9:32

Bonjour,

J'essaye tant bien que mal de transmettre une simple variable de session d'une page à une autre mais sans succès et je ne comprend pas pourquoi!

Page1:
Code: Tout sélectionner
<?
     session_start();
     $_SESSION['login']='valeur';
echo "<a href=\"modifier-en-tete2.php\">informations.php</a>";
?>

Page2:
Code: Tout sélectionner
<?
     session_start();
     if(isset($_SESSION['login']))
     {
          echo $_SESSION['login'];
     }
?>

Je précise que les codes sont placés en tout début de page, sans espace et qu'il n'y a rien d'autre comme code (simple teste).J'ai également testé en commencent le code avec <?php ...

Sous FREE et OVH, j'ai cette erreur:
Code: Tout sélectionner
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/141/sdc/e/0/.../index2.php:1) in /mnt/141/sdc/e/0/...index2.php on line 1

Sous 1&1 pour le même code je n'ai pas d'erreur mais la variable n'ai pas transmise 8O .
J'aimerais comprendre pourquoi selon l'hébergeur un même code renvoie des erreurs et pourquoi ma variable n'ai pas transmise.
Merci


e-kiwi
Modérateur
Modérateur
 
Messages: 13817
Inscription: Mar Déc 23, 2003 9:04

Message le Dim Fév 10, 2008 9:42

tu n est sur qu'il y a que ca dans tes 2 pages ? tu n inclurai pas une page qui fait un session_start() dans une autre page a tout hasard ? car pas besoin de redefinir quoi que ce soit dns une page incluse, ca fait doublon :)


tryan
WRInaute accro
WRInaute accro
 
Messages: 1499
Inscription: Dim Fév 20, 2005 14:14

Message le Dim Fév 10, 2008 10:05

e-kiwi a écrit:tu n est sur qu'il y a que ca dans tes 2 pages ? tu n inclurai pas une page qui fait un session_start() dans une autre page a tout hasard ? car pas besoin de redefinir quoi que ce soit dns une page incluse, ca fait doublon :)


J'ai pourtant bien dit: "..qu'il n'y a rien d'autre comme code .." :) .
Ces 2 fichiers sont "isolés" dans une dossier. Il n'y a vraiment rien d'autre que les 2 bouts de code cité plus haut mit respectivement dans les 2 fichiers.
Merci quand même e-kiwi.

deathwish
Nouveau WRInaute
 
Messages: 12
Inscription: Sam Fév 02, 2008 22:39

Message le Dim Fév 10, 2008 11:24

Code: Tout sélectionner
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/141/sdc/e/0/.../index2.php:1) in /mnt/141/sdc/e/0/...index2.php on line 1


ça signifie que du code html a été envoyé avant ton session_start() ... vérifie bien ton code ...

pour 1and1 c'est normal qu'il n'affiche pas d'erreur, ils ont supprimé l'affichage des erreurs dans php.ini. (c'est pour des raisons de sécurité...)

FloBaoti
WRInaute passionné
WRInaute passionné
 
Messages: 682
Inscription: Dim Avr 30, 2006 18:42

Message le Dim Fév 10, 2008 11:58

Effectivement tu as du texte renvoyé au navigateur avant le début du PHP.
Il se peut que ça soit des caractères invisibles, ouvres ton fichier avec un éditeur héxadécimal par exemple et vire tout ce qu'il y a avant <?


tryan
WRInaute accro
WRInaute accro
 
Messages: 1499
Inscription: Dim Fév 20, 2005 14:14

Message le Dim Fév 10, 2008 14:17

J'ai beau vérifier et re-vérifier, je ne vois pas d'erreur ..
Regarder par vous même:
Chez OVH -http://reflink.fr/a/. (Le .rar contient les 2 fichiers que j'utilise).
La même sous FREE -http://creer.mon.site.free.fr/a/ et enfin sous 1&1 -http://creer-un-site.fr/a/index2.php .

FloBaoti
WRInaute passionné
WRInaute passionné
 
Messages: 682
Inscription: Dim Avr 30, 2006 18:42

Message le Dim Fév 10, 2008 16:04

il y a bien 3 caractères qui s'incrustent au tout début de tes fichiers.

Ça m'arrive souvent ce genre de trucs et c'est bien chiant (ce sont généralement des en-têtes UTF-8 que Notepad++ ajoute mais qui me gênent plus qu'autre chose).

Utilise HexEdit par exemple pour les virer


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3062
Inscription: Jeu Sep 14, 2006 4:53

Message le Dim Fév 10, 2008 20:27

Moi j'avais ce bug avec notepad de windows. Mais justement, je reglais le probleme avec notepad++ ^^


tryan
WRInaute accro
WRInaute accro
 
Messages: 1499
Inscription: Dim Fév 20, 2005 14:14

Message le Dim Fév 10, 2008 20:41

Merci FloBaoti, visiblement ta réponse est la bonne :D . Ceci dit, j'ai utilisé bloc-notes pour ce petit bout de code. Je trouve sa vraiment "relou" qu'il faille utiliser un logiciel spéciale pour se rendre compte de sa ...
En tout cas merci à vous :wink: .


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3062
Inscription: Jeu Sep 14, 2006 4:53

Message le Dim Fév 10, 2008 20:44

A ben voila, c'est le bloc-note. Installe notepad++ !

Justement avec lui tout va bien, tu as les couleurs pour tous les langages, il est léger, une fonction rechercher remplacer super puissante multi-fichiers :p

FloBaoti
WRInaute passionné
WRInaute passionné
 
Messages: 682
Inscription: Dim Avr 30, 2006 18:42

Message le Dim Fév 10, 2008 22:41

YoyoS a écrit:A ben voila, c'est le bloc-note. Installe notepad++ !

C'est justement NotePad++ qui m'ajoute ces 3 caractères quand je lui demande de me coder la page en UTF-8...

Edit: il faut lui dire de coder en UTF-8 sans BOM. J'avais jamais vu cette option...
cf: http://fr.wikipedia.org/wiki/Marque_d'ordre_des_octets


tryan
WRInaute accro
WRInaute accro
 
Messages: 1499
Inscription: Dim Fév 20, 2005 14:14

Message le Lun Fév 11, 2008 10:43

Whaouuu , trop chiant ces caractères qui viennent s'incruster comme sa!

Bon vu que je suis dans les transmissions de variable, j'ai un nouveau soucis que je ne comprend pas ..

Je transmet donc des infos d'une page A à une page B par variable de session qui s'affiche donc dans un formulaire. Jusque la, pas de soucis!
Code de la page de mon formulaire:
Code: Tout sélectionner
<?php if (isset($_SESSION['identete']))
{
?>

<form name="frm" method="get" action="modifier-en-tete2.php">
<b>ID:</b>
<input type="text" name="iad" value="<?php echo $_SESSION['identete']; ?>" /><br/>
<b>Titre:</b><br/>
<textarea name="taitre" cols=50 rows="5" ><?php echo stripslashes($_SESSION['titreentete']); ?>" /></textarea><br />
<b>Description:<b><br/>

<textarea name="daescription" cols=50 rows="5" ><?php echo stripslashes($_SESSION['descriptionentete']); ?></textarea><br/>

<b>Url :</>
<input type="text" name="uarl" value="<?php echo $_SESSION['urlentete']; ?>" />
<br />
<input type="submit" name="envoyer" value="Modifier l'entete" />

</form>

<?}?>

Je souhaite ensuite pouvoir modifier les infos contenue dans mon formulaire, alors je transmet celles ci à une page C par méthode GET pour la modification dont voici le code:
Code: Tout sélectionner
<?php
//si la variable $_GET["iad"] existe alors ..
if (isset($_GET["iad"])){

//je teste si elle existe en l'affichant
echo $_GET["iad"];


//Je me connecte   
mysql_connect("**","**","**");
mysql_select_db("localhost");

$id = $_GET["iad"];
$titre = $_GET["taitre"];
$description = $_GET["daescription"];
$url = $_GET["uarl"];


$sql=("UPDATE `nom_de_ma_base`.`RSS` SET `titre` = '$titre',`description` = '$description',`url` = '$url' WHERE

`RSS`.`id` =$id LIMIT 1 ;");


mysql_close();
}
?>


Les infos modifiées depuis la page B sont bien transmises à C mais aucune changement ne se fait dans ma base ...
Ou est mon erreur ?


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 5071
Inscription: Mer Nov 23, 2005 10:38

Message le Lun Fév 11, 2008 11:05

tryan a écrit:Whaouuu , trop chiant ces caractères qui viennent s'incruster comme sa!

Bon vu que je suis dans les transmissions de variable, j'ai un nouveau soucis que je ne comprend pas ..

Je transmet donc des infos d'une page A à une page B par variable de session qui s'affiche donc dans un formulaire. Jusque la, pas de soucis!
Code de la page de mon formulaire:
Code: Tout sélectionner
<?php if (isset($_SESSION['identete']))
{
?>

<form name="frm" method="get" action="modifier-en-tete2.php">
<b>ID:</b>
<input type="text" name="iad" value="<?php echo $_SESSION['identete']; ?>" /><br/>
<b>Titre:</b><br/>
<textarea name="taitre" cols=50 rows="5" ><?php echo stripslashes($_SESSION['titreentete']); ?>" /></textarea><br />
<b>Description:<b><br/>

<textarea name="daescription" cols=50 rows="5" ><?php echo stripslashes($_SESSION['descriptionentete']); ?></textarea><br/>

<b>Url :</>
<input type="text" name="uarl" value="<?php echo $_SESSION['urlentete']; ?>" />
<br />
<input type="submit" name="envoyer" value="Modifier l'entete" />

</form>

<?}?>

Je souhaite ensuite pouvoir modifier les infos contenue dans mon formulaire, alors je transmet celles ci à une page C par méthode GET pour la modification dont voici le code:
Code: Tout sélectionner
<?php
//si la variable $_GET["iad"] existe alors ..
if (isset($_GET["iad"])){

//je teste si elle existe en l'affichant
echo $_GET["iad"];


//Je me connecte   
mysql_connect("**","**","**");
mysql_select_db("localhost");

$id = $_GET["iad"];
$titre = $_GET["taitre"];
$description = $_GET["daescription"];
$url = $_GET["uarl"];


$sql=("UPDATE `nom_de_ma_base`.`RSS` SET `titre` = '$titre',`description` = '$description',`url` = '$url' WHERE

`RSS`.`id` =$id LIMIT 1 ;");


mysql_close();
}
?>


Les infos modifiées depuis la page B sont bien transmises à C mais aucune changement ne se fait dans ma base ...
Ou est mon erreur ?


Tu devrais débugger pas à pas :

1) faire un echo juste avant ton test $_GET["iad"]
2) faire un echo juste après ton test $_GET["iad"]
3) faire un echo de l'ordre sql et le etster dans phpmyadmin pour vérifier qu'il est bon

Par ailleurs, avant d'affecter le contenu de variables récupérées dans l'url ou en post à des variables, c'est bien de les tester et de faire un mysql_real_escape_string.


e-kiwi
Modérateur
Modérateur
 
Messages: 13817
Inscription: Mar Déc 23, 2003 9:04

Message le Lun Fév 11, 2008 11:14

en meme temps dans le code y a pas l'execution de la requete (mysql_query) et cette insertion marchera pas tout le temps (genre dans $description y a une apostrophe, et ca plante, pense à trsiter les variables avant de les inserer (addslashes, htmlentities, ...) et mieux aussi passer tes variables apr $_POST plutot que par GET aussi, je n'en vois aps l interet ici


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 5071
Inscription: Mer Nov 23, 2005 10:38

Message le Lun Fév 11, 2008 11:22

e-kiwi a écrit:en meme temps dans le code y a pas l'execution de la requete (mysql_query) et cette insertion marchera pas tout le temps (genre dans $description y a une apostrophe, et ca plante, pense à trsiter les variables avant de les inserer (addslashes, htmlentities, ...) et mieux aussi passer tes variables apr $_POST plutot que par GET aussi, je n'en vois aps l interet ici


Ah oui j'avais zappé l'essentiel, l'absence d'exécution de l'ordre sql.

Par contre on est bien d'accord pour le reste e-kiwi, je vois pas trop l'intérêt du $_GET. Mais même en post, appliquer des traitements préalable aux variables récupérées est un indispensable avant de tenter de les insérer en base. Et en premier lieu, tester que les données existent avant de les affecter c'est quand même plus propre.

Transmettre une variable de session?

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités