* Logiciel placé sous la licence libre Affero GPL 3 <https://www.gnu.org/licenses/agpl-3.0.html>.
 * ****************************************************************************************************
 * 
 * Ce fichier est une partie de SACoche.
 * 
 * SACoche est un logiciel libre ; vous pouvez le redistribuer ou le modifier suivant les termes 
 * de la “GNU Affero General Public License” telle que publiée par la Free Software Foundation :
 * soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure.
 * 
 * SACoche est distribué dans l’espoir qu’il vous sera utile, mais SANS AUCUNE GARANTIE :
 * sans même la garantie implicite de COMMERCIALISABILITÉ ni d’ADÉQUATION À UN OBJECTIF PARTICULIER.
 * Consultez la Licence Publique Générale GNU Affero pour plus de détails.
 * 
 * Vous devriez avoir reçu une copie de la Licence Publique Générale GNU Affero avec SACoche ;
 * si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>.
 * 
 */

if(!defined('SACoche')) {exit('Ce fichier ne peut être appelé directement !');}
$TITRE = "Caractéristiques du serveur"; // Pas de traduction car pas de choix de langue pour ce profil.

echo InfoServeur::tableau_serveur_et_client();
echo InfoServeur::tableau_versions_logicielles();
echo InfoServeur::tableau_limitations_PHP();
echo InfoServeur::tableau_limitations_MySQL();
echo InfoServeur::tableau_configuration_PHP();
echo InfoServeur::tableau_modules_PHP(5 /*nb_lignes*/);
echo InfoServeur::tableau_reglages_Suhosin();
echo InfoServeur::tableau_reglages_GD();
?>
  $user_texte = ($user_id) ? 'Signature '.$user_texte : $user_texte ;
  exit('<li id="sgn_'.$user_id.'">'.html($user_texte).' : <img src="'.URL_DIR_IMPORT.FileSystem::$file_saved_name.'" alt="'.html($user_texte).'" width="'.$width.'" height="'.$height.'" /><q class="supprimer" title="Supprimer cette image (aucune confirmation ne sera demandée)."></q></li>');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Supprimer un fichier image (tampon de l'établissement ou signature)
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='delete_signature') && ($user_id>=0) )
{
  DB_STRUCTURE_IMAGE::DB_supprimer_image( $user_id , 'signature' );
  exit('ok');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Il se peut que rien n'ait été récupéré à cause de l'upload d'un fichier trop lourd
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if(empty($_POST))
{
  exit('Erreur : aucune donnée reçue ! Fichier trop lourd ? '.InfoServeur::minimum_limitations_upload());
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On ne devrait pas en arriver là...
// ////////////////////////////////////////////////////////////////////////////////////////////////////

exit('Erreur avec les données transmises !');

?>
Exemple #3
0
 public static function tableau_reglages_GD()
 {
   $jpeg = (version_compare(PHP_VERSION,5.3,'<')) ? 'JPG' : 'JPEG' ;
   $tab_objets = array(
     'GD Version'       => 'Version', // 
     'FreeType Support' => 'Support FreeType', // Requis pour imagettftext()
     $jpeg.' Support'   => 'Support JPEG',
     'PNG Support'      => 'Support PNG',
     'GIF Read Support' => 'Support GIF', // "GIF Create Support" non testé car on n'écrit que des jpg (photos) et des png (étiquettes) de toutes façons.
   );
   $tab_gd_options = gd_info(); // http://fr.php.net/manual/fr/function.gd-info.php
   $tab_tr = array();
   foreach($tab_objets as $nom_objet => $nom_affichage)
   {
     if($nom_objet=='GD Version')
     {
       $search_version = preg_match( '/[0-9.]+/' , $tab_gd_options[$nom_objet] , $tab_match);
       $gd_version = ($search_version) ? $tab_match[0] : '' ;
       $img = ($nom_objet=='GD Version') ? '<img alt="" src="./_img/bulle_aide.png" width="16" height="16" title="La fonction imagecreatetruecolor() requiert la bibliothèque GD version 2.0.1 ou supérieure, 2.0.28 ou supérieure étant recommandée." /> ' : '' ;
            if(version_compare($gd_version,'2.0.28','>=')) $td = InfoServeur::cellule_coloree_centree($tab_gd_options[$nom_objet],'vert');
       else if(version_compare($gd_version,'2.0.1' ,'>=')) $td = InfoServeur::cellule_coloree_centree($tab_gd_options[$nom_objet],'jaune');
       else                                                $td = InfoServeur::cellule_coloree_centree($tab_gd_options[$nom_objet],'rouge');
     }
     else
     {
       $img = '' ;
       $td = ($tab_gd_options[$nom_objet]) ? InfoServeur::cellule_coloree_centree('ON','vert') : InfoServeur::cellule_coloree_centree('OFF','rouge') ;
     }
     $tab_tr[] = '<tr><td>'.$img.$nom_affichage.'</td>'.$td.'</tr>';
   }
   return'<table class="p"><thead><tr><th colspan="2">Bibliothèque GD</th></tr></thead><tbody>'.implode('',$tab_tr).'</tbody></table>';
 }
?>

<p><span class="manuel"><a class="pop_up" href="<?php 
echo SERVEUR_DOCUMENTAIRE;
?>
?fichier=support_administrateur__photos_eleves">DOC : Photos des élèves</a></span></p>
<div class="danger">Respectez les conditions légales d'utilisation (droit à l'image précisé dans la documentation ci-dessus).</div>

<hr />

<h2>Ajout multiple</h2>

<form action="#" method="post" id="form2"><fieldset>
  <p class="astuce">
    Taille maximale du fichier : <b><?php 
echo InfoServeur::minimum_limitations_upload(FALSE);
?>
</b> <img alt="" src="./_img/bulle_aide.png" width="16" height="16" title="Le webmestre du serveur a accès au détail de la configuration PHP expliquant cette limite." />.
  </p>
  <label class="tab" for="f_masque">Forme noms fichiers :</label><input id="f_masque" name="f_masque" size="50" maxlength="50" type="text" value="" /><br />
  <label class="tab" for="bouton_zip">Upload fichier <em>zip</em> :</label><button id="bouton_zip" type="button" class="fichier_import">Parcourir...</button><label id="ajax_msg_zip">&nbsp;</label>
</fieldset></form>

<hr />

<h2>Gestion individuelle</h2>

<form action="#" method="post" id="form_select"><fieldset>
  <label class="tab" for="f_groupe">Regroupement :</label><?php 
echo $select_groupe;
?>
$TITRE = html(Lang::_("Photos des élèves"));

// Fabrication des éléments select du formulaire
$select_groupe = HtmlForm::afficher_select( DB_STRUCTURE_COMMUN::DB_OPT_regroupements_etabl( FALSE /*sans*/ , FALSE /*tout*/ ) , 'f_groupe' /*select_nom*/ , '' /*option_first*/ , FALSE /*selection*/ , 'regroupements' /*optgroup*/);
?>

<p><span class="manuel"><a class="pop_up" href="<?php echo SERVEUR_DOCUMENTAIRE ?>?fichier=support_administrateur__photos_eleves">DOC : Photos des élèves</a></span></p>
<div class="danger">Respectez les conditions légales d'utilisation (droit à l'image précisé dans la documentation ci-dessus).</div>

