Catégorie : Code en Php

Code en Php

  • 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