Esempio n. 1
0
 private function receive_form($options)
 {
     if (empty($options['action'])) {
         return null;
     }
     $data['errors'] = array();
     $data['notifications'] = array();
     $data['form'] = array();
     if (!empty($this->request->data)) {
         Session::set('saveForm', $this->request->data);
         unset($this->request->data);
         switch ($options['action']) {
             case 'index':
                 $this->redirect('?home/' . $options['action']);
                 break;
             case 'groupe':
                 $this->redirect('?home/' . $options['action'] . '/' . $options['params'][0]);
                 break;
             case 'reseau':
                 $this->redirect('?home/' . $options['action'] . '/' . $options['params'][0]);
                 break;
         }
     }
     $donnees = Session::get('saveForm');
     if (!empty($donnees)) {
         Session::del('saveForm');
         $form['resume'] = PregFucntions::sanitize_string($donnees['resume']);
         $v = $donnees['visibility'];
         $n = $donnees['net'];
         $g = $donnees['gr'];
         switch ($v[0]) {
             case '0':
                 $n = 0;
                 $g = 0;
                 $form['concerne'] = 'Tous';
                 break;
             case 'r':
                 $n = substr($v, 2, strlen($v));
                 $g = 0;
                 $form['concerne'] = $n;
                 break;
             case 'g':
                 $n = 0;
                 $g = substr($v, 2, strlen($v));
                 $form['concerne'] = $g;
                 break;
         }
         if (!$this->history->add(array('tables' => 'history', 'values' => '\'\',' . $options['user']['mem_id'] . ',' . Functions::squote($form['concerne']) . ',' . Functions::squote($form['resume']) . ',' . 'NOW(),' . $n . ',' . $g))) {
             $data['errors'][] = "Le post n'a pas été  soumis correctement, veuillez ressayer plus tard.";
         } else {
             $data['notifications'][] = "Le message a correctement été envoyé.";
         }
     }
     return $data;
 }
 function parrainer()
 {
     if (!$this->session->islogged()) {
         $this->redirect("?membre/login");
     }
     $erreurs = array();
     $notifications = array();
     $soumis = $this->request->data ? $this->request->data : null;
     $form = array('mail' => '');
     if (Session::getToken('parrainage') === false) {
         Session::addToken(array('name' => 'parrainage', 'limit_time' => 10 * 60, 'time' => time()));
     }
     $token = Session::getToken('parrainage');
     if ($soumis) {
         // à ce niveau, le formulaire a été envoyé.
         /* Si la requete provient d'un autre site ou n'a pas de http_referer (a été directement écrite dans l'url)
          * on la rejette illico
          */
         //on rejette les requetes extérieures ou tapées dans l'url ou par un autre moyen que post
         if ($this->request->is('no-origin') || !Session::isValidToken('parrainage')) {
             $message = conf::DEBUG ? 'Erreur [MEM ' . __LINE__ . '] : La requête a échouée. Veuillez réactualiser la page.' : 'Le jeton CRSF a expiré. Veuillez réactualiser la page.';
             $this->error($message);
             return false;
         }
         //on vérifie aussi que le token enregistré et celui envoyé sont les mêmes
         if ($token['value'] !== $soumis['token']) {
             $this->redirect('?membre/parrainer/');
         }
         if (empty($erreurs)) {
             $_SESSION['saveform'] = $soumis;
             unset($soumis);
             $this->redirect('?membre/parrainer/');
         }
     }
     if (isset($_SESSION['saveform'])) {
         $soumis = $_SESSION['saveform'];
         unset($_SESSION['saveform']);
         if (!Session::isValidToken('parrainage')) {
             $this->error("Le temps de soumission est dépassé. Veuillez recharger la page.");
             return false;
         }
         $form = array('mail' => PregFucntions::sanitize_string($soumis['mail']));
         //on s'assure que le mail est inexistant dans la table des membres
         $find = $this->membre->find(array('conditions' => 'mem_mail = ' . $form['mail'], 'fecthMethod' => PDO::FETCH_ASSOC));
         if ($find) {
             $erreurs[] = "Le mail est déjà utilisé.";
         }
         if (!(substr($form['mail'], strrpos($form['mail'], '@')) === '@eleves.ec-nantes.fr')) {
             $erreurs[] = "Vous n'êtes pas de l'école Centrale. Il vous faut un mail du type xxx@eleves.ec-nantes.fr";
         }
         if (empty($erreurs)) {
             // ajout à la table parrainage
             $token_de_validation = Session::genereToken();
             $this->membre->add(array('tables' => ' parrainage ', 'values' => " " . Functions::squote($_SESSION['membre']['mem_id']) . ",'-1'" . "," . Functions::squote($form['mail']) . "," . "NOW()" . ",'0'" . "," . Functions::squote($token_de_validation)));
             //Envoyer le mail au fillot
             if ($this->mail(array('config' => 'nacder.net', 'destinataire' => $form['mail'], 'expediteur' => Conf::$mail['default']['no-reply'], 'aliasExpediteur' => constant('site_i_name'), 'objet' => "[" . constant('site_i_name') . "] - Confirmez votre parrainage", 'message' => Mail::_messageParrainage(array('parrain_login' => $_SESSION['membre']['mem_login'], 'parrain_mail' => $_SESSION['membre']['mem_mail'], 'fillot_mail' => $form['mail'], 'mem_token' => $token_de_validation, 'logo' => Conf::$mail['default']['logo']))))) {
                 $notifications[] = "Votre requête a été transmise.";
             } else {
                 $erreurs[] = "La requête n'a pas pu être envoyée à l'adresse donnée.";
             }
         }
         Session::addToken(array('name' => 'parrainage', 'limit_time' => 10 * 60, 'time' => time()));
     }
     $variables['soumis'] = $soumis;
     $variables['erreurs'] = $erreurs;
     $variables['notifications'] = $notifications;
     $form['token'] = $token['value'];
     $variables['form'] = $form;
     $this->myrender(array('menu' => 'menu', 'title' => 'Espace Parrainage', 'view' => 'parrainage', 'variables' => $variables));
 }
Esempio n. 3
0
 static function check_file_name($filename)
 {
     // Si le format du nom de fichier est valide on renvoie true
     if (!PregFucntions::double_ext($filename)) {
         return preg_match("`^[a-zA-Z0-9-_\\ \\.]+\$`i", $filename) ? true : false;
     }
     return false;
 }
 protected function moveFile($oldname, $newname, $rights = 0404)
 {
     $filename = basename($newname);
     $dir = dirname($newname) . DS;
     $t = explode('.', $filename);
     if (sizeof($t) > 0 && PregFucntions::prohibited_extension(end($t))) {
         return false;
     }
     if (!PregFucntions::check_file_name($filename)) {
         return false;
     }
     if (!PregFucntions::check_file_length($newname)) {
         return false;
     }
     $uniqnewname = $this->uniqFileName($dir, $filename);
     if ($uniqnewname !== false) {
         if (is_uploaded_file($oldname)) {
             if (move_uploaded_file($oldname, $dir . $uniqnewname)) {
                 if (chmod($dir . $uniqnewname, $rights)) {
                     return true;
                 }
             }
         }
     }
     return false;
 }