<hr />

<h2>Ajout multiple</h2>

<form action="#" method="post" id="form2"><fieldset>
  <p class="astuce">
    Taille maximale du fichier : <b><?php echo InfoServeur::minimum_limitations_upload(FALSE /*avec_explication*/) ?></b> <img alt="" src="./_img/bulle_aide.png" width="16" height="16" title="Le webmestre du serveur a accès au détail de la configuration PHP expliquant cette limite." />.
  </p>
  <label class="tab" for="f_masque">Forme noms fichiers :</label><input id="f_masque" name="f_masque" size="50" maxlength="50" type="text" value="" /><br />
  <label class="tab" for="bouton_zip">Upload fichier <em>zip</em> :</label><button id="bouton_zip" type="button" class="fichier_import">Parcourir...</button><label id="ajax_msg_zip">&nbsp;</label>
</fieldset></form>

<hr />

<h2>Gestion individuelle</h2>

<form action="#" method="post" id="form_select"><fieldset>
  <label class="tab" for="f_groupe">Regroupement :</label><?php echo $select_groupe ?> <label id="ajax_msg">&nbsp;</label>
</fieldset></form>

<p id="liste_eleves">
</p>
 * Ce fichier est une partie de SACoche.
 * 
 * SACoche est un logiciel libre ; vous pouvez le redistribuer ou le modifier suivant les termes 
 * de la “GNU Affero General Public License” telle que publiée par la Free Software Foundation :
 * soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure.
 * 
 * SACoche est distribué dans l’espoir qu’il vous sera utile, mais SANS AUCUNE GARANTIE :
 * sans même la garantie implicite de COMMERCIALISABILITÉ ni d’ADÉQUATION À UN OBJECTIF PARTICULIER.
 * Consultez la Licence Publique Générale GNU Affero pour plus de détails.
 * 
 * Vous devriez avoir reçu une copie de la Licence Publique Générale GNU Affero avec SACoche ;
 * si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>.
 * 
 */
