Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Alors j'ai repris la tuto de grafikart panneau d'option personaliser

https://www.grafikart.fr/tutoriels/wordpress/option-panel-wordpress-358

Ou je teste le opendir dans ce code ça fonctionne bien même en ligne !! j'avais peur que non mai si.

Le problème n'est donc pas de savoir si ça fonctionne ou non !!

                                <th scope="row">
                                    <label style="line-height:0;" for="bodybg">Ajouter un Background perso</label>
                                </th>
                                <td>
                                    <select name="options[bodybg]" id="bodybg">
                                        <?php

                                        $themeroot = get_theme_root();
                                        $dirname =  $themeroot. '/neec_mmo/upload/background';
                                        $dir = @ opendir($dirname); //on masque l'erreur si le chemin est incorect
                                        $nb_fichier = 0;
                                        if($dir !== false) {
                                        while(false!==($file = readdir($dir))) {
                                            //$file != '.' && $file != '..' && !is_dir($dirname.$file) && $file != 'index.html' && $file != 'index.php' 
                                            if($file != "." && $file != ".." && stristr($file,'.jpg') || stristr($file,'.png')){
                                                //on affiche que des images ici que des .png et .jpg
                                                $nb_fichier++;   

                                                if($file == get_option('bodybg')){ 

                                                ?>
                                                   <option value="<?php  echo $file; ?>" selected><?php echo get_option('bodybg'); ?></option>

                                                <?php

                                                    }else{

                                                ?>
                                                    <option value="<?php  echo $file; ?>"><?php echo $file; ?></option>

                                                <?php

                                                }

                                            }
                                        }
                                        closedir($dir);
                                        }   

                                        ?>

                                    </select>
                                    <p class="description" id="tagline-description">
                                        <?php 
                                            if($dirname =! $dir){ 

                                                echo 'Erreur Dossier mal renseigner'; 

                                            }else{ 

                                            ?>

                                            Actuelement réglé sur : <strong style="color:#3b8416;"><?php echo get_option('bodybg','default.png'); ?></strong> | Il y a <strong style="color:#b94a48;"><?php echo $nb_fichier; ?></strong> fichier(s) dans ce dossier
                                            <?php 

                                            } 

                                            ?>
                                    </p> 
                                </td>
                                <td>
                            </tr> 

Ce que je veux

Je voudrais bien savoir si c'est bien sécuritaire !! le but est d'avoir un background dynamique donc jusque la ça fonctionne mai je suis un peut peureux au niveau de la sécurité.

voila aussi le traitement du formulaire :

        if(!wp_verify_nonce($_POST['pannel_noncename'], 'my-bg')){

            die('<div id="message" class="error notice"><p>Problème survenue Token non valid</p></div>');

        }
        foreach($_POST['options'] as $name =>$value){
            if(empty($value)){

                delete_option($name);

            }else{

                update_option($name, $value);

            }

        } echo '<div id="message" class="updated notice">

             <p>Sauvgardée avec succès</p>

            </div>';   
    }

Remerciments

Donc voila le sript fonctionne bein etc... pas de probleme a ce niveau !! mai comme di c'est la secu qui m'inquiète toujours, donc si vous avez des idée je vous en remercie :)

Aucune réponse