8791 sujets

Développement web côté serveur, CMS

Bonjour,
J'utilise un espace membre et certain script php me font me déconnecté il faut que je me relog , pourquoi ?

pouvez-vous m'éclairer ?

voici le code du scripte qui me fais me déconecter :
[code]<?php
if(!defined('GRAPAGENDA'))
  exit();


if(!isset($_GET['date']))
  $date = mktime(0,0,0,date('m'), date('d'), date('Y'));
else
  $date = (int)$_GET['date'];
   
$la = mktime(0,0,0,date('m'), date('d'), date('Y'));

$day = date('d', $date);
$month = date('m', $date);
$year = date('Y', $date);

$month_start = mktime(0,0,0,$month, 1, $year);
$month_name = date('M', $month_start);
$monthTitre=$anneTitre[strtolower($month_name)];
$month_start_day = date('D', $month_start);

switch($month_start_day)
{
    case "Sun": $offset = 0; break;
    case "Mon": $offset = 1; break;
    case "Tue": $offset = 2; break;
    case "Wed": $offset = 3; break;
    case "Thu": $offset = 4; break;
    case "Fri": $offset = 5; break;
    case "Sat": $offset = 6; break;
}

if($month == 1){
  $num_days_last = cal_days_in_month(0, 12, ($year -1));
}else{
  $num_days_last = cal_days_in_month(0, ($month -1), $year);
}

$num_days_current = cal_days_in_month(0, $month, $year);

for($i = 1; $i <= $num_days_current; $i++){
    $num_days_array[] = $i;
}

for($i = 1; $i <= $num_days_last; $i++){
    $num_days_last_array[] = $i;
}

if($offset > 0){
    $offset_correction = array_slice($num_days_last_array, -$offset, $offset);
    $new_count = array_merge($offset_correction, $num_days_array);
    $offset_count = count($offset_correction);
}

else {
    $offset_count = 0;
    $new_count = $num_days_array;
}

$current_num = count($new_count);


if($current_num > 35){
   $num_weeks = 6;
   $outset = (42 - $current_num);
} elseif($current_num < 35){
   $num_weeks = 5;
   $outset = (35 - $current_num);
}
if($current_num == 35){
   $num_weeks = 5;
   $outset = 0;
}

for($i = 1; $i <= $outset; $i++){
   $new_count[] = $i;
}

$weeks = array_chunk($new_count, 7);

$previous_link = "<a href=\"index.php?a=date&date=";
if($month == 1){
   $previous_link .= mktime(0,0,0,12,$day,($year -1));
} else {
   $previous_link .= mktime(0,0,0,($month -1),$day,$year);
}
$previous_link .= "\"><< Pr&eacute;c&eacute;dent</a>";

$next_link = "<a href=\"index.php?a=date&date=";
if($month == 12){
   $next_link .= mktime(0,0,0,1,$day,($year + 1));
} else {
   $next_link .= mktime(0,0,0,($month +1),$day,$year);
}
$next_link .= "\">Suivant >></a>";

echo
    '
<br />
<table align="center" border="1" cellpadding="2" cellspacing="0" width="100%" class="calendar">
  <tr>
    <td colspan="7">

      <table width=100% align=center>
        <tr>
          <td colspan=2 width=100 align=left>'.$previous_link.'</td>
          <td colspan=3 align=center>'.$monthTitre.' '.$year.'</td>
          <td colspan=2 width=100 align=right>'.$next_link.'</td>
        </tr>
     </table>
    
    </td>
  <tr height=10>
    <td class="small">Dimanche</td><td class="small">Lundi</td><td class="small">Mardi</td><td class="small">Mercredi</td><td class="small">Jeudi</td><td class="small">Vendredi</td><td class="small">Samedi</td>
  </tr>';

$i = 0;
$tmp = '';
foreach($weeks as $week)
{
  $tmp .= "<tr height=\"20\">";
  foreach($week as $d)
  {
  
    if($i < $offset_count)
    {
      $day_link = $d;
      $tmp .= "<td class=\"nonmonthdays\">$day_link</td>";
    }
    
    if(($i >= $offset_count) && ($i < ($num_weeks * 7) - $outset))
    {
      $dateLa=mktime(0,0,0,$month,$d,$year);
      $extraire1=mysql_query("select * from agenda_events WHERE date='$dateLa'");
      $nbrEvents1=mysql_num_rows($extraire1);
      
      if($nbrEvents1>0)
        $eventsHere=" <span class=\"gros\">".str_repeat("* ",$nbrEvents1)."</span>";
      else
        $eventsHere="";

      $day_link = "<a href=\"./?a=date&date=".mktime(0,0,0,$month,$d,$year)."\">$d</a> $eventsHere";
      
      if($la == mktime(0,0,0,$month,$d,$year))
        $tmp .= "<td class=\"today\">$day_link</td>";
      elseif($day==$d)
        $tmp .= "<td class=\"clic\">$day_link</td>";
      else
        $tmp .= "<td class=\"days\">$day_link</td>";
    }
    elseif(($outset > 0))
    {
      if(($i >= ($num_weeks * 7) - $outset))
      {
        $day_link = $d;
        $tmp .= "<td class=\"nonmonthdays\">$day_link</td>";
      }
    }
    $i++;

  }
  $tmp .= "</tr>";   
}