if (!defined('SACoche')) {
    exit('Ce fichier ne peut être appelé directement !');
}
$TITRE = "Test de variables";
// Pas de traduction car pas de choix de langue à ce niveau.
?>
<p>
  Cette page aide à déterminer l'origine d'un problème d'affichage du site (bloquant en général la connexion).
</p>
<p class="astuce">
  Les données indiquées sont volontairement réduites afin de limiter la divulgation d'informations.<br />
  L'espace webmestre permet d'accéder à des données plus complètes.
</p>
<?php 
echo InfoServeur::tableau_verification_variables();
echo InfoServeur::tableau_verification_serveur();
 * 
 * Vous devriez avoir reçu une copie de la Licence Publique Générale GNU Affero avec SACoche ;
 * si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>.
 * 
 */
if (!defined('SACoche')) {
    exit('Ce fichier ne peut être appelé directement !');
}
$module = isset($_POST['f_module']) ? Clean::texte($_POST['f_module']) : '';
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Vérifications
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if (!$module) {
    exit('Erreur avec les données transmises !');
}
if (!in_array($_SESSION['USER_PROFIL_TYPE'], array('webmestre', 'developpeur'))) {
    exit('Profil incompatible avec cette fonctionnalité !');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Affichage d'un phpinfo d'un module
// ////////////////////////////////////////////////////////////////////////////////////////////////////
$tab_modules = InfoServeur::array_phpinfo(INFO_MODULES);
if (!isset($tab_modules[$module])) {
    exit('Informations sur le module "' . html($module) . '" non trouvées dans le phpinfo() !');
}
echo '<table class="p"><thead>' . NL . '<tr><th colspan="3">Informations sur le module &laquo;&nbsp;' . html($module) . '&nbsp;&raquo;</th></tr>' . NL . '</thead><tbody>' . NL;
foreach ($tab_modules[$module] as $parametre_nom => $parametre_val) {
    $colonnes = is_string($parametre_val) ? '<td colspan="2">' . chunk_split($parametre_val, 128, '<br />') . '</td>' : '<td>local : ' . html($parametre_val['local']) . '</td><td>master : ' . html($parametre_val['master']) . '</td>';
    echo '<tr><td>' . html($parametre_nom) . '</td>' . $colonnes . '</tr>' . NL;
}
echo '</tbody></table>' . NL;
Exemple #8
0
 /**
  * Récupérer un fichier uploadé, effectuer les vérifications demandées, et l'enregistrer dans le dossier et sous le nom indiqué.
  * 
  * @param string   $fichier_final_chemin
  * @param string   $fichier_final_nom           (facultatif) Si pas transmis, ce sera le nom du fichier envoyé (nettoyé) ; si transmis, peut comporter ".<EXT>" qui sera remplacé par l'extension du fichier réceptionné.
  * @param array    $tab_extensions_autorisees   (facultatif) tableau des extensions autorisées
  * @param array    $tab_extensions_interdites   (facultatif) tableau des extensions interdites
  * @param int      $taille_maxi                 (facultatif) en Ko
  * @param string   $filename_in_zip             (facultatif) nom d'un fichier contenu dans le fichier zippé reçu, à extraire au passage
  * @return TRUE|string                          TRUE ou un message d'erreur
  */
 public static function recuperer_upload( $fichier_final_chemin , $fichier_final_nom=NULL , $tab_extensions_autorisees=NULL , $tab_extensions_interdites=NULL , $taille_maxi=NULL , $filename_in_zip=NULL )
 {
   // Si le fichier dépasse les capacités du serveur, il se peut que $_FILES ne soit même pas renseigné.
   if(!isset($_FILES['userfile']))
   {
     return 'Problème de transfert ! Fichier trop lourd ? '.InfoServeur::minimum_limitations_upload();
   }
   // Si $_FILES est renseigné, il se peut qu'il y ait quand même eu un dépassement des limites ou un problème d'écriture.
   $tab_file = $_FILES['userfile'];
   $fichier_tmp_nom    = $tab_file['name'];
   $fichier_tmp_chemin = $tab_file['tmp_name'];
   $fichier_tmp_taille = $tab_file['size']/1000; // Conversion octets => Ko
   $fichier_tmp_erreur = $tab_file['error'];
   if( (!file_exists($fichier_tmp_chemin)) || (!$fichier_tmp_taille) || ($fichier_tmp_erreur) )
   {
     $alerte_open_basedir = InfoServeur::is_open_basedir() ? ' Variable serveur "open_basedir" mal renseignée ?' : '' ;
     $alerte_upload_size = ' Fichier trop lourd ? '.InfoServeur::minimum_limitations_upload();
     return 'Problème de récupération !'.$alerte_open_basedir.$alerte_upload_size;
   }
   // Vérification d'une sécurité sur le nom
   if($fichier_tmp_nom{0}=='.')
   {
     return 'Le nom du fichier ne doit pas commencer par un point !';
   }
   // Vérification de l'extension
   $extension = strtolower(pathinfo($fichier_tmp_nom,PATHINFO_EXTENSION));
   if( ($tab_extensions_autorisees!==NULL) && (!in_array($extension,$tab_extensions_autorisees)) )
   {
     return 'L\'extension du fichier transmis n\'est pas conforme !';
   }
   if( ($tab_extensions_interdites!==NULL) && (in_array($extension,$tab_extensions_interdites)) )
   {
     return 'L\'extension du fichier transmis est interdite !';
   }
   // Vérification de la taille
   if( ($taille_maxi!==NULL) && ($fichier_tmp_taille>$taille_maxi) )
   {
     $conseil = '';
     if( ($tab_extensions_autorisees!==NULL) && (in_array('jpg',$tab_extensions_autorisees)) )
     {
       $conseil = (($extension=='jpg')||($extension=='jpeg')) ? ' : réduisez les dimensions de l\'image' : ' : convertissez l\'image au format JPEG' ;
     }
     return 'Le fichier dépasse les '.$taille_maxi.' Ko autorisés'.$conseil.' !';
   }
   // On rapatrie le fichier dans l'arborescence SACoche, en en dézippant un fichier précis si demandé
   $fichier_final_nom = ($fichier_final_nom) ? str_replace('.<EXT>','.'.$extension,$fichier_final_nom) : Clean::fichier($fichier_tmp_nom);
   if( ($extension!='zip') || ($filename_in_zip===NULL) )
   {
     if(!move_uploaded_file($fichier_tmp_chemin,$fichier_final_chemin.$fichier_final_nom))
     {
       return 'Le fichier n\'a pas pu être enregistré sur le serveur.';
     }
   }
   else
   {
     // Dézipper le fichier (on considère alors que c'est un zip venant de SACoche et contenant import_validations.xml)
     if(extension_loaded('zip')!==TRUE)
     {
       return 'Le serveur ne gère pas les fichiers ZIP ! Renvoyez votre fichier sans compression.';
     }
     // Remarque : la ligne suivante peut balancer un exit sans se poser de questions
     FileSystem::unzip_one( $fichier_tmp_chemin , $filename_in_zip , $fichier_final_chemin.$fichier_final_nom );
   }
   // C'est bon :)
   FileSystem::$file_upload_name = $fichier_tmp_nom;
   FileSystem::$file_saved_name  = $fichier_final_nom;
   return TRUE;
 }
  36=>'3 ans',
);

