Catégorie : Code en Php

Code en Php

  • Une fonction pratique pour vérifier la conformité d’un numero de téléphone en PHP

    En se moment je travail sur de petites fonctions bien pratiques que je pourrais réutiliser un peut partout dans mes projets.

    J’ai créé cette fonction pour répondre à un besoin simple et elle me satisfait

    Cette fonction renvoie true en cas de succès si non false.

    //fonction pour vérifier la conformité d'un numéro de tel Français
    function VerifTelFr($chaine){
    	$regex = "#^0[1-68]([-. ]?[0-9]{2}){4}$#";
    		if (preg_match($regex,$chaine)){
    					return true; 
    			} else {
    					return false;
    		}
    }
    

    @ bientôt Grand Maître L

  • Une fonction pratique pour controler un email en PHP

    Grace à cette petite fonction, vous serez en mesure de vérifier si l’email inscrit par votre visiteur est conforme. Pour cela j’utilise le « REGEX » ou « expressions régulières ».

    Cette fonction renvoie true en cas de succès si non false.

    //fonction pour vérifier l'orthographe d'un email
    function VerifEmail($chaine){
    	$regex = "#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#";
    		if (preg_match($regex,$chaine)) {
    					return true;
    			} else {
    					return false;
    		}
    }

    Grand Maître L

  • Prévalider un bouton radio en html et php

    Grâce à ce code il est possible de précocher dans un formulaire une valeur.

    Dans cet exemple on va utiliser un bouton radio.
    le html :

    <input name="sexe" type="radio" value="femme" /><?php echo $validf; ?> > Femme :
    <input name="sexe" type="radio" value="homme" /><?php echo $validh; ?> > Homme :

    le Php

    <?php 
    //ici on coche homme ou femme dans un bouton radio en récupérant les données de la bdd 
    if ($sexe == "femme"){ 
        $validf = "checked='checked'"; $validh = ""; 
    } elseif ($sexe == "homme"){ 
        $validf = ""; $validh = "checked='checked'"; 
    }

    Grand Maître L

  • Une fonction en Php pour déterminer si un nombre et paire ou impaire

    Grâce à cette fonction on peut savoir si un nombre et paire ou impaire facilement.

    <?php 
    $numerotation = 5; 
    
    function PaireOuImpaire($numerotation)
    {
    	$numero = $numerotation%2;
    		   if ($numero == 0) 
    			 {
    			$paire_ou_impaire = true;
    		} else {
    			$paire_ou_impaire = false;
    			}	
    		return $paire_ou_impaire ;
    }
    ?>
    

    Je m’en sert pour colorer une ligne sur deux dans un tableau, par exemple si il renvoie 1 c’est en bleu et si c’est 2 c’est rouge.

    Dans l’exemple ci-dessus, il va me renvoyer : false .

    Grand maître L

  • Réaliser un suivi des paquets Coliposte / Colissimo dans votre site internet

    Super Edit :

    J’ai des infos de la poste, ils sont en train de mettre en place une API Officielle.
    Pour cela il faut avoir un compte Inet-Expeditor et le service sera proposé en janvier 2014.
    Il répondra au jolis nom de « colis view ». Je vous conseille de vous rapprocher de votre commercial car l’ancienne API sera supprimée.

    Edit : Apres de nombreuses années sans problèmes, laposte.fr à apparemment fermé son WebService, au jour où j’écris ces lignes (25/04/2013), il ne fonctionne plus.

    Edit 2 : LA poste à mis en place un véritable webService, voici le lien de la documentation :

    https://www.coliposte.fr/pro/docs/docutheque/divers/socolissimo/integrationwsshipping.pdf

    Edit 3 : Tout est revenu dans l’ordre…

    Grâce à ce code très simple on va récupérer sur notre page l’information de suivi Coliposte de votre client sans se connecter au site coliposte.fr.

    <?php
      $ch = curl_init();
      $agent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)";
      $ref = "http://www.laposte.fr";
      $url_de_colissimo_suivi = "www.laposte.fr/outilsuivi/web/suiviInterMetiers.php?method=xml&key=null&code=".$code_colissimo."&width=190&font=Arial&t=1253811351937" ;
        curl_setopt($ch, CURLOPT_USERAGENT, $agent);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_URL, $url_de_colissimo_suivi);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_REFERER, $ref);
        $data = curl_exec($ch);
    
       /* cURL va renvoyer du xml qui sera formaté de cette manière :
    
    	< ?xml version='1.0' ?>
    
    	< ![CDATA[1]]>
    	< ![CDATA[9A00092239388]]>
    	< ![CDATA[Particulier]]>
    	< ![CDATA[22/07/2010]]>
    	< ![CDATA[Votre colis est livré]]>
    	<base_label>< ![CDATA[Coliposte]]>
    								< ![CDATA[http://www.coliposte.net/particulier/suivi_particulier.jsp?colispart=xxxxxxxxxxxxxxxxxxxx]]>
    	< ![CDATA[]]>
    */
    
    // ça sera de l'UTF-8, utiliser utf8_decode si votre page est en ISO*/
    
    $sxml = simplexml_load_string($data);
    $message_du_xml = $sxml->message;
    $date_du_xml = $sxml->date;
    $colissimo_message = utf8_decode($message_du_xml);
    $colissimo_date = utf8_decode($date_du_xml) ;
    echo $colissimo_date;
    echo $colissimo_message;
    
    ?>

    ce code vous sera très utile pour un site de e-commerce.

    Grand maître L

  • Afficher un message en fonction de l’heure et du jour de la semaine en PHP

    Bonjour,

    Grace à ce petit script vous allez pouvoir afficher un message en fonction de la date et de l’heure de votre présence.

    <?php
    
    function planning(array $planningDesFermetures, $heureOuverture, $heureFermeture) {
    
        $heureOuverture = 8; //sert à afficher le script à partir de 9h et non 8h
        $heureFermeture = 20; //sert à afficher le script à partir de 21h
    
        $heureActuelle = date('H', time());
        $jourActuel    = date('w', time());
    
        $planningDesFermetures = array(0, 6); //dans ce tableau on sélectionne les jours de 0 à 6 (lundi au vendredi)
    
        if ((in_array($jourActuel, $planningDesFermetures)) || ( $heureActuelle <= $heureOuverture) || ( $heureActuelle >= $heureFermeture)) {
            echo "C'est fermé ! ";
        } else {
            echo "C'est ouvert";
        }
    }
    
    

    Grand maitre L

  • Un code source PHP pour sauvegarder votre base de donnée MySQL

    Voici un code source fonctionnel pour sauvegarder l’intégralité de votre base de donnée Mysql.

    
    <?php
    ################################################################################
    # L'auteur a autorisé la redistribution gratuite et l'inclusion de ce code dans
    # les programmes à condition que cette notice de copyright soit dûment incluse.
    # BackySQL (c)  2010 Brice Sanchez
    # 10/03/2010 Brice SANCHEZ - www.brice-sanchez.com
    #
    # LE CODE COUVERT PAR CETTE LICENCE EST FOURNI « EN L'ÉTAT »,
    # SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, INCLUANT,
    # SANS S'Y LIMITER, LES GARANTIES D'ABSENCE DE DÉFAUT, DE QUALITÉ MARCHANDE,
    # D'ADÉQUATION À UN USAGE PARTICULIER OU DE NON-VIOLATION DE DROITS DE TIERCES
    # PARTIES. VOUS ASSUMEZ TOUS LES RISQUES LIÉS À LA QUALITÉ ET AUX PERFORMANCES
    # DU CODE COUVERT PAR CETTE LICENCE. SI UN DÉFAUT, QUEL QU'IL SOIT, EST DÉTECTÉ
    # DANS LE CODE COUVERT PAR CETTE LICENCE, VOUS (ET NON LE DÉVELOPPEUR INITIAL
    # OU UN CONTRIBUTEUR) ASSUMEZ LE COÛT DES SERVICES D'ASSISTANCE, DES RÉPARATIONS
    # OU DES CORRECTIONS NÉCESSAIRES. CETTE LIMITATION DE GARANTIE CONSTITUE UNE
    # PARTIE ESSENTIELLE DE CETTE LICENCE. LE CODE COUVERT PAR CETTE LICENCE NE PEUT
    # ÊTRE UTILISÉ QUE DANS LE CADRE DE CETTE LIMITATION DE GARANTIE.
    # Vous utilisez ce code à vos propres risques.
    ################################################################################
    ////////////////////////////////////////////////////////////////////////////////
    // @Description
    //  Sauvegarde de base de donnée
    // @Version				0.6
    // @Licence				GNU/GPL3
    //  http://www.gnu.org/licenses/gpl-3.0.html
    // @Publication				Vendredi 12 Mars 2010
    // @Revision				Samedi 13 Mars 2010
    // @Catgorie				Administration
    // @Compatibilite			PHP 4 >= 4.0.1, PHP 5
    // @Auteur				Brice Sanchez
    //  http://www.brice-sanchez.com/
    // @Contributeur			Flashx
    // @Contact
    // @Télechargement
    //  http://www.siteduzero.com/forum-83-498153-p1-sauvegarde-automatique-de-la-base-de-donnee-mysql.html#r4753068
    // @Note
    //  Utiliser un cron job toute les 24 h vers 3heure du matin
    //
    // @changement
    //  Support la sauvegarde de DB differente
    //  Windows compatibility
    //  check config
    //
    // Remerciement
    //  * à M@teo pour héberger gracieusement nos sources,
    //  * à Brice pour l'élan communautaire qu'il a su ranimer,
    //  * aux développeurs de siteduzero.com pour leurs conseils( notamment Sebi57)
    ////////////////////////////////////////////////////////////////////////////////
    
    ////////////////////////////////////////////////////////////////////////////////
    // Configuration
    ////////////////////////////////////////////////////////////////////////////////
    //TODO : céer un object de configuration( ajouter un nom a cette config, donner plus d'option)
    // inclure la configuration : pas de C/C
    
    // Nom de la base de donnée à enregistrer
    $nom_bdd = 'test' ;
    
    // Hôte de la base de donnée ciblé
    $hote = 'localhost' ;
    
    // Port de la base de donnée
    $port = '3306' ;
    
    // Nom d'utilisateur de la base de donnée à enregistrer
    $utilisateur = 'root' ;
    
    // Mot de passe de la base de donnée à enregistrer
    $mot2passe = '' ;
    
    // Exemple : latin1 ou utf8
    $encodage_caracteres_mysql = 'latin1' ;
    
    // Remplir le tableau si on veut sauvegarder uniquement certaines tables
    // Exemple : array('table1','table2','table5')
    $selection_tables_mysql = array();
    
    // Chemin absolu de l'emplacement du site
    $chemin_absolu_site = dirname( __FILE__) . DIRECTORY_SEPARATOR;
    
    // Emplacement sur le FTP du répertoire des sauvegardes
    $repertoire = 'sauvegarde_mysql';
    
    // Nom du fichier ( ex : nomdelabasededonnee_2010-03-01_01-01-01.sql)
    $ext_fichier = 'sql' ;
    
    // Nombre de sauvegardes à garder sur le FTP
    $nbre_sauvegardes_a_garder = 7 ;
    
    define( "CHECK", true);
    define( "FIRST_RUN", true);
    
    ////////////////////////////////////////////////////////////////////////////////
    // Initialisation
    ////////////////////////////////////////////////////////////////////////////////
    $repertoire_sauvegardes = $chemin_absolu_site . $repertoire.DIRECTORY_SEPARATOR;
    
    $nom_fichier = $nom_bdd.'_'.date('Y-m-d_H-i-s').'.'.$ext_fichier ;
    
    ////////////////////////////////////////////////////////////////////////////////
    // Vérification de l'environnement
    ////////////////////////////////////////////////////////////////////////////////
    if( true == CHECK)
    {
    $sapi_type = php_sapi_name();// Context d'execution
    
    if (substr($sapi_type, 0, 3) != 'cli') {
    if( true == FIRST_RUN)
    {
    ?><html><body>
    <p>Il semblerai que vous souhaitez utiliser ce fichier a travers le reseaux.<br/>
    <p>Si tel est votre souhais, Pensez à :
    <ul>
    <li>Autentifier l'attaquant;</li>
    <li>Identifier l'attaquant;</li>
    <li>Modifier périodiquement vos codes d'acces.</li>
    </ul></p>
    </body></html><?php
    }
    exit( );
    }
    if( is_dir ($repertoire_sauvegardes) === FALSE ) {
    if(mkdir ($repertoire_sauvegardes, 0700) === FALSE ) {
    exit('Impossible de créer le répertoire de sauvegarde'.PHP_EOL);
    // TODO : Indiquer une solution
    }
    } else if( is_writable( $repertoire_sauvegardes)===FALSE) {
    exit('Impossible d\'écrire dans le répertoire de sauvegarde'.PHP_EOL);
    // TODO : Indiquer une solution
    }
    
    // tester la connexion Mysql;
    // Que ce passe t-il si MySQL n'est pas en TCP mais en socket file ?
    // Optimiser le mode de compatibilité mysql( interoger mysql)
    // Que ce pass t'il si on se plante dans le nom des table $selection_tables_mysql( interoger mysql)
    }
    
    ////////////////////////////////////////////////////////////////////////////////
    // Sauvegarde de la base de donnée
    ////////////////////////////////////////////////////////////////////////////////
    
    $commande  = 'mysqldump';
    $commande .= ' --host='.$hote;
    $commande .= ' --port='.$port;
    $commande .= ' --user='.$utilisateur;
    $commande .= ' --password='.$mot2passe ;
    $commande .= ' --skip-opt';
    $commande .= ' --compress';
    $commande .= ' --add-locks';
    $commande .= ' --create-options';
    $commande .= ' --disable-keys';
    $commande .= ' --quote-names';
    $commande .= ' --quick';
    $commande .= ' --extended-insert';
    $commande .= ' --complete-insert';
    $commande .= ' --default-character-set='.$encodage_caracteres_mysql;
    $commande .= ' --compatible=mysql40';
    $commande .= ' --result-file='.$repertoire_sauvegardes.$nom_fichier ;
    $commande .= ' '.$nom_bdd ;
    
    if( !empty($selection_tables_mysql) ) {
    $commande .= ' '.implode(' ',$selection_tables_mysql) ;
    }
    
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // WARNING
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // a REVOIR, exec() serrai plus mieux ????????????????
    // Execution de la commande de sauvegarde
    system($commande) ;
    
    // Compression au format GZIP du fichier sauvegardé
    system('cd '.$repertoire_sauvegardes.'; gzip '.$nom_fichier) ;
    // $] gzip: test_2010-03-13_02-31-16.sql.gz already exists; do you wish to overwrite (y or n)?
    // et il me crée *.sql sans le gziper
    // donc verifier les erreur retourner par systeme
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // WARNING
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    
    //TODO choix de la destination de la sauvegarde sur FTP
    
    // Initialisation des variables
    $tableau_sauvegardes = array();
    
    // Ouverture du dossier, Attention au cache du filesysteme???
    if ($repertoire_ouvert = opendir($repertoire_sauvegardes)) {
    // Lecture des entrées
    while( ($fichier_en_cours = readdir($repertoire_ouvert)) !== false) {
    if(is_file($repertoire_sauvegardes.$fichier_en_cours)) {
    if( substr( $fichier_en_cours, 0, strlen( $nom_bdd))!=$nom_bdd ) {
    continue;//
    }
    // Mise en tableau des résultats
    $tableau_sauvegardes[] = $fichier_en_cours;
    }
    }
    // fermeture du dossier
    closedir($repertoire_ouvert) ;
    }
    
    sort($tableau_sauvegardes, SORT_STRING);
    
    // Supprime les fichiers en trop
    $ln = sizeof( $tableau_sauvegardes)-( $nbre_sauvegardes_a_garder-1);
    for($i=0; $i<$ln; $i++) {
    unlink($repertoire_sauvegardes.$tableau_sauvegardes[$i]);
    }
    
    ////////////////////////////////////////////////////////////////////////////////
    // Loger nos actions
    ////////////////////////////////////////////////////////////////////////////////
    //TODO, envoyer un mail : c'est rassurant
    

    Grand maître L