$tmp .= '</table>';
echo $tmp;
?>



<br /><br />
<table width="100%">
  <tr>
    <td colspan="2">
      <h2>Infos pour le <b><?php echo $day.'/'.$month.'/'.$year; ?></b></h2>
    </td>
  </tr>
  
  <tr valign="top">
    <td valign="top">
    <?php
    $extraire = mysql_query("select * from agenda_events WHERE date='$date'");
    $nbrEvents = mysql_num_rows($extraire);
  
    
    
    $eventsOutput = '';
    if($nbrEvents>0)
    {
      $eventsOutput .= 'Il y\'a <b>'.$nbrEvents.'</b> &eacute;v&egrave;nement(s) pour cette date. <br />';
      
      $eventsOutput .= '<table width="98%" class="pts">';
      while($Event = mysql_fetch_array($extraire))
      {
        $type = $Event['type'];
        $ext=mysql_query("select id,titre from agenda_theme WHERE id='$type'");
        $nbrEvents11 = mysql_num_rows($ext);
        if($nbrEvents11==1)
          $type_titre = mysql_result($ext,0,"titre");
        else
          $type_titre = "Inconnu";
  
        $eventsOutput .= '
        <tr>
          <td>
            <div class="un_event">
              <p class="event_entete"><b>'.safe_clean($Event['titre']).'</b> - de '.safe_clean($toutMembre[$Event['id_membre']]).'  &nbsp; <i>Ref : evts'.$Event['id'].'</i></p>
              <p class="event_type">Type : <b>'.safe_clean($type_titre).'</b></p>
              <p class="event_texte">'.nl2br($Event['texte']).'</p>
            </div>
          </td>
        </tr>';
      }
      $eventsOutput .= '</table>';
    }
    else
    {
      $eventsOutput .= '<table width="98%" class="pts"><tr><td><span class="red">Aucun &eacute;v&egrave;nement pour cette date.</span></td></table>';
    }
  
  echo $eventsOutput;
  ?>
  </td>
  <td width="250" align="right"> 

  <?php
   
    {
      echo '<b>Ajouter un &eacute;v&egrave;nement</b>';
      
      $select = "select * FROM agenda_theme ORDER BY titre ASC";
      $result = mysql_query($select)  or die ('<b>Erreur MySQL [S&eacute;lection des th&egrave;mes]</b> : <br />'.mysql_error() );
      $nbr=mysql_num_rows($result);
      
      if($nbr>0)
      {
        while($row=mysql_fetch_array($result))
        {
          $id=$row["id"];
          $titre=stripslashes(htmlentities($row["titre"]));
          $listeSelect.='<option value="'.$id.'">'.$titre.'</option>';
        }
      }
      include("lib/form_ajout.php");
    }
  ?>

Modifié par doublemetre (20 Apr 2008 - 19:45)
Modérateur
Salut,

Je pense que c'est un problème de session. Tu dois oublié quelque chose à ce niveau.

Par exemple : je ne vois pas sur ton script session_start();

@+
Hello,

@doublemetre : à priori rien dans ton code ne devrait déconnecter une session en cours Smiley rolleyes ...

@Nolem : le session_start() ne sert que si on utilise des variables $_SESSION dans la page. Tant que la session n'est pas détruite avec session_destroy() on peut récupérer les variables plus tard. Un pitit exemple :

test1.php
<?php
session_start();
$_SESSION['id'] = 33;
echo '<a href="test2.php">test2</a>';
?>

test2.php
<?php
echo '<a href="test3.php">test3</a>';
?>

test3.php
<?php
session_start();
$id = $_SESSION['id'];
echo 'id vaut bien : '.$id;
?>

A+ Smiley cligne
Merci de m'aider, j'ai tester page par page et c'est la page date qui me déconnecte .C'est la page qui affiche le calendrier et on peut cliquer sur les dates et c'est quand on clic que ca me déconnecte.
voici le code
<?php
if(!defined('GRAPAGENDA'))
  exit();