$select_duree_conservation = '';
foreach($tab_select_duree_conservation as $option_value => $option_texte)
{
  $selected = ($option_value==FICHIER_DUREE_CONSERVATION) ? ' selected' : '' ;
  $select_duree_conservation .= '<option value="'.$option_value.'"'.$selected.'>'.$option_texte.'</option>';
}

?>

<p><span class="manuel"><a class="pop_up" href="<?php echo SERVEUR_DOCUMENTAIRE ?>?fichier=support_webmestre__fichiers_deposes">DOC : Fichiers déposés.</a></span></p>
<hr />

<form action="#" method="post" id="form_fichiers"><fieldset>
  <label class="tab" for="f_taille_max">Taille maximale :</label><select id="f_taille_max" name="f_taille_max"><?php echo $select_taille_max ?></select>
  <p>
    <span class="astuce">Il faut aussi tenir compte de la configuration du serveur : <b><?php echo InfoServeur::minimum_limitations_upload() ?></b>.</span>
  </p>
  <hr />
  <label class="tab" for="f_duree_conservation">Durée conservation :</label><select id="f_duree_conservation" name="f_duree_conservation"><?php echo $select_duree_conservation ?></select>
  <p>
    <span class="astuce">Une initialisation annuelle des données supprime de toutes façons le référencement des documents concernés.</span>
  </p>
  <hr />
  <p>
    <span class="tab"></span><button id="f_enregistrer" type="submit" class="parametre">Enregistrer ces paramètres.</button><label id="ajax_msg_enregistrer">&nbsp;</label><br />
  </p>
</fieldset></form>