8546 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Je dois réaliser un site web pour un laboratoire, pour l'instant je suis à la phase de réflexion de ce projet.

Le site va principalement se composer des deux rubriques suivantes :

- Présentation de chaque équipe du labo : Texte + quelques images
- Affichage d'annuaires et d'actualités sous forme de tableaux

Je pensais réaliser ce site de manière statique avec seulement du HTML, du CSS et un peu de Jquery pour quelques plugins.
Toutefois, la mise à jour des informations du site va être effectuée par des néophytes donc ce n'est pas envisageable qu'ils puissent modifier le code HTML eux mêmes.

Mon objectif est donc de créer une interface d'administration où les administrateurs pourront modifier le contenu textuel contenu dans les "actus", les "présentations" et dans les tableaux.

J'ai d'abord pensé à utiliser un CMS mais cela me semble bien trop lourd pour seulement modifier du contenu textuel.
Je me suis renseigné pour réaliser ceci sur PHP (avec le framework Code Igniter) mais je suis un peu perdu et je ne sais pas vraiment par quoi commencer.

Quelle est la meilleure solution à envisager pour réaliser ceci, le PHP semble-t-il être un bon choix ?

Comment dois-je procéder ?

J'espère avoir été clair.

Merci d'avance !

PS : J'ai un petit peu de compétences en PHP mais ça reste vraiment léger. Réaliser un projet de ce type me permettrait d'étoffer mes connaissances par la même occasion.
Bonsoir, concevoir un CMS n'est pas très difficile en php. Deux choix s'offrent à toi:
-Utilisation d'une BDD MYSQL (comme Wordpress)
-Données directement enregistrées dans les fichiers

Comme il s'agit d'un site qui semble assez léger, sans énormément de contenu, la base de données me semble être une alternative un peu lourde. L'idéal serait donc selon moi la seconde option:
Commence par concevoir le site en html et css, ensuite, tu devra concevoir un fichier php avec un formulaire pour intervenir sur le contenu, à la validation de ce formulaire, le script devra supprimer les fichiers à modifier, les recréer, et injecter le nouveau contenu dedans. Renseigne-toi sur les fonctions:
- unlink()
- fopen()
- fputs()
- fclose()

Tu n'auras besoin que de ces quatre-là !

Je peux t'apporter plus de précisions si tu as besoin (j'ai été assez bref là ^^)

Edit: Javais oublié, tu aura sans-doute aussi besoin d'en savoir plus sur les sessions (histoire que n'importe qui ne puisse pas modifier le site...)
Modifié par juliendargelos (30 Mar 2013 - 21:22)
Salut,

Merci pour ta réponse !

Quelques points me paraissent flous cependant.

En effet si j'utilise la deuxième méthode, c'est-à-dire sans base de données, comment est-ce que l'admin va pouvoir être reconnu et comment va-t-il pouvoir accéder (que lui) au formulaire pour agir sur le contenu ?

Ensuite, je veux seulement pouvoir modifier des informations contenus dans différentes div présents dans ma page html et non supprimer et recréer à chaque fois une nouvelle page, en gros je souhaite modifier seulement quelques blocs mais garder le même template html & css à chaque fois. Comment puis-je faire ça ?

Pour le reste, je pense avoir à peu près compris, je me renseigne pas mal en ce moment en regardant des tutos vidéos à droite, à gauche pour me ré-habituer à l'utilisation du php.

Merci de votre aide.
Hello,

Pour ma part, je partirais plus du côté BD pour gérer le contenu.

