BlueGEEK Journal

Accueil > Programmes > Projets PHP pour Sites WEB > Agendas > Cyber Agenda ++ > Cyber-Agenda++ (Projet) > ajouter_jour

AGENDA

ajouter_jour

PHP

mercredi 1er mars 2006, par bluegyn_spip

<?PHP



require('admin/agenda.inc.php');

require('admin/mydata.inc.php');

require('admin/saints.fnc.php');



$titre="Ajouter un enregistrement";



define("_INIT_",0   );

define("_ACTION_",1 );

define("_DEBUG_",FALSE); // DEBUG

// define("_DEBUG_",TRUE); // DEBUG



$_SELF=$_SERVER['PHP_SELF']; // Nom de la page elle mÝme



// =============================================================================

// TESTE LE MODE D'ENTREE INIT = 0 si GET/POST est vide

// =============================================================================

$mode = isset($_POST['mode'])?$_POST['mode'] : _INIT_;



// =============================================================================

// SELON LE MODE D ENTREE

// =============================================================================



if(_DEBUG_) print "MODE=".$mode;



//==============================================================================

// Ouvre la liste des lieux

// * Si n'existe pas crée le fichier et annonce un tableau vide

// * Si existe l'ouvre te remplit le tableau des lieux

// * -------------------------------------------------

// * FileListe est le fichier qui contient les entrées

//==============================================================================

$fileliste='data/'.basename($mydata,"data.php")."lieux.php"; // Rajoute Liste au nom du fichier actif

// Ces entrée sont placées dans le tableau TAB_lieux

if (!file_exists($fileliste))

{

 touch($fileliste);

 $TAB_lieux = array();

}

else

{

 $TAB_lieux=file($fileliste);

};



switch($mode)

