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

Langage Perl Discussion :

Supprimer ou ajouter le symbole # en début de chaîne


Sujet :

Langage Perl

  1. #1
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut Supprimer ou ajouter le symbole # en début de chaîne
    Bonjour

    Je suis actuellement entrain d'écrire un script qui permet de mettre via un simple bouton mon site en maintenance et inversement.

    Pour ce faire, j'utilise un fichier .htaccess:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    # This website is in maintenance
    RewriteCond %{REQUEST_URI} !/tcsh.css$
    RewriteCond %{REQUEST_URI} !/img/back.gif$
    RewriteCond %{REQUEST_URI} !/img/obsd.gif$
    RewriteCond %{REMOTE_ADDR} !^41\.201\.2\.120
    RewriteRule . http://www.oregnier.org/$ [R=302,L]
    Bien entendu, je connais la position de ces lignes dans le fichier mais celui-ci peut-être à tout moment modifié. Je ne préfère pas jouer sur les numéros de ligne.

    Concernant le script perl, j'ai insérer sur ma page un formulaire avec un bouton de type submit. Ce qui me gène le plus ce n'est pas d'ouvrir ou fermer le fichier ou en vérifier sa présence c'est plutôt de le modifier en ne connaissant pas la position de ces lignes.

    L'objectif c'est de placer ces lignes en commentaires pour activer le site internet et inversement pour le positionner en statut maintenance.

    Pour le moment, je me pose la question suivante, dois-je dupliquer ce fichier pour lui apporter les modifications ou peut-on le faire directement ?

    Merci de vos réponses

  2. #2
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Voici le contenu de mon .htaccess:
    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
     
    <-- code avant
     
    # Turn off directory listing
    options -indexes
     
    # Defines the default page
    DirectoryIndex index.php
     
    # The rewrite addresses
    Options +FollowSymlinks
    RewriteEngine on
    RewriteBase /
     
    # This website is in maintenance
    RewriteCond %{REQUEST_URI} !/tcsh.css$
    RewriteCond %{REQUEST_URI} !/img/back.gif$
    RewriteCond %{REQUEST_URI} !/img/obsd.gif$
    RewriteCond %{REMOTE_ADDR} !^10\.245\.4\.25
    RewriteRule . http://www.oregnier.org/$ [R=302,L]
     
    --> code après
    J'ai commencé par écrire du code:
    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
    # Chemin vers le fichier
    my $htaccess="/home/olivier/www/.htaccess";
     
    # On test si le fichier est présent, dans ce cas on l'ouvre
    open my ($in),'<', $htaccess or $msg="Pas moyen d'ouvrir $htaccess: $!";
        # On place le fichier dans un tableau de lignes
        my @lines = <$in>;
    close ($in);
     
    # On modifie la ligne 25
    $lines[25] .= "#RewriteCond %{REQUEST_URI} !/tcsh.css$\n";
     
    # On ouvre le fichier
    open my ($in),'>', $htaccess or $msg="Ce fichier $htaccess n'a pu être ouvert : $!";
       # On écrit le contenu
        print $htaccess @lines; # ---> ligne 62
    # On ferme le fichier
    close ($in);
    A l'exécution, j'obtiens ce messsage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Can't use string ("/home/olivier/www/.htaccess") as a symbol ref while "strict refs" in use at admin.cgi line 62.
    Un avis ?

    Merci

  3. #3
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Je ne comprends pas pourquoi je m'énerve tout seul

    Pouvez-vous s'il vous plaît me dire d'où vient le problème ? Ce message Can't use string, est omniprésent et je voudrais bien dormir cette nuit

    Merci

  4. #4
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    dois-je dupliquer ce fichier pour lui apporter les modifications ou peut-on le faire directement ?
    Tu dois le lire ligne par ligne et le recopier dans un nouveau fichier en modifiant les lignes que tu veux changer.
    Can't use string ("/home/olivier/www/.htaccess") as a symbol ref while "strict refs" in use at admin.cgi line 62.
    J'ai déjà eu des messages similaires pour la première partie (Can't use string ("/home/olivier/www/.htaccess") as a symbol ref while "strict refs" ) quand je donnais un FileHandle comme nom de fichier.
    Je ne connais pas les fichiers ".htaccess" mais peut-être que Perl ne peut pas l'ouvrir directement.

    Jasmine,

  5. #5
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    bon déjà je ne suis pas habitué a la syntaxe de ton open, je préfère de loin le basique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my $htaccess = "my/path";
    open (my $in, "<$htaccess") or die "mais euh !!"
    ensuite tu veux remplacer ta ligne 25 non ? donc utilises plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $lines[25] = "#RewriteCond %{REQUEST_URI} !/tcsh.css\$\n";
    au passage n'oublie pas d'échapper le $

    enfin après la modification, tu as un filehandle $in ouvert en écriture sur ton ficher, c'est lui que tu dois utiliser, pas ton nom de fichier. Ça dégagera ton erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    # On ouvre le fichier
    open ($in, ">$htaccess") or $msg="Ce fichier $htaccess n'a pu être ouvert : $!";
       # On écrit le contenu
        print $in @lines; # ---> ligne 62
    # On ferme le fichier
    close ($in);
    Et je ne pense pas que Perl aie un problème pour ouvrir les .htaccess, à moins que l'utilisateur qui lance le script n'en ai pas le droit au départ

  6. #6
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Tout d'abord merci à tous les deux pour vos réponses.

    $lines[25] = "#RewriteCond %{REQUEST_URI} !/tcsh.css\$\n";
    Cette ligne est parfaite. Je l'ai testé et fonctionne

    J'ai une question, je voudrais vérifier que les lignes de 25 à 30 commencent par le symbole #. Est-ce que ce début de test pourrait fonctionner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ($lines[25-30] =~ s/#\s+//g;)
    {
       print "Le site est en ligne\n";
    }
    else
    { 
       print "Le site est en maintenance\n";
    }
    Merci

  7. #7
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    je ne pense pas que cela fonctionne.

    déjà $lines[15-20] te donnera l'élément situé a la 5e position avant la fin ou undef si ta liste n'est pas assez grande

    la notation correcte est @list[1..3] mais ton test ne peut pas être appliqué tel quel.

    Jettes donc un coup d'œil aux fonctions grep et map

  8. #8
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Bonjour Gardyen
    Citation Envoyé par Gardyen Voir le message
    la notation correcte est @list[1..3] mais ton test ne peut pas être appliqué tel quel.
    Et pourquoi ?

    le premier test de mon script permet de savoir via un message affiché à l'écran si le site est en maintenance ou pas. Donc je dois vérifier si les lignes de 1 à 5 sont commentées, donc le test est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (@lines[1..5] =~ /^#/)
    {
      print "Le site est opérationnel";
    }
    else
    {
      print "Le site est en maintenance";
    }
    Qu'en penses-tu ? C'est le seulement le premier test

  9. #9
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    On ne peut pas appliquer une regexp à un ensemble de lignes, la sémantique serait difficile à définir ; est-ce que le test est concluant dès que l'un des élément de la liste correspond à la regexp ou tous les éléments ?? (par exemple)

    Du coup une regexp s'applique uniquement à un scalaire, ce qui signifie que ton test est sûrement équivalent à :
    où 5 est le nombre d'élément de ta liste...

    Ce que tu veux c'est vérifier si tous les éléments de la liste correspondent à la regexp, ce qui peut se faire par exemple avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sub all (&@) {my $block = shift; $block->($_) || return 0 for @_; 1 }
     
    if (all {m/^#/} @lines[1..5])
    --
    Jedaï

  10. #10
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 2
    Par défaut
    Olivier,
    as-tu la possibilité d'ajouter dans ton .htaccess un tag autour de ces lignes ?
    Si oui tu peux fonctionner autrement

    Disons que ton .htaccess ressemble maintenant à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    # This website is in maintenance
    #-#START#-#
    RewriteCond %{REQUEST_URI} !/tcsh.css$
    RewriteCond %{REQUEST_URI} !/img/back.gif$
    RewriteCond %{REQUEST_URI} !/img/obsd.gif$
    RewriteCond %{REMOTE_ADDR} !^41\.201\.2\.120
    RewriteRule . http://www.oregnier.org/$ [R=302,L]
    #-#STOP#-#
    Ce code va parcourir le fichier et se contenter d'afficher la ligne
    si nous ne sommes pas entre les tags.

    Une fois dans les tags,
    il va retirer les espaces et les # en début si $enable est vrai.
    il va mettre un '# ' si $disable est vrai.

    Ce code se contente d'afficher les modifications.
    Il reste à gérer la modification dans le code actuel, le plus propre
    étant de passer par File::Temp et d'inverser les fichiers ce qui permet
    en plus de se garder une copie de secours.

    Le gros du boulot est fait par les regexp dans le range operator
    /foo/ .. /bar/
    Il est vrai au premier foo rencontré et jusqu'au bar suivant.


    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
     
    #!/usr/bin/perl
    use warnings;
    use strict;
     
    my $enable  = 1;
    my $disable = not $enable;
     
    my $tag_start = '^#-#START#-#';
    my $tag_stop  = '^#-#STOP#-#';
     
    my $file = '/tmp/.htaccess';
    open my $fh, "<$file" or die "$file : $!";
    while(<$fh>) {
        if(/$tag_start/ .. /$tag_stop/) {
            if(not /$tag_start|$tag_stop/) {
                if($enable) {
                    s/^[# \t]+//;
                }
                elsif($disable) {
                    s/^[# \t]*/# /;
                }
                else {
                    die "cas non gere\n";
                }
            }
        }
        print;
    }
    close $fh;
    David "Sniper" Rigaudiere

  11. #11
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Bonjour David
    Citation Envoyé par drigaudiere Voir le message
    Olivier,
    as-tu la possibilité d'ajouter dans ton .htaccess un tag autour de ces lignes ?
    Non pas à ma connaissance mais je vais garder ton code dans un coin car il peut servir pour d'autres fichiers de configuration

    Bonjour jedai

    Ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sub all (&@) {my $block = shift; $block->($_) || return 0 for @_; 1 }
    fonctionne très bien.
    J'ai commencé par produire ce morceau de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    sub check_file ()
    {
    	open my ($in), '<', "$htaccess" or die "$htaccess : $!";
    	my @lines=<$in>;
    	    if (all {m/^#/} @lines[1..5])
    	    {
    	    	$value="Disabled";
    	    }
         	    else
        	    {
    		$value="Enabled"; (code pour supprimer le # => à faire)
    	    }
    	close ($in);
    }
    ensuite:
    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
    if ($cgi->param("submit"))
     
    {
    	open my $in, "<$htaccess" or die "$htaccess : $!";
    	my @lines=<$in>;
    	    if ($value eq "Disabled")
    	    {
    	    	print $in @lines[1..5] =~ s/^\#//;
    	    }
    	    else
    	    {
    	    	$value="Disabled";
    	    }
        close $in;
    }
    Lorsque $value est égale à Disabled, je voudrais supprimer le symbole # devant les 5 lignes mais malheureusement, cela ne fonctionne pas, il doit manquer quelque chose $value correspond au texte de mon bouton submit.

    Merci

  12. #12
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Bonjour Olivier,

    Comme te l'as dis Jedai, une regex ne s'aplique qu'à un scalaire... Utilise donc map :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my @int = map (s/^#.//, @lines[1..5]);
    print $in @int;
    Code non test, pas beaucoup de temps...

  13. #13
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Citation Envoyé par Woufeil Voir le message
    Bonjour Olivier,
    Comme te l'as dis Jedai, une regex ne s'aplique qu'à un scalaire...
    Effectivement
    Citation Envoyé par Woufeil Voir le message
    Utilise donc map :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my @int = map (s/^#.//, @lines[1..5]);
    print $in @int;
    Ok
    Citation Envoyé par Woufeil Voir le message
    Code non test, pas beaucoup de temps...
    Ne t'inquiète pas, ce n'est pas à toi de tester c'est mon rôle

    Merci

  14. #14
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Ne cherche même pas, c'est totalement faux

    J'étais fatigué... Voici la bonne commande (testé cette fois ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my @int = map ({s/^#+//; $_} @lines[1..5]);
    Désolé

  15. #15
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Bonjour Woufeil

    Bah ta commande ne fonctionne pas chez moi

    Voici le code entier:
    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
     
    my $htaccess="/home/olivier/www/core/test";
     
    if (! -e $htaccess)
    {
    	$msg="$htaccess doesn't seem to exist!";
    }
     
    sub all (&@) {my $block = shift; $block->($_) || return 0 for @_; 1 }
     
    open my ($in), '<', "$htaccess" or die "$htaccess : $!";
        my @lines=<$in>;
        if (all {m/^#/} @lines[1..5])
        {
        	$value="Disabled";
        }
        else
        {
    	$value="Enabled";
        }
    close ($in);
     
    if ($cgi->param("submit"))
    {
    	open my $in, '<', "$htaccess" or die "$htaccess : $!";
    	my @lines=<$in>;
                if ($value eq "Disabled")
               {
        	       my @int = map ({s/^#+//; $_} @lines[1..5]);
        	       print $in @int;
               }
               else
               {
                   # A faire
               }
            close ($in);
    }
    Une idée ?

    Merci

  16. #16
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Mon code supprime bien les # en début de chaîne, un petit print "$_\n" foreach (@int); te l'assurera... Par contre, j'avoue que je reste perplexe devant print $in @int; : $in est ouvert en lecture et tu essayes d'écrire dedans.... A toi de nous dire où tu veux écrire maintenant...

    €dit : Autre chose, tu veux modifier quelles lignes ? Parce que mon code utilise la même tranche que celle que tu as donné dans ton code : de la 2nde ligne à la 6ème... C'est bien ce que tu veux faire ? La première ligne de ton fichier est $lines[0].

  17. #17
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Effectivement, $in était placé en lecture mais je le place en écriture comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    open my $in, '>', "$htaccess" or die "$htaccess : $!";
    mon fichier est vide
    C'est bien ce que tu veux faire ?
    Oui Oui, le contenu de ce fichier est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    # This website is in maintenance
    #RewriteCond %{REMOTE_ADDR} !^12\.568\.5\.411
    #RewriteCond %{REQUEST_URI} !/tcsh.css$
    #RewriteCond %{REQUEST_URI} !/img/back.gif$
    #RewriteCond %{REQUEST_URI} !/img/obsd.gif$
    #RewriteRule . http://www.oregnier.org/$ [R=302,L]
    Merci pour ton coup de main

  18. #18
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Je ne comprend pas tout ce que tu fais... Sur le code que tu as posté, le fichier n'est ouvert qu'en lecture.

    Bon, quand tu ouvres ton fichier en écriture avec >, il va être écrasé, tu es au courant ?
    Sinon, si tu veux juste modifier les lignes de ton fichier (pas en ajouter ou en supprimer), utilise Tie:: File : c'est un module qui va te permettre de considérer ton fichier comme un tableau. Ainsi, quand tu feras une modification sur @lines, elle sera directement répercutée sur ton fichier. Cela te conviendrais-t-il ? Au moins pour la partie du code que tu as posté, le module serait très approprié. Il te simplifiera la vie je pense

  19. #19
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Citation Envoyé par Woufeil Voir le message
    Je ne comprend pas tout ce que tu fais... Sur le code que tu as posté, le fichier n'est ouvert qu'en lecture.
    Oui grosse erreur
    Citation Envoyé par Woufeil Voir le message
    Bon, quand tu ouvres ton fichier en écriture avec >, il va être écrasé, tu es au courant ?
    Maintenant oui
    Citation Envoyé par Woufeil Voir le message
    Sinon, si tu veux juste modifier les lignes de ton fichier (pas en ajouter ou en supprimer), utilise Tie:: File : c'est un module qui va te permettre de considérer ton fichier comme un tableau. Ainsi, quand tu feras une modification sur @lines, elle sera directement répercutée sur ton fichier.
    J'ai vu un exemple d'utilisation dans la FAQ et je pense que cela pourrait convenir.

    Merci

  20. #20
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Je viens de finir mon script ouf

    Il permet de placer mon site perso en maintenance sans devoir éditer le fichier .htaccess manuellement.

    Voici le contenu du fichier .htaccess par défaut (site opérationnel):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #RewriteCond %{REMOTE_ADDR} !^50\.225\.4\.150
    #RewriteCond %{REQUEST_URI} !/tcsh.css$
    #RewriteCond %{REQUEST_URI} !/img/back.gif$
    #RewriteCond %{REQUEST_URI} !/img/obsd.gif$
    #RewriteRule . http://www.oregnier.org/$ [R=302,L]
    A l'exécution, on obtient un affichage similaire à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The oregnier website is down for maintenance: [No]
    Pour mettre le site en maintenance, j'appuis sur le petit bouton cela supprime automatiquement les # et la valeur de celui-ci passe à [Yes] et inversement.
    Malgré que le script fonctionne, j'ai vraiment besoin de vos avis et sans doute d'une petite correction afin d'optimiser au maximum le code.

    Merki les gars

    PS: un grand merki à tous je mets résolu maus vous pouvez toujours me proposer d'éventuelles corrections.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Modifier, supprimer ou ajouter des champs
    Par dudu134 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 15/10/2007, 15h35
  2. Réponses: 3
    Dernier message: 16/07/2007, 16h16
  3. Réponses: 19
    Dernier message: 10/07/2007, 10h24
  4. Réponses: 5
    Dernier message: 17/08/2006, 15h45
  5. Ajout de colonnes en début de table ?
    Par joseph_p dans le forum Oracle
    Réponses: 14
    Dernier message: 16/08/2006, 16h56

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