if(!isset($_GET['date']))
  $date = mktime(0,0,0,date('m'), date('d'), date('Y'));
else
  $date = (int)$_GET['date'];
   
$la = mktime(0,0,0,date('m'), date('d'), date('Y'));

$day = date('d', $date);
$month = date('m', $date);
$year = date('Y', $date);

$month_start = mktime(0,0,0,$month, 1, $year);
$month_name = date('M', $month_start);
$monthTitre=$anneTitre[strtolower($month_name)];
$month_start_day = date('D', $month_start);

switch($month_start_day)
{
    case "Sun": $offset = 0; break;
    case "Mon": $offset = 1; break;
    case "Tue": $offset = 2; break;
    case "Wed": $offset = 3; break;
    case "Thu": $offset = 4; break;
    case "Fri": $offset = 5; break;
    case "Sat": $offset = 6; break;
}

if($month == 1){
  $num_days_last = cal_days_in_month(0, 12, ($year -1));
}else{
  $num_days_last = cal_days_in_month(0, ($month -1), $year);
}

$num_days_current = cal_days_in_month(0, $month, $year);

for($i = 1; $i <= $num_days_current; $i++){
    $num_days_array[] = $i;
}

for($i = 1; $i <= $num_days_last; $i++){
    $num_days_last_array[] = $i;
}

if($offset > 0){
    $offset_correction = array_slice($num_days_last_array, -$offset, $offset);
    $new_count = array_merge($offset_correction, $num_days_array);
    $offset_count = count($offset_correction);
}

else {
    $offset_count = 0;
    $new_count = $num_days_array;
}

$current_num = count($new_count);


if($current_num > 35){
   $num_weeks = 6;
   $outset = (42 - $current_num);
} elseif($current_num < 35){
   $num_weeks = 5;
   $outset = (35 - $current_num);
}
if($current_num == 35){
   $num_weeks = 5;
   $outset = 0;
}

for($i = 1; $i <= $outset; $i++){
   $new_count[] = $i;
}

$weeks = array_chunk($new_count, 7);

$previous_link = "<a href=\"index.php?a=date&date=";
if($month == 1){
   $previous_link .= mktime(0,0,0,12,$day,($year -1));
} else {
   $previous_link .= mktime(0,0,0,($month -1),$day,$year);
}
$previous_link .= "\"><< Pr&eacute;c&eacute;dent</a>";

$next_link = "<a href=\"index.php?a=date&date=";
if($month == 12){
   $next_link .= mktime(0,0,0,1,$day,($year + 1));
} else {
   $next_link .= mktime(0,0,0,($month +1),$day,$year);
}
$next_link .= "\">Suivant >></a>";

echo
    '
<br />
<table align="center" border="1" cellpadding="2" cellspacing="0" width="100%" class="calendar">
  <tr>
    <td colspan="7">

      <table width=100% align=center>
        <tr>
          <td colspan=2 width=100 align=left>'.$previous_link.'</td>
          <td colspan=3 align=center>'.$monthTitre.' '.$year.'</td>
          <td colspan=2 width=100 align=right>'.$next_link.'</td>
        </tr>
     </table>
    
    </td>
  <tr height=10>
    <td class="small">Dimanche</td><td class="small">Lundi</td><td class="small">Mardi</td><td class="small">Mercredi</td><td class="small">Jeudi</td><td class="small">Vendredi</td><td class="small">Samedi</td>
  </tr>';

$i = 0;
$tmp = '';
foreach($weeks as $week)
{
  $tmp .= "<tr height=\"20\">";
  foreach($week as $d)
  {
  
    if($i < $offset_count)
    {
      $day_link = $d;
      $tmp .= "<td class=\"nonmonthdays\">$day_link</td>";
    }
    
    if(($i >= $offset_count) && ($i < ($num_weeks * 7) - $outset))
    {
      $dateLa=mktime(0,0,0,$month,$d,$year);
      $extraire1=mysql_query("select * from agenda_events WHERE date='$dateLa'");
      $nbrEvents1=mysql_num_rows($extraire1);
      
      if($nbrEvents1>0)
        $eventsHere=" <span class=\"gros\">".str_repeat("* ",$nbrEvents1)."</span>";
      else
        $eventsHere="";

      $day_link = "<a href=\"./?a=date&date=".mktime(0,0,0,$month,$d,$year)."\">$d</a> $eventsHere";
      
      if($la == mktime(0,0,0,$month,$d,$year))
        $tmp .= "<td class=\"today\">$day_link</td>";
      elseif($day==$d)
        $tmp .= "<td class=\"clic\">$day_link</td>";
      else
        $tmp .= "<td class=\"days\">$day_link</td>";
    }
    elseif(($outset > 0))
    {
      if(($i >= ($num_weeks * 7) - $outset))
      {
        $day_link = $d;
        $tmp .= "<td class=\"nonmonthdays\">$day_link</td>";
      }
    }
    $i++;

  }
  $tmp .= "</tr>";   
}

