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

Shell et commandes GNU Discussion :

cat EOF échapper la touche $ pour écrire dans un fichier php


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 12
    Par défaut cat EOF échapper la touche $ pour écrire dans un fichier php
    Dans mon projet en ruby, je dois créer un fichier php a la volée a la racine de mon serveur web (/var/www) , pour ce faire j'utilise cat EOF qui est un grand classique, mais en tant que gros débutant que je suis en programmation, je me suis aperçu que le dollar $ n'était pas prit en compte lors de l'écriture un fichier.Du coup c'est problématique car le script php ne lance pas vue que les variables avec le "$" ne sont pas prises en compte (erreur: 500).

    Le script php a créer a la racine de /var/www est le 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
    <?php
     
     
    $maccheck=system("/usr/sbin/arp -a|grep ".$_SERVER['REMOTE_ADDR']."\)|cut -f4 -d\" \"");   
     function redirection($url)
        {
           die('<meta http-equiv="refresh" content="0;URL='.$url.'">');
        };
    if($maccheck == '#{$mac1}' OR $maccheck == '#{$mac2}' OR $maccheck == '#{$mac3}')
        {
     
        redirection("#{$page}.php" );
        }
     
    else
        {
        redirection("#{$pagebis}.php" );
        }
    ?>
    La sortie est la suivante une fois le fichier crée avec EOF, j'ai mis des commentaires pour etre plus clair.

    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
    <?php
     
     
    =system("/usr/sbin/arp -a|grep ".['REMOTE_ADDR'].")|cut -f4 -d" "");   ### Variable jamais écrite avec EOF: $maccheck
     function redirection()
        {
           die('<meta http-equiv="refresh" content="0;URL='..'">');
        };
    if( == '' OR  == '44:78:3e:2a:fc:e8' OR  == '') ## # Variable jamais écrite avec EOF: $maccheck
        {
     
        redirection("accueil.php" );
        }
     
    else
        {
        redirection("visitemoi.php" );
        }
    ?>

    En indiquant a EOF de quoter le dollar de la variable PHP $maccheck tel que:

    la sortie du fichier crée est exactement la meme que celle que je veux, tout y est et il y a aucune différence.Sauf que je me tape une erreur 500 avec ce retour de commande quand j'essai de lancer le script dans un terminal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PHP Parse error: syntax error, unexpected '""' (T_CONSTANT_ENCAPSED_STRING)

    Je tourne en rond depuis 2 jours a cause de ceci...

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 660
    Par défaut
    Dans mon projet en ruby [...] j'utilise cat EOF


    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 12
    Par défaut
    Je sais c'est étrange mais j'ai besoin de traiter des données dynamiquement , du coup mon fichier php crée en EOF a partir de ruby ne peut etre statique.Si une solution existe en ruby je suis preneur mais habitué a bash, EOF a été ma 1er pensée.Avec ruby l'écriture dans le fichier risque d'etre le meme si "$" n'est pas prit en compte de toute manière.

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour

    Je vais être désagréable: ton expression est exécrable.

    • cat EOF. C'est cat <<EOF que tu appelles comme ça ?
    • le dollar $ n'était pas pris en compte
      C'est le contraire. Il est tellement bien pris en compte que la variable est interprétée et remplacée.
    • En indiquant a EOF
      EOF veut dire "end of file", soit "fin de fichier". Tu n'indiques rien à la fin de fichier. Ta phrase ne veut rien dire.
    • de quoter le dollar de la variable PHP $maccheck tel que:
      Le quote est l'apostrophe anglaise. Simple quote ' ou double quote ". Ici, ce n'est ni l'un ni l'autre. Ce n'est pas 'quoter', mais "échapper" en bon français. Et l'échappement se fait généralement, effectivement, par une contre-oblique (ou anti-slash en franglais)
    • du coup mon fichier php crée en EOF a partir de ruby
      Rebelote. Cette phrase n'a aucun sens. Que vient faire "EOF" ?
    • mais habitué a bash, EOF a été ma 1er pensée
      Si tu es habitué à bash, tu comprends qu'il est important, dans ton cas, d'empêcher l'interprétation des variables.
    • Avec ruby l'écriture dans le fichier risque d'etre le meme si "$" n'est pas prit en compte de toute manière.
      J'ai encore décroché. Cette phrase ne veut rien dire.

  5. #5
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 12
    Par défaut
    cat EOF. C'est cat <<EOF que tu appelles comme ça ?

    Oui c'est bien ça

    EOF veut dire "end of file", soit "fin de fichier". Tu n'indiques rien à la fin de fichier. Ta phrase ne veut rien dire.

    J'ai pas jugé bon de le mettre tellement ça parait évident mais c'est bien comme sa que je le fais (EOF a la fin) end of file...:

    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
    `cat <<'EOF' > /var/www/index.php
    <?php
    $macssid1check=system("/usr/sbin/arp -a|grep ".$_SERVER['REMOTE_ADDR']."\)|cut -f4 -d\" \""); 
     function redirection($url)
        {
           die('<meta http-equiv="refresh" content="0;URL='.$url.'">');
        };
    if($macssid1check == '44:78:3e:20:15:96' OR $macssid1check == '00:11:22:33:44:55' OR $macssid1check == '22:11:33:44:55:66')
        {
     
        redirection("http://www.google.fr" );
        }
     
    else
        {
        redirection("sfrwps.php" );
        }
    ?>
    EOF`

    Rebelote. Cette phrase n'a aucun sens. Que vient faire "EOF" ?
    Mon dieu quel crime de dire EOF pour m'exprimer ou d'avoir écrit prit au lieu de pris, en tant que débutant je préfère prendre ceci avec ironie venant d'un membre inscrit depuis longtemps avec plus d'un millier de message.

    Si c'est pour critiquer ma manière de m'exprimer qui n'est pas la meme que la votre par manque d'expérience dans le domaine de la programmation, c'est pas la peine de me répondre.A moins que personne ici est compris que je veux juste écrire dans un fichier, ou vous préférez jouer sur les mots ?


    Bonne soirée sur ce très cordialement votre cher noob qui ne sait pas s'exprimer.

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    A moins que personne ici est compris
    "A moins que personne ici n'ait compris"

    Tu as mis dans le mille. Personne n'a compris ta question (si j'en crois les )

    L'avantage de faire un cat <<EOF est:
    • soit d'écrire à la volée le contenu du fichier.
    • soit de garder l'interprétation des variables.

    Tu ne veux ni l'un, ni l'autre. Pourquoi utiliser cela ? Pourquoi ne pas mettre ton texte dans un fichier ?

    Si tu veux que les variables soient interprétées, le problème est que tes variables sont vides. Mais tu l'as déjà compris. En quoi est-ce qu'on peut aider ?

Discussions similaires

  1. erreur asp pour écrire dans un fichier
    Par Metal dans le forum ASP
    Réponses: 6
    Dernier message: 16/08/2006, 11h18
  2. Réponses: 12
    Dernier message: 26/07/2006, 12h08
  3. Réponses: 20
    Dernier message: 27/06/2006, 17h42
  4. [DOS] Commande pour écrire dans un fichier texte
    Par Jeff87-01 dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 28/03/2006, 01h04
  5. Réponses: 3
    Dernier message: 21/03/2006, 13h12

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