Gestionnaire de news basique avec upload d'images

Soyez le premier à donner votre avis sur cette source.

Vue 13 499 fois - Téléchargée 2 206 fois

Description

Bonjour

Aprés avoir dépanné un internaute sur le forum je poste ce bout de code minimaliste
pour gérer des news ...

j'ai ajouté un editeur js nicEdit (leger),
securisé l'upload,
securisé contre les injection sql / xss.

Une pagination mysqli que l'on pourra utiliser ulterieurement
!!!!! ATTENTION SUR FREE PAS DE Msqli FAUDRA REECRIRE AVEC MYSQL !!!!!
dans l'affichage en 'front office' (client)

un lien direct sur l'image

pour se connecter le pass est titi1234

a++

Source / Exemple :


<?php
session_start();
require('config/pass.php');

function dateFr($dateDatetimeMysql){
$d = explode(' ',$dateDatetimeMysql);
/*date*/
$d1=explode('-',$d[0]);

$mois=array(0=>'janvier',
            1=>'février',
            2=>'mars',
            3=>'avril',
            4=>'mai',
            5=>'juin',
            6=>'juillet',
            7=>'août',
            8=>'septembre',
            9=>'octobre',
            10=>'novembre',
            11=>'décembre');
            
$d[0]=$d1[2].' '.$mois[($d1[1]-1)].' '.$d1[0];
/*heure*/
$h=explode(':',$d[1]);
$d[1]=' à '.$h[0].' heure(s) '.$h[1].' mn';

$dateFR=$d[0].$d[1];
return $dateFR;
}

if($_SESSION['pass']===$pass){
/*le haut dans chaque fichier protege*/
?>

<html>
<head>
	<title>BIENVENUE NEWS ADMIN</title>
</head>
<body>

<div id="sample">
<script src="nicEdit/nicEdit.js" type="text/javascript"></script>
<script type="text/javascript">
bkLib.onDomLoaded(function() {
	new nicEditor({iconsPath : 'nicEdit/nicEditorIcons.gif'}).panelInstance('area3');
});
</script>
      
    <a href="deconnect.php">se deconnecter</a>
    
    <form method="post" action="creer.php" enctype="multipart/form-data" />
    
    titre: <br />
    <input type="text" style="width:500px;" name="titre"/><br />
    
    contenu: <br />
    <textarea name="contenu" style="width:500px; height:200px;" id="area3" /></textarea><br />Image :
    
    <input name="logo" type="file" size="50" /><br />
    <p>
    <input type="submit" name="upload" value="Envoyer">
    </p>   <br />
    
    </form>
    
</div>    
    
    <?php
    require "config/connection.php";
        
    $sql="SELECT * FROM ".$table." ORDER BY id DESC LIMIT 0,5";  /*a vous de regler voir upgrade pagination*/
    $req= mysql_query($sql) or die ('erreur sql!<br/>'.$sql.'<br/>'.mysql_error());
    
    while($data=mysql_fetch_assoc($req)){
    
    echo "ARTICLE ".$data["id"]." publié le ".dateFr($data["date_creation"])." <br />";
    
        if($data['image_news']!==""){
        echo '<a href="upload/'.$data['image_news'].'"><img src="upload/'.$data['image_news'].'" border="0" height="90" width="120" alt="img" /></a>';
        
        }else{
        echo $ligne='Pas d\'image dans la base<br />';
        }
    
    echo "<h3>".stripslashes(html_entity_decode($data["titre"]))."</h3>";
    echo "<p>".stripslashes(html_entity_decode($data["contenu"]))."</p>";
    echo "<a href=\"edit.php?id=".$data["id"]."\">Modifier cette news</a><br/>";
    echo "<a href=\"suppr.php?id=".$data["id"]."\">Supprimer cette news</a>";
    echo "<hr>";
    }

/*le bas dans chaque fichier protege*/

/*Dans pagination.php il y a une mise en page basique avec pagination pour votre site*/
/*mysqli ne fonction pas sur free.fr*/
if(file_exists('pagination_mysqli.php')){
@include('pagination_mysqli.php');
}else{
//rien
}

}else{
header('Location: deconnect.php');exit;
}
?>
</body>
</html>

Conclusion :


bonjour

editer
config/connection

si vous changer $pass="titi1234'
il faut le changer dans chaque fichier ou il est present
bon il y a pas trop de fichiers ou faire un include ... (pas eu le temps)

Vous pouvez tester le script sur
http://abyz.free.fr/manageur/index.php
code pour entrer : titi1234

free/.htaccess c'est pour free.fr le fameux php 1 pour passer à php5
creer aussi un repertoire sessions à la racine du site chez free.fr
autrement supprimer le .htaccess chez les autres henergeurs
sinon une erreur 500 sera envOyée

Pour plus de securite

1/ il est bien de copier le fichier .htaccess qui est dans le repertoire secuplus dans upload
si vous travailler avec un serveur apache

2/ sur free.fr je vous conseille de passer en php5 en copiant le .htaccess du repertoire free
à la racine de votre site pour les autres hebergeurs eviter cette manipulation

a++

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

brabri
Messages postés
1
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
25 janvier 2012
-
Slt,
Je crois que j'ai trouvé une faille xss dans le "titre" ?
Merci bien en tout cas.

>
...
<?php echo htmlspecialchars($_POST['titre']); ?>
...
non ? Qu'en pensez-vous ? est-ce suffisant ?
jadu
Messages postés
225
Date d'inscription
mercredi 26 juillet 2006
Statut
Membre
Dernière intervention
16 août 2018
-
Bon, vous pourrez prévenir lorsqu'elle sera terminée, cette "petite astuce " ???

merci les gars !

MDR !
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
8 -
je vais regarder ça

je vais blinder la fonction plus tard
avec d'autres astuces dont le mine
faudra juste ajouter des else if ou un switch
mais là elle déjà basiquement sécurisante
j'ai fait au plus vite

merci pour les conseils

a++
Morphinof
Messages postés
261
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
9 août 2013
3 -
Hehe ;)

Par contre tu teste pas le type mime, et niveau gestion d'erreur on peux pas savoir ou la fonction a retourne false.

Tu devrais jeter une exception :
throw new Exception(__FUNCTION__.'::FileNameFault'); et hrow new Exception(__FUNCTION__.'::FileExtentionFault'); par exemple
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
8 -
oui

j'ai fait une mise à jour pour l'upload
avec une fonction qui te rappelera quelque chose
je vais la poster de suite ...
le reste suivra dans les jours à venir

a++

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.