{



case _INIT_ :

//==============================================================================

// ECRITURE DE LA PAGE WEB

// En mode AJOUT (valeur _INIT_ = 0)

//==============================================================================

// *** ENTETE ***

echo'

 <html>

 <head><title>Cyber Agenda - **{:- Bluegyn 2006 [AJOUTER JOURNEE]</title>

 </head>

 <body bgcolor="'.$agenda_couleur_fond.'" onload="F.lieu.focus();">

 <script>window.status="Ajouter un enregistrement";</script>';



$msg='';

$date_actu='1-1-2006';



if (isset($_GET["date_actu"]))

        $date_actu=$_GET["date_actu"];

if (isset($_GET["msg"]))

        $msg=$_GET["msg"];



$tab = explode("-",$date_actu);



?>



<table width="100%"><tr><td WIDTH="33%"><h1>

<a href="agenda.php?d=<?echo$mydata?>"><?echo$agenda_titre?></a></h1></td><td WIDTH="33%" align="center">

<h3><img src="img/add.bmp" border="1"> &nbsp;<?echo$titre?></h3></td><td align="right">

<?echo date("d-m-Y").'<br>'.saint_jour();?></td></tr>

</table>

<hr>

<center>

<table width="<?echo$agenda_largeur?>">

<caption><h1>

<?echo$date_actu?></font>

</h1></caption><tr><th bgcolor="yellow" width="5%">

Heure</th><th valign="top" bgcolor="yellow" width="45%">

<?echo$legende_lieu?></th><th bgcolor="yellow" width="45%">

<?echo$legende_objet?></th><th bgcolor="yellow" width="5%">

Important</th></tr></table><hr><center>



<?PHP



$i=0;

// ========================================================

// * Ouvre le CALENDRIER

// * Le parcoure de A à Z et cherche la date du jour

// ========================================================

$fichier=fopen("data/".$mydata,"r+"); // r+ = Lecture ET écriture

while(!feof($fichier))

{ // $tableau[$i]=explode("|",fgets($fichier,256));

        $ligne=explode("|",fgets($fichier,256));

        $tab_date_actu=explode("-",$date_actu);

 $jd_date_actu=gregoriantojd($tab_date_actu[1],$tab_date_actu[0],$tab_date_actu[2]);

       

        if ($jd_date_actu==$ligne[0])

                print

                '<TH bgcolor='.$couleur_fond.'><font size="-1">'.$ligne[2].'</font></TH>'.

                '<TD bgcolor="palegoldenrod"><font size="-1">'.$ligne[3].'</font></TD>'.

                '<TD bgcolor="gainsboro"><font size="-1">'.$ligne[4].'</font></TD>'.

                '<TD bgcolor="palegoldenrod"></TD></TR><TR>';

        $i++;

};

fclose($fichier);

///////////////////////////////////////////////////////////



echo '



 <form NAME="F" enctype="multipart/form-data" METHOD="POST" ACTION="'.$_SELF.'">



 <input type="hidden"         name="j"         value="'.$tab[0].'">

 <input type="hidden"         name="m"        value="'.$tab[1].'">

 <input type="hidden"         name="a"         value="'.$tab[2].'">

 <input type="hidden"         name="CHOIX_AGENDA"        value="'.$mydata.'">';



// ========================================================

// * AFFICHAGE TABLEAU

// ========================================================



echo '



 <table name="T" bgcolor="'.$couleur_fond.'" border="'.$cadre_bord.'"

 cellspacing="'.$cadre_espace.'" cellpadding="'.$cadre_marge.'">';



 // *** 1ERE LIGNE = ENTETES ***

echo '

 <tr>

   <td>'.$legende_lieu.'&nbsp;</td>

   <td>Clip</td>

   <td>Heure</td>

   <td>Minute</td>

 </tr>';



 // *** 2EME LIGNE = LES SAISIES ***

echo '

 <tr>

   <!--- CELL 1 = LISTE --->

   <td valign="top">

     <select name="liste" onClick="F.lieu.value=F.liste.value;">';

     if (count($TAB_lieux)) // Si le tableau n'est pas vide

     {

       foreach($TAB_lieux as $lieux){echo'<option value="'.$lieux.'">'.$lieux;};

     };



echo '

     </select>

     <input NAME="lieu" size="20" "maxlength=30"

       title="Entrez une ligne de texte, Double Clic pour effacer"

       onDblClick="F.lieu.value=\'\'";/>&nbsp;<br><br>'.$legende_objet.'

       <br>

     <textarea NAME="objet" cols="29" rows="6" title="Entrez plusieurs lignes de texte"></textarea>

   </td>



   <!-- COCHES ------------------------------------------------------------------->

   <td valign="top">



   <!-- input type="checkbox" name="important" value="0">Important -->

   <input type="radio" checked name="important" value="0">&nbsp;'.$legende_important0.'

   <br>

   <input type="radio" name="important" value="1">&nbsp;

     <span style='.$style_important1.'>'.$legende_important1.'</span>

   <br>

   <input type="radio" name="important" value="2">&nbsp;

     <span style='.$style_important2.'>'.$legende_important2.'</span>

   <br>

   <input type="radio" name="important" value="3">&nbsp;

     <span style='.$style_important3.'>'.$legende_important3.'</span>

   <br>

 <input type="radio" name="important" value="4">&nbsp;

   <span style='.$style_important4.'>'.$legende_important4.'</span><br>

 </td>



 <!-- HEURE -------------------------------------------------------------------->

 <td>

   <select NAME="h" value="'.$heure_debut.'" size="'.$hauteur_listes.'">';

     for($i=$heure_debut;$i<=$heure_fin;$i++)

     {

       echo '<OPTION '.($i==date('H')?'SELECTED>':'>').($i<10?"0".$i:$i).'</option>';

     };

echo '

   </select>

 </td>

 <!-- MINUTES ------------------------------------------------------------------>

 <td>

   <select NAME="n" VALUE="00" size="'.$hauteur_listes.'">';

   // Pointe l'heure sur la dizaine courante

   for($i=0;$i<=59;$i+=$minutes)

   {

     print'<option '.($i==10*(int)(date('i')/10)?'SELECTED>':'>').($i<10?"0".$i:$i).'</option>';

   };

echo '

   </select>

 </td>

 </tr>

 </table>

 <HR/>



 <input TYPE="BUTTON" VALUE="Retour/Annuler"

   onClick="window.location.href=\'agenda.php\'">&nbsp;&nbsp;



 <input TYPE="HIDDEN" NAME="mode" VALUE="1">

 <input TYPE="RESET" VALUE="Initialiser">&nbsp;&nbsp;

 <input TYPE="SUBMIT" VALUE="Valider/Ajouter">



 </center>

 </form>';

break;





// ========================================================

//  ACTION DU FORMULAIRE

//  * Sauvegarde des données

// ========================================================

case _ACTION_ :



// ========================================================

// * Nom du fichier de sauvegarde

// ========================================================

$filename = "data/".$mydata;



// ================================

// LECTURE DES DIFF CHAMPS POSTES

// ================================

$j=$_POST['j']; // Jour

$m=$_POST['m'];  // mois

$a=$_POST['a'];  // année

$date=$j.'-'.$m.'-'.$a;  // date = jour mois annee

$heure=$_POST['h'].':'.$_POST['n']; // Heure

$lieu=$_POST['lieu'];  // lieu

$objet=$_POST['objet'];   // obket

$objet = str_replace (chr(13).chr(10) , "<BR>", $objet ) ;

$important =

   (isset($_POST['important']) ? $_POST['important'] : "0");



// ================================

// TESTE LA VALIDITE DE LA DATE

// ================================

if (checkdate($m,$j,$a)==false)

{

 print "<H1>Erreur de Date!</H1>";

        Print ("<H1>Les valeurs saisies \"<I>".$date."</I>\" ne composent pas une date valide</H1>");

        print "</CENTER><HR/>";

        exit;

};



$date_nombre1=explode("-",$date);

$date_nombre2=gregoriantojd($date_nombre1[1],$date_nombre1[0],$date_nombre1[2]);



// ATTENTION seules des Double-Guillemets " "peuvent encadrer un echappement du type \n



// ***************************

$nouvel_enregistrement=

 $date_nombre2."|".

 $date."|".

 $heure."|".

 $lieu."|".

 $objet."|".

 $important."\n" ;

// ***************************



$nouvel_enregistrement=stripslashes($nouvel_enregistrement);



if(_DEBUG_) // Affiche le résultat intermédiaire en mode debogage

{

 PRINT 'REF='.$date_nombre2.'<hr>';

 PRINT 'DATE='.$date.'<hr>';

 PRINT 'HEURE='.$heure.'<hr>';

 PRINT 'LIEU='.$lieu.'<hr>';

 PRINT 'OBJET='.$objet.'<hr>';

 PRINT 'IMPORTANT='.$important.'<hr>';

 echo  '<form action="agenda.php"><input type="submit" value="Retour"></form>';

}; /* DEBUG */



//***

// LECTURE DU FICHIER ET MISE EN MEMOIRE

//***

$i=0;

if (file_exists($filename))

{

$fichier=fopen($filename,"r");

// PLACE CHAQUE LIGNE DANS LE TABLEAU DES LIGNES LUES

while(!feof($fichier))

{

        $lignes_lues[$i]=fgets($fichier,256);

$i++;

}

fclose ($fichier);

};

//***

// AJOUT DU NOUVEL ENREGISTREMENT A LA FIN

//***

$lignes_lues[$i]=$nouvel_enregistrement;

//***

// TRI DES LIGNES EN MEMOIRE

//***

sort($lignes_lues);

//***

// ECRITURE DU FICHIER

//***

if (count($lignes_lues) > 0);

{

$fichier=fopen($filename,"w+");

foreach($lignes_lues as $tmp)

{

fputs($fichier,$tmp);

}

fclose ($fichier);

}

//==============================================================================

// Teste si le lieu est dans la liste et s'il n'y est pas le rajoute

//==============================================================================

require ('ajouter_liste.php');



// retour automatique à la page précédente:

if(!_DEBUG_)print('<meta http-equiv="refresh" content="0;URL=agenda.php">');





break;



}; /* END SWITCH */



echo '</body></html>';

1/3/2006

- J’ai volontairement supprimé la page INSERER.PHP

- Car elle représentait une faille de sécurité (car il suffisait de l’appeler avec les bons arguments pour rajouter un enregistrement à la base)

- Maintenant elle est intégrée à ajouter_jour grâce à l’artifice du double passage aiguillé par l’instruction

- switch ($mode)

  • 1er Passage : case _INIT_ : break ;
  • 2eme Passage case _ACTION_ : break ;

- La page de mise à jour des listes ajouter_liste.php] est autonome

- Elle est simplement injectée au bon endroit dans le code _ACTION_ par la directive :

  • require(’ajouter_liste.php’) ;