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

PHP & Base de données Discussion :

Fonction de désactivation d'un site [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut Fonction de désactivation d'un site
    j'ai une question , j'utilise une fonction pour desactiver un site web et rediriger l'utilisateur sur une page de maintenance.
    cette fonction est super simple et j'aimerai l'ameliorer car elle n'as pas un sens tres pratique dans son etat actuel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function redirect(){
    		$ouverture = 0; // 1 pour que le site soit ouvert, 0 pour que le site soit fermé
     
    if( $ouverture == 1) // Si le site est fermé
    {
        header("location: maintenance.html"); // Alors on va rediriger vers une page d'erreur.
    }
    	}
    ce serais bien de la passez dans un genre de formulaire pour l'activer et desactiver plus facilement que manuellement .
    le probleme c'est que je manque d'idée pour l'instant
    quelque suggestion serai la bienvenue pour en faire une belle grosse fonction pratique

  2. #2
    Membre expérimenté
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2006
    Messages : 215
    Par défaut
    Salut,

    bah tu peux crées un sous domaine, admin.monSite.org,
    et la tu mes un formulaire avec un mdp et deux bouton radio,
    (active/desactive) et tu pourrais meme ajouter un champ redirection qui s'activerai quand tu selectiones "desactiver"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    function redirect($etat, $url = './maintenance.html', $mdp)
    sahid

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    merci mais j'ai deja une administration avec des tas de truc
    quand tu me dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function redirect($etat, $url = './maintenance.html', $mdp)
    tu veux dire par la que sur les boutons radio je place $etat en 0 sur le 1er et en 1 sur le deuxieme ???

    je ne vois pas quoi a servirai la 3 em variables

  4. #4
    Membre confirmé Avatar de GarGamel55
    Profil pro
    Inscrit en
    Août 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Par défaut
    Sinon tu passe par un .htaccess

    tu prépare ta règle de redirection et tu mets un # devant, que tu retire quand tu veux bloquer l'accès à ton site.

    Simple et rapide
    a+

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    une petite precision pour le htaccess serai la bienvenue
    car j'ai deja fais la gestion de page d'erreur perso dans le fichier access et je doit encore ajouter pour transformer mes .php en .html .
    par contre pour ce que vous me proposer je n'ai pas d'idée sur la question .

  6. #6
    Membre éclairé Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Par défaut
    Si tu as déjà une page d'administration, tu dois avoir un fichier config.

    Il te suffit de placer à un ligne fixe (genre 40) ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Define("SITE_OUVERT", 1);
    Puis de faire un script qui édite ce fichier à partir d'un formulaire simple.

    Et puis dans chacune de tes pages tu mets un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(!defined("SITE_OUVERT")){
    //ta redirection
    }
    Et voilà, comme ça ta plus qu'à passer par ton administration pour tout contrôler en 2 clics.

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    oui exact j'ai une administration construite en procedurale (pas de POO) mais je n'ai pas de fichiers de configuration (sauf des inclusions) .
    je pense que je vais surement en creer un avec quelque directive , en ajoutant votre proposition de definir une constante pour fermé le site entre guillemet.
    Par contre cela est fort similaire a ma fonction citer ici plus haut .
    le formulaire peux avoir plusieurs definition mais laquel choisir pour une utilisation facile et réduire le risque de bug .
    doit je definir dans des checkbox le faite que si je clique sur "on" le site reste actif "tant que" je ne clique pas sur "off" et que si l'ont re-clique sur on tout redeviens actif .
    je suppose qu'il y as enormement de façon de proceder, lors de la creation de mon systeme de mail j'ai pas eu a y reflechir trop (c'etais cousus d'avance) mais pour une desactivation de site je me tracasse un peux plus car je ne l'ai jamais fais même si cela relève de la logique habituel de php

  8. #8
    Membre confirmé Avatar de GarGamel55
    Profil pro
    Inscrit en
    Août 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Par défaut
    Citation Envoyé par gtraxx
    une petite precision pour le htaccess serai la bienvenue
    .
    Voilà ce que je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Options +FollowSymlinks
    RewriteEngine on
     
    RewriteCond %{REMOTE_ADDR} !^xx\.x\.xxx\.xx$
    RewriteCond %{REQUEST_URI} !(travaux) [NC] 
    RewriteRule .* /travaux.php [NC]
    Dans un premier temps j'autorise uniquement mon ip pour pouvoir accéder à mon site
    Ensuite je redirige toutes autres ip à la page travaux quelques soit la page demandée.

    Ensuite je mets # devant les lignes quand j'ai fini et le site est réouvert

    Je trouve ça très pratique

    a+

  9. #9
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    merci je ne connaissais pas du tout ce script pour apache .
    le seule probleme c'est l'esprit pratique de desactivation pour le client qui va utiliser le site web mais je garde ton code qui peux me servir .
    ps: connais tu un excellent ouvrage recent sur apache 2 expliquant quelque htaccess sa m'interresse de m'y mettre aussi en plus de php ??

  10. #10
    Membre confirmé Avatar de GarGamel55
    Profil pro
    Inscrit en
    Août 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Par défaut
    Citation Envoyé par gtraxx
    merci je ne connaissais pas du tout ce script pour apache .
    le seule probleme c'est l'esprit pratique de desactivation pour le client qui va utiliser le site web mais je garde ton code qui peux me servir .
    ps: connais tu un excellent ouvrage recent sur apache 2 expliquant quelque htaccess sa m'interresse de m'y mettre aussi en plus de php ??
    Pas de quoi ...
    non je connais pas de bon bouquin, j'apprends tout avec les tutos en ligne et mes question sur developpez.net

    Bonne continuation

    a++

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Par défaut
    Pourquoi ne pas passer par une base de données ?
    Tu crées une tables de configuration de ton site avec deux champs, un config_nom et l'autre config_valeur. Cette table pourra ensuite te servir à beaucoup d'autres choses.

    Ou alors utiliser la création de répertoire (plus simple que les fichiers mais si tu veux avec des fichiers demande ).
    Dans ton administration, ça donnera un truc comme ça :

    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
    <?php
     
    $fermeture = intval($_GET['fermeture']);
     
    if ( $fermeture == 1 )
    {
        @mkdir('fermeture/');
    }
    elseif ( $fermeture == 0 )
    {
        @rmdir('fermeture/');
    }
    else
    {
        echo 'Fermer le site ?';
        echo '<br />';
        echo '<a href="?fermeture=1">Oui</a>  <a href="?fermeture=0">Non</a>';
    }
     
    ?>
    Et sur toutes tes pages tu utilises la fonction file_exists() pour vérifier si le répertoire existe ou pas.

  12. #12
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    Pensez vous que dans un premier temps ceci pourrai marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php  
    $fermeture = intval($_GET['fermeture']);   
    if ( $fermeture == 1 ) {  
    	header("location: maintenance.html");
    } 
    elseif ( $fermeture == 0 ) 
    { 
    	header("location: index.php");
    } 
     
    echo 'Fermer le site ?'; 
    echo '<br />'; 
    echo '<a href="?fermeture=1">Oui</a> <a href="?fermeture=0">Non</a>';
    ?>
    je ne sais pourquoi mais je detecte une erreur d'index sur le mots fermeture lorsque je demande a voir toute les erreurs (j'aime les codes parfait mdrr)
    j'ai repris votre idée et c'est vrai qu'utiliser une table sql ne serai pas un luxe lol .
    ce code serai pour l'administration, mais il faut bien entendu que la variable changeante soit sur toute les pages pour que cela prenne effect.
    par contre le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("location: index.php");
    n'est peut etre pas une bonne idée avez vous une suggestion pour le remplacer par quelque chose qui annulerai le 1er header

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Par défaut
    Citation Envoyé par gtraxx
    Pensez vous que dans un premier temps ceci pourrai marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php  
    $fermeture = intval($_GET['fermeture']);   
    if ( $fermeture == 1 ) {  
    	header("location: maintenance.html");
    } 
    elseif ( $fermeture == 0 ) 
    { 
    	header("location: index.php");
    } 
     
    echo 'Fermer le site ?'; 
    echo '<br />'; 
    echo '<a href="?fermeture=1">Oui</a> <a href="?fermeture=0">Non</a>';
    ?>
    Ça ne pourrait pas marcher du tout, il n'y a rien de logique dans ce code...

    je ne sais pourquoi mais je detecte une erreur d'index sur le mots fermeture lorsque je demande a voir toute les erreurs (j'aime les codes parfait mdrr)
    C'est normal, je demande une info sur une variable même si elle n'existe pas.
    On peut pas dire que ce soit vraiment une erreur et que ça rende le code imparfait... Affiche toutes les erreurs des scripts téléchargeables sur internet, tu auras des surprises...

    j'ai repris votre idée et c'est vrai qu'utiliser une table sql ne serai pas un luxe lol .
    Si ça t'intéresse, je peux t'expliquer comment faire, mais pas te le faire, il faut bien que tu progresses

    ce code serai pour l'administration, mais il faut bien entendu que la variable changeante soit sur toute les pages pour que cela prenne effect.
    Oui, c'est sûr.

    par contre le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("location: index.php");
    n'est peut etre pas une bonne idée avez vous une suggestion pour le remplacer par quelque chose qui annulerai le 1er header
    C'est même une très mauvaise idée... Je te déconseille même d'éxécutait ce script... A moins que tu veuilles faire planter internet.

    Si tu veux faire simple, tu n'as qu'à faire comme je t'ai expliqué...
    Pour que ça soit facilement administrable depuis un script, y'a pas 50 solutions.

  14. #14
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    ok , je vais faire avec les dossiers mais /fermeture correspondrai a tous le site web et le site est installer a la racine.
    mais bien entendu l'administration est dans un dossier , il faut que celle ci reste accessible .
    je sais que ma question est assez mais je n'utilise jamais les fonctions qui travail sur les dossiers nottement les 2 que vous avez proposer .
    je vais surement lire la documentation a ce sujet mais comment appeller le dossier racine ??? doit je remplacer /mondossier par _ROOT ??

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Par défaut
    Si ton administration est dans un dossier, tu mets ce code dedans :

    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
    <?php
     
    if ( $fermeture == 1 )
    {
        @mkdir('../fermeture/');
    }
    elseif ( $fermeture == 0 )
    {
        @rmdir('../fermeture/');
    }
    else
    {
        echo 'Fermer le site ?';
        echo '<br />';
        echo '<a href="?fermeture=1">Oui</a>  <a href="?fermeture=0">Non</a>';
    }
     
    ?>
    Ça créera le dossier fermeture/ à la racine du site (enfin, au dossier d'avant le dossier de l'administration en tout cas).

    Et sur les fichiers sur lesquels tu veux que le changement s'applique, tu mets ce code au tout début des scripts :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
     
    if ( file_exists('./fermeture/') )
    {
        header ("Location : maintenance.html");
    }
     
    ?>

  16. #16
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    merci pour ces precisions , je vais tester cela .
    encore desolé pour mon histoire de _root trop l'habitude de l'actionscript

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Par défaut
    Citation Envoyé par gtraxx
    merci pour ces precisions , je vais tester cela .
    encore desolé pour mon histoire de _root trop l'habitude de l'actionscript
    C'est ça que je me demandais d'où ça sortait

    En tous cas, tiens-nous au courant

  18. #18
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    j'ai quand même réessayer en passant avec une base de donnée mais je me suis emmeller :
    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
    $connect=mysql_connect($host, $user, $mp) or die("<b>Erreur de chargement :</b><br>".mysql_error().__LINE__);
    $sql = mysql_query("SELECT * FROM maint");
    $donnees = mysql_fetch_array($sql);
    $ouvert = $donnees['open'];
    $fermer = $donnees['close'];
    function redirect(){
                   // $ouverture = 0; // 1 pour que le site soit ouvert, 0 pour que le site soit fermé
     
    if( $ouverture == 1) // Si le site est fermé
    {
        header("location: maintenance.html"); // Alors on va rediriger vers une page d'erreur.
    }
            }
    redirect();
    if (isset($_POST[$ouvert])) {
    	$ouverture == $ouvert;
    }
    if (isset($_POST[$fermer])) {
    	$ouverture == $fermer;
    }
    print '<a href="?ouverture='.$ouvert.'">Oui</a> <a href="?ouverture='.$fermer.'">Non</a>';

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Par défaut
    N'essaye pas de mélanger les scripts...
    Tu te mélanges les pinceaux en voulant tout mélanger, ce script est illogique.

    Je te conseille de rester à ton niveau pour le moment plutôt que d'essayer d'aller trop vite...

    Si tu persistes à le faire par une base de données (et si tu es sûr de pouvoir le faire), je vais t'expliquer comment faire.

    Pour commencer, tu crées une table de configuration du site que tu nommeras config, par exemple (et pas maint, car une table juste pour ça c'est carrément inutile). Cette table aura deux champs, un config_nom et un config_valeur.

    Maintenant, nous allons entrer un paramètre de configuration du site dans cette table. Le paramètre d'ouverture/fermeture.

    Pour celà, nous allons ajouter une entrée à cette table que nous appellerons maintenance avec la valeur 0. Tu pourras ensuite ajouter d'autres entrées par la suite (pour la langue du site par exemple).

    Maintenant, il nous faut créer un script qui pourra modifier cette valeur.

    Dans une page de l'administration, tu ajoutes une ligne avec deux boutons radio. Ça va donner ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mettre le site en maintenance ? [Bouton radio 1 de valeur 0] Oui   [Bouton radio 2 de valeur 1] Non
    Il faut que tu fasses une condition en PHP pour chaque bouton radio pour que le bon statut soit sélectionne au chargement de la page.

    Si le bouton de validation est validé, tu executes une requête de type UPDATE pour mettre à jour l'entrée maintenance de ta table config.

  20. #20
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    j'ai pas tout suivis combien de champs m'a tu dit pour la table ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE TABLE `config` (
      `config_nom` varchar(20) NOT NULL,
      `config_valeur` varchar(20) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    désolé c'est pour etre sur de ce que je fais

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [GD] fonction createimagefromjpeg qui plante mon site
    Par dimainfo dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 13/07/2010, 13h10
  2. Réponses: 4
    Dernier message: 31/07/2009, 14h50
  3. [PHP-JS] fonction pour désactiver un bouton
    Par Titus94120 dans le forum Langage
    Réponses: 7
    Dernier message: 28/05/2008, 14h58
  4. [Tableaux] fonction file désactivée
    Par roadruner dans le forum Langage
    Réponses: 4
    Dernier message: 20/05/2007, 17h54

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