Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1267 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

Conseils analyse et conception d'un CMS

n°2201127
rufo
Pas me confondre avec Lycos!
Posté le 29-08-2013 à 13:46:19  profilanswer
 

Reprise du message précédent :
Il me semble qu'il existe une distrib Linux qui permet de tester les failles de sécurité d'appli web...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
mood
Publicité
Posté le 29-08-2013 à 13:46:19  profilanswer
 

n°2201156
tompouss
Petit chat
Posté le 29-08-2013 à 15:59:16  profilanswer
 

backtrack ?
 
encore faut -il savoir l'utiliser et comprendre ce que l'on fait ^^'


---------------
collectionneur de pâtes thermiques
n°2201450
rufo
Pas me confondre avec Lycos!
Posté le 02-09-2013 à 09:40:56  profilanswer
 

Non, c'est pas backtrack, c'est une distrib moins connue mais encore plus spécialisée dans les détections de failles de sécu des applis web.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2201924
tompouss
Petit chat
Posté le 05-09-2013 à 17:22:43  profilanswer
 

Bonjour,
 
 
 
j'ai un soucis pour le test d'insertion d'image lors de création d'article ou de page:
 
en fait si une image est choisie par l'utilisateur elle doit passer des tests de validation, si pas d'image sélectionnée, la page est créée
 
Le soucis c'est que à chaque fois la création de page sans image passent de toutes facons les tests de validations et échouent forcément
 
Je pensais donc faire un goto directement vers la sauvegarde de la page sans image
 

Code :
  1. function admin_add($id = null) // cette fonction sert également pour la creation de nouvelles pages
  2.       {
  3.            $total_pages = $this->Post->find('count',array(
  4.          
  5.                   'conditions'  => 'post_type_id = 1'));
  6.             $error = true;
  7.            //on teste le nombres  de pages pour éviter d'avoir un menu trop long (question esthétique)
  8.            if($total_pages < 7)
  9.            {
  10.            
  11.             if(($this->request->is('put')) || ($this->request->is('post')))
  12.             {
  13.               $valid_image=false;
  14.               $add_image=false;
  15.               $this->request->data['Post']['slug']= NULL;
  16.               $this->request->data['Post']['intro'] =NULL;
  17.               $this->request->data['Post']['user_id'] = $this->Auth->user('id');
  18.               $this->request->data['Post']['post_type_id'] = '1';
  19.               $this->request->data['Post']['published'] = '1';
  20.               $this->request->data['Post']['comments_activated'] = '0';
  21.               $this->request->data['Post']['category_id'] = NULL;
  22.            
  23.            
  24.               //si l'utilisateur choisi une image titre on la teste
  25.               if (isset($this->request->data['Post']['media_path'])
  26.                && ($this->request->data['Post']['media_path']!=null))
  27.               {
  28.              
  29.                 $image=$this->request->data['Post']['media_path'];
  30.                 $image_type=$image['type'];
  31.                 $image_size=$image['size'];
  32.                 $image_name=$image['name'];
  33.                 if($this->checkMimeType($image_type)
  34.                 && $this->checkFileExtension($image_name)
  35.                 && $image_size <= 1000000)
  36.                 {
  37.                   $valid_image=true;
  38.        
  39.                 }
  40.               }
  41.            
  42.            
  43.            
  44.               $media_path=null;
  45.               //si l'utilsateur a choisi une image et que cette image est valide
  46.               if(($this->request->data['Post']['media_path']!=null && $valid_image)
  47.               || !(isset($this->request->data['Post']['media_path']) && $this->request->data['Post']['media_path']==null))
  48.               {
  49.                 if((isset($this->request->data['Post']['content']) && ($this->request->data['Post']['content'] != NULL)))
  50.                 {
  51.                     /*$uploaded_image=false;
  52.                     if ($this->upload_Image($image)!=NULL || $this->upload_Image($image)!=false)
  53.                     {
  54.                       $uploaded_image=true;
  55.                       $this->request->data['Post']['media_path']=$media_path;
  56.                     } */
  57.              
  58.                  
  59.                     if(($this->request->data['Post']['media_path']!=null && $valid_image
  60.                     && is_string($media_path=$this->upload_Image($image)))
  61.                     ||
  62.                     (!isset($this->request->data['Post']['media_path'])
  63.                     || $this->request->data['Post']['media_path']==null)
  64.                     ||
  65.                     (isset($this->request->data['Post']['media_path'])
  66.                     && $this->request->data['Post']['media_path']==null))
  67.    
  68.                     {
  69.                       $this->request->data['Post']['media_path']=$media_path;
  70.                       $name=$this->request->data['Post']['name'];
  71.                       $name=$this->sanitizeContent($name);
  72.                       if($this->Post->save($this->request->data))
  73.                       {
  74.                         $this->Session->setFlash(" La page a bien été créée" );
  75.                         $error=false;
  76.                       }
  77.                       else
  78.                       {
  79.                         $this->Session->setFlash("Erreur: cette page n'a pu être sauvergardée" );
  80.                         $this->request->data=null;
  81.                       }
  82.                     }
  83.                     else
  84.                     {
  85.                         $this->Session->setFlash("Erreur: l'image n'a pu être uploadée" );
  86.                         $this->request->data['Post']['media_path']=null;
  87.                     }
  88.                 }
  89.                 else
  90.                 {
  91.                   $this->Session->setFlash("Erreur: ce champ ne peut être vide: contenu" );
  92.                
  93.                 }
  94.               }
  95.               else
  96.               {
  97.                 $this->Session->setFlash("Erreur: l'image insérée n'est pas valide" );
  98.                 $this->request->data['Post']['media_path']='';
  99.              
  100.               }
  101.            
  102.             }
  103.             elseif ($id=null) //si aucune donnée n'est postée on reste dans l'action courante
  104.             {
  105.               $this->Post->id = $id;
  106.               $this->request->data= $this->Post->read();
  107.        
  108.             }
  109.             else
  110.             {
  111.        
  112.               $this->request->data = $this->Post->getDraft(1);
  113.               $post_id=$this->request->data['Post']['id'];
  114.               $this->Session->write('page_id',$post_id);
  115.             }
  116.           }
  117.           else
  118.           {
  119.              $this->Session->setFlash("Erreur: vous avez atteint le nombre maximum de pages possibles" );
  120.              $this->redirect('/admin/pages/index');
  121.           }
  122.        
  123.           if (!$error) $this->request->data['Post']=NULL;
  124.          
  125.        
  126.             //debug($this->request->data);
  127.       }


 