$tmp .= '</table>';
echo $tmp;
?>



<br /><br />
<table width="100%">
  <tr>
    <td colspan="2">
      <h2>Infos pour le <b><?php echo $day.'/'.$month.'/'.$year; ?></b></h2>
    </td>
  </tr>
  
  <tr valign="top">
    <td valign="top">
    <?php
    $extraire = mysql_query("select * from agenda_events WHERE date='$date'");
    $nbrEvents = mysql_num_rows($extraire);
  
    
    
    $eventsOutput = '';
    if($nbrEvents>0)
    {
      $eventsOutput .= 'Il y\'a <b>'.$nbrEvents.'</b> &eacute;v&egrave;nement(s) pour cette date. <br />';
      
      $eventsOutput .= '<table width="98%" class="pts">';
      while($Event = mysql_fetch_array($extraire))
      {
        $type = $Event['type'];
        $ext=mysql_query("select id,titre from agenda_theme WHERE id='$type'");
        $nbrEvents11 = mysql_num_rows($ext);
        if($nbrEvents11==1)
          $type_titre = mysql_result($ext,0,"titre");
        else
          $type_titre = "Inconnu";
  
        $eventsOutput .= '
        <tr>
          <td>
            <div class="un_event">
              <p class="event_entete"><b>'.safe_clean($Event['titre']).'</b> - de '.safe_clean($toutMembre[$Event['id_membre']]).'  &nbsp; <i>Ref : evts'.$Event['id'].'</i></p>
              <p class="event_type">Type : <b>'.safe_clean($type_titre).'</b></p>
              <p class="event_texte">'.nl2br($Event['texte']).'</p>
            </div>
          </td>
        </tr>';
      }
      $eventsOutput .= '</table>';
    }
    else
    {
      $eventsOutput .= '<table width="98%" class="pts"><tr><td><span class="red">Aucun &eacute;v&egrave;nement pour cette date.</span></td></table>';
    }
  
  echo $eventsOutput;
  ?>
  </td>
  <td width="250" align="right"> 

  <?php
   
    {
      echo '<b>Ajouter un &eacute;v&egrave;nement</b>';
      
      $select = "select * FROM agenda_theme ORDER BY titre ASC";
      $result = mysql_query($select)  or die ('<b>Erreur MySQL [S&eacute;lection des th&egrave;mes]</b> : <br />'.mysql_error() );
      $nbr=mysql_num_rows($result);
      
      if($nbr>0)
      {
        while($row=mysql_fetch_array($result))
        {
          $id=$row["id"];
          $titre=stripslashes(htmlentities($row["titre"]));
          $listeSelect.='<option value="'.$id.'">'.$titre.'</option>';
        }
      }
      include("lib/form_ajout.php");
    }
  ?>
doublemetre a écrit :

...et c'est quand on clic que ca me déconnecte.
En fait je ne pense pas que tu sois déconnecté mais redirigé vers la page de login/password (index.php) Smiley murf !

Tu pourrais essayer de remplacer
$day_link = "<a href=\"./?a=date&date=".mktime(0,0,0,$month,$d,$year)."\">$d</a> $eventsHere";
par
$day_link = "<a href=\"".$_SERVER['PHP_SELF']."?a=date&date=".mktime(0,0,0,$month,$d,$year)."\">$d</a> $eventsHere";

A+



Edit: et si ça fonctionne, tu pourras également remplacer
$previous_link = "<a href=\"index.php?a=date&date=";
par
$previous_link = "<a href=\"".$_SERVER['PHP_SELF']."?a=date&date=";
et
$next_link = "<a href=\"index.php?a=date&date=";
par
$next_link = "<a href=\"".$_SERVER['PHP_SELF']."?a=date&date=";

Modifié par Heyoan (20 Apr 2008 - 14:26)
Modérateur
*Heyoan
Merci du petit tips Smiley smile . Je pensais qu'il fallait placer un session_start() automatiquement même sans utiliser la $_SESSION.


*doublemetre
Dans le cas où l'amélioration de Heyoan ne fonctionne pas, il y a peut être un souci de passage de variables vers la page index.php.

@+