IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez / Téléchargez Sources et Outils PHP Discussion :

Vos meilleurs codes sources


Sujet :

Contribuez / Téléchargez Sources et Outils PHP

  1. #21
    Membre averti Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Points : 392
    Points
    392
    Par défaut
    Cette classe génère des formulaires d'après une requete sql.
    ici en deux classes car j'ai deux bases de données diff.
    je n'ai pas d'hebergeur...
    en passant si qqn a la motivation de mettre un script de ce genre en ligne..
    <form>
    <textarea name='code'>....</textarea>
    </form>
    <?
    if (!isset($_POST['code'])) $_POST['code'] = "";

    $tab = array('function','include','var', 'class');
    foreach ($tab as $word) $_POST['code'] = ereg_replace($_POST['code'], $word, "|color=blue]".$word."|/color]");

    $tab = array('mysql_..','substr','ldap_');
    foreach ($tab as $word) $_POST['code'] = ereg_replace($_POST['code'], $word, "|color=red]".$word."|/color]");

    echo $_POST['code']
    ?>
    pour faciliter la lecture des codes afficher ici ;-)

    <?
    //$obj->addCSS("f.css");
    include "formabs.inc";
    class formms extends formabs {
    var $db;
    function formms($SQL ){

    $this->db = odbc_connect("secret","secret","secret");
    $req = odbc_exec( $this->db,$SQL);

    $fieldName = array();
    $fieldLen = array();
    $fieldType = array();
    $fieldValue = array();

    $count = odbc_num_fields( $req )+1;
    for ($i=1;$i<$count ;$i++){
    $fieldName[$i] = odbc_field_name($req, $i); // nom du champ
    $fieldLen[$i] = odbc_field_len($req, $i); // longueur
    $fieldType[$i] = odbc_field_type($req, $i); // type du champ
    }


    odbc_fetch_row($req);
    for ($i=1;$i<$count ;$i++){
    $fieldValue[$i] = "";
    $fieldValue[$i] = odbc_result($req,$i);
    }
    $this->SQL = $SQL;
    $SQL = strtoupper($SQL);
    $SQL = str_replace(" FROM ", "[*%&]", $SQL );
    $SQL = str_replace(" WHERE ", "[*%&]", $SQL);
    list($fields,$this->table,$whereclause) = explode("[*%&]",$SQL);


    $this->numfields = $count;
    for ($i=1;$i< $this->numfields ; $i++){
    $this->fieldErrMsg[$i] = "";
    $this->test[$i] = "";
    $row = new row($fieldName[$i], $fieldLen[$i],$fieldType[$i]);
    $row->fieldValue= $fieldValue[$i];
    $this->rows[$fieldName[$i]] = $row ;
    }
    parent::formabs();
    }//end construct
    function nextSequence($col){
    $tab = $this->table ;
    $SQL = "select max(".$col.") from ".$tab;
    $req = odbc_exec( $this->db,$SQL);
    odbc_fetch_row($req);
    return odbc_result($req,1) + 1;
    }

    }//end class
    ?>
    voici la deuxieme:
    <?
    //$obj->addCSS("f.css");
    //array_keys
    define("CONSULT", 0);
    define("MODIFY", 1);
    define("ADD", 2);

    class row{
    /*

    */
    var $label = ""; //
    var $fieldName = ""; //nom du champs en db
    var $fieldLen = "";
    var $fieldType = "";
    var $fieldValue = "";//sera envoyé a la database
    var $visibleValue="";//sera affiché
    var $fieldErrMsg= "";
    var $visible = true;/*Un champ peut etre invisible
    - pour permettre des tests
    - car rempli automatiquement et pour le design */
    var $protected = false;
    var $key = false;
    var $list = array();
    var $auto = "";

    function row($fieldName, $fieldLen, $fieldType ){
    $this->fieldName = $fieldName;
    $this->label = $fieldName;
    $this->fieldLen = $fieldLen;
    $this->fieldType = $fieldType;
    }
    function toDB( ){
    $rtn = $this->fieldValue;
    $rtn = addslashes($rtn);
    return $rtn;
    }
    function show( $mode ){
    $rtn = "";
    if ($mode && !$this->protected ){
    switch($this->fieldType){
    case 'text':
    $rtn = "<TEXTAREA name='".$this->fieldName."' rows=4 cols=40>".nl2br($this->fieldValue)."</TEXTAREA>";
    break;
    default:
    $rtn = "<input type=text name='".$this->fieldName."' value='".$this->fieldValue."'>";
    break;

    }
    }else{//consult
    /*if ($this->fieldName == $this->primaryKey){
    $form .= "<input name=".$this->rows[$i]->fieldName." type=hidden value=".$this->rows[$i]->fieldValue.">";
    if ( ! $this->fieldValue ) $form .= " automatique ";
    }*/

    $rtn = ($this->fieldValue == '' && $this->auto )?'automatique':$this->fieldValue;
    }
    return $rtn;
    }//end show
    function test( ){

    }
    }//end class

    class formabs{
    var $mode = CONSULT;
    var $table = "";
    var $SQL = "";
    var $rows = array();
    var $numfields = 0 ; //nombre de rows
    var $ErrMsg = "";

    function formabs( ){
    if (isset($_POST)){
    foreach ($_POST as $key => $val) {
    if(isset($this->rows[$key])) $this->rows[$key]->fieldValue = $val;
    }
    }
    }//end _construct
    function nextSequence($col, $tab){}//end abstract fct
    function mode($mode ){
    $this->mode = $mode;
    }//end mode
    function protect($field ){
    $this->rows[$field]->protected = true;
    }//end protect
    function setAuto($field, $fct ){
    $this->protect($field);
    $this->rows[$field]->auto = $fct;
    }//end setAuto
    function primary($field ){
    $this->rows[$field]->key = true;
    $this->setAuto($field, 'nextSequence');
    }//end primary
    function traduction($dico ){
    foreach ($dico as $key => $val) if (isset($this->rows[$key]) && $val != "")$this->rows[$key]->label = $val;
    }//end traduction
    function getValue($field){
    return (isset($this->rows[$field]))? $this->rows[$field]->fieldValue: O;
    }//end getValue
    function show(){
    $count = $this->numfields;
    $form = "<form method=POST action=".$_SERVER['PHP_SELF']."?mode=".$this->mode."> ";
    $form .= "<table width=500 cellSpacing=0 cellPadding=0><TBODY>";
    $i = 0;
    foreach ($this->rows as $key => $row) {
    if ($row->visible){
    //libellé
    $i++;
    $form .= "<tr class=data".(($i % 2) + 1) ."><td>".$row->label."</td>";
    //icone
    $form .= "<td width=16>";
    if ( $row->fieldErrMsg != "" ) $form .= "<img src='"._HOMEPAGE."/Img/b_drop.png'>";
    $form .= "</td>";
    //champ
    $form .= "<td>";
    $form .= $row->show($this->mode) ;
    $form .= "</td><td>&nbsp;</td></tr>";
    }
    }
    $form .= "<TBODY></table>";

    if ( $this->mode == MODIFY || $this->mode == ADD ){
    $form .= " <table width=100%><tr><td>";
    if ( $this->ErrMsg ) $form .= "<marquee>".$this->ErrMsg."</marquee>" ;
    $form .= "</td><td width=86 height=29><input type=image src='"._HOMEPAGE."OO/form_bval.gif'></td></tr></table>";
    }
    $form .= "</form>";
    return $form;
    }// end show
    function test( ){
    $test = true;
    for ($i=1;$i< $this->numfields ; $i++){
    $this->fieldErrMsg[$i] = eval ($this->test[$i]);
    if ( $this->fieldErrMsg[$i] != "" ) $test = false;
    }
    return $test;
    }//end test
    function fillAutoField(){
    foreach ($this->rows as $key => $row) {
    if ($row->auto){
    switch($row->auto){
    case 'nextSequence':
    $temp = '$temp = $this->nextSequence("'.$key.'");';
    eval($temp);
    $this->rows[$key]->fieldValue = $temp;
    break;

    }
    }
    }
    }//end fillAutoField
    function getSQLSyntax(){
    $rtn = "";
    $into = "";
    $values = "";
    $set = "";
    $where = "";
    foreach ($this->rows as $key => $row) {
    if ($row->key){
    $where .= ($where == "" )? "" :" and ";
    $where .= $key."=".$row->toDB()." ";
    }else{
    $set = "";
    }
    $into .= ','.$key;
    $values .= ','.$row->toDB();
    }
    //retirer la premiere ','
    $into = substr($into,1);
    $values = substr($values,1);

    switch ($this->mode){
    case MODIFY:
    $rtn = "update ".$this->table." set ".$set." where ".$where.";";
    break;
    case ADD:
    $rtn = "insert into ".$this->table."(".$into.") values(".$values.");";
    break;
    }
    return $rtn;
    }//end getSQLSyntax
    function sql_exec($SQL ){
    return false; //abstract
    }
    function commit( ){
    $this->fillAutoField();
    $SQL = $this->getSQLSyntax();

    if ($this->sql_exec($SQL)){
    switch ($this->mode){
    case MODIFY:
    $this->ErrMsg = "<font color=green><b>Enregistrement modifié</b></font>";
    break;
    case ADD:
    $this->ErrMsg = "<font color=green><b>Enregistrement ajouté</b></font>";
    break;
    }
    $this->mode = CONSULT;
    }else{
    $this->ErrMsg = "<font color=red><b>Modification annulée</b></font>";
    }
    }//end commit
    }//end class
    ?>
    et voici une page qui utilise ces classes.
    <? session_start();
    include "../OO/page.inc";//la mise en page
    include "../OO/formms.inc";
    $mode = (isset($_GET['mode']))? $_GET['mode']:CONSULT;
    $body = "<img src='../Accueil/helpdesk.jpg' >";

    $SQL = "select ...mes champs... from Matable ";
    if ($mode == ADD){
    $SQL .= " where 1 = -1";
    $body .="<b> Ajout d'un trackit </b><br />";
    }else{
    $SQL .= " where XX_NUM = ".$_GET['num'];
    $body .="<b> Détail du trackit ".$_GET['num']."</b><br />";
    }
    $obj_form = new formms($SQL); //Création du formulaire
    $obj_form->mode($mode);

    $traduction = array ( "XX_NUM"=>"N° appel: ", "brol"=>"Récapitulatif: ", ... "NOTE"=>"Note: ", "STATUS"=>"Etat: " );
    $obj_form->traduction($traduction);
    $obj_form->primary("XXID");
    $obj_form->setAuto("XX_NUM","nextSequence");
    if ( $obj_form->test() && count($_POST)>0) $obj_form->commit();
    $body .= $obj_form->show();
    $page->addhtmlbody($body);
    $page->show();
    ?>
    la mise en page depend d'un css, mais il "suffit" d'adapter le fonction ->show() pour modifier la mise en page.
    vs pouvez bien entendu signaler des bug ou proposer des améliorations.
    a venir : la possibilité de proposer une liste de choix pour un champs(option select)
    Le but de tout developpeur OO est de devenir une référence.
    Mon avatar est un ambigramme, les curieux peuvent le retourner ;-)
    Aider <> Faire a la place de!!!

  2. #22
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    plutot que la couleur, je préfère l'indentation grâce aux balises [code]

  3. #23
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Suite à de nombreuses demandes sur le forum, voici un petit script de lecture / écriture de fichier. Ici, nous ouvrons un fichier distant, en lisons le contenu, et l'enregistrons en local.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <?php
        // ---------------- Ouverture et lecture du fichier distant ----------------
        //Ouverture du fichier $fichier
        $fichier = "http://www.google.fr/intl/fr_fr/images/logo.gif";
        $fichierouvert = fopen ($fichier, "r");
        // Initialisation de la variable contenu
        $contenu ="";
        //Mise en mémoire du fichier dans une variable $contenu
        while (!feof($fichierouvert)) {
          $contenu .= fread($fichierouvert, 8192);
        }
        fclose ($fichierouvert);
     
        // ---------------- Création et écriture du fichier local ----------------
        //Répertoire de destination
        $dirname = "";  
        // Fichier de destination
        $filename = "carte.gif";
        //Ouverture du répertoire de destination
        $fichierouvert = fopen ($dirname.$filename, "w+");
        //Copie du fichier
        if ( !fwrite($fichierouvert, $contenu)) {
          echo "Impossible d'écrire dans le fichier ($filename)";
          exit;
        }
        //Fermeture du fichier
        fclose ($fichierouvert);
    ?>
    Au moment de la lecture du fichier, on pourrait simplifier en remplacant le while par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $contenu = fread ($fichier_ouvert, filesize($filename));
    mais il semble que la propriété filesize ne soit pas accessible à chaque fois.

    Pour la création et l'écriture dans un fichier, pensez bien à vérifier que vous avez les droits requis dans le répertoire donné et sur le fichier.


    Pour les modes d'ouverture du fichier, faites bien attention :
    'r' Ouvre en lecture seule, et place le pointeur de fichier au début du fichier.
    'r+' Ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier.
    'w' Ouvre en écriture seule ; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.
    'w+' Ouvre en lecture et écriture ; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.
    'a' Ouvre en écriture seule ; place le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, on tente de le créer.
    'a+' Ouvre en lecture et écriture ; place le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, on tente de le créer.
    'x' Crée et ouvre le fichier en lecture seule ; place le pointeur de fichier au début du fichier. Si le fichier existe déjà, fopen() va échouer, en retournant FALSE et en générant une erreur de niveau E_WARNING. Si le fichier n'existe pas, fopen() tente de le créer. Ce mode est l'équivalent des options O_EXCL|O_CREAT pour l'appel système open(2) sous-jacent. Cette option est supportée à partir de PHP 4.3.2 et fonctionne uniquement avec des fichiers locaux.
    'x+' Crée et ouvre le fichier en lecture et écriture ; place le pointeur de fichier au début du fichier. Si le fichier existe déjà, fopen() va échouer, en retournant FALSE et en générant une erreur de niveau E_WARNING. Si le fichier n'existe pas, fopen() tente de le créer. Ce mode est l'équivalent des options O_EXCL|O_CREAT pour l'appel système open(2) sous-jacent. Cette option est supportée à partir de PHP 4.3.2, et fonctionne uniquement avec des fichiers locaux.
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  4. #24
    Candidat au Club
    Inscrit en
    Février 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Charger ds 1 variable le contenu d'1 page protégée par login
    Charger dans une variable le contenu d'une page protégée par un login

    Ce script est spécialement utile pour faire de l'extraction de données dans un site nécéssitant un login.

    Le script est assez court, mais la difficulté résidait dans la création du contexte correct pour faire transiter les informations de login en POST et le maintien du numéro de session.

    Pour illustrer le fonctionnement, voici le script sécurisé ( supposé être dans l'alias de dossier de publication http://localhost/php/ et s'appeler main.php ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?
       session_start();
       if ($_POST[user]=="Moi" && $_POST[pass]=="AJE")
       {
         $_SESSION[accept]="OK";
         echo "Enregistrement ok.<br><a href='main.php'>Contenu</a>";
       }
       else if ($_SESSION[accept]=="OK")
       {
         echo "BRAVO. Vous avez accédé au contenu";
       }
       else
       {
         echo '<form name="mainform" method="post">';
         echo 'User:<input type="text" name="user" value="Moi" size="20" /><br>';
         echo 'Pass:<input type="password" name="pass" value="AJE" size="20" /><br>';
         echo '<input type="submit" name="Envoi" /></form>';
       }
    ?>
    et voici la solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    // Référence pour les contextes http://fr.php.net/stream
    $opts = array ('http'=>array ('method' => 'POST',
                                  'content'=> 'user=Moi&pass=AJE',
                                  'header' => "Accept-language: en\r\n".
                                              "Cookie: PHPSESSID=9d5c2d1c8cfab4094283887a2623a0c4" )
                  );
    $context = stream_context_create($opts);
    $fichier = fopen('http://localhost/php/main.php', 'r', false, $context);
    fclose($fichier);
    $opts = array ('http'=>array ('method' => 'GET',
                                  'header' => "Accept-language: en\r\n".
                                              "Cookie: PHPSESSID=9d5c2d1c8cfab4094283887a2623a0c4" )
                  );
    $context = stream_context_create($opts);
    $fichier = fopen('http://localhost/php/main.php', 'r', false, $context);
    while ($str=fread($fichier, 16))
    {
      $src .="$str";
    }
    fclose($fichier);
    echo $src;
    ?>
    Je n'en suis pas peu fier, j'ai dû bien chercher...

    Que le code soit avec toi.

  5. #25
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Points : 362
    Points
    362
    Par défaut
    alors moi je vais porter ma ptite pierre toute toute petite à l'édifice

    On veut souvent vérifier dans un forulaire qu'un mail est bien correcte, un '.' et un '@ et sans ';' en geral donc voila une ptite focntion pour ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //Verifier la presence de caractere interdit dans une chaine pour un mail 
    function falsemail($email){  
    if( strpos($email,'.') === false || strpos($email,'@') == false || strpos($email,';') == true )  
     
    return(true); 
     
    else 
     
     
    return(false); 
    }

    Sinon j'ai voulu changer la fonction pour n'importe quel chaine et avec n'importe quel type de caractere a interdir, en gros un tableau de caractere interdit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    // verifie la presence de caractere interdit (variable $tab) pour une chaine 
    function falsechaine($chaine,$tab){  
    $ereur = false; 
     
    for($i=0;$i<sizeof($tab) && $ereur == false;$i++){  
     
    if( strpos($chaine,$tab[$i]) != false )  
     
     
    $ereur = true;
     
     
    } 
     
    return($ereur); 
    }
    voila j'espere ca en aidera certains


    /!\ En faisant des test plus poussé je viens de m'apercevoir d'un bug.
    Si le caractere interdit se trouve en 1ere position il n'est pas detexté!!!! donc rajouté un espace dans la variable de chaine a tester en tout debut ce qui permet d'éviter ce bug.

  6. #26
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Class d'upload

    Cette classe permet de charger (normalement) simplement un ou des fichiers sur un serveur distant ou local, supprimer, créer des dossiers.
    Je l'ai faite sans trop l'utiliser mais ça peut servir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    <?php
    /****************************************************/
    /*  Class FileManager par Krak @ Anduriel
    ****************************************************/
     
    define ("FTP_CONNECTSSL_FAILED", "<b>Erreur critique:</b> connection au serveur 
    impossible. Vérifiez si l' OpenSSL est installé.");
    define ("FTP_CONNECT_FAILED", "<b>Erreur critique:</b> connection au serveur imp
    ossible.");
    define ("LOGIN_FAILED", "<b>Erreur critique:</b> impossible de se connecter, vér
    ifiez les paramètres d'accès.");
    define ("NO_FILE_UPLOADED", "<b>Erreur:</b> le fichier n'a pas été téléchargé su
    r le serveur.");
    define ("ERR_FILESIZEINI", "<b>Erreur:</b> la taille d'un des fichiers dépasse l
    a limite fixée dans votre php.ini.");
    define ("ERR_FILESIZE", "<b>Erreur:</b> la taille d'un des fichiers dépasse la l
    imite fixé par le formulaire.");
    define ("ERR_PARTIALDL", "<b>Erreur:</b> un des fichiers a été téléchargé partie
    llement dans le dossier temporaire.");
    define ("ERR_NOFILEDL", "<b>Erreur:</b> un des fichiers n'a pas été téléchargé d
    ans le dossier temporaire");
    define ("ERR_NOFOLDER", "<b>Erreur:</b> dossier temporaire introuvable.");
    define ("ERR_CANTWRITE", "<b>Erreur:</b> impossible d'écrire le fichier dans le 
    dossier temporaire.");
    define ("CANT_CHANGEDIR", "<b>Erreur:</b> impossible d'entrer dans le dossier ")
    ;
    define ("CANT_CREATEDIR", "<b>Erreur:</b> impossible de créer le dossier demandé
    .");
    define ("SSL_NOTINSTALLED", "<b>Erreur:</b> l'ouverture sécurisée SSL n'est pas 
    disponible.");
    define ("CANT_DELETEFILE", "<b>Erreur:</b> impossible de supprimer le fichier sp
    écifié.");
    define ("INVALID_FILE", "<b>Erreur:</b> fichier spécifié invalide ou introuvable
    .");
    define ("NO_DELETE", "<b>Erreur:</b> fichier non supprimé. Il se peut qu'aucun d
    ossier n'ait été spécifié.");
    define ("CANT_CHMOD", "<b>Erreur:</b> impossible de changer le chmod du dossier/
    fichier spécifié.");
    define ("CANT_RENAME", "<b>Erreur:</b> impossible de changer le nom du dossier s
    pécifié.");
    define ("CANT_LIST", "<b>Erreur:</b> impossible de lister le répertoire.");
     
    class FileManager {
       var $envars;
       var $openftp;
       var $file_destination = '.';
       var $force;
     
      /***************************************************************
    *********/
      /* Function d'enregistrement des variables
      /* setftpvars(urlserver, accessname, acesspass [, mode])
      /*  - urlserver = url du ftp sans www et sans slasch (ftpperso.free.fr)
      /*  - accessname = pseudo de connection
      /*  - accessspass = mot de passe de connection
      /*  - mode = Tranfert des fichiers: ASCII ou BINARY
      /***************************************************************
    ********/
       function setftpvars($server, $username, $userpass, $mode="ASCII") {
          $this->envars['ftp_server'] = $server;
          $this->envars['ftp_pass'] = $userpass;
          $this->envars['ftp_login'] = $username;
          $this->envars['ftp_transfert'] = constant('FTP_'.$mode);
       }
      /***************************************************************
    *********/
      /* Se place dans un dossier spécifique
      /* setftpdir(dir, force)
      /*  - dir = dossier dans lequel charger les fichiers
      /*  - force = crée le dossier s'il est inexistant
      /***************************************************************
    ********/
       function setftpdir($dir, $force=false) {
          $this->file_destination = $dir;
          $this->force = $force;
       }
      /***************************************************************
    *********/
      /* Créé un dossier
      /* createdir(dir [, chmod] [, dest])
      /*  - dir = dossier à crée
      /*  - chmod = droit d'accès au dossier. Par défaut 0777
      /*  - dest = true pour créer sur un serveur distant
      /***************************************************************
    ********/
       function createdir($dir, $chmod=0777, $dest=false) {
          if (!is_dir($dir) && $dest == false) {
             @mkdir($dir, $chmod) or die (CANT_CREATDIR);
          }
         elseif (!is_dir($dir) && $dest != false) {
             @ftp_mkdir($this->openftp, $dir) or die (CANT_CREATDIR);
          }
       }
      /***************************************************************
    *********/
      /* Function de connection à un serveur distant
      /* opensslftp(openmode)
      /*  - openmode = true pour une ouverture sécurisée SSL
      /***************************************************************
    ********/   
       function openftp($sslopen=false) {
          if ($sslopen == true) {
             if (!function_exists("ftp_ssl_connect")) {
                echo SSL_NOTINSTALLED;
                exit;
             }
             if (!$this->openftp = @ftp_ssl_connect($this->envars['ftp_server'])) {
                echo FTP_CONNECTSSL_FAILED;
                exit;
             }
          } else {
             if (!$this->openftp = @ftp_connect($this->envars['ftp_server'])) {
                echo FTP_CONNECT_FAILED;
                exit;
             }
          }
          @ftp_login($this->openftp, $this->envars['ftp_login'], $this->envars['ftp_
    pass']) or die (LOGIN_FAILED);
       }
      /***************************************************************
    *********/
      /* Charge les fichiers issus d'un formulaire
      /* uploadfiles(input, destination)
      /*  - input = nom du champ de type file. Il peut être un tableau.
      /*  - destination = true pour les charger sur un serveur distant
      /***************************************************************
    ********/     
       function uploadfiles($inputname="", $specialftp="") {
          if (!empty($_FILES[$inputname])) {
             foreach($_FILES[$inputname]['name'] As $key => $file) {
                if ($file != '') {
                   $lastfile = ' (Fichier concerné: <b>'.htmlspecialchars($file).'</
    b>)<br>';
                   switch($_FILES[$inputname]['error'][$key]) {
                      case 1:
                         echo ERR_FILESIZEINI.$lastfile;
                         exit;
                  case 2:
                        echo ERR_FILESIZE.$lastfile;
                        exit;
                      case 3:
                         echo ERR_PARTIALDL.$lastfile;
                         exit;
                      case 4:
                         echo ERR_NOFILEDL.$lastfile;
                         exit;
                      case 6:
                         echo ERR_NOFOLDER.$lastfile;
                         exit;
                      case 7:
                         echo ERR_CANTWRITE.$lastfile;
                         exit;
                      default: break;
                   }
                   $filename = basename($_FILES[$inputname]['name'][$key]);
                   if (empty($specialftp)) {
                      if ($this->force == true) $this->createdir($this->file_destina
    tion);
                      if (!$is_moved = @move_uploaded_file($_FILES[$inputname]['tmp_
    name'][$key], $this->file_destination.'/'.$filename)) {
                         echo NO_FILE_UPLOADED.$lastfile;
                      }
                   } else {
                      $fp = fopen($_FILES[$inputname]['tmp_name'][$key], 'r');
                      if ($this->force == true) $this->createdir($this->file_destina
    tion, 0777, true);
                      @ftp_chdir($this->openftp, $this->file_destination) or die(CAN
    T_CHANGEDIR.$this->file_destination);
                      if (!$is_moved = @ftp_fput($this->openftp, $filename, $fp, $th
    is->envars['ftp_transfert'])) {
                         echo NO_FILE_UPLOADED.$lastfile;
                      }
                      else {
                         fclose($fp);
                      }
                   }
                }
             }
          }
       }
      /***************************************************************
    *********/
      /* Supprime un fichier ou des fichiers
      /* deletetfile(file [, destination]])
      /*  - file = fichier à supprimer. Pour plusieurs fichiers metter un tableau
      /*    Ce fichier sera supprimé du dossier setftpdir() si le dossier n'est pas 
    spécifié
      /*    dans un tableau:
      /*    => array('file1.txt' => 'dir/dir', 'file2.exe' => '../dir2', 'file3.html
    ')
      /*  - destination = true pour les supprimer d'un serveur distant
      /***************************************************************
    ********/
       function deletefile($file, $specialftp="") {
          $lastfile = (!is_array($file)) ? ' (Fichier concerné: <b>'.htmlspecialchar
    s($file).'</b>)<br>' : ' (Tableau de fichier)';
      if (!is_array($file) && is_file($this->file_destination.'/'.$file)) {
         if (empty($specialftp)) {
            return @unlink($this->file_destination.'/'.$file) or die (CANT_DELETEFIL
    E.$lastfile);
         } else {
            return @ftp_delete($this->openftp, $this->file_destination.'/'.$file) or
     die (CANT_DELETEFILE.$lastfile);
         }
      }
      elseif (is_array($file)) {
         foreach($file as $dir => $to_delete) {
            $lastfile = ' (Fichier concerné: <b>'.htmlspecialchars($to_delete).'</b>
    )<br>';
            $dir = (is_numeric($dir)) ? $this->file_destination : $dir;
            if (is_file($dir.'/'.$to_delete)) {
               if (empty($specialftp)) {
                  @unlink($dir.'/'.$to_delete) or die (CANT_DELETEFILE.$lastfile);
               } else {
                  @ftp_delete($this->openftp, $dir.'/'.$to_delete) or die (CANT_DELE
    TEFILE.$lastfile);
               }
            } else {
               echo INVALID_FILE.$lastfile;
            }
         }
      }
      else {
         echo NO_DELETE.$lastfile;
      }
       }
      /***************************************************************
    *********/
      /* Change le Chmod d'un dossier ou d'un fichier
      /* changechmoddir(dir, chmod, destination)
      /*  - dir = dossier dont le chmod est à modifier
      /*  - chmod = droit d'accès au dossier.
      /*  - destination = true si le fichier ou dossier est sur un serveur distant
      /***************************************************************
    ********/
       function changechmod($filedir, $chmod, $specialftp="") {
          if (empty($specialftp)) {
             @chmod($filedir, $chmod) or die (CANT_CHMOD);
          }
          else {
             @ftp_chmod($this->openftp, $filedir, $chmod) or die (CANT_CHMOD);
          }
       }
      /***************************************************************
    *********/
      /* Renomme un dossier/fichier
      /* changenamedir(dirfile, newname, destination)
      /*  - dirfile = dossier/fichier dont le nm est à modifier
      /*  - newname = nouveau nom
      /*  - destination = true si le fichier ou dossier est sur un serveur distant
      /***************************************************************
    ********/
       function changename($dirfile, $name, $specialftp="") {
          if (empty($specialftp)) {
             @rename($dirfile, $name) or die (CANT_RENAME);
          }
          else {
             @ftp_rename($this->openftp, $dirfile, $name) or die (CANT_RENAME);
          }
       }
      /***************************************************************
    *********/
      /* Liste un répertoire
      /* listrepertory(repertory, destination)
      /*  - destination = true si le dossier est sur un serveur distant
      /***************************************************************
    ********/
       function listrepertory($repertory, $specialftp="") {
          if (empty($specialftp)) {
             if ($handle = @opendir($repertory)) {
                while (false !== ($file = @readdir($handle))) {
                   if ($file != "." && $file != "..") {
                      if (is_file($file)) $prefix = ' (fichier)';
                      if (is_dir($file)) $prefix = ' (dossier)';
                      echo '- '.$file.$prefix.'<br>';
                   }
               }
             closedir($handle);
             } else echo CANT_LIST;
          }
          else {
             $contents = ftp_nlist($this->openftp, '.');
             var_dump($contents);
             foreach ($contents AS $file) {
                if (is_file($file)) $prefix = 'Type: fichier, nom: ';
                if (is_dir($file)) $prefix = 'Type: dossier, nom: ';
                echo $prefix.$file.'<br>';
             }
          }
       }
    }

  7. #27
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Parsage d'un fichier csv (séparateur paramétrable)

    possibilité de condiérer la première ligne comme en-tête...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    function parse_csv($file, $head = false, $sep = ';')
    {
       $content = file($file);
       $headers = NULL;
       if($head)
       {
          $headers = array_shift($content);
          $headers = explode($sep, $headers);
       }
       foreach($content as $k => $v)
       {
            $content[$k] = explode($sep, $v);
            if($head) foreach($content[$k] as $num_col => $value)
                $content[$k][$headers[$num_col]] = $value;
       }
       return $content;
    }
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  8. #28
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Création d'un chemin jusqu'à un répertoire (crée un répertoire et éventuellement ses dossiers parents) pour ceux qui ont pas PHP5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function recur_mkdir($path)
    {
       $path = preg_split('<([/\\])>', $path, -1, PREG_SPLIT_DELIM_CAPTURE)
       $curr = '';
       for($i = 0; $i < count($path); $i += 2)
       {
          $curr .= $path[$i].$path[$i+1];
          if(!is_dir($curr) && !mkdir($curr)) return false;
       }
       return true;
    }
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  9. #29
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    bon vu que je débute en php je ne peux que poster un simple code que j'avais poster sur mon site .

    tester si une DTD est valide via un script php (utilse pour le locale)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <html>
     
    <head>
     
    //la declaration
     
    <meta http-equiv="Content-Type" content="text/html; charset="iso-8859-1">
     
    <title>Validation DTD d'un document XML en PHP</title> </head>
     
    <?php
     
    //le tableau qui contiendra les erreurs
     
    $erreurs = array();
     
    //Pour la lecture et l'interpretation du fichier xml
     
    //remplacer "http://localhost/xml/......." par le nom de votre fichier XML a valider.
     
    //Attention : saisissez le chemin complet d'accès au fichier sur
     
    //le serveur web pour que cela fonctionne
     
    $parseur_dom = xmldocfile("http://localhost/xml/.......",DOMXML_LOAD_VALIDATING, $erreurs);
     
    //Le document est il bien formé?
     
    if(!is_objet($parseur_dom))
     
     {
       echo("Le document XML n'est pas bien formé!<br>");   die(print_r($error));}
     
    //le document est il valide selon sa DTD?
     
    if(!domxml_doc_validate($parseur_dom, $erreurs))
     
    {
     
     echo"Le document n'est pas valide<br>"; print_r($erreurs);}
     
    else
     
    {
     
        echo"Le document est bien formé et valide!<br>";}
     
    ?>
     
    <body>
     
    </body>
     
    </html>
    Par contre je cherche la meilleur façon de mettre en oeuvre un fil rss via un script php .
    Genre ce script qui me laisse perplex .(il n'est pas de moi):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php 
     
    # Configuration 
     
    $fichier_xml = "monfichier.xml";
    $nombre_limite = 20;
     
    # Affichage du Flux 
    $file = fopen($fichier_xml,"r"); 
    if ($file) { 
    while (!feof($file))$raw .= fread($file,32000); 
    fclose( $file ); 
     
    if(eregi("<item>(.*)</item>",$raw,$rawitems)){ 
    $items = explode("<item>", $rawitems[0]); 
    $nb = count($items); 
    $maximum = (($nb-1) < $nombre_limite) ? ($nb-1) : $nombre_limite; 
     
    for ($i=0;$i<$maximum;$i++) { 
    eregi("<title>(.*)</title>",$items[$i+1], $title); 
    eregi("<link>(.*)</link>",$items[$i+1], $link); 
    echo "- <a href=\"".$link[1]."\" target=\"_blank\">".$title[1]."</a><br />"; 
    } 
    } 
    } 
    ?>
    si quelqu'un a s une idée ???
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

  10. #30
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    Donc, voici une petite classe qui "limite" les possibilités de vol de session. J'utilise cette classe au sein d'un framework, et ait donc été obligé d'enlever pas mal de trucs afin de la rendre portable, j'éspère que je n'en ai pas trop enlevé

    Deux mécanismes sont utilisés :
    1) vérification de la durée de la session
    2) controle d'un ID transmis en même temps que l'ID de session, mais qui change à chaque hit. Pour les accès concurrents, un timeout de 10 secondes est utilisé.

    Je ne vais pas trop détailler le code, qui n'est d'ailleurs que très peu commenté... mais bon... utilisez le si ça peu vous aider, pour ma part je n'assure aucun support dessus.

    Ah je précise : dans cette version l'ID est changé au moment du "session_close()". Et il faut qu'il soit appelé avant que du contenu soit envoyé. Cela ne devrait pas poser de problème sur un site "bien construit"... mais ce n'est pas toujours le cas
    Dernier point : la classe est à utilisée comme singleton... débrouilez vous comme vous voulez, mais ne l'instanciez pas deux fois hein...


    Donc le mode d'emploi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // ouverture de la session
    $session = new k_session();
    $session->enabled();
    puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // fermeture de la session
    $session->close();
    -----------------------------------------

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    <?php
    class k_session
    {
        var $is_new = true;
        var $enabled = false;
     
        var $concurrency_timeout = 10 ;
        var $history_trigger_nb = 5 ;
        var $history_expire = 60 ;
     
        function k_session()
        {
            if( !empty( $_COOKIE[ session_name() ] ) )
            {
                $this->start();
            }
        }
     
        function start()
        {
            if( $this->enabled === true ) return;
            $this->enabled = true;
     
            $random_id = @ $_COOKIE[ 'K_SID' ];
            $start_time = time();
     
            session_start();
     
            $valid = true;
     
            // Expiration checking
            if( $valid and isset( $_SESSION['_k_time'] ) )
            {
                if( $_SESSION['_k_time'] + ini_get( 'session.gc_maxlifetime' ) < time() )
                {
                    $valid = false;
                }
            }
     
            // Random ID checking
            if( $valid and isset( $_SESSION[ '_k_random_id' ] ) )
            {
                if( $random_id === $_SESSION[ '_k_random_id' ][ 'current' ] )
                {
                    // Ok.
     
                }
                elseif( $time = @ $_SESSION[ '_k_random_id' ][ 'old' ][ $random_id ] )
                {
                    if( $time < $start_time )
                    {
                        $valid = false;
                    }
                }
                else
                {
                    $valid = false;
                }
     
                // Clean up the history
                if( count( $_SESSION[ '_k_random_id' ][ 'old' ] ) >= $this->history_trigger_nb )
                {
                    foreach( $_SESSION[ '_k_random_id' ][ 'old' ] as $idx => $time )
                    {
                        if( $time + $this->history_expire < $start_time )
                        {
                            unset( $_SESSION[ '_k_random_id' ][ 'old' ][ $idx ] );
                        }
                    }
                }
            }
     
            // Is not valid ?
            if( ! $valid )
            {
                $_COOKIE[ 'K_SID' ] = NULL;
                $_SESSION = array();
                session_destroy();
                session_id( md5( uniqid( mt_rand(), true ) ) );
                session_start();
            }
     
            // Set some vars
            $this->is_new = ( count( $_SESSION ) > 0 );
            $_SESSION['_k_time'] = time();
        }
     
        function destroy()
        {
            if( $this->enabled !== true ) return;
            $this->enabled = false;
            session_destroy();
     
            setcookie( 'K_SID', NULL, NULL, '/', ini_get( 'session.cookie_domain' ) );
            setcookie( session_name(), '', NULL, '/', ini_get( 'session.cookie_domain' ) );
        }
     
        function change_id()
        {
            if( $this->enabled !== true ) return;
     
            static $already_done = false;
            if( $already_done !== false ) return;
            $already_done = true;
     
            if( ! isset( $_SESSION[ '_k_random_id' ] ) )
                $_SESSION[ '_k_random_id' ] = array( 'current' => NULL, 'old' => array() );
     
            // Change the ID
     
            // Set to keep the current ID for some seconds
            $old_id = $_SESSION[ '_k_random_id' ][ 'current' ];
            if( $old_id !== NULL )
            {
                $_SESSION[ '_k_random_id' ][ 'old' ][ $old_id ] = time() + $this->concurrency_timeout ;
            }
     
            // Set the new ID
            $new_id = md5( uniqid( mt_rand(), true ) );
            $_SESSION[ '_k_random_id' ][ 'current' ] = $new_id;
     
            setcookie( 'K_SID', $new_id, NULL, '/', ini_get( 'session.cookie_domain' ) );
        }
     
        function close()
        {
            if( $this->enabled !== true ) return;
            $this->enabled = false;
     
            $this->change_id();
            session_write_close();
        }
    }
    ?>
    Google is watching you !

  11. #31
    Membre régulier

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 94
    Points : 120
    Points
    120
    Par défaut Génération d'un mot de passe
    La petite fonction ci-dessous le réalise mais offre quelques options qui ne sont pas dépourvues d'intérêt:
    * choix de la longueur du mot de passe (8 par défaut)
    * choix du type de lettres (majuscules ou minuscules)
    * Possibilité d'épeler le mot de passe (désactivé par défaut)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?
    function mkpassword($len=8, $min=true, $spell=false) {
       $ok_chars = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "Alpha", "Bravo", "Charlie", "Delta", "Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliet", "Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec", "Romeo", "Sierra", "Tango", "Uniform", "Victor", "Whisky", "X-ray", "Yankee", "Zulu");
       // Le tableau des caractères utilise le code phonétique international
       $password["string"] = "";
       $password["litteral"] = "";
       for ($i=0; $i<$len; $i  ) {
          $val = rand(0,count($ok_chars) - 1);
          $password["string"] .= $ok_chars[$val]{0} ;
          $password["litteral"] .= $ok_chars[$val]." ";
       }
       if ($min == true)
          $password["string"] = strtolower($password["string"]);
       $password["litteral"] = trim($password["litteral"]);
       if ($spell == true) {
          return $password;
       } else {
          return $password["string"];
       }
    }
    ?>
    La fonction peut être appelée de quatres manières différentes et renverra deux types de données:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?
    /* Cas 1: appel simple */
    $mypass = mkpassword();
    // Renvoit une chaîne de 8 caractères, chiffres et lettres minuscules
     
    /* Cas 2: choix de la longueur du mot de passe */
    $mypass = mkpassword(16);
    // renvoit une chaîne de 16 caractères, chiffres et lettres minuscules
     
    /* Cas 3: lettres majuscules */
    // *** Atention *** Il faut obligatoirement donner une longueur
    $mypass = mkpassword(8, false);
    // renvoit une chaîne de 8 caractères, chiffres et lettres majuscules
     
    /* Cas 4: Mot de passe épelé */
    $mypass = mkpassword(8, true, true);
    // renvoit un tableau contenant le mot de passe et son épelation
    echo $mypass["string"]." => ".$mypass["litteral"];

  12. #32
    Membre régulier Avatar de NiHiL
    Inscrit en
    Juin 2006
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 101
    Points : 108
    Points
    108
    Par défaut [SCRIPT] Clide, gestion de fichiers
    Bonjour,

    Je viens vous présenter un script que j'ai créé.
    Il s'agit d'un script en PHP qui remplace les pages (moches) générées par Apache dans une arborescence web destinée au stockage de fichiers, par une interface graphique beaucoup plus agréable et personnalisable.

    Fonction et caractéristiques :

    - Skin une arborescence http dédié au stockage de fichiers
    - Modifications & Intégration très simple du design
    - Player intégré pour les vidéos, les flashs, les flv, les mp3 les fichiers éditables et les images
    - Gestion des Exifs par le player
    - Affichage et Highlight de la sources des fichiers PHP dans le player
    - Module d'administration pour uploader/supprimer des fichiers et créer des dossiers
    - Possibilité de créer des comptes pour uploader
    - Possibilité de ne pas afficher des fichiers ou des répertoires
    - URLs semi réécrite pour une meilleure visualisation et un meilleur référencement sur les moteurs de recherche
    - Création d'avatar dynamique automatique via l'administration
    - xHTML 1.1 & CSS valid

    Démo
    Télécharger Clide

    Vos remarques sont les bienvenues

  13. #33
    Membre éprouvé
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Points : 1 118
    Points
    1 118
    Par défaut
    CALCUL DE DUREE EN PHP

    Voici le code d'un petit truc que j'avais bricolé car je galérais à calculer les dates...
    C'est un formulaire permettant la saisie de 2 Heures puis calcul la différence entre les deux quelques soit la difference entre les heures dans le temps

    Sur recommandation de Mr Kerod voici :

    [edit] : maj cause oubli de gestion de variable super-globale
    <?php
    /************************************************************************************
    * COde PHP montrant un peu la gestion des Dates en Heures en php *
    * notament le calcul entre deux heures indifferement dans le temps, *
    * l'heure 1 peut etre plus tôt ou plus tard que l'heure 2 et inversement, le script *
    * fera le calcul suivant un journée de 24h *
    * Notes : Le format utilisé est le format 24h avec hh:mm:ss *
    * mais on peut le changer facilement ;p *
    * *
    *@author =)C!S(=_SnaKemaN *
    *@version 1.0 *
    *@version 1.2
    + Contrôle des variable super-globale (php 4.3.10 oblige...) *
    ************************************************************************************/
    //Controle des valeurs, c'est certes aberrant mais c'est un exemple apres vous gerez
    //comme vous voulez
    if(isset($_POST['heure1']))
    $my_strh1=$_POST['heure1'];
    else
    $_POST['heure1'] = "00-00-00";

    if(isset(
    $_POST['heure2']))
    $my_strh2=$_POST['heure2'];
    else
    $_POST['heure2'] = "00-00-00";

    if(!isset(
    $h3))
    $h3 = 0;

    echo
    "<TABLE cellpadding=5 cellspacing=0 align=center border=1>";
    echo
    "<TR>";
    echo
    "<TD>";
    //note Changer le "action" pour avoir le nom de votre page ou se fera le traitement
    echo "<FORM method=\"POST\" name=\"mf\" action=\"./calcul_date.php\">";
    echo
    "<TABLE cellpadding=5 cellspacing=0 align=center border=1>";
    echo
    "<TR>";
    echo
    "<TD><strong>Heure 1:</strong></TD>";
    //Une heure est deja présaisie pour faciliter le test
    echo "<TD><INPUT type\"text\" name=\"heure1\" value=\"07:00:00\"></TD>";
    echo
    "</TR>";
    echo
    "<TR>";
    echo
    "<TD><strong>Heure 2 :</strong></TD>";
    //Une heure est deja présaisie pour faciliter le test
    echo "<TD><INPUT type\"text\" name=\"heure2\" value=\"17:00:00\"></TD>";
    echo
    "</TR>";
    echo
    "<TR>";
    echo
    "<TD colspan=2 align=center>";
    echo
    "<INPUT type=\"submit\" name=\"go\" value=\"Valider\">";
    echo
    "</TD>";
    echo
    "</TR>";
    echo
    "</TABLE>";
    echo
    "</FORM>";
    echo
    "</TD>";
    echo
    "<TD>";
    echo
    "<strong>Date et heure courante :</strong><br>";
    echo
    date('d/m/Y @ H:i:s',time());
    echo
    "<br>";
    echo
    "</TD>";
    echo
    "<TD>";
    $my_strh1=$_POST['heure1'];
    $my_strh2=$_POST['heure2'];
    //Conversion des heures en TimeStamp
    $h1=strtotime($my_strh1);
    $h2=strtotime($my_strh2);
    //Si la deuxieme heure est bien plus tard que la premiere
    if($h2 > $h1)
    {
    $h3=($h2-$h1);
    }
    //Si c'est la premiere heure qui est plus tard que la deuxieme
    if($h1 > $h2)
    {
    $h3=86400-($h1-$h2)-3600;
    }
    echo
    "<strong>Heure 1 :</strong>".$my_strh1."<br>";
    @
    $date1 = getdate($h1);
    //Controle du format de l'heure h 00 < hh < 24 ; 00 < mm < 59 ; 00 < ss < 59
    if($h1 == -1 ){
    echo
    "Heure_1 incorrecte ! <br>";
    }else{
    echo
    "Heure_1 OK <br>";

    echo
    "<strong>Heure 2 :</strong>".$my_strh2."<br>";
    //Controle du format de l'heure h 00 < hh < 24 ; 00 < mm < 59 ; 00 < ss < 59
    @$date2 = getdate($h2);
    if(
    $h2 == -1 ){
    echo
    "Heure_2 incorrecte ! <br>";
    }else{
    echo
    "Heure_2 OK <br>";

    echo
    "<strong>Valeur de h1 :</strong>".$h1."<br>";
    echo
    "<strong>Valeur de h2 :</strong>".$h2."<br>";
    $h3=$h3-3600;//Retrait d'une heure de decalage o_O
    echo "<strong>Valeur de h3 :</strong>".$h3."<br>";
    echo
    "<strong>Decalage heure :</strong>";
    //reconversion du timestamp en heure préformatée (ici H M)
    echo strftime("%H:%M",$h3);
    }
    //Fin if else heure 2
    }//Fin if else heure 1
    echo "<br>";
    echo
    "</TD>";
    //Et vouala ^_^
    echo "</TR>";
    echo
    "</TABLE>";
    ?>
    Colorez votre code PHP sur les forums grâce à Developpez.comBonne journée

    SKN
    C'est le signe d'un fou, qu'avoir honte d'apprendre
    Ubuntu 10.04 Lucid Lynx @home
    LE guide libre Linux & Ubuntu pour tous : Simple comme Ubuntu

  14. #34
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Une petite fonction sans prétentions mais qui me sert grandement

    Récupération rapide des variables de formulaire/sessions/Url/Cookies

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    /********************
          RECUP VAR
    *********************/
    /** 
    * Récupère les vars d'url, de session suivant les paramètres passés
    * get (resp. post) convertit en majuscules les valeurs alors que get_lower (resp.post_lower) recupere la valeur brute
    * @param $param Le type de récupération (get / post / session etc)
    * @param $nom_var Le nom de la variable à récupérer
    * @param $defaut_val La valeur par défaut de retour si la variable n'est pas définie
    * @return La valeur de la variable
    */
    function recup_var($param,$nom_var,$defaut_val)
    {
        switch($param)
        {
            case 'get':
                if (isset ($_GET[$nom_var])) $res=$_GET[$nom_var]; else $res=$defaut_val; break;
            case 'post':
                if (isset ($_POST[$nom_var])) $res=$_POST[$nom_var]; else $res=$defaut_val; break;
            case 'session':
                if (isset ($_SESSION[$nom_var])) $res=$_SESSION[$nom_var]; else $res=$defaut_val; break;
                   case 'cookie':
                if (isset ($_COOKIE[$nom_var])) $res=$_COOKIE[$nom_var]; else $res=$defaut_val; break;
        }
        return $res;
    }
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  15. #35
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juillet 2006
    Messages : 145
    Points : 74
    Points
    74
    Par défaut
    Avoir la date en Français

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    // Avoir la date en Français
    // <a href="mailto:are-no@emiloo.com">are-no@emiloo.com</a>
    // Ca marche comme la fonction date()
     
    function date_fr($format){
    if (func_num_args()=="2"):$horodatage=func_get_arg(1);else:$horodatage=time();endif;
    $date_fr = date($format, $horodatage);
    $traduction = array( 
    "Monday" => "Lundi", "Tuesday" => "Mardi", "Wednesday" => "Mercredi", "Thursday" => "Jeudi", "Friday" => "Vendredi", "Saturday" => "Samedi", "Sunday" => "Dimanche",
    "Mon" => "Lun", "Tue" => "Mar", "Wed" => "Mer", "Thu" => "Jeu", "Fri" => "Ven", "Sat" => "Sam", "Sun" => "Dim",
    "January" => "janvier", "February" => "fevrier", "March" => "mars", "April" => "avril", "May" => "mai", "June" => "juin", "July" => "juillet", "August" => "août", "September" => "septembre", "October" => "octobre", "November" => "novembre", "December" => "decembre",
    "Jan" => "jan", "Feb" => "fev", "Mar" => "mar", "Apr" => "avr", "May" => "mai", "Jun" => "jui", "Jul" => "juil", "Aug" => "aoû", "Sep" => "sep", "Oct" => "oct", "Nov" => "nov", "Dec" => "dec"
    );
    $date_fr = strtr($date_fr , $traduction); 
    return($date_fr);
    }

  16. #36
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    Comment envoyer plusieurs pièce jointe dans un mail ?
    Généralement il y a des tutoriaux pour un fichier mais plus c'est assez rare. Donc je me suis un peut pris la tête dessus mais j'ai finit par y arriver. Voici le code.
    Il faut créer un répertoire "tmpimg"
    1 - Upload de tous les fichiers
    2 - Contrôle les extensions.
    3 - Construction de l'entête pour le mail.
    4 - Envoy du mail
    5 - Suppresion des fichiers.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
     
    //PREMIER FICHIER.
    <? $nbFile = 3; ?>
    <html>
    <body>
    <form action="mail.php" method="POST" enctype="multipart/form-data" name="formulaire">
       <br><br>
       <table style="border:1px solid #000000" align="center">
         <tr>
           <td colspan="2" class="en-tete">Envoyer vos informations concernant le produit</td>
         </tr>
         <tr>
           <td colspan="2">
             <textarea name="message"></textarea>
           </td>
         </tr>
    <? for($i=0;$i<$nbFile;$i++){ ?>
         <tr>
           <td>Fichier image <? echo $i+1; ?> :</td>
           <td><input type="file" name="fichier<? echo $i; ?>" value="">
         </tr>
    <? } ?>
         <tr>
           <td align="center" colspan="2"><input type="submit" name="action" value="Envoyer"></td>
         </tr>
       </table>
       <input type="hidden" name="nbfile" value="<? echo $nbFile; ?>">
    </form>
    </body>
    </html>
     
    //FICHIER MAIL.
    //$filename : chemin du fichier.
    function get_extension($filename){
       $parts = explode('.',$filename);
       $last = count($parts) - 1;
       $ext = $parts[$last];
       return $ext;
    }
     
     
    if($_SERVER['REQUEST_METHOD'] == 'POST'){  //Détecte si c'est le post provient d'un POST.
      $isConform        = false;
      $attachment       = array();
      $arrNameFile      = array();
      $arrSource        = array();
      $arrExtension     = array();
      $arrType          = array();
      $arrInfoManu      = array();
      $arrExtensionCTRL = array('jpg','jpeg','bmp','psd','png','gif','tif','tiff');
      $boundary = "-----=".md5(uniqid(rand()));
      $extensionTemp    = '';
      $file             = '';
      $attachment       = '';
     
      $destinataire     = 'mail destinataire';
      $from             = 'votre mail';
      $reponse          = 'votre mail réponse';
      $sujet            = 'Votre sujet';
      $repertoire       = 'tmpimg'; //Répertoire ou ce trouverons les fichiers attachées.
      $fp               = null;
      $type             = 'text/plain';
      $message          = trim($_POST['message']);
     
      if($_POST['action'] == 'Envoyer'){
        for($i=0;$i<$_POST['nbfile'];$i++){ //Boucle sur le nombre de champs de type file
          $extensionTemp = get_extension($_FILES['fichier'.$i]['name']); // Récupère l'extension du fichier
          if($_FILES['fichier'.$i]['name'] != ''){  //Détecte si il y a eu un fichier d'envoyé.
            if(in_array(strtolower($extensionTemp), $arrExtensionCTRL)){ //Regarde si l'extension est valide.
              $arrNameFile[$i] = $_FILES['fichier'.$i]['name'];  //Nom du fichier
              $arrSource[$i]   = $_FILES['fichier'.$i]['tmp_name']; //Fichier temporaire :: contenu.
              $isConform = true;  //Il est donc conforme.
            }else{
              $isConform = false; //Il n'est pas conforme
            }
          }
        }
      }
     
      //Redirection dans le cas ou il y a une extension non valide.
      if($isConform == false){
        header('Location:page_erreur.php?erreur=true');
        exit();
      }
      //Boucle sur le nombre de fichier valide.
      for($i=0;$i<count($arrNameFile);$i++){
        copy($arrSource[$i], $repertoire.'/'.$arrNameFile[$i]); //Copie le fichier dans une zone précise du disque
        $arrExtension[$i] = strtolower(get_extension($arrNameFile[$i])); //récupère l'extension
        if($arrExtension[$i] == 'gif')                                     $arrType[$i] = 'image/gif';  //gif
        else if($arrExtension[$i] == 'bmp')                                $arrType[$i] = 'image/bmp';  //bmp
        else if($arrExtension[$i] == 'png')                                $arrType[$i] = 'image/png';  //png
        else if($arrExtension[$i] == 'psd')                                $arrType[$i] = 'image/psd';  //psd
        else if($arrExtension[$i] == 'jpg' || $arrExtension[$i] == 'jpeg') $arrType[$i] = 'image/jpeg'; //jpg
        else if($arrExtension[$i] == 'tif' || $arrExtension[$i] == 'tiff')  $arrType[$i] = 'image/tiff'; //tif
      }
     
    //----------------------------------
    // Construction de l'entête
    //----------------------------------
     
      $header = "MIME-Version: 1.0\r\n";
      $header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
      $header .= "\r\n";
     
      $msg = "Je vous informe que ceci est un message au format MIME 1.0.\r\n";
     
      $msg .= "--$boundary\r\n";
     
      $msg .= "Content-Type: $type; charset=\"iso-8859-1\"\r\n";
     
      $msg .= "Content-Transfer-Encoding:8bit\r\n";
      $msg .= "\r\n";
      $msg .="===================VOTRE MESSAGE===================\r\n\r\n";
      $msg .= $message;
      $msg .= "\r\n";
     
      for($i=0;$i<count($arrNameFile);$i++){
        $file = $repertoire.'/'.$arrNameFile[$i];
     
        $fp = fopen($file, 'rb');
        $attachment = fread($fp, filesize($file));
        fclose($fp);
        $attachment = chunk_split(base64_encode($attachment));
     
        $msg .= "--$boundary\r\n";
        $msg .= "Content-Type: ".$arrType[$i]."; \r";
        $msg .= "name=\"".$arrNameFile[$i]."\"\r\n";
        $msg .= "Content-Transfer-Encoding: base64\r\n";
        $msg .= "Content-Disposition: inline;\r\n filename=\"".$arrNameFile[$i]."\"\r\n";
        $msg .= $attachment . "\r\n";
     
        $msg .= "\r\n";
        $msg .= "\r\n\r\n";
        unlink($file);
      }
      $msg .= "--$boundary--\r\n";
      if(mail($destinataire, $sujet , $msg,"Reply-to: $reponse\r\nFrom: $from\r\n".$header)){
        echo "OK";
      }else{
        echo "ERREUR";
      }
    }
    ?>
    Je précise que le code date et qu'il est largement possible de le simplifier. Il semblerais qu'il ne fonctionne pas dans tous le cas de figure.

    ------------------------------------

    Comment réaliser un diaporama d'image?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <?php
    $arrFichier = array();
    $i=0;
    $directory='images/';
    // Ouvre un dossier bien connu, et liste tous les fichiers
    if (is_dir($directory)) {
      if($dh = opendir($directory)) {
        while (($file = readdir($dh)) !== false) {
         $extension = pathinfo($directory.$file);
          if($file!='..' && $file!='.' && strtolower($extension['extension'])=='jpg'){//N'affiche pas le . et ..
            $arrFichier[$i] = $file; //PLace les fichier dans un tableau
            $i++;
          }
        }
      }
      closedir($dh); //Il est vivement conseiller le repertoire pour toute autre opération sur le systeme de fichier.
    }
     
    //Initalisation.
    if($_GET['index']!=''){
      $index = $_GET['index'];
    }else{
      $index = 0;
    }
     
    //Affichage des liens précédent et suivant.
    if($index > 0){ //N'affiche pas le boutton au premier
      echo '<input onClick="window.location=\''.$_SERVER['SCRIPT_NAME'].'?index='.($index-1).'\'" type="button" name="precedent" value="<<">';
    }
     
    echo '<img src="'.$directory.'/'.$arrFichier[$index].'">'; //Affichage de l'image
     
    if($index < (count($arrFichier)-1)){ //N'affiche pas le boutton suivant lorsqu'il y a pas d'image apres
      echo '<input onClick="window.location=\''.$_SERVER['SCRIPT_NAME'].'?index='.($index+1).'\'" type="button" name="suivant" value=">>">';
    }
    ?>
    ---------------------------------------------------------
    Comment faire une pagination clés en main ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    <?php
    //FONCTION
    //fonction permettant de récupérer le nombre maximum d'image présente dans la table.
    function nbElement(){
      $rs = null;
      $data = array();
      $rs = mysql_unbuffered_query("SELECT COUNT(idimage) FROM image");
      $data = mysql_fetch_row($rs);
      return $data[0];
    }
     
     
    // INITALISATION
    $nbRec    = 10; // Nombre d'image qui s'affichera par page
    $position = 0; //Position de lecteur sur le jeux d'enregistrement(param1).
    $data     = array();
    $image    = array();
    $rs       = null;
    $nbData   = 0;
    $i        = 0;
    if($HTTP_GET_VARS['position']!='') $position = $HTTP_GET_VARS['position'];
    //Pas la peine d'exécuter x fois la même fonction je le fais passer en paramètre.
    if($HTTP_GET_VARS['nbelement']!='')$nbElement = $HTTP_GET_VARS['nbelement'];
    else $nbElement = nbElement();
     
    //OPERATION SQL
    $requette = "SELECT nom, width, height FROM image ORDER BY nom LIMIT ".$position.",".$nbRec;
    $rs = mysql_unbuffered_query($requette,$rsConnexion);
    while($data = mysql_fetch_row($rs)){
      $image[$i]['nom']   = $data[0];
      $image[$i]['width'] = $data[1];
      $image[$i][height]  = $data[2];
      $i++;
    }
    $nbData = $i //Récupère le nombre d'enregistrement.
    mysql_free_result($rs);
    unset($requette,$data,$i); //Pour taper un style! ;)
    mysql_close($rsConnexion); //Nous avons plus besoin de connexion
    ?>
    ...html
    <table>
      <tr>
        <td>
    <? // Pour le bouton précédent 
    if(($position-8)>=0){
    echo '<a href="'.$_SERVER['SCRIPT_NAME'].'?nbelement='.$nbElement.'&position='.($position+$nbRec)">Précédent</a> 
    }else{ 
      echo '&nbsp;';
    } 
    ?>
        </td>
        <td>&nbsp;</td>
        <td>
    <? //Pour le bouton suivant 
      if(($position+$nbRec)<=$nbElement){ 
        echo '<a href="'.$_SERVER['SCRIPT_NAME'].'?nbelement='.$nbElement.'&position='.($position+$nbRec)">Suivant</a> 
    }else{ 
      echo '&nbsp;';
    } 
    ?>  
        </td>
      </tr>
      <tr>
        <td>Nom</td>
        <td>Largeur</td>
        <td>Hauteur</td>
      </tr>
    <? for($i=0;$i<$nbData;$i++){ ?>
      <tr>
        <td><img height="<? echo $image[$i]['height']; ?>" width="<? echo $image[$i]['width']; ?>" src="<? echo $image[$i]['nom']; ?>"></td>
        <td><? echo $image[$i]['width']; ?></td>
        <td><? echo $image[$i]['height']; ?></td>
      </tr>
    <? } ?>
    </table>
    Pour ceux qui veulent des liens de type:
    [1-10][11-20][21-30] ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?for($i=0;$i<ceil($nbElement/$nbRec);$i++) {
        $sup = ($i+1)*$nbRec;
        $inf = ($sup-$nbRec)+1;
        if($position == ($i*$nbRec)) echo '<a href="#" style="color:#FF0000;">['.$inf.' - '.$sup.']</a>'.chr(13);
        else echo '<a href="'.$_SERVER['SCRIPT_NAME'].'?nbelement='.$nbElement.'&position='.($i*$nbRec).'">['.$inf.' - '.$sup.']</a>'.chr(13);
    }
    ?>
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  17. #37
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Dans le cadre d'un développement j'avais besoin de créer un système de *plug in*.
    Pour cela j'avais besoin de créer dans mes classes des points d'entrées utilisable par des classes externes que je connais pas encore.

    Donc le but est de faire cummuniquer une classe A avec une classe B, sans que A ne connaisse B.

    Pour cela j'ai fait une petite classe d'evenement. C'est surement améliorable, les vieux de la vieille me feront signe
    Mais bon sa remplit le but fixer dans le paragraphe du dessus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    class Evenement
    {
        //////////////////////////////////////////////////
        //    propriétés
        //////////////////////////////////////////////////
        protected $p_abonnes;
     
     
        public function __construct()
        {
            $this->p_abonnes = new ArrayObject();
        }
     
        public function attacherUnAbonne( $classe , $methode )
        {
            $this->p_abonnes[] = new Evenement_Abonne($classe , $methode);
        }
     
        public function detacherUnAbonne( $classe , $methode )
        {
            foreach( $this->p_abonnes as $cle => $abonne )
                if( $abonne->classe == $classe && $abonne->methode == $methode)
                    unset($this->p_abonnes[$cle]);
        }
     
        public function declencher()
        {
            $args = func_get_args();
     
            foreach( $this->p_abonnes as $abonne )
                if( method_exists($abonne->classe, $abonne->methode ) )
                    call_user_func_array(array($abonne->classe,$abonne->methode), &$args); 
        }
    }
     
    class Evenement_Abonne
    {
        //////////////////////////////////////////////////
        //    propriétés
        //////////////////////////////////////////////////
        protected $p_classe;
        protected $p_methode;
     
        //////////////////////////////////////////////////
        //    
        //////////////////////////////////////////////////
        public function __construct( $classe , $methode )
        {
            $this->p_classe     = $classe;
            $this->p_methode     = $methode;
        }
     
        //////////////////////////////////////////////////
        //
        //////////////////////////////////////////////////
        public function __get( $prop )
        {
            switch( $prop )
            {
                case "classe":
                    return $this->p_classe;
                break;
                case "methode":
                    return $this->p_methode;
                break;
            }
     
            throw new Exception("Propriété ".$prop." inconnue dans la classe ".(__CLASS__)."");
        }
     
        //////////////////////////////////////////////////
        //
        //////////////////////////////////////////////////
        public function __set( $prop , $value )
        {
            switch( $prop )
            {
                case "classe":
                    $this->p_classe = $value;
                break;
                case "methode":
                    $this->p_methode = $value;
                break;
                default:
                    throw new Exception("Propriété ".$prop." inconnue dans la classe ".(__CLASS__)."");
                break;
            }
        }
    }
    Exemple d'usage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    class Papa
    {
        public $lorsDeLappel; // levenement à declencher
     
        public function __construct()
        {
            $this->lorsDeLappel = new Evenement();
        }
     
        public function faireLAppel()
        {
            $Objet = new stdClass();
            var_dump($Objet);
            $this->lorsDeLappel->declencher($Objet);
        }
    }
     
    class Enfant
    {
        public $nom;
     
        public function repondrePresent( $Objet )
        {
            echo "<br /><strong>".$this->nom." à répondu</strong> : je suis ici.<br />";
            var_dump($Objet); // verification que l'objet reçu est bien envoyé par référence
        }
    }
     
    $Papa = new Papa();
    for( $i=0; $i< 15; $i++)
    {
        $Enfant = new Enfant();
        $Enfant->nom = $i;
        $Papa->lorsDeLappel->attacherUnAbonne( $Enfant , "repondrePresent" );
    }
     
    $Papa->faireLAppel();
    Enfin sa reste qu'un callback amélioré hein. Rien d'exceptionnel c'est extremement rudimentaire.

    bbye

  18. #38
    Membre averti
    Profil pro
    Ingénieur en électronique
    Inscrit en
    Septembre 2004
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 419
    Points : 333
    Points
    333
    Par défaut
    Comment se créé un espace membre ( sans verification de l'addresse email)

    conex.ini.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    mysql_connect('localhost','root','');
    mysql_select_db(nombase);
    ?>
    inscription.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    <?php
    //Avez vous envoyer le formulaire 
    if(isset($_POST['login']))
    	{
    	$login=$_POST["login"];
    	$pass=$_POST["pass"];
    	$pass2=$_POST["pass2"];
    	$nom=$_POST["nom"];
    	$nom=trim($nom);
    	$login=trim($login);
    	$pass=trim($pass);
    	$pass2=trim($pass2);
    	if($pass==$pass2)
    		{
    	$mail=$_POST["mail"];
    	$clogin=strlen($login);
    	$cpass=strlen($pass);
    	$cnom=strlen($nom);
    // on demande que le nom , login , et le passe fasse plus de 3 caractére 
    	if($clogin>3&$cpass>3&$cnom>3)
    		{
    		$pass=md5($pass);
    		$cpass=strlen($pass);
    //et qu'il fasse moin de 50 ou 30
    		if($clogin<30&$cpass<50&$cnom<30)
    			{ 
    			include("conex.ini.php");
    			$sql="SELECT id_client
                FROM `client`
                WHERE login = '$login'
                LIMIT 0,1";
                $res = mysql_query($sql)or exit(mysql_error());
                if( mysql_fetch_array($res) == false)
    				{
    				//inscription de 1 personne dans la base de donnée
    				$sql="INSERT INTO `client` (`login` , `pass` , `mail`,`nom` )
    				VALUES ('$login', '$pass' , '$mail' , '$nom' )";
    				mysql_query($sql);
    				echo"<script>alert(\"Vous pouvez vous conecter en tant que $login\");";
    				echo"window.location.replace(\"index.php?m=1\");\n";
    				echo"</script>";
    				}
    			else
    				{
    				echo"<script>alert(\"se login est deja utilisé\");";
    				echo"window.location.replace(\"./index.php\");\n";
    				echo"</script>";
    				}
    			}
    		else
    			{
    			echo"<script>alert(\"se login ou mot de passe est trop grand\");";
    			echo"window.location.replace(\"./index.php\");\n";
    			echo"</script>";
    			}
     
    		}
    	else
    		{
    		echo"<script>alert(\"Login ou mot de passe trop petit\");";
    		echo"window.location.replace(\"./index.php\");</script>";
    		}
    		}
    	else
    		{
    		echo"<script>alert(\"Vous devez confirmer le mot de passe avec le méme mot..\");";
    		echo"window.location.replace(\"./index.php\");</script>";
    		}
    	}
    else
    	{
    	$page="./inscription.php";
    	echo"<h2>Inscription</h2>";
    	echo"<table>";
    	echo"<form action=\"$page\" method=\"POST\">";
    	echo"<tr><td>Login</td><td><input type=\"text\"name=\"login\"></td></tr>";
    	echo"<tr><td>nom</td><td><input type=\"text\" name=\"nom\"></td></tr>";
    	echo"<tr><td>Pass</td><td><input type=\"password\" name=\"pass\"></td></tr>";
    	echo"<tr><td>Confirmation</td><td><input type=\"password\" name=\"pass2\"></td></tr>";
    	echo"<tr><td>email</td><td><input type=\"text\" name=\"mail\"></td></tr>";
    	echo"<tr><td></td><td><input type=\"submit\" value=\"s'inscrire\" style=\"width: 100%\"></form></td></tr></table>";
    	}
    ?>
    conection.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    <?php
    if(isset($_POST['login']))
    	{
    	//destruction des données précédentes 
    	session_start();
    	session_destroy();
    	//récuperation des valeurs
    	$login=trim($_POST['login']);
    	$pass=trim($_POST['pass']);
    	$pass=md5("$pass");
    	//requéte SQL pour avoir le n° de client de cette personne
    	include("conex.ini.php");
    	$sql="SELECT id_client
    	FROM `client`
    	WHERE login = '$login'AND pass = '$pass'";
    	$res = mysql_query($sql)or exit(mysql_error());
    	$client=0;
    	$nbclient=0;
    	while ($row = mysql_fetch_row($res))
    		{
    		for ($j = 0; $j < count($row); $j++)		
    			{
    			$client=$row[$j];
    			$nbclient++;
    			}
    		}
    	if($nbclient>1)
    		{
    		echo"<script>alert(\"il as plusieurs personnes sur se login\nvous devez contacter l'admin\");</script>";
    		}	
    	else
    		{
    		if($client=="0")
    			{
    			echo"<script>alert(\"Votre login ou pass est faux\");\n";
    			echo"window.location.replace(\"./index.php\");\n";
    			echo"</script>";
    			}
    		else
    		{
    			//Script de connection
    			session_start();
    			$_SESSION['client']=$client;
    			echo"<script>\n";
    			echo"window.location.replace(\"./p2.php\");\n";
    			echo"</script>";
    			}
    		}
    	}
    else
    	{
    	//formulaire d'inscription
    	$page="./conection.php";
    	echo"<h2>Identification</h2>";
    	echo"<table>";
    	echo"<form action=\"$page\" method=\"POST\">";
    	echo"<tr><td>Login</td><td><input type=\"text\"name=\"login\"></td></tr>";
    	echo"<tr><td>Pass</td><td><input type=\"password\" name=\"pass\"></td></tr>";
    	echo"<tr><td></td><td><input type=\"submit\" value=\"se conecter\" style=\"width: 100%\"></form></td></tr></table>";
    	}	
    ?>
    p2.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?
    session_start();
    if(isset($_SESSION['client']))
    {//ta page
    }
    ?>
    J'ai créé sa moi méme , si sa vous semble interessant a l'ajouter , le remanier ( ps : envoyer un mp , que j'améliore chez moi aussi)

    Je sait que $page=$_SERVER['PHP_SELF'];
    aurait été mieu .....
    Voila , je l'utilise et auccun probléme ( avec mes 3 visiteurs ...... )

  19. #39
    Membre averti
    Profil pro
    Ingénieur en électronique
    Inscrit en
    Septembre 2004
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 419
    Points : 333
    Points
    333
    Par défaut
    Livre d'or a quelques problémes , donc , je l'ai corriger .

    l'erreur <? je ne sait plus pourquoi faut plus l'utiliser .
    et $valeur a la place de $_POST['valeur']
    Et enfin , petit ajout de ma part , $mess=htmlspecialchars($mess); ( pour empécher les personnes qui conaissent le html de s'amuser a utiliser du javascript et du html)

    Les pages :

    écriture.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    <html><head><title>COMMENT CREER SON LIVRE D'OR</title>
    <META NAME="reply-to" CONTENT="ludo@informaticien.com">
    <META NAME="copyright" CONTENT="GIAMBIASI ludovic">
    <script>
    function test_form(mess, expe) {
       if(mess.value=="") { alert('Vous devez tapez un message !')
           mess.focus();return false }
    	 if(expe.value=="") { alert('Vous devez tapez votre nom !')
           expe.focus();return false }
       return true}
       // script permettant de tester si les champs de saisie sont bien remplis...
    </SCRIPT>
    </head>
    <body>
    <?php
    include ("connexion.php"); // ouverture de la connexion
    if(isset($_GET[test])) { // on regarde si la variable test = "ok"...
    							// si l'on n'a pas envoyé le formulaire cette variable n'est pas égale à ok
    							// dès que l'on a envoyé le formulaire, cette variable = ok donc 
    							// On enregistre le message dans la bd et on affiche
    							// l'information comme quoi le message a bien été enregistré...
       $Date  = date("Y/m/d"); // on récupère la date à laquelle le message est posté
       $mess=$_POST['mess'];
       $mess=htmlspecialchars($mess);
       $expe=$_POST['expe'];
       $query = "INSERT INTO livre(codelivre, message, expediteur, date)"; // cette requette dit
       $query .= " VALUES('', '$mess','$expe', '$Date')"; 				 				 // d'envoyer les éléments du formulaire dans la base
       $result = mysql_query($query); // on enregistre
       echo"<b>	<font face=\"Arial, Helvetica, sans-serif\" color=\"#3344cc\" size=\"3\">Votre message a &eacute;t&eacute; correctement enregistr&eacute;</font></b><br /><br />";
       }
    ?>
       <!-- Affichage du résultat... -->
     
    <font size="3"><a href="livre.php"><b>Lire les messages</b></a></font>
    <?php
    $test=$_GET['test']; // fin du premier test
    if ($test!="ok"){ // première ouverture du fichier ecriture... on remplie le formulaire
    // cette partie est cachée lorsque l'on a envoyé le message...
    ?>
    <b>	<font face="Arial, Helvetica, sans-serif" color="#3344cc" size="3">ECRIRE UN MESSAGE</font></b><br />
    <!-- notre formulaire... action : on retourne dans ce même fichier avec en plus la
    variable test qui prend la valeur ok et toutes les infos du formulaire...
    Le onSubmit sert à vérifier si le contenu du formulaire n'est pas vide... (voir function
    js appelée)
    -->
    <form method="post" onSubmit="return test_form(this.mess, this.expe)" action="ecriture.php?test=ok">
    	 		 		 <table cellpadding="0" cellspacing="0" width="100%">
    	 				 				<tr><td align="center" valign="top">
    	 				 								<font size="2" face="Arial, Helvetica, sans-serif" color="#3344cc"><b>Votre nom</b></font></td>
    	 				 			 			<td align="center" valign="top">
    													<input type="text" name="expe" size="30"><!-- on nomme expe le nom de l'expéditeur... -->
    													<font size="1" face="Arial, Helvetica, sans-serif;" color="#3344cc"><b>(pr&eacute;nom ou pseudo accept&eacute;)</b></font></td></tr>
    									<tr><td align="center" colspan="2">						 
    													<hr color="#3366cc"></td></tr>
    									<tr><td align="center" valign="top">
    	 				 								<font size="2" face="Arial, Helvetica, sans-serif" color="#3344cc"><b>Votre&nbsp;message :</b></font></td>
    	 				 			 			<td align="center" valign="top"><!-- on nomme mess le message de l'expéditeur... -->
    													<textarea cols="50" rows="10" name="mess"></textarea></td></tr>
    									<tr><td align="center" colspan="2">						 
    													<hr color="#3366cc"></td></tr>
    									<tr><td align="center" colspan="2">						 
    													<input type="submit" name="ok" value="&nbsp;Envoyer&nbsp;" style="cursor:hand;"></td></tr></table>
    </form>
     
    <?php
    }
    mysql_close(); // on ferme la connexion 
    ?>	
    </body>
    </html>
    livre.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    <html><head><title>COMMENT CREER SON LIVRE D'OR</title>
    <META NAME="reply-to" CONTENT="ludo@informaticien.com">
    <META NAME="copyright" CONTENT="GIAMBIASI ludovic">
     
    </head>
    <body>
    <!--
    ***********************************************************************
    Ce script est libre d'utilisation. Enjoy !
    ludovic giambiasi
    Pour tout problème...
    		 ludo@informaticien.com
    =========================================
    COMMENT CREER SON LIVRE D'OR ?
    Etape n°1 
    		Vous devez créer une table dans votre base de données...
    		#------
    		CREATE TABLE livre (
    		   codelivre int(11) NOT NULL auto_increment,
       			 message blob,
       			 expediteur varchar(100),
       			 date date,
       			 PRIMARY KEY (codelivre)
    			 );
    		#------
    		Vous pouvez ajouter des champs... (e-mail, nom, prénom...)
     
    Etape n°2		
    		Vous devez changer les paramètres de connexion à votre base dans
    		le fichier connexion.php	 
     
    Etape n°3
    		Adaptez le code du livre d'or au design de votre site.
    		le fichier livre.php (celui-ci) contient le code pour lire les messages du livre d'or.
    		le fichier ecriture.php permet l'écriture de messages...
    		C'est fini.
     
    Etape n°4
    		Compréhension du code source du livre d'or... vous
    		allez voir, ce n'est pas bien compliqué.
    ***********************************************************************		 
    -->
    <?php
    include("connexion.php"); // ouverture de la connexion
     
     $sql = mysql_query("select count(*) from livre"); // pour connaître le nombre de messages...
     $total = @mysql_fetch_array($sql);	 							 // ...présents dans le livre d'or.
     $resder = $total[0];															 // le résultat sera stocké dans la variable $resder
     $sql = mysql_query("select * from livre order by date desc"); // voici la requette permettant d'aller chercher les messages...
     																 			 // ...triés par date
    ?>
     
    <font face="arial" size="2">
    <a href="ecriture.php">Ecrire un message</a><hr /> 
    Nombre de messages : <b>
    <?php
    echo $resder; // on affiche le nombre de message 
    ?>
    </b>
    <br /><br />
    <!-- pour se repérer... -->
    <table width="600">
    			 <tr><td width="200" align="center">
    			 				 <b><font color="#3344cc" size="2" face="Arial, Helvetica, sans-serif;">
    							 Exp&eacute;diteur /<br /> Date </font></b></td>
    			 				 <td width="400" align="center">
    							 <b><font color="#3344cc" size="3" face="Arial, Helvetica, sans-serif;">
    							 Message</font></b></td></tr></table>
     
    <?php
    while($valeurlud = @mysql_fetch_array($sql)){ // début de la boucle qui se terminera à la fin des enregistrements
     
    list($a,$m,$j)=explode("-",$valeurlud["date"]); // gestion de la date : voir le tutoriel
    $date="$j-$m-$a";																// "gestion date" pour comprendre... 
    ?>
     			<table border="2" bordercolor=black width="600">
    						 <tr bordercolor=white>
    						 		 <td width="200" align=center bgcolor="white">
    								 		 <font color="#3344cc" size="2" face="Arial, Helvetica, sans-serif;">
    										 <b><?php echo $valeurlud["expediteur"]; ?></b></font>
    										 <br /><font color="#3344cc" size="2" face="Arial, Helvetica, sans-serif;">
    										 ( <?php echo $date; ?> )</font></td>
    	 							<td width="400" align=center bgcolor="#88ccee">
    										<font color="black" size="2" face="Arial, Helvetica, sans-serif;">
    										<?php echo $valeurlud["message"]; ?></font></td></tr></table>
    <?php
     } // on ferme la boucle 
    ?>
    </font><!-- on affiche l'expéditeur, la date et le message... -->
    <?php
    mysql_close(); // on ferme la connexion
    ?>
    </body>
    </html>
    et je savait pas qu'on pouvait inclure du html dans une boucle , s'est conceiller d'éviter ?
    Fichiers attachés Fichiers attachés

  20. #40
    Membre habitué
    Inscrit en
    Juillet 2003
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 196
    Points : 165
    Points
    165
    Par défaut class champs & formulaire
    Créez dynamiquement des champs et/ou formulaires.

    Refonte du code version 3 (update du 31/08/09)

Discussions similaires

  1. Page code source, mettez vos sources ici !
    Par gorgonite dans le forum Langages fonctionnels
    Réponses: 157
    Dernier message: 24/02/2013, 22h29
  2. Réponses: 21
    Dernier message: 18/11/2009, 16h08
  3. Réponses: 4
    Dernier message: 14/12/2008, 20h13
  4. Page Code Source, mettez vos codes ici
    Par Bovino dans le forum Contribuez
    Réponses: 8
    Dernier message: 05/12/2008, 12h11
  5. Ajouter des commentaire à vos codes-sources
    Par Zaki_SDwin dans le forum Contribuez
    Réponses: 6
    Dernier message: 17/06/2008, 00h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo