Trouve beau tout ce que tu peux
Le blog de Laurent Montané
Vidéos : 1-0/0
Première page
Page précédente
Images










Objets à donner


Les objets qui ne sont plus en photo sont déjà donnés


Par : Laurent
Numéro : 610

Cherry Blossoms

Synopsis : Trudi apprend que son époux Rudi est atteint d'une maladie incurable et ne trouve pas le courage de le lui annoncer. Lorsque le médecin lui suggère d'entreprendre pour la dernière fois un voyage avec son mari, Trudi propose à ce dernier, qui n'aime guère quitter le petit village où le couple réside, de rendre visite à leurs enfants à Berlin. La visite de la capitale, décevante pour les deux parents, est rapidement suivie d'un séjour au bord de la mer Baltique. Là se produit un évènement tragique qui va obliger Rudi à porter un regard neuf sur son épouse, et à partir seul au Japon...


Catégories : Films - Vidéos

Par : Laurent
Numéro : 105

Ajouter un commentaire
Marche mondiale pour la paix et la non-violence
Catégories : Vidéos - Siloïsme - Militer

Par : Laurent
Numéro : 115

Ajouter un commentaire
Capitalistes et conservateurs
>Jhon Maynard Keynes

Le capitalisme, c'est cette croyance stupéfiante dans l'idée que les pires individus vont accomplir les pires actions pour le plus grand bien de tous.


Jhon Kenneth Galbraith

Le conservateur moderne est engagé dans l'un des plus anciens exercices de philosophie morale: la recherche d'une justification morale supérieure à son égoïsme


Catégories : Citations - Militer

Par : Laurent
Numéro : 113

Ajouter un commentaire
Voyage a Punta de vacas
En janvier 2010


Catégories : Mes photos - Voyages - Siloïsme - Militer - Emmanuelle

Par : Laurent
Numéro : 104

Ajouter un commentaire
Marche Mondiale - Punta 2010
Catégories : Vidéos - Siloïsme - Militer

Par : Laurent
Numéro : 107

Ajouter un commentaire
Présentation du projet oBlog
L'objectif de l'obLog est
de présenter des utilisations des technologie web :
HTML, PHP, CSS, SQL, Javascript.

Le projet de l'oBlog est de construire étape par étape un site de blog, dont les sources sont commentés dans le bLog lui même.

Les dernières versions du source seront disponibles par un lien sur la page d'accueil du site.

Nous mettons à ce projets des contraintes professionnelles :

  • La programmation en trois tiers. C'est dire que seront constamment séparé l'affichage des données (réalisé en HTML, CSS et Javascript), le traitement des données (réalisé en PHP) et la sauvegarde des données (réalisée en SQL).
  • Une autre contrainte sera de centraliser dans des fonctions, autant que possible, toutes les fonctionnalités utilisées dans plusieurs endroits du projet.
  • Afin de pouvoir internationaliser ce travail, il contiendra un dictionnaire des mots qu'il doit afficher.
  • Nous réaliserons un affichage pratiquement identique pour les les navigateur FireFox, Internet Explorer, Chrome et Safari.
  • Une particularité du projet oblog sera de faciliter la publication d'extrait de source, script ou autres.
  • Enfin, nous ferons un source inaccessible au piratage.

Nous développons ce projets avec EasyPHP (5.3.1.0), en remerciant chaleureusement tous ceux qui ont contribué au développement de cet outil excellent. Nous utilisons SQL 5, PHP 5, CSS 2

Catégories : oblog

Par : Laurent
Numéro : 21

Ajouter un commentaire
Documentations
Catégories : PHP - CSS - SQL - JavaScript - Développement

Par : Laurent
Numéro : 26

Ajouter un commentaire
Bloquer les automates sur un formulaire
Création à la volée d'une image contenant des caracteres
qui devront être reconnus et saisis par un être humain

Avant d'installer ce genre de limitation, il faut considérer le fait que cela empèche l'utilisation du formulaire par les aveugles et les mal-voyants, et donc réfléchir à la nécessité réelle de ce dispositif.

 

Cela dit, voici un exemple d'image générée par ce script :

nouveau

 

Il peut etre appelé dans le html de la facon suivante : <img id='texte_image' src='texte_image.php'>
Il peut être testé dans le php comme ceci  : if ($caracteres_saisis <> $_SESSION['texte_image'])...
Enfin, pour que l'utilisateur de votre formulaire puisse, à volonté changer l'image : <a onclick = "document.getElementById('texte_image').src = 'texte_image.php?'+Math.random()">nouveau </a>

 

Ce script fonctionne avec des polices de caracteres true type (.ttf), mais il est particulierment cohérent avec la police suivante : alfr_ho.ttf. Cette police est libre de droit.

 

 

 

<?php

// script gratuit et libre de droit de oBlog.fr :
// ce script produit une image avec des caracteres, qui devrton être reconnu par un etre humain
// il peut etre appeler dans le html de la facon suivante : <img id='texte_image' src='texte_image.php'>
// et tester dans le php comme ceci  : if ($caracteres_saisis <> $_SESSION['text_image'])...
// pour que l'utilisateur de votre formulaire puisse, à volonté changer l'image : <a onclick="document.getElementById('texte_image').src='texte_image/texte_image.php?'+Math.random()">nouveau </a>
// la police alfr_ho.ttf est libre de droit et disponible sur oBlog.fr : http://oblog.fr/oblog.phtml?article_afficher=27



//mise a nul de la reference session du texte correspondant  a l'image
    session_start();
    $_SESSION['texte_image']='';

// nombre de carateres
    $nombre_caracteres = 6;
    
// taille de l'image et de la police
    $taille_y = 150;
    $taille_max_police = round($taille_y * 0.45);
    $taille_x=round($nombre_caracteres*$taille_max_police*0.9);
    
// police (c'est l'addresse du fichier qui doit être présent sur votre site)
    $fichier_police = 'alfr_ho.ttf';
    
// Création de l'image (vide)
    $image = imagecreatetruecolor($taille_x, $taille_y);
    
// Création des couleurs
    define('ROUGE',0);
    define('VERT',1);
    define('BLEU',2);
    $couleur_lettre = array(ROUGE =>0, VERT =>0, BLEU =>0);
    $couleur_fond = array(ROUGE =>255,VERT =>255,BLEU =>255);
    
//remplissage du fond
    $couleur = imagecolorallocate($image,$couleur_fond[ROUGE],$couleur_fond[VERT],$couleur_fond[BLEU]);
    imagefilledrectangle($image, 0, 0, $taille_x-1, $taille_y-1, $couleur);

// ecriture des caracteres
    // construction de la couleur
        $couleur = imagecolorallocate($image,$couleur_lettre[ROUGE],$couleur_lettre[VERT],$couleur_lettre[BLEU]);
    // police (c'est une URL...)
        $fichier_police = 'alfr_ho.ttf';
    // caracteres possible dans l'image
        // sont absents les caracteres ambigus dans un affichage déformé
        $alphabet='acefgimnopsuvwxyz';
        $taille_alphabet = strlen($alphabet);
    // ecriture des caracteres
    $x_lettre = 10;
    for ($i=1;$i<=$nombre_caracteres;$i++)
        {
        // choix d'un caractere
            $caractere=$alphabet[mt_rand(0,$taille_alphabet-1)];
        // taille de la police
            $taille_police = round($taille_max_police*mt_rand(70,100)/100);
        // choix d'un ange d'ecriture entre -15 et 15 degré
            $angle=mt_rand(-20,20);
        // ecriture de la lettre dans l'image
            $rectangle=imagettfbbox  ($taille_police,$angle,$fichier_police, $caractere);
            imagettftext($image, $taille_police, $angle, $x_lettre,($taille_y/5*3), $couleur, $fichier_police, $caractere);
        // calcul du declage en x
            $rectangle=imagettfbbox  ($taille_police,$angle,$fichier_police, $caractere);
            $x_lettre = round(($x_lettre+$rectangle[2]-$rectangle[0])*0.92);
        // sauvegarde de la lettre dans la reference session
            $_SESSION['texte_image'].=$caractere;
        }
        
// deformations en Y
    $longueur_min=40;
    $longueur_max=70;
    $amplitude_min = 5;
    $amplitude_max = 8;
    $x_fin=0;
    $x_debut=0;
    
    // definition des deformations successives
        while ($x_debut<$taille_x)
            {
            $courbe['longueur'] = round(mt_rand($longueur_min,$longueur_max));
            $courbe['x_debut']=$x_debut;
            $courbe['x_fin']=$x_debut+$courbe['longueur'];
            if ($courbe['x_fin']>=$taille_x-1-$longueur_min)
                {
                $courbe['x_fin']>$taille_x-1;
                $courbe['longueur']=$courbe['x_fin']-$courbe['x_debut'];
                }
            if (mt_rand(-1,1)>=0)
                $sens=1;
            else
                $sens=-1;
            $courbe['amplitude']=mt_rand($amplitude_min,$amplitude_max)*$sens;
            $courbes[]=$courbe;
            $x_debut=$courbe['x_fin']+1;    
            }
            
    // application des courbes
        $image_temporaire_1 = imagecreatetruecolor ($taille_x, $taille_y);
        for ( $x=0 ; $x < $taille_x ; ++$x )
            {
            $y_decale=0;
            foreach ($courbes as $courbe)
                if (($x > $courbe['x_debut']) and ($x <$courbe['x_fin']))
                    {
                    $x_courbe = $x - $courbe['x_debut'];
                    $radian=($x_courbe/$courbe['longueur']*M_PI*2);
                    $y_decale = round(((1-cos($radian)) * $courbe['amplitude']));
                    break;
                    }
            for ( $y=0 ; $y < $taille_y ; ++$y )
                {
                $y_courbe = $y+$y_decale;
                if ($y_courbe<0) $y_courbe = 0;
                if ($y_courbe>=$taille_y) $y_courbe = $taille_y-1;
                $couleur=imagecolorat($image, $x, $y_courbe);
                imagesetpixel($image_temporaire_1,$x,$y,$couleur);
                }
            }

// deformations en X
    $longueur_min=40;
    $longueur_max=70;
    $amplitude_min = 2;
    $amplitude_max = 4;
    $y_fin=0;
    $y_debut=0;
    // definition des courbes
        $courbes=array();
        while ($y_debut<$taille_y)
            {
            $courbe['longueur'] = round(mt_rand($longueur_min,$longueur_max));
            $courbe['y_debut']=$y_debut;
            $courbe['y_fin']=$y_debut+$courbe['longueur'];
            if ($courbe['y_fin']>=$taille_y-1-$longueur_min)
                {
                $courbe['y_fin']>$taille_y-1;
                $courbe['longueur']=$courbe['y_fin']-$courbe['y_debut'];
                }
            if (mt_rand(-1,1)>=0)
                $sens=1;
            else
                $sens=-1;
            $courbe['amplitude']=mt_rand($amplitude_min,$amplitude_max)*$sens;
            $courbes[]=$courbe;
            $y_debut=$courbe['y_fin']+1;    
            }
        
    // application des courbes
        for ( $y=0 ; $y < $taille_y ; ++$y )
            {
            $x_decale=0;
            foreach ($courbes as $courbe)
                if (($y > $courbe['y_debut']) and ($y <$courbe['y_fin']))
                    {
                    $y_courbe = $y - $courbe['y_debut'];
                    $radian=($y_courbe/$courbe['longueur']*M_PI*2);
                    $x_decale = round(((1-cos($radian)) * $courbe['amplitude']));
                    break;
                    }
            for ( $x=0 ; $x < $taille_x ; ++$x )
                {
                $x_courbe = $x+$x_decale;
                if ($x_courbe<0) $x_courbe = 0;
                if ($x_courbe>=$taille_x) $x_courbe = $taille_x-1;
                $couleur=imagecolorat($image_temporaire_1, $x_courbe,$y);
                imagesetpixel($image,$x,$y,$couleur);
                }
            }

// retourner l'image codée en JPEG
header("Content-type: image/jpeg");
imagejpeg($image);
?>
Catégories : PHP - Sécurité

Par : Laurent
Numéro : 27

Ajouter un commentaire
Tester si une adresse url existe
Tester à la volée (en JavaScript)
si une adresse url existe ou pas

Nous utiliserons pour cela l'objet XMLHttpRequest mais IL EST LIMITE AU DOMAINE dans lequel il est appellé. Pour dépasser cette limite, nous pouvons utiliser PHP, c'est à dire que XMLHttpRequest interrogera un fichier PHP qui lui interrogera tout le web.

Les fonctions JavaScript (fichier : xmlhttprequest.js)

function xhr_nouveau()
    // creation du Xml http resquest
    // suivant la syntaxe des differents navigateurs
    {
    if (window.XMLHttpRequest)
        return new XMLHttpRequest();
    else if(window.ActiveXObject)
        return new ActiveXObject("Microsoft.XMLHTTP");
    else
        {
        alert('impossible de creer "Xml http resquest"');
        return false;
        }
    }

function xhr_tester_url(adresse)
    {
    // cette fonction est plus lante et necessite PHP (et donc que la page qui l'utisie soit traité par un serveur !)
    // mais elle peut tester toutes les adresse Web (peut importe leur contenu html, image etc...)
    // retourne true si l'adresse a put être verfiée comme valide
    // retourne false sinon
    xhr = xhr_nouveau();
    //si xhr a été crée
        if (xhr!=false)
            {
            // appel de l'adresse en mode synchrone (avec false)(c.a.d on attend le resultat avant de continuer)
                xhr.open('GET','http://test_url.php?adresse='+adresse, false);
            alert('erreur');
                xhr.send(null);
            // retourner true si le resultat est 'OUI'
                if (xhr.responseText=='OUI')
                    return true;
            }
    // pas de xhr ou adresse invalide
    return false
    }

function xhr_tester_url_locale(adresse)
    {
    // retourne true si l'adresse a put être verfiée comme valide
    // retourne false sinon
    xhr = xhr_nouveau();
    //si xhr a été crée
        if (xhr!=false)
            {
            // appel de l'adresse en mode synchrone (avec false)(c.a.d on attend le resultat avant de continuer)
                xhr.open('HEAD',adresse, false);
                xhr.send(null);
            // retourner true si le resultat est 'OUI'
            if(xhr.status  == 200)
                return true;
            }
    // pas de xhr ou adresse invalide
    return false
    }

Le script PHP (fichier : test_url.php)

<?php
//Vérifier la validité d'un adresse URL.
//Permet d'afficher un message si le lien d'une URL est valide ou non.
if (isset($_GET['adresse']))
    {
    $file = @fopen($_GET['adresse'], 'r');
    if ($file)
        {
        echo 'OUI';
        exit;
        }
    }
echo 'NON';
?>

Le fichier HTML qui utilise le script JavaScript

<html>
    <head>
        <title>teste de Xml http resquest</title>
        <script type="text/javascript" src="xmlhttprequest.js"></script>
        </head>
    <body>
    <SCRIPT language="javascript">
        alert ('commencer le premier teste');
        if (xhr_tester_url("http://www.oblog.fr"))
            alert ("l'adresse existe");
        else
            alert ("l'adresse n'existe pas");
            
        alert ('commencer le second teste');
        if (xhr_tester_url_locale("nimportequoi.html"))
            alert ("l'adresse existe");
        else
            alert ("l'adresse n'existe pas");
            
        alert ('commencer le troisieme teste');
        if (xhr_tester_url_locale("tester_xmlhttprequest.html"))
            alert ("l'adresse existe");
        else
            alert ("l'adresse n'existe pas");
        </script>
        c'est fait
        </body>
    </html>

Catégories : PHP - XMLHttpRequest

Par : Laurent
Numéro : 37

Ajouter un commentaire