Code :
  1. public function upload_Image($image=null)
  2.         {
  3.        
  4.        
  5.             /*une array image est structure de cette manière:
  6.            
  7.             /*$this->request->data['Parameter']['banner'] = array(
  8.                   'name' => conference_schedule.pdf,
  9.                   'type' => application/pdf,
  10.                   'tmp_name' => C:/WINDOWS/TEMP/php1EE.tmp,
  11.                   'error' => 0,
  12.                   'size' => 41737,
  13.               );*/
  14.        
  15.          
  16.             // on commence les tests de validation
  17.          
  18.             if (!empty($image))
  19.             {
  20.               /*if($this->Image->checkUpload($new_banner))  
  21.               {*/
  22.                 //$directory = $this->Image->checkUploadedFile($new_banner);
  23.              
  24.                 $file_name_ori=$image['name'];
  25.              
  26.                 $this->Session->write('file_name_ori',$file_name_ori);
  27.              
  28.                 $destination = 'img'.DS.'uploads'.DS.date('Y').DS.date('m');
  29.                 //$destination = 'img'.DS.'uploads'.DS.date('Y').DS.date('m');;
  30.              
  31.                 if(!is_dir($destination))  mkdir($destination, 0777, true);
  32.              
  33.                 $destination=$destination.DS.$this->renameFile($file_name_ori);
  34.              
  35.              
  36.                 $origine=$image['tmp_name'];
  37.      
  38.                 //on copie l'image de son répertoire temporaire vers le bon dossier
  39.              
  40.                 //if(move_uploaded_file($origine, $destination))
  41.                 if(move_uploaded_file($origine,$destination ))
  42.                 {
  43.                
  44.                   return $destination;
  45.                
  46.                 }
  47.                 else return $destination=false;
  48.              
  49.              
  50.                
  51.             }
  52.             else
  53.             {
  54.               return $destination=false;
  55.             }
  56.          
  57.         }
  58.      
  59.      
  60.         // on renomme le fichier par sécurité
  61.      
  62.         public function renameFile($file_name_ori)
  63.         {
  64.           $new_file_name = substr(md5(uniqid(rand(),true)),0,8);
  65.           $new_file_name=$new_file_name.'.'.$this->fileExtension($file_name_ori);
  66.           return $new_file_name;
  67.         }
  68.      
  69.         public function fileExtension(&$string)
  70.         {
  71.        
  72.           $path_parts = pathinfo($string);
  73.           return $path_parts['extension'];
  74.    
  75.         }


comme vous le voyez les tests se complexifient, ca devient confus et je m'y perds,  donc je me dis qu'avec un simple goto vers la sauvegarde de la page, si le champ media_path est null, ce devrait être résolu,  non?


---------------
collectionneur de pâtes thermiques
n°2201985
rufo
Pas me confondre avec Lycos!
Posté le 06-09-2013 à 09:49:45  profilanswer
 

un goto  :non: C'est pas une bonne solution. A toi de bien structurer tes tests pour traiter correctement l'ensemble des cas... :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2202228
tompouss
Petit chat
Posté le 08-09-2013 à 16:01:32  profilanswer
 

C'est une solution de fortune, je vais réécrire la fonction quand j'aurai plus le temps...
 
Sinon pour info, je suis diplomé ! :)


Message édité par tompouss le 08-09-2013 à 16:02:32

---------------
collectionneur de pâtes thermiques
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Point Relais sans CMSCms ecommerce et articles avec différents stocks
CMS pour free.frConseils sur systèmes d'historique des modifications
CMS UPSILON aideQuel CMS sur free pages perso ?
conseilsune idée du CMS utilisé par ce site?
Mon site web en AJAX, aide & conseils.[slider jquery dans CMS]
Plus de sujets relatifs à : Conseils analyse et conception d'un CMS


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR