begin process at 2012 05 27 21:43:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > GESTIONNAIRE DE NEWS BASIQUE AVEC UPLOAD D'IMAGES

GESTIONNAIRE DE NEWS BASIQUE AVEC UPLOAD D'IMAGES


 Information sur la source

Note :
Aucune note
Catégorie :Application Classé sous :gestionnaire, news, upload, image, tinymce Niveau :Débutant Date de création :03/04/2011 Date de mise à jour :13/07/2011 14:55:14 Vu / téléchargé :4 689 / 547

Auteur : cod57

Ecrire un message privé
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • <?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>
<?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++



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

05 avril 2011 11:18:12 :
securisation du repertoire upload par un tableau des extensions autorisées ...
05 avril 2011 13:03:21 :
table sql rajoutée dans le zip
11 avril 2011 18:03:05 :
securisation + pagination
11 avril 2011 18:11:48 :
PROBLEME MSQLI FREE.FR
12 avril 2011 20:07:48 :
Nouvelle capture ...
13 juillet 2011 14:55:15 :
le mot de passe est accessible depuis le repertoire config/pass.php pour faciliter le gestion

 Sources du même auteur

Source avec Zip Source avec une capture GENERATEUR DE BOUTONS DE PARTAGES POUR RESEAUX SOCIAUX
Source avec Zip Source avec une capture FORM TO MAIL AVEC PROTECTION PAR TOKEN ET CAPTCHA CONTRÔLES ...
Source avec Zip Source avec une capture MOTEUR DE RECHERCHE SUR BASE MYSQL FULLTEXT ET BOOLEAN AVEC ...
Source avec Zip Source avec une capture PAGINATION JAVASCRIPT PHP MYSQL
Source avec Zip Source avec une capture GESTIONNAIRE D'ELEVES OU CARNET D'ADRESSE AVEC EXPORT XLS

 Sources de la même categorie

Source avec une capture PHPREPOGENERATOR + REPO (WIN) par alvinp
Source avec Zip IPHONE - ICÔNE D'APPEL TÉLÉPHONIQUE SUR L'ÉCRAN D'ACCUEIL par Rainbow
Source avec Zip Source avec une capture [APP WEB]SERVEUREXPLOREUR par thematrix01
Source avec Zip Source avec une capture MY.BOOKMARKS par inwebo
Source avec Zip M.V.C M.E.D par faceme

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture UPLOADEUR DE FICHIERS MULTIPLES V1 par cod57
UPLOAD IMAGE AVEC MINIATURE par dilar
Source avec Zip FONCTION PHP POUR REDIMENSIONNER UNE IMAGE ET UPLOADER DANS ... par GstJasmin
Source avec Zip UPLOAD DE FICHIER par Shaihuld
Source avec Zip UPLOAD MULTIPLE IMAGE GIF/JPG/PNG AVEC ROTATION, MINIATURE G... par D1stort1on

Commentaires et avis

Commentaire de Morphinof le 05/04/2011 09:58:39

Oula je ne saurais trop te conseiller de jeter un oeil a ca, ton upload est pas du tout securise c'est vraiment pas exploitable...

http://www.phpcs.com/codes/UPLOADEUR-FICHIERS-MULTIPLES-V1_52956.aspx

Commentaire de Morphinof le 05/04/2011 10:05:22

Mdr je suis hors sujet j'ai meme pas regarde qui avait poste :P

Commentaire de Morphinof le 05/04/2011 10:09:02

Par contre tu devrai vraiment regarder du cote des moteurs de templates parce que c'est vraiment trop melange ou du cote javascript pour coder sur un MVC.

Commentaire de cod57 le 05/04/2011 10:32:09

bonjour

Tu as completement raison c'est pas securisé du tout et pas beau, mais bon, comme je l'ai dit c'est un bout de code qui vient du forum je vais ameliorer ça quand j'aurai 5 minutes
c'est un canevas ...

1/ je vais ajouter une table membres avec statut admin
2/ securise upload (en premier)
3/ peut etre une miniaturisation
4/ un editeur javascript à la place du textarea
5/ un install.php
6/ MVC oui aussi je vais separer
...


a++

Commentaire de Morphinof le 05/04/2011 10:51:07

C'est le gros soucis avec PhP : avoir un code bien separe, perso etant alergique aux moteurs de templates que je trouve trop lourds et qui te demandent d'apprendre leur syntaxe j'ai opte pour un MVC base sur la techno AJAX ou ma view est ma page html mon modele est le code metier PhP et mon controleur est entierement en Javascript.

Commentaire de cod57 le 05/04/2011 11:15:43

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++

Commentaire de Morphinof le 05/04/2011 11:26:18

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

Commentaire de cod57 le 05/04/2011 11:34:21

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++

Commentaire de jadu le 11/04/2011 09:36:32

Bon, vous pourrez prévenir lorsqu'elle sera terminée, cette "petite astuce " ???

merci les gars !







MDR !

Commentaire de brabri le 25/01/2012 14:36:20

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 ?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Upload d'Image et resize de cette image [ par 4feeling ] je cherche un petit bout de script qui permettrai d'uploader une image jpeg et l'enregistrer dans une taille précise. Par exemple on uploade, et on en upload dans table [ par eax ] salut!je voudrais savoir s'il est possible d'uploader un fichier (une image par exemple) et le stocker dans un champ d'une base de données mysqlje vou Upload image et limitation taille [ par millo ] Je suis entrain de dévellopé un script ou je propose l'upload de photo mais pour des raisons évidentes je souhaite limiter l'espace disque réservé pou upload d'image [ par guikiki ] Bonjour à tous!!!voilà..encore un problème que je n'ai toujours pas réussit à résoudre et ce n'est pas faute d'essayer!!voilà, j'ai fait une page en i upload d'images [ par G_ki_aime_pas_le_php ] Salut à tous!G un petit problème j'essaie d'uploader un fichier et ça fonctionne pas.G TOUT essayé j'en ai marre!Est ce que quelqu'un aurait la soluti afficher les image d'un repertoir et un sous repertoir + upload [ par angelx ] bonjour je voudrais afficher les image d'un reperoire et SOUS Repertoire + faire un uploade sans donner le chemin de l'image en utilisant les image ge Upload image .. j'ai cherché mais je ne comprends pas .. :S [ par Hash2o ] Voila, je suis a la recherche d'une solution pour uploader une image sur un serv. J'ai essayé la plus part des solutions proposer sur le site mais je Upload :) [ par GuilleW ] Bonjour bonjour,Je souhaite faire un Upload de fichier.pour cela j'ai un image , et je souhaiterai que lorsque l'on click sur cette image, elle lance pb de upload [ par filrouge13 ] Bonjour,Petit probl&#232;me de upload et de v&#233;rification de l'existence du fichier.J'ai r&#233;cup&#233;r&#233; ce code sur un forum, il devrait Upload apres Redimension d'une image jpg sous Free [ par MrManchot ] Tout d&#233;ja Bonjour a tous &nbsp;(c'est mon premier poste ici).Je suis d&#233;butant en php, et je n'arrive pas a Uploader apres avoir redimensionn


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales