Attention Warning !!!
Fermé
Max747
Messages postés
258
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2024
-
19 févr. 2020 à 10:07
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 - 5 mars 2020 à 15:52
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 - 5 mars 2020 à 15:52
18 réponses
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
19 févr. 2020 à 11:34
19 févr. 2020 à 11:34
Bonjour,
Le message
Donne les informations utiles à la résolution de ton souci.
En gros... il te dit que tu ne peux pas utiliser cette fonction si tu as déjà fais un session_start
Tu peux éventuellement vérifier si la session est déjà démarrée ou non avant de faire cette instruction et de démarrer la session
un truc du genre
Le message
Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active
Donne les informations utiles à la résolution de ton souci.
En gros... il te dit que tu ne peux pas utiliser cette fonction si tu as déjà fais un session_start
Tu peux éventuellement vérifier si la session est déjà démarrée ou non avant de faire cette instruction et de démarrer la session
un truc du genre
if (session_status() == PHP_SESSION_NONE) { session_set_cookie_params(time()+365*24*3600, $path); // 1 an. session_start(); }
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
19 févr. 2020 à 11:35
19 févr. 2020 à 11:35
Bonjour,
En gros, la première erreur indique que tu appelles session_set_cookie_params à un moment interdit (parce que la session est déjà active). Elle a probablement déjà été ouverte précédemment.
Du coup pour corriger le problème, je te suggère d'effectuer un test sur l'état de la session :
Les autres erreurs sont me semble-t-il des conséquences de cette première erreur, et devraient disparaître avec elle.
Xavier
En gros, la première erreur indique que tu appelles session_set_cookie_params à un moment interdit (parce que la session est déjà active). Elle a probablement déjà été ouverte précédemment.
Du coup pour corriger le problème, je te suggère d'effectuer un test sur l'état de la session :
if (session_status() !== PHP_SESSION_ACTIVE) { session_set_cookie_params(time()+365*24*3600, $path); // 1 an. session_start(); }
Les autres erreurs sont me semble-t-il des conséquences de cette première erreur, et devraient disparaître avec elle.
Xavier
Max747
Messages postés
258
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2024
19 févr. 2020 à 12:05
19 févr. 2020 à 12:05
Merci de prendre en considération mon problème.
J'ai donc mis en application les deux codes que vous m'avez proposé et dont voici la partie utile du fichier php:
J'ai d'abord en premier lieu mis en place le script indiqué par Jordane45 afin d'observer le résultat.
Puis celui de Reivax962 qui présente le même résultat.
C'est à dire que la condition est false.
Je m'en suis totalement assuré avec la ligne:
Donc le message Bonjour n'apparait pas sur la page où se trouvait le message warning.
J'ai donc mis en application les deux codes que vous m'avez proposé et dont voici la partie utile du fichier php:
<?php $parts = pathinfo($_SERVER['REQUEST_URI']); $path = $parts['dirname']; if (empty($parts['extension'])) { //$path .= '/'.$parts['jeuxechecs_fr']; $path .= '/index.php'; } $path = str_replace('\\', '/', $path).'/'; /*if (session_status() == PHP_SESSION_NONE) { session_set_cookie_params(time()+365*24*3600, $path); // 1 an. session_start(); echo "bonjour"; }*/ if (session_status() !== PHP_SESSION_ACTIVE) { session_set_cookie_params(time()+365*24*3600, $path); // 1 an. session_start(); echo "bonjour"; } //@session_set_cookie_params(time()+365*24*3600, $path); // 1 an. //session_start(); //Inhibé les lignes 1120 à 1125 inclus // note to developers : // before each section, there is a header that begins with somthing like //********************************************************************** // this is the header //********************************************************************** // and after the respective section there is an entity like //*/ // together these entities create a switchable comment block. - ensemble, ces entités créent un bloc de commentaires commutable. // when used together, all you need to do is remove one of the forward slashes ( / ) // from either of the lines containing asterisks ( * ) to make a line like - à partir des lignes contenant des astérisques (*) pour créer une ligne comme /*********************************************************************** ... everything in here is commented out with one easy character change ... //*/ // by finding a commented block of code, all you need to do is add the missing / // to the line that is missing one. ( i usually remove the slash from the lower of // the two lines ) // // i specifically use various comment styles to denote what kind of comment it is. // for instance, i use // to denote a 'real' comment, where i am commenting on a // piece of code, i use /* */ to comment out blocks of code that i don't wish to run // and i use # to temporarily comment out single lines or small sections of code. // // ... although there may be other comments elsewhere that other people created that // do not follow this protocol // set the session cookie parameters so the cookie is only valid for this game // load settings require_once 'config.inc.php'; require 'login.inc.php'; require_once 'html.inc.php'; require_once 'html.tables.php';
J'ai d'abord en premier lieu mis en place le script indiqué par Jordane45 afin d'observer le résultat.
Puis celui de Reivax962 qui présente le même résultat.
C'est à dire que la condition est false.
Je m'en suis totalement assuré avec la ligne:
echo "bonjour";
Donc le message Bonjour n'apparait pas sur la page où se trouvait le message warning.
Max747
Messages postés
258
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2024
19 févr. 2020 à 12:16
19 févr. 2020 à 12:16
En supplément d'information,
lorsque j'applique le script de Jordane45 ou de Reivax962, je n'ai plus de message warning mais je ne peux pas écrire de message dans le chat.
Ce qui démontrerait de surcroit que je n'entre pas dans la condition en question.
lorsque j'applique le script de Jordane45 ou de Reivax962, je n'ai plus de message warning mais je ne peux pas écrire de message dans le chat.
Ce qui démontrerait de surcroit que je n'entre pas dans la condition en question.
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
19 févr. 2020 à 13:08
19 févr. 2020 à 13:08
les modifications proposées ne devraient pas influencer le comportement du site. elles ont le même effet que l'arobase.
en fait, qu'est-ce qui te fait croire que ton problème aléatoire de chat est lié à l'avertissement?
d'autant plus que l'avertissement ne me semble pas aléatoire.
en fait, qu'est-ce qui te fait croire que ton problème aléatoire de chat est lié à l'avertissement?
d'autant plus que l'avertissement ne me semble pas aléatoire.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
19 févr. 2020 à 12:19
19 févr. 2020 à 12:19
bonjour, je me demande tout de même pourquoi la page principale (celle qui fait appel à la page index.inc.php) a déjà fait un session_start(). c'est peut-être cela qu'il faut corriger.
Max747
Messages postés
258
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2024
19 févr. 2020 à 12:32
19 févr. 2020 à 12:32
Effectivement, cette page que je présente et que j'ai oublié de nommer correspond à un fichier appelé index.inc.php.
Mais comment l'avez vous deviné?
Maintenant si ce que vous écrivez peut être ce qui mènerait à la solution,
comment puis je savoir quel est le fichier (sans doute PHP) qui fait appel à index.inc.php ?
Sur le moment comme ça je n'en ai pas d'idée.
Mais comment l'avez vous deviné?
Maintenant si ce que vous écrivez peut être ce qui mènerait à la solution,
comment puis je savoir quel est le fichier (sans doute PHP) qui fait appel à index.inc.php ?
Sur le moment comme ça je n'en ai pas d'idée.
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
19 févr. 2020 à 12:43
19 févr. 2020 à 12:43
je n'ai pas deviné, le nom du fichier est dans le message d'avertissement.
c'est bien un fichier PHP qui fait appel, c'est peut-être celui qui correspond à l'adresse affichée sur le navigateur.
je viens de tester ton site, je vois que index.php cause cette erreur.
Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active in /customers/6/0/9/jeuxechecs.fr/httpd.www/echecs/includes/index.inc.php on line 9
Warning: Cannot modify header information - headers already sent by (output started at /customers/6/0/9/jeuxechecs.fr/httpd.www/echecs/includes/index.inc.php:9) in /customers/6/0/9/jeuxechecs.fr/httpd.www/echecs/login.inc.php on line 177
tu progresses, ce n'est plus une erreur aléatoire.
c'est bien un fichier PHP qui fait appel, c'est peut-être celui qui correspond à l'adresse affichée sur le navigateur.
je viens de tester ton site, je vois que index.php cause cette erreur.
Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active in /customers/6/0/9/jeuxechecs.fr/httpd.www/echecs/includes/index.inc.php on line 9
Warning: Cannot modify header information - headers already sent by (output started at /customers/6/0/9/jeuxechecs.fr/httpd.www/echecs/includes/index.inc.php:9) in /customers/6/0/9/jeuxechecs.fr/httpd.www/echecs/login.inc.php on line 177
tu progresses, ce n'est plus une erreur aléatoire.
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
19 févr. 2020 à 12:50
19 févr. 2020 à 12:50
Moi je dirais: moralité, il ne faut jamais mettre d'arobase en début de ligne sans avoir bien compris ce qui provoquait l'avertissement, et sans ajouter de commentaire décrivant tout cela, et aussi quand cette arobase a été ajouté, et par qui.
est-il trop tard pour déterminer tout cela?
est-il trop tard pour déterminer tout cela?
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
19 févr. 2020 à 14:14
19 févr. 2020 à 14:14
J'ai donc mis en application les deux codes que vous m'avez proposé
Sachant que Reivax et moi même t'avons donné le même code...
Donc que tu prennes mon code ou l'autre ... ou celui de reivax ou l'autre ... ou l'un ou l'autre ou l'autre ou l'un.... bref.... c'est tout pareil.
Bien entendu, comme tu ne fais pas que copier bêtement le code et que tu prends la penne de le lire et d'essayer de le comprendre tu as ( aurais...) dû t'en rendre compte.
les modifications proposées ne devraient pas influencer le comportement du site. elles ont le même effet que l'arobase.
Oui mais non...
Car dans le code qu'on propose on gère également le démarrage de session qui lui n'était pas préfixé par un arobase.
L'arobase servant uniquement à masquer les éventuelles erreurs alors que nous... nous empêchons l'erreur en question.
Je précise également que les instructions genre "session_start" sont à placer TOUT au début de ton code.... AVANT tout autre code...
Et vu que la page en question est "inclue" depuis une autre page.... c'est dans cette autre page que tu dois placer notre code...
Max747
Messages postés
258
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2024
19 févr. 2020 à 14:21
19 févr. 2020 à 14:21
L' arobase à été placé par moi il y a au moins 2 ou 3 ans.
A l'époque il est vrai que c'était une solution de facilité.Mais si j' avais découvert la cause du Warning, il n'y aurait plus eut lieu pour moi d'utiliser cet arobase.
Mais je me demande si le fait de passer à PHP7 il y a 1an et demi n'a pas déclenché ces problèmes aléatoires?
Quoi qu'il en soit, voici le fichier index.php qui appelle index.inc.php:
Enfin, ce message ci dessous apparait lorsque l'arobase est absent.
J'avoue ne pas comprendre.
A l'époque il est vrai que c'était une solution de facilité.Mais si j' avais découvert la cause du Warning, il n'y aurait plus eut lieu pour moi d'utiliser cet arobase.
Mais je me demande si le fait de passer à PHP7 il y a 1an et demi n'a pas déclenché ces problèmes aléatoires?
Quoi qu'il en soit, voici le fichier index.php qui appelle index.inc.php:
<?php session_start(); require 'includes/index.inc.php'; require 'voir_membres.php'; if ( ! isset($page)) { header('Location: login.php'); exit; } //echo $_COOKIES['WelChessData']; $contents = (isset($errMsg) && ('' != $errMsg)) ? '<div class="warning">'.$errMsg.'</div>' : ''; // generate the page based on which page we are looking at switch ($page) { // ==================================================== case 'mygames' : $membre=$_SESSION['membres']; $contents .= ' <form name="games" action="chess.php" method="post"><br> <h3>Pour inviter un joueur il faut cliquer sur le bouton <span style="text-decoration: underline; color:#e30000;font-size:18px">Invitations</span> situé à gauche.<br /><br /> <p style="text-align: center;color:#000;font-size:18px">Mes parties.</p> '; $label = ''; //require_once 'chat.php'; $no_data_label = 'Vous n\'avez actuellement aucune de parties en cours.'; $contents .= get_game_table($label, $no_data_label, $active, $type = 'mine'); $contents .= ' <div> <br /> <span style="color:blue;font-size:18px;">Les 2 joueurs joueront-ils à partir du meme pc ?</span> <label><input name="rdoShare" type="radio" value="yes" />Oui</label> | <label><input name="rdoShare" type="radio" value="no" checked="checked" />Non</label> </div> <input type="hidden" name="game_id" value="" /> </form> '; $expire = (0 != $CFG_EXPIREGAME) ? 'Les parties seront effacées après '.$CFG_EXPIREGAME.' jours d\'inactivité.' : ''; $hint = array( "<h3>Selectionnez une partie dans la liste et commencez à jouer en cliquant n'importe ou sur la ligne.</h3> ", "<h3>Les lignes colorées indiquent que c'est à votre tour de jouer. <h3>", $expire , ); $html = get_item($contents, $hint); break; // ==================================================== case 'current' : $contents .= ' <form name="games" action="watchgame.php" method="post"><br> <h2>Parties en cours</h2> '; $label = ''; $no_data_label = 'Il n\'y a actuellement aucune autre partie en cours.'; $contents .= get_game_table($label, $no_data_label, $others, $type = 'others'); $contents .= ' <input type="hidden" name="game_id" value="" /> <input type="hidden" name="rdoShare" value="non" /> <input type="hidden" name="rdoShare" value="non" /> <!-- Deux sont nécessaires pour simuler deux boutons radio --> </form> '; $hint = array( 'Selectionnez une partie dans la liste en cliquant n\'importe ou sur la ligne.' , 'Ou <a href="./pgn">selectionnez une partie à voir</a> et téléchargez le fichier pgn dans votre logiciel d\'echecs favori.' , 'Des logiciels gratuits pour visionner les fichiers pgn peuvent etre téléchargés sur : <a href="http://www.tim-mann.org/xboard.html">XBoard et WinBoard</a>' , ); $html = get_item($contents, $hint); break; // ==================================================== case 'finished' : $contents .= ' <form name="games" action="watchgame.php" method="post"><br> <h2>Voir toutes les parties terminées</h2> '; $label = ''; $no_data_label = 'Il n\'y a actuellement aucune partie terminée.'; $contents .= get_game_table($label, $no_data_label, $done, $type = 'finished'); $contents .= ' <input type="hidden" name="game_id" value="" /> <input type="hidden" name="rdoShare" value="non" /> <input type="hidden" name="rdoShare" value="non" /> <!-- Deux sont nécessaires pour simuler deux boutons radio --> </form> '; $hint = array( 'Selectionnez une partie a voir dans la liste en cliquant n\'importe ou sur la ligne.' , 'Ou <a href="./pgn">selectionnez une partie à voir</a> et téléchargez le fichier pgn dans votre logiciel d\'echecs favori.' , 'Des logiciels gratuits pour visionner les fichiers pgn peuvent etre téléchargés sur : <a href="http://www.tim-mann.org/xboard.html">XBoard et WinBoard</a>' , ); $html = get_item($contents, $hint); break; // ==================================================== case 'invite' : $contents .= ' <form name="response" action="index.php?page=invite" method="post"><br/> <h2 style="text-align: center">Vos invitations en attente</h2> '; $label = 'Invitations envoyées par d\'autres joueurs:'; $no_data_label = 'Aucun joueur ne vous a invité pour le moment.'; $contents .= get_game_table($label, $no_data_label, $invites, $type = 'invite')."<br>"; $contents .= ' <input type="hidden" name="respond" value="" /> <input type="hidden" name="message_from" value="" /> <input type="hidden" name="game_id" value="" /> </form> <hr class="fancy" /> <form name="withdraw" action="index.php?page=invite" method="post"> '; $label = '<h2>Invitations envoyées par vous:</h2>'; $no_data_label = 'Aucune de vos invitations n\'est restée sans réponse.'; $contents .= get_game_table($label, $no_data_label, $outvites, $type = 'invite'); $contents .= ' <input type="hidden" name="game_id" value="" /> <input type="hidden" name="withdrawl" value="yes" /> </form> <br /><br /> <form name="challenge" action="index.php?page=invite" method="post"> <fieldset> <h2>Inviter un adversaire</h2> Sélectionnez un joueur:<br /> <select name="opponent"> '; $query = " SELECT P.* , ( SELECT COUNT(*) FROM ".T_GAME." WHERE ( g_white_player_id = P.p_id OR g_black_player_id = P.p_id ) AND g_game_message IN ('', 'Player Invited') ) AS num_games FROM ".T_PLAYER." AS P WHERE p_id != '{$_SESSION['player_id']}' ORDER BY p_username "; $players = $mysql->fetch_array($query, __LINE__, __FILE__); foreach ($players as $player) { if (($player['num_games']-5) > $player['p_max_games']) { continue; } $contents .= "<option value=\"{$player['p_id']}\"> ({$player['p_rating']}) {$player['p_username']} </option>"; } $contents .= ' </select><br /> <br /> Votre couleur:<br /> <label for="colorR"><input name="color" id="colorR" type="radio" value="random" checked="checked" />Au hasard</label> | <label for="colorW"><input name="color" id="colorW" type="radio" value="white" />Blancs</label> | <label for="colorB"><input name="color" id="colorB" type="radio" value="black" />Noirs</label><br /> <br />'; $contents .= '<input type="button" value="Inviter" class="button" onclick="validateInvite( );" /> </form><br/><br/>'; if (false != $CFG_CHESS960) { $contents .= ' <div id="gamebuttons"> <h2>Chess960 ID </h2> <span id="castle">Connaître Chess960 --> <a href="./help/c960.html" class="help" onclick="window.open("./help/c960.html","help","resizable,scrollbars,width=550,height=500,top=50,left=50","_blank");return false;"><FONT COLOR="#0000ff"> ?</FONT></a></span> </div> (laissez vide pour une partie normal): <input name="txtId960" type="text" maxlength="3" /> <input type="button" name="randomid960" value="Au hasard" onclick="txtId960.value = Math.floor(Math.random( ) * 960);" /><br> Ou entrez un nombre entre 0 et 959 pour jouer à Chess960, ou appuyez sur \'Au hasard\' pour créer une partie au hasard.<br /> '; } $contents .= '<input type="button" value="Inviter" class="button" onclick="validateInvite( );" /> </form></fieldset> '; $hint = array( 'Ceci est un apercu de toutes vos invitations en attente.' , 'Vous pouvez Accepter ou Refuser n\'importe quelle invitation, ou vous pouvez annuler vos invitations à d\'autres joueurs.' , 'Vous pouvez aussi sélectionner un adversaire et lui envoyer une inviatation pour jouer une nouvelle partie.' , ); $html = get_item($contents, $hint); break; // ==================================================== case 'stats' : $contents .= ' <br><h2>Statistiques</h2> '; $contents .= get_stats_table('Partie la plus longue (jours)', $daysLdata, 'days_long'); $contents .= get_stats_table('Partie la plus longue (coups)', $movesLdata, 'moves_long'); $contents .= get_stats_table('Partie la plus courte (jours)', $daysSdata, 'days_short'); $contents .= get_stats_table('Partie la plus courte (coups)', $movesSdata, 'moves_short'); $contents .= get_stats_table('Le plus de parties jouées', $statspartiejouees, 'nb_game'); $table_id = get_table_id( ); $contents .= ' <table style="" class="sort-table" id="'.$table_id.'"> <caption style="text-align:left;"><h2>Liste des joueurs</h2></caption> <thead> <tr> <th title="Pseudo">Joueur</th> <th></th> <th title="Les points de départ sont initialisés à '.$CFG_RATING_START.' quand le joueur s\'inscrit sur le site et est calculé au moyen d\'un algorithme utilisant '.$CFG_RATING_STEP.' comme variation maximum des points par partie.">Points</th> </tr> </thead> <tbody> '; $i = 0; foreach ($playerdata as $tmpGame){ //affichage des médailles dans la liste des joueurs // fonction dans chessutils.inc $medal = get_medal($tmpGame['p_username']); $alt = (0 == ($i % 2)) ? ' class="alt"' : ''; $contents .= " <tr{$alt}> <td>{$tmpGame['p_username']}</td> <td>{$medal}</td> <td>{$tmpGame['p_rating']}</td> </tr>"; ++$i; } $contents .= ' </tbody> </table> '; $contents .= get_sorttable_script($table_id, 'StringCI,Number,Number,Number,Number'); $hint = array( 'Vous voyez ici les 5 meilleures parties (normales et Chess360).' , 'Vous pouvez revoir n\'importe quelle partie en notant le n° de partie et en cliquant \'Watch Game\'. Dans la page qui s\'ouvre <a href="./pgn/">avec la liste des fichiers PGN des parties terminées.</a>.' , 'Toutes les parties dans cette liste sont des parties terminées.' , 'L\'ELO de depart du joueur est initialisé a '.$CFG_RATING_START.' et peut varier par partie d\'un maximum de '.$CFG_RATING_STEP.' points.' , ); $html = get_item($contents, $hint); break; // ==================================================== case 'messages' : $contents = '<br><h2>Messages</h2> <script type="text/javascript" src="javascript/messages.js"></script> <form method="post" action="'.$_SERVER['REQUEST_URI'].'"><div> <input type="button" name="send" id="send" value="Envoyer un message" /> <br> </div></form>'; // INBOX $messages = $Message->get_inbox_list( ); $table_format = array( array('SPECIAL_CLASS', 'my_empty(\'[[[view_date]]]\')', 'highlight') , array('SPECIAL_HTML', 'true', 'id="msg[[[message_id]]]"') , array('Identifiant', 'message_id') , array('Sujets', '###@htmlentities(strmaxlen(html_entity_decode(\'[[[subject]]]\', ENT_QUOTES), 25), ENT_QUOTES, \'UTF-8\', false)') , array('Depuis', '###\'[[[sender]]]\'.(([[[global]]]) ? \' <span class="highlight">(<abbr title="GLOBAL">G</abbr>)</span>\' : \'\')') , array('Date d\'envoi', '###@ifdateor(\''.$CFG_LONGDATE.'\', strtotime(\'[[[send_date]]]\'), strtotime(\'[[[create_date]]]\'))') , array('Date de lecture', '###@ifdateor(\''.$CFG_LONGDATE.'\', strtotime(\'[[[view_date]]]\'), \'Jamais\')') , array('Date d\'expiration', '###@ifdateor(\''.$CFG_LONGDATE.'\', strtotime(\'[[[expire_date]]]\'), \'Jamais\')') , array('<input type="checkbox" id="in_all" />', '<input type="checkbox" name="ids[]" value="[[[message_id]]]" class="in_box" />', 'false', 'class="edit"') , ); $table_meta = array( 'sortable' => true , 'no_data' => '<!--<p>Il n\'y a aucun message dans votre boîte aux lettres.</p>--><!-- NO_INBOX -->' , 'caption' => 'Boîte de réception' , ); $table = get_table($table_format, $messages, $table_meta); // add the message edit form if we have messages shown if (false === strpos($table, 'NO_INBOX')) { $contents .= ' <form method="post" action="'.$_SERVER['REQUEST_URI'].'"><div class="action"> '.$table.' <select name="action" id="in_action" style="float:right;width:230px"> <option value="">Avec les messages sélectionnés</option> <option value="read">Marquer comme lus</option> <option value="unread">Marquer comme non lus</option> <option value="delete">Effacer</option> </select> </div></form>'; } else { $contents .= $table; } // OUTBOX $result = $Message->get_outbox_list( ); $table_format = array( array('SPECIAL_CLASS', ' ! [[[sent]]]', 'unsent') , array('SPECIAL_HTML', 'true', 'id="msg[[[message_id]]]"') , array('Identifiant', 'message_id') , array('Sujets', '###@htmlentities(strmaxlen(html_entity_decode(\'[[[subject]]]\'), 25), ENT_QUOTES, \'UTF-8\', false)') , array('Vers', 'recipients') , array('Date d\'envoi', '###@ifdateor(\''.$CFG_LONGDATE.'\', strtotime(\'[[[send_date]]]\'), strtotime(\'[[[create_date]]]\'))') , array('Date d\'expiration', '###@ifdateor(\''.$CFG_LONGDATE.'\', strtotime(\'[[[expire_date]]]\'), \'Jamais\')') , array('<input type="checkbox" id="out_all" />', '<input type="checkbox" name="ids[]" value="[[[message_id]]]" class="out_box" />', 'false', 'class="edit"') , ); $table_meta = array( 'sortable' => true , 'no_data' => '<!--<p>Il n\'y a aucun message dans votre boîte aux lettres</p>--><!-- NO_OUTBOX -->' , 'caption' => 'Boîte d\'envoi' , ); $table = get_table($table_format, $result, $table_meta); // add the message edit form if we have messages shown if (false === strpos($table, 'NO_OUTBOX')) { $contents .= ' <form method="post" action="'.$_SERVER['REQUEST_URI'].'"><div class="action"> '.$table.' <select name="action" id="out_action" style="float:right;width:230px"> <option value="">Avec les messages sélectionnés</option> <option value="delete">Effacer</option> </select> </div></form>'; } else { $contents .= $table; } // ADMIN LIST if (false && $GLOBALS['Player']->is_admin) { $result = $Message->get_admin_list( ); $table_format = array( array('SPECIAL_CLASS', ' ! [[[sent]]]', 'unsent') , array('SPECIAL_HTML', 'true', 'id="msg[[[message_id]]]"') , array('Id', 'message_id') , array('Subject', '###@htmlentities(strmaxlen(html_entity_decode(\'[[[subject]]]\'), 25), ENT_QUOTES, \'UTF-8\', false)') , array('From', 'sender') , array('To', 'recipients') , array('Date Sent', '###@ifdateor(\''.$CFG_LONGDATE.'\', strtotime(\'[[[send_date]]]\'), strtotime(\'[[[create_date]]]\'))') , array('Date Expires', '###@ifdateor(\''.$CFG_LONGDATE.'\', strtotime(\'[[[expire_date]]]\'), \'Jamais\')') , ); $table_meta = array( 'sortable' => true , 'no_data' => '<p>Il n\'y a aucun message dans votre boîte aux lettres</p><!-- NO_ADMIN -->' , 'caption' => 'Liste de l\'administrateur' , ); $table = get_table($table_format, $result, $table_meta); // no form $contents .= $table; } $hint = array( 'Cliquez n\'importe où sur la ligne pour lire votre message.' , '<span class="highlight">Les lignes colorées</span> indiquent les messages non lus.' , '<span class="highlight">(<abbr title="GLOBAL">G</abbr>)</span> Indique un message général envoyé par un administrateur.', '<span class="highlight">Les entrées colorées de la boîte d\'envoi</span> indiquent les messages qui n\'ont pas encore été expédiés.' , 'Les lignes colorées de la boîte de <span class="highlight">réception</span> indiquent les messages qui n\'ont pas encore été lus par le destinataire.' , 'Les dates colorées de la boîte <span class="highlight">d\'envoi</span> indiquent les messages qui n\'ont pas encore été expédiés.' , ); $html = get_item($contents, $hint); break; // ==================================================== case 'send' : $contents = ' <style type="text/css">import url(css/vader/jquery-ui-1.8.13.custom.css);</style> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script> <script type="text/javascript" src="javascript/messages.js"></script> '; $subject = htmlentities($message['subject'], ENT_QUOTES, 'UTF-8', false); $message_text = htmlentities($message['message'], ENT_QUOTES, 'UTF-8', false); $contents .= <<< EOT <br><h2>Envoyer un message</h2> <div id="content" class=""> <a href="index.php?page=messages">Retourner à la boîte de réception</a><br><br> <?php echo date(\''.$CFG_LONGDATE.'\'); ?> <form method="post" action="{$_SERVER['REQUEST_URI']}"><div class="formdiv"> <div style='float:right;'> Appuyez et maintenez enfoncée la touche CTRL pour sélectionner plusieurs destinataires<br><br> <label for="user_ids">Destinataires</label><br><select name="user_ids[]" id="user_ids" multiple="multiple" size="5"> {$recipient_options} </select> </div> <br> <div style='float:left;margin-left:220px;margin-top:-105px'><label alt="" for="send_date">Date d'envoi <br>(Laissez vide ce champ pour un envoi immédiat)</label><br><input type="text" name="send_date" id="send_date" /><br> <label for="expire_date">Date d'expiration <br>(Laissez vide ce champ pour que le message n'expire jamais)</label><br><input type="text" name="expire_date" id="expire_date" /></div> <div><label for="subject">Objet</label><br><input style='width:422px' type="text" name="subject" id="subject" value="{$subject}" size="50" maxlength="255" /></div> <div><label for="message">Message</label><br><textarea style='width:422px;max-width:422px;min-width:422px;max-height:500px;' name="message" id="message" rows="15" cols="50">{$message_text}</textarea></div> <div><label> </label><input type="submit" name="submit" value="Envoyer le message" /></div> </div></form> </div> EOT; $monfichier = fopen('news.txt', 'r+'); $tab = file('news.txt'); $lignes = ""; foreach($tab as $li){ $lignes .= fgets($monfichier); } $hint = $lignes; fclose($monfichier); $html = get_item($contents, $hint); break; // ==================================================== case 'read' : $contents = ' <script type="text/javascript" src="scripts/messages.js"></script>'; ob_start( ); ?> <br><h2>Message</h2> <a href="index.php?page=messages">Retour boîte de réception</a><br/><br/> <div id="content" class=""> Envoyé le:<?php echo @ifdateor($CFG_LONGDATE, strtotime($message['send_date']), strtotime($message['create_date'])); ?> <h2 class="subject"><?php echo $message['subject']; ?> <span class="sender">De: <?php echo $message['recipients'][0]['sender']; ?></span></h2> <p class="message"><?php echo $message['message']; ?></p> <div style='float:none;' class="sidebar"> <form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>"> <!-- <div class="prevnext"> <?php if ($prev) { echo '<a href="'.$_SERVER['SCRIPT_NAME'].'?id='.$prev.'">« Jamais</a>'; } ?> <?php if ($prev && $next) { echo ' <span>|</span> '; } ?> <?php if ($next) { echo '<a href="'.$_SERVER['SCRIPT_NAME'].'?id='.$next.'">Retour aux parties »</a>'; } ?> </div> --> <?php if ($message['allowed']) { ?> <br> <input type="hidden" name="message_id" id="message_id" value="<?php echo $message['message_id']; ?>" /> <input type="hidden" name="type" id="type" /> <input type="button" id="delete" value="Effacer" /> <?php if ($message['recipients'][0]['from_id'] != $_SESSION['player_id']) { ?> <input type="button" id="reply" value="Répondre" /> <input type="button" id="forward" value="Tranférer" /> <?php } else { ?> <input type="button" id="resend" value="Renvoyer" /> <?php } ?> <?php } ?> </form> <div id="recipient_list"> <h4>Liste des destinataires</h4> <?php if ($message['global']) { echo '<span class="highlight">GLOBAL</span>'; } ?> <?php if ( ! $message['global'] || $_SESSION['is_admin']) { ?> <ul> <?php foreach ($message['recipients'] as $recipient) { if ($recipient['from_id'] == $recipient['to_id']) { continue; } $classes = array( ); if (is_null($recipient['view_date'])) { $classes[] = 'unread'; } if ($recipient['deleted']) { $classes[] = 'deleted'; } $class = ''; if (count($classes)) { $class = ' class="'.implode(' ', $classes).'"'; } echo "<li{$class}>{$recipient['recipient']}</li>\n"; } ?> </ul> <?php } ?> </div> </div> </div> <?php $contents .= ob_get_contents( ); ob_end_clean( ); $monfichier = fopen('news.txt', 'r+'); $tab = file('news.txt'); $lignes = ""; foreach($tab as $li){ $lignes .= fgets($monfichier); } $hint = $lignes; fclose($monfichier); $html = get_item($contents, $hint); break; //============================================================================================================================= case 'prefs' : $contents .= ' <form name="preferences" method="post" action="index.php?page=prefs"> <br><h2>Préférences</h2> <fieldset> <h3>Notations</h3> <select name="selHistory"> <option value="coord"'.get_selected($_SESSION['pref_history'], 'coord', true).'>En coordonnées</option> <option value="alg"'.get_selected($_SESSION['pref_history'], 'alg', true).'>Algébrique</option> <option value="longalg"'.get_selected($_SESSION['pref_history'], 'longalg', true).'>Algébrique longue</option> <!-- <option value="desc"'.get_selected($_SESSION['pref_history'], 'desc', true).'>Descriptive</option> --> <option value="int"'.get_selected($_SESSION['pref_history'], 'int', true).'>Internationale</option> <option value="verbous"'.get_selected($_SESSION['pref_history'], 'verbous', true).'>Verbieuse</option> </select> <a href="#" class="help" onclick="window.open(\'./help/notation.html\',\'help\',\'resizable,scrollbars,width=600,height=500,top=50,left=50\',\'_blank\');return false;"><FONT COLOR="#0000ff"> ?</FONT></a> </fieldset><br /> <fieldset> <h3>Thème - Apparences de l\'écran, des pièces et de l\'échiquier.</h3> '; // open up the images directory and collect the folder names $dir = opendir('images'); while (false !== ($file = readdir($dir))) { if (is_dir('images/'.$file) && (false === strpos($file, '.'))) // scanning for visible subfolders only { $dirlist[] = $file; } } closedir($dir); $label = 'A'; $thm = $_SESSION['pref_theme']; foreach ($dirlist as $theme) { $sel = ($_SESSION['pref_theme'] == $theme) ? ' checked="checked"' : ''; $contents .= "\t\t\t\t\t\t<label for=\"rdoTheme{$label}\"><input name=\"rdoTheme\" id=\"rdoTheme{$label}\" type=\"radio\" value=\"{$theme}\"{$sel} />{$theme}</label><br />\n"; ++$label; // increment label counter } $contents .= ' </fieldset><br /> '; // Affichage de la config choisis $contents.= "<br> <img src='./images/".$thm."/black_king.gif' /><img src='./images/".$thm."/black_queen.gif' /><img src='./images/".$thm."/black_rook.gif' /><img src='./images/".$thm."/black_bishop.gif' /><img src='./images/".$thm."/black_knight.gif' /><img src='./images/".$thm."/black_pawn.gif' />"; $contents.= "<br> <img src='./images/".$thm."/white_king.gif' /><img src='./images/".$thm."/white_queen.gif' /><img src='./images/".$thm."/white_rook.gif' /><img src='./images/".$thm."/white_bishop.gif' /><img src='./images/".$thm."/white_knight.gif' /><img src='./images/".$thm."/white_pawn.gif' />"; $xltm = ''; if (false != $_SESSION['pref_show_last_move']) { $xltm = ' checked="checked"'; } $contents .= ' <br/> <fieldset> <label for="boxLastMove"><input type="checkbox" name="boxLastMove" id="boxLastMove"'.$xltm.' />Faire apparaître l\'indicateur du dernier mouvement</label> <div class="instruction">Décochez cette case enlèvera le carré entourant le dernier coup.</div> <br /> <input type="text" name="txtmaxGames" value="'.$_SESSION['pref_max_games'].'" /> Nombre maximum de parties en cours et en attente de jeux.<br /> <input type="text" name="txtReload" value="'.$_SESSION['pref_auto_reload'].'" /> Rafraichissement automatique de la page'; if (0 != $CFG_MINAUTORELOAD) { $contents .= ' (min: '.$CFG_MINAUTORELOAD.' secs)'; } $contents .= '<br /> <br /> <input type="submit" class="button" value="Mettre à jour" /> <input type="hidden" name="todo" value="Mettre les préférences à jour" /> </form> </fieldset> <br /><br /> '; $monfichier = fopen('news.txt', 'r+'); $tab = file('news.txt'); $lignes = ""; foreach($tab as $li){ $lignes .= fgets($monfichier); } $hint = $lignes; fclose($monfichier); $hint = array( 'Vous pouvez personaliser WebChess avec ces réglages' , '<a href="themes.php">Voir les différents thèmes</a>' , ); $html = get_item($contents, $hint); break; // ==================================================== case 'personal' : /**************************************************************************************************************/ $contents .= ' <br><h2>Espace perso</h2> <table> <th style="width:30%">Informations personnelles</th> <th style="width:20%">Statistiques personnelles</th> <tr> <td style="text-align:left;"> <form name="personal" action="index.php?page=personal" method="post"> <h4> Bienvenue '.$_SESSION['username'].'. Ici vous pouvez modifier vous coordonées.</h4> <!--<div style="display:none">--> <input name="txtFirstName" type="hidden" class="inputbox" value="'.$_SESSION['first_name'].'" /> <input name="txtLastName" type="hidden" class="inputbox" value="'.$_SESSION['last_name'].'" /> <!--</div>--> '; if ($CFG_USEEMAIL) { $contents .= '<input type="text" name="txtEmail" value="'.$_SESSION['email'].'" /> Adresse e-mail <br /> '; } if ($CFG_CHANGEUSERNAME) { $contents .= '<input name="txtUsername" type="text" class="inputbox" value="'.$_SESSION['username'].'" /> Pseudo<br /> '; } $contents .= '<input name="pwdOldPassword" type="password" class="inputbox" /> Mot de passe actuel<br /> <input name="pwdPassword" type="password" class="inputbox" /> Nouveau mot de passe<br /> <input name="pwdPassword2" type="password" class="inputbox" /> Nouveau mot de passe <br /> <br /> <input type="button" value="Mettre à jour" class="button" onclick="validatepersonal( )" /> <!--<label for="email">Tester son dresse e-mail</label><input type="email" name="testmail" autocompete="on" id="email"/></br> <input type="submit" value="Test">--> </br> </form> <h3>______________________________________________</h3> <br /> <form method="post" action="testemail.php" > <input type="text" name="adressee" /><label for="email">Tester votre adresse e-mail</label> <input type="submit" name="submit" value="Valider" /> </form> </td> <td style="text-align:left;"> <br> '.$_SESSION['medal'].'<br><br> Nombre de parties gagnées : '.$_SESSION['wins'].' <br> Nombre de parties nulles : '.$_SESSION['draws'].' <br> Nombre de parties perdues : '.$_SESSION['losses'].' <br> Nombre de parties jouées : '.$_SESSION['nb_games'].' <br> Points : '.$_SESSION['rating'].' <br> </td> </table> '; $hint = array( 'Ici, vous pouvez changer vos informations personnelles. N\'oubliez pas d\'appuyer sur le bouton \'Mettre à jour\' pour enregistrer les changements.' , 'Laissez tous les champs de mot de passe videspour conserver votre ancien mot de passe.' , ); if ($CFG_USEEMAIL) { $hint[] = 'Entrez une adresse email valide si vous souhaitez recevoir un message e-mail chaque fois que votre adresaire effectue un coup. Laissez ce champ vide pour ne pas recevoir ces emails.'; } /*********************************************************/ /*$monfichier = fopen('news.txt', 'r+'); $tab = file('news.txt'); $lignes = ""; foreach($tab as $li){ $lignes .= fgets($monfichier); } $hint = $lignes; fclose($monfichier);*/ /*********************************************************/ $html = get_item($contents, $hint); break; // ==================================================== case 'admin' : if (true != $_SESSION['is_admin']) { header('Location: index.php'); exit; } $table_id = get_table_id( ); $contents .= ' <form name="Admin" action="index.php?page=admin" method="post"> <br><h2>Administration</h2> <div class="inputlabel"><input type="button_admin" value="Envoyer un message à tous les utilisateurs enregistrés" onclick="javascript:window.open(\'massmail.php\',\'message\',\'resizable,width=600,height=500,top=100,left=100\',\'_blank\');return false;" /></div> <br> <table class="sort-table" id="'.$table_id.'"> <thead> <tr> <th>ID</th> <th>Nom d\'utilisateur</th> <th>Prénom</th> <th>Nom</th> <th>Email</th> <th>Date de création</th> <th>Reset du mot de passe ?</th> <th>Administrateur ?</th> <th>Effacer (le compte) ?</th> </tr> </thead> <tbody> '; $i = 0; foreach ($admin as $row) { $alt = ( $i % 2 == 0 ) ? ' class="alt"' : ''; $check = (0 != $row['p_is_admin']) ? ' checked="checked"' : ''; $contents .= '<tr'.$alt.'> <td class="numeric">'.$row['p_id'].'</td> <td class="username">'.$row['p_username'].'</td> <td class="firstname">'.$row['p_first_name'].'</td> <td class="lastname">'.$row['p_last_name'].'</td> <td>'.$row['p_email'].'</td> <td>'.date($CFG_SHORTDATE, $row['u_created']).'</td> <td class="passbox"><input type="checkbox" name="resetpass[]" value="'.$row['p_id'].'" /></td> <td class="adminbox"><input type="checkbox" name="admin[]" value="'.$row['p_id'].'"'.$check.' /></td> <td class="checkbox"><input type="checkbox" name="delete[]" value="'.$row['p_id'].'" /></td> </tr>'; ++$i; } $contents .= ' </tbody> </table> '; $contents .= get_sorttable_script($table_id, 'Number,StringCI,StringCI,StringCI,StringCI,DateTime,None,None,None'); $contents .= ' <br> <input type="submit" value="Appliquer" name="submit" class="button" /><br /> <br /> </form> '; /*$monfichier = fopen('news.txt', 'r+'); $tab = file('news.txt'); $lignes = ""; foreach($tab as $li){ $lignes .= fgets($monfichier); } $hint = $lignes; fclose($monfichier);*/ $html = get_item($contents, $hint); break; // ==================================================== default : // Ne faites rien, c'est déjà effectué dans le fichier index.inc.php //header('Location: login.php'); //exit; break; } // Ceci nécessite de tourner après les sections ci-dessus, car cela peut altérer les variables // Mettez les valeurs par défaut pour les variables du menu, et si nécessaire, surlignez les $menu_data['numMyturn'] = (isset($numMyturn) && 0 < $numMyturn) ? "<span class=\"notice\">{$numMyturn}</span>" : 0; $menu_data['numActive'] = (isset($numActive)) ? $numActive : 0; $menu_data['numOthers'] = (isset($numOthers)) ? $numOthers : 0; $menu_data['numDone'] = (isset($numDone)) ? $numDone : 0; $menu_data['numFiles'] = (isset($numFiles)) ? $numFiles : 0; $menu_data['numInvites'] = (isset($numInvites) && 0 < $numInvites) ? "<span class=\"notice\">{$numInvites}</span>" : 0; $menu_data['numOutvites'] = (isset($numOutvites)) ? $numOutvites : 0; $menu_data['numMsgs'] = (isset($numMsgs) && 0 < $numMsgs) ? $numMsgs : 0; $menu_data['newMsgs'] = (isset($newMsgs) && 0 < $newMsgs) ? "<span class=\"notice\">{$newMsgs}</span>" : 0; $foot_data['nombre'] = $_SESSION['nombre']; $foot_data['numPlayers'] = $numPlayers; $foot_data['numGames'] = $numGames; $foot_data['totGames'] = $menu_data['numDone'] ; // Maintenant que nous avons construit les sections, quittons la page. $head_extra = ' <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script type="text/javascript" src="javascript/sortabletable.js"></script> <script type="text/javascript" src="javascript/messages.js"></script> <script type="text/javascript" src="javascript/index.js.php"></script> '; echo get_header($menu_data, 'Main Menu', $head_extra); echo $html; echo get_footer($foot_data); call(time( ));call($GLOBALS); //echo "</br>"; require 'chat.php'; echo '<h3 align="center"><span style="color:blue;font-size:18px">Testez vos connaissances avec ce Q-C-M échiquéen => <a href="http://jeuxechecs.fr/_qcm/ph_qcm/index.php"><img src="/images/qcm.jpg" style="vertical-align:middle" alt="Q-C-M" /></a> A partir du premier novembre.</h3>'; $texte= "<blockquote><h3>Modifications apportées à partir du 21/09/2016:<h3/> 1)Présentation des explications dans les rubriques Vos parties, Parties en cours,<br> Parties terminées, Invitations, Messages, Espace perso, Préférences et Statistiques.<br> 2)Logo rotatif sur son axe vertical en page de connexion.<br/> 3)Recentrage des tableaux sur toutes les pages pour un meilleur positionnement.<br/> 4)Amélioration de la lisibilité de la page invitations.<br> 5)Repositionnement du menu de la page échiquier vers le haut.<br> 6)Amélioration de la présentation à l'accueil.<br> 7)Création de l'image d'un échiquier en transparence.(Merci à Jojo pour son graphisme.)<br> 8)Amélioration de l'apparence du menu de gauche.<br> 9)Suppression de la demande Nom et Prénom lors de l'inscription. (Bien que cela n'était pas obligatoire.)<br> 10)Présentation d'un échiquier en 3 dimensions en page de connexion.<br> 11)Création d'un lien sous forme d'un <span style='color:#e30000;font-size:22px'>?</span> dans la page 'Invitations' pour expliquer ce qu'est Chess960.<br> 12)Amélioration de la visibilité du déplacement des pièces par des couleurs plus contrastées.(Lorsque cette option est choisie).<br> 13)Présentation des membres présents ci dessus.<br/> 14)Mise au point d'un chat général.<br/> 15)Evolution du site en version PHP 7.1<br/> 16)Une information est désormais fournie pour ne plus placer les pièces au hazard<br/> en mode chess960.(Rubrique Invitations).<br/> <blockquote><h3><span style='color:blue;font-size:17px'> 17)Petite modification de la règle du jeu d'échecs concernant les parties pat.<br/> Voir le <a href='http://www.jeuxechecs.fr/echecs/help/pat.html' class='help' onclick='window.open('./help/pat.html','help','resizable,scrollbars,width=550,height=500,top=50,left=50','_blank');return false;'><font color='#0000ff'>?</font></a> ou celui situé à gauche du bouton 'Partie pat'.<br/></h3></blockquote><br/>" ; echo $texte; ?> <h3 style="color: blue"><div onclick="document.location.href='http://jeuxechecs.fr/formulaire.php'">Ecrire au créateur du site.<img src="/images/boite.gif" style="vertical-align:middle" alt="retour" /></div></h3> <h4>Information.</br> Il peut arriver très rarement qu'il ne soit pas possible d'écrire dans le chat durant la partie.</br> Ainsi pour une raison encore inconnue actuellement, quelques jours après cela redevient accessible.</br> Il est donc nécessaire de patienter tout en continuant de jouer afin qu'il soit de nouveau possible d'écrire.</br> Dès que je trouverai la solution pour éviter ce petit contre temps de correspondance, je la mettrai en application.</h4> <?php include 'calend.html'; ?>
Enfin, ce message ci dessous apparait lorsque l'arobase est absent.
J'avoue ne pas comprendre.
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
19 févr. 2020 à 15:28
19 févr. 2020 à 15:28
je vois que as ajouté l'arobase après le 17 oct. 2018.
je pense que tu peux supprimer (mettre en commentaires) les lignes 9 et 10 de index.inc.php().
je pense que tu peux supprimer (mettre en commentaires) les lignes 9 et 10 de index.inc.php().
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
>
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
20 févr. 2020 à 11:33
20 févr. 2020 à 11:33
la page chess.php fait-elle aussi appel à index.inc.php?
Max747
>
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
5 mars 2020 à 15:01
5 mars 2020 à 15:01
la page chess.php fait-elle aussi appel à index.inc.php?
Non.
Non.
Max747
>
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
5 mars 2020 à 15:00
5 mars 2020 à 15:00
je vois que as ajouté l'arobase après le 17 oct. 2018.
je pense que tu peux supprimer (mettre en commentaires) les lignes 9 et 10 de index.inc.php().
C'est fait sans changement notable.
je pense que tu peux supprimer (mettre en commentaires) les lignes 9 et 10 de index.inc.php().
C'est fait sans changement notable.
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
>
Max747
5 mars 2020 à 15:07
5 mars 2020 à 15:07
tu avais déjà répondu la même chose le 20 février. je suggère de commencer une nouvelle discussion.
Max747
Messages postés
258
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2024
20 févr. 2020 à 16:51
20 févr. 2020 à 16:51
je vois que as ajouté l'arobase après le 17 oct. 2018.
Oui ça doit bien être cela.Un peu plus de 2 ans quand même.
Je l'ai fait non pas pour m'amuser, mais à l'occasion d'une recherche d'amélioration de mon site.
je pense que tu peux supprimer (mettre en commentaires) les lignes 9 et 10 de index.inc.php().
Je viens de les mettre en commentaires et jusqu' à présent ça fonctionne sans le warning.
De surcroit les lignes:
de index.in.php sont présentent également en début du fichier chess.php.
Je verrai d'ici quelques jours à décommenter ces lignes aussi soit dans
chess.php ou dans index.in.php.
As ton avis quel choix serait le plus judicieux? chess.php ou dans index.in.php?
Sinon je le ferai au hasard et observerai les résultats.
La page chess.php ne fait pas appel au fichier index.in.php.
En tout merci de m'avoir mis sur cette piste qui semblerait à cette heure être la bonne.Car ce dysfonctionnement intermittent ne semble plus sévir actuellement.
J'attends donc de voir ce qu'il en sera demain pour en apporter une conclusion définitive.
De toutes façons, je suis convaincu d'avoir à faire à un problèmes de cessions.
A suivre......
Oui ça doit bien être cela.Un peu plus de 2 ans quand même.
Je l'ai fait non pas pour m'amuser, mais à l'occasion d'une recherche d'amélioration de mon site.
je pense que tu peux supprimer (mettre en commentaires) les lignes 9 et 10 de index.inc.php().
Je viens de les mettre en commentaires et jusqu' à présent ça fonctionne sans le warning.
De surcroit les lignes:
$parts = pathinfo($_SERVER['REQUEST_URI']); $path = $parts['dirname']; if (empty($parts['extension'])) { //$path .= '/'.$parts['jeuxechecs_fr']; $path .= '/index.php'; } $path = str_replace('\\', '/', $path).'/';
de index.in.php sont présentent également en début du fichier chess.php.
Je verrai d'ici quelques jours à décommenter ces lignes aussi soit dans
chess.php ou dans index.in.php.
As ton avis quel choix serait le plus judicieux? chess.php ou dans index.in.php?
Sinon je le ferai au hasard et observerai les résultats.
La page chess.php ne fait pas appel au fichier index.in.php.
En tout merci de m'avoir mis sur cette piste qui semblerait à cette heure être la bonne.Car ce dysfonctionnement intermittent ne semble plus sévir actuellement.
J'attends donc de voir ce qu'il en sera demain pour en apporter une conclusion définitive.
De toutes façons, je suis convaincu d'avoir à faire à un problèmes de cessions.
A suivre......
Leah-meta
Messages postés
10
Date d'inscription
lundi 10 février 2020
Statut
Membre
Dernière intervention
20 février 2020
1
20 févr. 2020 à 17:21
20 févr. 2020 à 17:21
Alors?
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
20 févr. 2020 à 17:27
20 févr. 2020 à 17:27
beaucoup moins que 2 ans.
dans chess.php, vois-tu un appel à session_set_cookie_params?
je pense que le but de cet fonction est de pouvoir avoir plusieurs sessions indépendantes entre un PC et le site de jeux.
comme cela ne fonctionne pas, autant simplifier en supprimant.
quand on tombe sur le dysfonctionnement, est-il réparé quand on ferme le navigateur?
dans chess.php, vois-tu un appel à session_set_cookie_params?
je pense que le but de cet fonction est de pouvoir avoir plusieurs sessions indépendantes entre un PC et le site de jeux.
comme cela ne fonctionne pas, autant simplifier en supprimant.
quand on tombe sur le dysfonctionnement, est-il réparé quand on ferme le navigateur?
Max747
>
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
5 mars 2020 à 14:07
5 mars 2020 à 14:07
dans chess.php, vois-tu un appel à session_set_cookie_params?
Oui
quand on tombe sur le dysfonctionnement, est-il réparé quand on ferme le navigateur?
Non.
Il est réparé en effaçant les cookies.
Oui
@session_set_cookie_params(time()+365*24*3600, $path);
quand on tombe sur le dysfonctionnement, est-il réparé quand on ferme le navigateur?
Non.
Il est réparé en effaçant les cookies.
Max747
Messages postés
258
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2024
Modifié le 20 févr. 2020 à 18:33
Modifié le 20 févr. 2020 à 18:33
beaucoup moins que 2 ans.
Effectivement.Voilà quelqu' un qui suit!
:)
je pense que le but de cet fonction est de pouvoir avoir plusieurs sessions indépendantes entre un PC et le site de jeux.
Oui.Avant de sélectionner une partie il est demandé:
Si les joueurs joueront ils sur le même PC?
comme cela ne fonctionne pas, autant simplifier en supprimant. (session_set_cookie_params ?)
Alors dans le cas cité au dessus, je n'ose pas supprimer cette cession session_set_cookie_params dans aucun fichier présenté ci dessus.
quand on tombe sur le dysfonctionnement, est-il réparé quand on ferme le navigateur?
Non hélas.Sinon cet ennui aurait été moins gênant.
Oh mince alors.
Je viens de m' apercevoir à l'instant (18h27) que le dysfonctionnement réapparait sur mon navigateur Opera.
Idem sous Firefox.
Par contre sur un autre ordinateur et sous Firefox en ce moment cela fonctionne.
Pour session_set_cookie_params voici ci dessous les fichiers comportant cette cession:
chess.php
session_set_cookie_params(time()+365*24*3600, $path);
login.php
@session_set_cookie_params(time()+365*24*3600, $path);
massmail.php
session_set_cookie_params(time()+365*24*3600, $path);
newuser.php
session_set_cookie_params(time()+365*24*3600, $path);
oppass.php
session_set_cookie_params(0, $path);
watchgame.php
session_set_cookie_params(0, $path);
index.inc.php
@session_set_cookie_params(time()+365*24*3600, $path); // 1 an
open.inc.php
session_set_cookie_params(0, $path);
Effectivement.Voilà quelqu' un qui suit!
:)
je pense que le but de cet fonction est de pouvoir avoir plusieurs sessions indépendantes entre un PC et le site de jeux.
Oui.Avant de sélectionner une partie il est demandé:
Si les joueurs joueront ils sur le même PC?
comme cela ne fonctionne pas, autant simplifier en supprimant. (session_set_cookie_params ?)
Alors dans le cas cité au dessus, je n'ose pas supprimer cette cession session_set_cookie_params dans aucun fichier présenté ci dessus.
quand on tombe sur le dysfonctionnement, est-il réparé quand on ferme le navigateur?
Non hélas.Sinon cet ennui aurait été moins gênant.
Oh mince alors.
Je viens de m' apercevoir à l'instant (18h27) que le dysfonctionnement réapparait sur mon navigateur Opera.
Idem sous Firefox.
Par contre sur un autre ordinateur et sous Firefox en ce moment cela fonctionne.
Pour session_set_cookie_params voici ci dessous les fichiers comportant cette cession:
chess.php
session_set_cookie_params(time()+365*24*3600, $path);
login.php
@session_set_cookie_params(time()+365*24*3600, $path);
massmail.php
session_set_cookie_params(time()+365*24*3600, $path);
newuser.php
session_set_cookie_params(time()+365*24*3600, $path);
oppass.php
session_set_cookie_params(0, $path);
watchgame.php
session_set_cookie_params(0, $path);
index.inc.php
@session_set_cookie_params(time()+365*24*3600, $path); // 1 an
open.inc.php
session_set_cookie_params(0, $path);
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
21 févr. 2020 à 00:16
21 févr. 2020 à 00:16
je pense que, de toutes façons, l'utilité de ces session_set_cookie_params() a été perdue le jour où tu as décidé d'ajouter ces arobases.
par ailleurs, il s'agit d'une fonctionnalité que tu ne comprends ni ne maîtrises. as-tu testé cette possibilité après chaque changement de code?
vu ta manière de travailler (par essai et erreur), je recommande que tu simplifies ton site et le réduises à des éléments que tu comprends et à des fonctionnalités que tu testes.
je recommande donc que tu supprimes (commentes) tous les session_set_cookie_params().
par ailleurs, il s'agit d'une fonctionnalité que tu ne comprends ni ne maîtrises. as-tu testé cette possibilité après chaque changement de code?
vu ta manière de travailler (par essai et erreur), je recommande que tu simplifies ton site et le réduises à des éléments que tu comprends et à des fonctionnalités que tu testes.
je recommande donc que tu supprimes (commentes) tous les session_set_cookie_params().
Max747
Messages postés
258
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2024
>
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
21 févr. 2020 à 10:33
21 févr. 2020 à 10:33
l'utilité de ces session_set_cookie_params() a été perdue le jour où tu as décidé d'ajouter ces arobases.
Non car les arobases me permettent d'écrire sur les chats.Mais l' inconvénient est que le message warning y est présent.
par ailleurs, il s'agit d'une fonctionnalité que tu ne comprends ni ne maîtrises. as-tu testé cette possibilité après chaque changement de code?
Oui .Sans résultats.
vu ta manière de travailler (par essai et erreur), je recommande que tu simplifies ton site et le réduises à des éléments que tu comprends et à des fonctionnalités que tu testes.
Je fais des erreurs comme tout le monde peux en faire à son niveau.Qui n'en fait pas?
Faut il encore que je sache le simplifier.
je recommande donc que tu supprimes (commentes) tous les session_set_cookie_params().
Je l'ai fais.Seul le fichier index.inc.php crée un changement en ne me permettant plus d'écrire dans les chats.
A savoir que ne plus écrire dans les chats, veut dire perdre la cession. (Username plus présent).
Maintenant je dois arrêter pour aujourd'hui car je n'ai plus le temps de continuer hélas.
A demain si tu veux bien.
Non car les arobases me permettent d'écrire sur les chats.Mais l' inconvénient est que le message warning y est présent.
par ailleurs, il s'agit d'une fonctionnalité que tu ne comprends ni ne maîtrises. as-tu testé cette possibilité après chaque changement de code?
Oui .Sans résultats.
vu ta manière de travailler (par essai et erreur), je recommande que tu simplifies ton site et le réduises à des éléments que tu comprends et à des fonctionnalités que tu testes.
Je fais des erreurs comme tout le monde peux en faire à son niveau.Qui n'en fait pas?
Faut il encore que je sache le simplifier.
je recommande donc que tu supprimes (commentes) tous les session_set_cookie_params().
Je l'ai fais.Seul le fichier index.inc.php crée un changement en ne me permettant plus d'écrire dans les chats.
A savoir que ne plus écrire dans les chats, veut dire perdre la cession. (Username plus présent).
Maintenant je dois arrêter pour aujourd'hui car je n'ai plus le temps de continuer hélas.
A demain si tu veux bien.
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
>
Max747
Messages postés
258
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2024
21 févr. 2020 à 12:17
21 févr. 2020 à 12:17
as-tu supprimé partout tous les session_set_cookie_params()?
quand tu as la situation où tu ne peux pas écrire dans les chats, peux-tu examiner le cookie PHPSESSID du site?
dans chrome, cliquer sur le petit bouton "non sécurisé" à gauche dans la barre d'adresse, puis naviguer et cliquer sur le cookie.
je suppose que c'est la page chess.php qui gère le chat. si je devine bien, cette page ne réagit pas bien quand la session est perdue. ne devrait-elle pas redemander à l'utilisateur de s'authentifier, au lieu d'ignorer le chat?
tu as écrit que le soucis persistait quand on fermait le navigateur. que se passe-t'il à l'ouverture: l'utilisateur doit-il s’authentifier?
quand tu as la situation où tu ne peux pas écrire dans les chats, peux-tu examiner le cookie PHPSESSID du site?
dans chrome, cliquer sur le petit bouton "non sécurisé" à gauche dans la barre d'adresse, puis naviguer et cliquer sur le cookie.
je suppose que c'est la page chess.php qui gère le chat. si je devine bien, cette page ne réagit pas bien quand la session est perdue. ne devrait-elle pas redemander à l'utilisateur de s'authentifier, au lieu d'ignorer le chat?
tu as écrit que le soucis persistait quand on fermait le navigateur. que se passe-t'il à l'ouverture: l'utilisateur doit-il s’authentifier?
Max747
Messages postés
258
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2024
>
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
22 févr. 2020 à 11:08
22 févr. 2020 à 11:08
as-tu supprimé partout tous les session_set_cookie_params()?
Oui.Sans ne toujours pas pouvoir écrire dans le chat.Car sur un de mes ordinateurs la panne se produit continuellement.
quand tu as la situation où tu ne peux pas écrire dans les chats, peux-tu examiner le cookie PHPSESSID du site?
Oui.Voici en image ce qu'il en est des cookies:
je suppose que c'est la page chess.php qui gère le chat. si je devine bien, cette page ne réagit pas bien quand la session est perdue. ne devrait-elle pas redemander à l'utilisateur de s'authentifier, au lieu d'ignorer le chat?
Que faire pour redemander à l'utilisateur de s'authentifier?
Placer ce script comme ceci dans chess.php:
Si oui cela ne fonctionne pas non plus.
tu as écrit que le soucis persistait quand on fermait le navigateur. que se passe-t'il à l'ouverture: l'utilisateur doit-il s’authentifier?
A l'ouverture depuis une réponse de la messagerie par e-mail il n'est plus nécessaire de s'authentifier.En voici un exemple par l'image où on a accès aux parties à sélectionner directement:
Un indice démontre qu'il n'est pas possible d'écrire dans les chats est que "username" est absent comme le montre l'image ci dessous:
Il devrait être noté: Bienvenue sur ce chat April.
(A noter que April est bien présent dans l'image précédente en haut à droite.)
Oui.Sans ne toujours pas pouvoir écrire dans le chat.Car sur un de mes ordinateurs la panne se produit continuellement.
quand tu as la situation où tu ne peux pas écrire dans les chats, peux-tu examiner le cookie PHPSESSID du site?
Oui.Voici en image ce qu'il en est des cookies:
je suppose que c'est la page chess.php qui gère le chat. si je devine bien, cette page ne réagit pas bien quand la session est perdue. ne devrait-elle pas redemander à l'utilisateur de s'authentifier, au lieu d'ignorer le chat?
Que faire pour redemander à l'utilisateur de s'authentifier?
Placer ce script comme ceci dans chess.php:
<?php session_start( ); // set the session cookie parameters so the cookie is only valid for this game $parts = pathinfo($_SERVER['REQUEST_URI']); $path = $parts['dirname']; if (empty($parts['extension'])) { $path .= '/'.$parts['jeuxechecs_fr']; } $path = str_replace('\\', '/', $path).'/'; session_set_cookie_params(time()+365*24*3600, $path);
Si oui cela ne fonctionne pas non plus.
tu as écrit que le soucis persistait quand on fermait le navigateur. que se passe-t'il à l'ouverture: l'utilisateur doit-il s’authentifier?
A l'ouverture depuis une réponse de la messagerie par e-mail il n'est plus nécessaire de s'authentifier.En voici un exemple par l'image où on a accès aux parties à sélectionner directement:
Un indice démontre qu'il n'est pas possible d'écrire dans les chats est que "username" est absent comme le montre l'image ci dessous:
Il devrait être noté: Bienvenue sur ce chat April.
(A noter que April est bien présent dans l'image précédente en haut à droite.)
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
>
Max747
Messages postés
258
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2024
22 févr. 2020 à 11:36
22 févr. 2020 à 11:36
tu écris avoir supprimé partout tous les session_set_cookie_params().
d'où vient alors ceci:
Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active in /customers/6/0/9/jeuxechecs.fr/httpd.www/echecs/login.php on line 25
d'où vient alors ceci:
Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active in /customers/6/0/9/jeuxechecs.fr/httpd.www/echecs/login.php on line 25
Max747
Messages postés
258
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2024
20 févr. 2020 à 18:32
20 févr. 2020 à 18:32
Oh mince alors.
Je viens de m' apercevoir à l'instant (18h27) que le dysfonctionnement réapparait sur mon navigateur Opera.
Idem sous Firefox.
Par contre sur un autre ordinateur et sous Firefox en ce moment cela fonctionne.
Pour session_set_cookie_params voici ci dessous les fichiers comportant cette cession:
chess.php
session_set_cookie_params(time()+365*24*3600, $path);
login.php
@session_set_cookie_params(time()+365*24*3600, $path);
massmail.php
session_set_cookie_params(time()+365*24*3600, $path);
newuser.php
session_set_cookie_params(time()+365*24*3600, $path);
oppass.php
session_set_cookie_params(0, $path);
watchgame.php
session_set_cookie_params(0, $path);
index.inc.php
@session_set_cookie_params(time()+365*24*3600, $path); // 1 an
open.inc.php
session_set_cookie_params(0, $path);
Je viens de m' apercevoir à l'instant (18h27) que le dysfonctionnement réapparait sur mon navigateur Opera.
Idem sous Firefox.
Par contre sur un autre ordinateur et sous Firefox en ce moment cela fonctionne.
Pour session_set_cookie_params voici ci dessous les fichiers comportant cette cession:
chess.php
session_set_cookie_params(time()+365*24*3600, $path);
login.php
@session_set_cookie_params(time()+365*24*3600, $path);
massmail.php
session_set_cookie_params(time()+365*24*3600, $path);
newuser.php
session_set_cookie_params(time()+365*24*3600, $path);
oppass.php
session_set_cookie_params(0, $path);
watchgame.php
session_set_cookie_params(0, $path);
index.inc.php
@session_set_cookie_params(time()+365*24*3600, $path); // 1 an
open.inc.php
session_set_cookie_params(0, $path);
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
Modifié le 22 févr. 2020 à 13:24
Modifié le 22 févr. 2020 à 13:24
la page echecs/index.php a renvoyé ceci.
Erreure détectée.<br /><br />Si vous avez atteint cette page par erreur, veuillez revenir à la page de connexion, effacer votre cache, actualiser la page et essayer de vous reconnecter.
bizarre, non? d'où cela vient-il?
Erreure détectée.<br /><br />Si vous avez atteint cette page par erreur, veuillez revenir à la page de connexion, effacer votre cache, actualiser la page et essayer de vous reconnecter.
bizarre, non? d'où cela vient-il?
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
22 févr. 2020 à 14:00
22 févr. 2020 à 14:00
si ton code php ne contient pas d'information confidentielle (identifiant, mot de passe, ...), pourrais-tu le poster, peut-être sur ton site?
Max747
Messages postés
258
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2024
22 févr. 2020 à 14:06
22 févr. 2020 à 14:06
Oui bien sûr qu'il y a moyen de poster sur mon site.
Mais bien sûr sans ce qui est confidentiel.
Mais bien sûr sans ce qui est confidentiel.
Max747
Messages postés
258
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2024
22 févr. 2020 à 14:03
22 févr. 2020 à 14:03
Il s'agit d'un message d'erreur qui fût créer à l'origine.
Il fait parti d'un fichier php tout simplement.
Mais te définir dans qu'elle circonstance il se présente, c'est une autre recherche que je pourrai abordé quand le problème Warning sera résolu.
Il fait parti d'un fichier php tout simplement.
Mais te définir dans qu'elle circonstance il se présente, c'est une autre recherche que je pourrai abordé quand le problème Warning sera résolu.
Rebonjour,
Cherchant à comprendre le fonctionnement de ce script ci dessous:
Quelqu' un parmi vous aurait - il l'obligeance de me l'expliquer?
1) Quel est le rôle de la deuxième ligne?
$parts serait - elle bien une variable tableau?
Remarque:
Il est indiqué ici :
https://www.php.net/manual/fr/function.session-set-cookie-params.php
que session_start(); doit se trouver après session_set_cookie_params(). Ainsi cette fonction ne doit pas être écrite à la deuxième ligne d'un script PHP comme c'est souvent le cas.
Cherchant à comprendre le fonctionnement de ce script ci dessous:
<?php $parts = pathinfo($_SERVER['REQUEST_URI']); $path = $parts['dirname']; if (empty($parts['extension'])) { //$path .= '/'.$parts['jeuxechecs_fr']; $path .= '/index.php'; } $path = str_replace('\\', '/', $path).'/'; @session_set_cookie_params(time()+365*24*3600, $path); // 1 an. session_start();
Quelqu' un parmi vous aurait - il l'obligeance de me l'expliquer?
1) Quel est le rôle de la deuxième ligne?
$parts = pathinfo($_SERVER['REQUEST_URI']);
$parts serait - elle bien une variable tableau?
Remarque:
Il est indiqué ici :
https://www.php.net/manual/fr/function.session-set-cookie-params.php
que session_start(); doit se trouver après session_set_cookie_params(). Ainsi cette fonction ne doit pas être écrite à la deuxième ligne d'un script PHP comme c'est souvent le cas.
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
Modifié le 4 mars 2020 à 09:01
Modifié le 4 mars 2020 à 09:01
Par rapport à ta remarque.
session_start n'a pas réellement besoin d'être à la deuxième ligne d'un script php.
Cette règle, c'est plus une « bonne » pratique qui permet d'éviter de se poser des questions et de vraiment comprendre comment fonctionne un script...
Le truc, c'est qu'une réponse http contient deux sortes de données : les en-têtes et le corps. Les en-têtes, comme leur nom l'indique, doivent forcément être renvoyées au client avant le corps. Elles contiennent des choses comme le type de document (pdf, html, etc.), des redirections ou des cookies. Or les sessions s'appuient sur les cookies...
Par ailleurs, dans son fonctionnement, Php commence à renvoyer le corps de la réponse aussitôt qu'il trouve une sortie (un "echo", ou du texte en dehors des balises <?php ?>, mais aussi une erreur qui, selon la configuration, est affichée).
Lorsqu'il commence à envoyer le corps, Php est obligé de générer les en-têtes avec les infos qu'il possède, pour les envoyer avant le début du corps. Si, après coup, on lui dit « ah au fait, mets ça dans les en-têtes », ben... Trop tard. On se retrouve avec le fameux message « Headers already sent ».
Du coup, il faut s'assurer que toutes les fonctions qui modifient les en-têtes soient appelées avant le premier texte, et c'est pour ça qu'on dit souvent de placer session_start() tout en haut.
Mais fondamentalement, on peut très bien le mettre à la 150ème ligne de code, si on maîtrise son script et qu'on est sûr qu'aucune sortie n'est générée avant.
session_start n'a pas réellement besoin d'être à la deuxième ligne d'un script php.
Cette règle, c'est plus une « bonne » pratique qui permet d'éviter de se poser des questions et de vraiment comprendre comment fonctionne un script...
Le truc, c'est qu'une réponse http contient deux sortes de données : les en-têtes et le corps. Les en-têtes, comme leur nom l'indique, doivent forcément être renvoyées au client avant le corps. Elles contiennent des choses comme le type de document (pdf, html, etc.), des redirections ou des cookies. Or les sessions s'appuient sur les cookies...
Par ailleurs, dans son fonctionnement, Php commence à renvoyer le corps de la réponse aussitôt qu'il trouve une sortie (un "echo", ou du texte en dehors des balises <?php ?>, mais aussi une erreur qui, selon la configuration, est affichée).
Lorsqu'il commence à envoyer le corps, Php est obligé de générer les en-têtes avec les infos qu'il possède, pour les envoyer avant le début du corps. Si, après coup, on lui dit « ah au fait, mets ça dans les en-têtes », ben... Trop tard. On se retrouve avec le fameux message « Headers already sent ».
Du coup, il faut s'assurer que toutes les fonctions qui modifient les en-têtes soient appelées avant le premier texte, et c'est pour ça qu'on dit souvent de placer session_start() tout en haut.
Mais fondamentalement, on peut très bien le mettre à la 150ème ligne de code, si on maîtrise son script et qu'on est sûr qu'aucune sortie n'est générée avant.
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
4 mars 2020 à 09:31
4 mars 2020 à 09:31
as-tu fait
si cela ne clarifie pas les choses, peux-tu nous montrer ce que cela donne, cela nous aidera à t'expliquer concrètement.
print_r(pathinfo($_SERVER['REQUEST_URI']));?
si cela ne clarifie pas les choses, peux-tu nous montrer ce que cela donne, cela nous aidera à t'expliquer concrètement.
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
4 mars 2020 à 10:42
4 mars 2020 à 10:42
l'utilité de ce code est expliqué ici: https://forums.commentcamarche.net/forum/affich-36469595-attention-warning#17
Je veux bien admettre ta réponse.
Mais celle ci ne répond pas à ma question que voici:
1) Quel est le rôle de la deuxième ligne?
Mais celle ci ne répond pas à ma question que voici:
1) Quel est le rôle de la deuxième ligne?
$parts = pathinfo($_SERVER['REQUEST_URI']);
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
4 mars 2020 à 10:20
4 mars 2020 à 10:20
Bonjour,
Je n'ai pas prétendu répondre à ta question, j'ai même bien précisé "Par rapport à ta remarque" ;)
PathInfo permet de décomposer un chemin d'accès à un fichier en ses éléments.
https://www.php.net/pathinfo (regarde notamment l'exemple #1)
Donc là, l'idée est de décomposer les éléments de la requête cliente (l'URL appelée par le client, du genre https://www.domainecarneros.com/chemin/index.php ), pour changer le nom de fichier par index.php si le nom de fichier n'avait pas d'extension.
Comme suggéré par yg_be, place des print_r et des echo à chaque ligne de ce code pour bien comprendre ce qu'il se passe.
Xavier
Je n'ai pas prétendu répondre à ta question, j'ai même bien précisé "Par rapport à ta remarque" ;)
PathInfo permet de décomposer un chemin d'accès à un fichier en ses éléments.
https://www.php.net/pathinfo (regarde notamment l'exemple #1)
Donc là, l'idée est de décomposer les éléments de la requête cliente (l'URL appelée par le client, du genre https://www.domainecarneros.com/chemin/index.php ), pour changer le nom de fichier par index.php si le nom de fichier n'avait pas d'extension.
Comme suggéré par yg_be, place des print_r et des echo à chaque ligne de ce code pour bien comprendre ce qu'il se passe.
Xavier
Ok merci.
J'ai trouvé la finalité de ce script ci dessous:
Car en ajoutant la ligne 13, j'obtiens le message suivant en haut de page:
/echecs/
Alors si je ne me trompe, les cookies sont ils créés pour un an dans le dossier echecs ?
Ou le dossier echecs et ces sous dossiers?
J'ai trouvé la finalité de ce script ci dessous:
<?php session_start( ); // set the session cookie parameters so the cookie is only valid for this game $parts = pathinfo($_SERVER['REQUEST_URI']); //print_r(pathinfo($_SERVER['REQUEST_URI'])); $path = $parts['dirname']; if (empty($parts['extension'])) { $path .= $parts['jeuxechecs_fr']; } $path = str_replace('\\', '/', $path).'/'; @session_set_cookie_params(time()+365*24*3600, $path); echo $path; session_start( );
Car en ajoutant la ligne 13, j'obtiens le message suivant en haut de page:
/echecs/
Alors si je ne me trompe, les cookies sont ils créés pour un an dans le dossier echecs ?
Ou le dossier echecs et ces sous dossiers?
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
5 mars 2020 à 14:58
5 mars 2020 à 14:58
ce code ne fonctionne pas, c'est pour cela que tu y as ajouté une arobase.
l'idée de ce code, c'est que les cookies de sessions soient spécifiques à une partie du site.
chaque partie du site pouvant alors avoir ses sessions, indépendamment des autres parties.
l'idée de ce code, c'est que les cookies de sessions soient spécifiques à une partie du site.
chaque partie du site pouvant alors avoir ses sessions, indépendamment des autres parties.
Max747
>
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
5 mars 2020 à 15:30
5 mars 2020 à 15:30
ce code ne fonctionne pas, c'est pour cela que tu y as ajouté une arobase.
Pour supprimer les message Warning.
Les sessions usernames sont parfois absentes.C'est alors que je supprime les cookies de mon site pour que cela fonctionne à nouveau.
Saurais tu me confirmer, à la lecture des résultats que je présente dans mon message ci dessus, que les cookies servent pour le dossier echecs ainsi que ces sous dossiers?
Pour supprimer les message Warning.
Les sessions usernames sont parfois absentes.C'est alors que je supprime les cookies de mon site pour que cela fonctionne à nouveau.
Saurais tu me confirmer, à la lecture des résultats que je présente dans mon message ci dessus, que les cookies servent pour le dossier echecs ainsi que ces sous dossiers?
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
>
Max747
Modifié le 5 mars 2020 à 16:52
Modifié le 5 mars 2020 à 16:52
comme ce code ne fonctionne pas (le warning prévient qu'il ne fonctionne pas), il n'a pas d'influence sur les cookies de sessions. les (cookies de) sessions sont donc valables pour toutes les pages du site.
c'est très simple à vérifier en examinant les cookies PHPSESID.
c'est très simple à vérifier en examinant les cookies PHPSESID.