Si tu veux faire assez simple, une idée serai de ne pas faire de backend (genre interface d'administration) mais d'avoir la possibilité de modifier le contenu directement si tu est logué en admin via une session.

Je m'explique:

En premier, tu crées une simple interface de login:
Fichier login.php
<?php
// On initialise les sessions
session_start();

// On définit le mot de pass et login
define( 'USER','username');
define( 'PASS','password');

// On récupère le formulaire
$adminUser 		= isset($_POST['adminuser'])? 		$_POST['adminuser']: 	'';
$adminPassword	= isset($_POST['adminpassword'])? 	$_POST['adminpassword']:'';
$message = '';

// Si les variables ne sont pas vides...
if( !empty( $adminUser ) && !empty( $adminPassword ) ){
	
	// On vérifie si elle corresspondent aux constantes
	if( $adminUser == USER  && $adminPassword == PASS ){
		
		// Si c'est ok, on définit la session ADMIN
		$_SESSION['admin'] = $_SERVER['REMOTE_ADDR'];
		header('Location: login.php');
		
	} else {
		
		// Autrement => message d'erreur
		$message = '<div class="error">Nom d\'utilisateur ou mot de pass erroné</div>';
		
	}
		
}

if(isset($_GET['logout'])){
	echo '1';
	session_destroy();
	header('Location: login.php');
	
}

// On déclare le mode admin
$sessionAdmin = isset($_SESSION['admin'])? '<div id="admin">Bienvenue Administrateur</div>': '';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
    <title>Admin Login page</title>
    <style>
body {
	background-color: #333;
	color: #CCC;
}
label {
	display: inline-block;
	width: 100px
}
a {
	color: #FFF;
}
form {
	margin: 10px;
	padding: 10px;
	border: 1px solid #CCC;
	box-shadow: #000 3px 3px 30px;
	border-radius: 6px
}
#admin {
	position: absolute;
	right: 0;
	margin: 10px
}
.error {
	background-color: #FFB7AE;
	color: #F00;
	border: #F00;
	border-radius: 6px;
	padding: 6px;
	margin-bottom: 10px
}
</style>
  </head>
  
  <body>
  <?php echo $sessionAdmin; ?>
  <div style="width:434px; margin:auto; margin-top:30px">
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
      <?php echo $message;
	if(!$sessionAdmin){?>
      <table>
        <tr>
          <td><label>User:</label></td>
          <td><input type="text" name="adminuser" class="right" /></td>
          <td></td>
        </tr>
        <tr>
          <td><label> Password:</label></td>
          <td><input type="password" name="adminpassword" class="right"  /></td>
          <td><input type="submit" class="left" /></td>
        </tr>
      </table>
      <?php } else {
		  
		  echo '<a href="login.php?logout">Logout</a>';
		  
	  }?>
    </form>
  </div>
  </body>
</html>


Ensuite sur toutes tes pages contenu tu n'as qu'a faire un vérification si tu est admin et afficher un formulaire de modification ou juste le text.
Bonjour, en effet, la base de données est aussi une alternative envisageable, d'autant plus qu'elle est beaucoup plus instructive (il faudra bien savoir gérer une bdd un des ces jours). Quand je parlais de supprimer/recréer le fichier, c'est en réalité une modification:
-Tu as ton fichier avec le contenu (du html, du texte)
-Tu arrive sur l'interface pour modifier ce contenu, l'interface t'affiche le contenu, tu peux intervenir dessus
-Quand tu a fini de faire tes modifications, tu clique sur "éditer" (par exemple)
-Alors, le script supprime l'ancien fichier, et recréé le nouveau avec le texte modifié

Même si techniquement; on supprime/recréé, cela ne se traduit que par une simple édition.

Quand tu parle du log de l'administrateur, j'avais fais référence dans mon message aux sessions, c'est de ceci dont tu auras besoin pour permettre à une seule personne de se loguer. Sp4tz t'as donné un exemple sur lequel tu peux te baser.
Modifié par juliendargelos (05 Apr 2013 - 17:32)
Merci bien pour vos réponses, je vais essayer ton code dans un futur proche Sp4tz.

Juste quelques questions (et oui encore :heh:), ce que tu m'as proposé Sp4tz est réalisable avec une base de données et non avec des sessions, c'est bien ça ?

Enfin, dernière question, est-ce que vous pourriez me donner un petit exemple de formulaire pour pouvoir agir sur un contenu (modifier un texte dans un tableau par exemple) ?

Merci beaucoup,

Bonne journée !
Tout simplement
<form method="post" action="./edit.php">
   <label for="form-title">Titre:</label>
   <input type="text" name="title" id="form-title"/>
   <label for="form-content">Contenu:</label>
   <textarea name="content" id="form-content"></textarea>
</form>

Modifié par juliendargelos (05 Apr 2013 - 17:31)