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

Linux Discussion :

Passage d'argument bash/php


Sujet :

Linux

  1. #1
    Membre éprouvé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Par défaut Passage d'argument bash/php
    Bonjour,

    J'ai un petit script php qui va me prendre des informations d'une bdd (mySQL).
    Je teste cela avec un petit script bash.
    Ce script lui passe des arguments (élements d'un tableau) mais sauf que c'est éléments sont susceptibles de contenir des espace.
    Donc quand je passe des espaces en arguments à mon scripts php, il me troouve pas de réponse dans la bdd (forcément).
    Quand j'execute mon script php tout seul, je lui dit
    mais je peux pas lui dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php -f script ministère de la jeunesse et des sports
    enfin il me donne qqch mais pas la même chose
    je suis obligé de lui dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php -f script.php "ministère de la jeunesse et des sports"
    quand j'ai fait mon script bash
    je lui ai dit de me parcourir mon tableau (tab="ministère de la jeunesse et des sports" ...)
    mais sauf qu'il fait (en arrière plan) un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php -f script ministère de la jeunesse et des sports
    donc il me donne pas les bonnes informations


    pour simplifier ça, je voudrais savoir comment conserver (ou en ajouter de nouveaux) les guillemets.

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 821
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sliderman Voir le message
    Bonjour,

    J'ai un petit script php qui va me prendre des informations d'une bdd (mySQL).
    Je teste cela avec un petit script bash.
    Ce script lui passe des arguments (élements d'un tableau) mais sauf que c'est éléments sont susceptibles de contenir des espace.
    Donc quand je passe des espaces en arguments à mon scripts php, il me troouve pas de réponse dans la bdd (forcément).
    Quand j'execute mon script php tout seul, je lui dit
    mais je peux pas lui dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php -f script ministère de la jeunesse et des sports
    enfin il me donne qqch mais pas la même chose
    je suis obligé de lui dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php -f script.php "ministère de la jeunesse et des sports"
    quand j'ai fait mon script bash
    je lui ai dit de me parcourir mon tableau (tab="ministère de la jeunesse et des sports" ...)
    mais sauf qu'il fait (en arrière plan) un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php -f script ministère de la jeunesse et des sports
    donc il me donne pas les bonnes informations


    pour simplifier ça, je voudrais savoir comment conserver (ou en ajouter de nouveaux) les guillemets.
    Montre ton script...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre éprouvé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Par défaut
    voici le script
    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
    <?php
    define(HOST, "xxxx"); 
    define(USER, "xxxx");
    define(PASS, "xxxx");
    define(DATABASE, "xxxx");
     
    $licence = get_licence_zip(utf8_encode($argv[1]), utf8_encode($argv[2]));
     
    if (isset ($licence)) 
    {
    	echo $licence;
    }
     
    /** Permet le dossier de stockage des licences
    * @param Le nom du site
    * @param Le nom de l'entreprise (optionnel)
    * @return L'URL du fichier de licence */
    function get_licence_zip($arg1, $arg2) 
    {
    	$env=htmlspecialchars($arg1,ENT_QUOTES);
    	$comp=htmlspecialchars($arg2,ENT_QUOTES);
    	$to_return = null;
    	try 
    	{
    		$db = new PDO('mysql:host=' . HOST . ';dbname=' . DATABASE . '', USER, PASS);
    				if ($env == null && $comp == null) {
    			$to_return = "Cette commande s'utilise avec deux arguments entre guillements" . "\n";
    			$to_return .= "Par exemple, php -f function.php \"environnement\" \"site\" \n";
    		} 
    		else if ($comp == "") 
    		{
    			$query = 'SELECT `ID_SITE`,`guid`,`EXPIRE_DAYS` FROM `sky_ext_site` WHERE `SITE_NAME` = "' .
    			'' . $env . '"';
    			$result = $db->query($query)->fetchAll(PDO :: FETCH_ASSOC);
    			if ($result != "" || $result != null) 
    			{
    				if (count($result) == 0) 
    				{
    					echo "Aucune entreprise avec des licences correspondantes";
    					echo PHP_EOL;
    					$eval = get_evaluation_licence($env);
    					if (isset ($eval) && $eval != "") 
    					{
    						echo "Mais des licences d'évaluation ...";
    						echo PHP_EOL;
    						$to_return .= ($eval);
    					}
    				}
    				else if (count($result) == 1) 
    				{
    					$to_return .= "/srv/sites/extranet/skyline/components/com_extranet/licences/" .
    					"site/" . md5($result[0]["ID_SITE"]) . "/" . $result[0]["guid"] . ".zip";
    					$to_return .= PHP_EOL;
    					$to_return .= show_licence_type($result[0]["EXPIRE_DAYS"]);
    					$to_return .= PHP_EOL;
    				} 
    				else if (count($result) > 1) 
    				{
    					$queryE = 'SELECT `COMPANY` FROM `sky_ext_organization` WHERE `id` IN' .
    					'(SELECT `ID_ORG` FROM `sky_ext_site` WHERE `SITE_NAME` LIKE "%' . $env . '%")';
    					$resultE = $db->query($queryE)->fetchAll(PDO :: FETCH_ASSOC);
    					echo "Il existe plusieurs entreprises correspondantes a votre choix : ";
    					echo PHP_EOL;
    					foreach ($resultE as $row) 
    					{
    						foreach ($row as $key => $value) 
    						{
    							$to_return .= $value . "\n";
    						}
    					}
    				}
    			}
    		} 
    		else 
    		{
    			$query = 'SELECT `ID_SITE`,`guid`,`EXPIRE_DAYS` FROM `sky_ext_site` WHERE `SITE_NAME` = "' . $env . '" AND `ID_ORG` IN (SELECT `id`  FROM `sky_ext_organization` WHERE `COMPANY`' . ' = "' . $comp . '")';
    			$result = $db->query($query)->fetchAll(PDO :: FETCH_ASSOC);
    			$to_return .= "/srv/sites/extranet/skyline/components/com_extranet/licences/site/" . md5($result[0]["ID_SITE"]) . "/" . $result[0]["guid"] . ".zip";
    			$to_return .= "\n" . show_licence_type($result[0]["EXPIRE_DAYS"]);
    			$to_return .= PHP_EOL;
    		}
    	} 
    	catch (PDOException $e) 
    	{
    		die("Erreur ! : " . $e->getMessage() . "<br/>");
    	}
    	return $to_return;
    }
    /** Permet de savoir quel est le type licence (temporaire, permanent)
        * @param Un entier décrivant le temps d'expiration de la licence
        * @return L'explication */
    function show_licence_type($code) 
    {
    	$to_return = null;
    	if ($code != null || $code != "") 
    	{
    		$to_return = "Licence de ";
    		$to_return .= ($code);
    		$to_return .= " jours";
    	} 
    	else 
    	{
    		$to_return = "Licence illimitee";
    	}
    	return $to_return;
    }
    /** Permet de reprendre l'URL du fichier ZIP contenant la licence temporaire
     * @param Le nom de l'entreprise
     * @param La base de donnée
     */
    function get_evaluation_licence($arg) 
    {
    	$db = new PDO('mysql:host=' . HOST . ';dbname=' . DATABASE . '', USER, PASS);
    	$to_return = null;
    	$query = 'SELECT `ID_EVAL`,`GUID` FROM `sky_ext_eval_request` WHERE `COMPANY`="' . utf8_decode($arg) . '"';
    	$result = $db->query($query)->fetchAll(PDO :: FETCH_ASSOC);
    	$i = 1;
    	foreach ($result as $row) 
    	{
    		if ($row["GUID"] != "" && $row["ID_EVAL"] != "") 
    		{
    			$to_return .= "/srv/sites/extranet/skyline/components/com_extranet/licences/eval/" 
    				. md5($row["ID_EVAL"])  . "/" . $row["GUID"] . ".zip";
    			$to_return .= PHP_EOL;
    		}
    		else if (($row["GUID"] == "" && $row["ID_EVAL"] != "") || ($row["GUID"] != "" && $row["ID_EVAL"] == "")) 
    		{
    			$to_return .= "Dont " . $i . " non générée";
    			$to_return .= PHP_EOL;
    			$i++;
    		}
    	}
    	return $to_return;
    }
    ?>
    j'ai aussi fait un petit script bash qui le teste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/sh
     
    tab=("COMPANY" "myCompany" "5343" "ministère de la jeunesse et de sports")
    for i in ${!tab[*]}
    	do 
    		echo -n "--------------"
    		echo -n ${tab[$i]}
    		echo "--------------"
    		php -f function.php "${tab[$i]}"
    	done
    et c'est au niveau du passage d'argument "inistère ..." que ça pose problème

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 821
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sliderman Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/sh
     
    tab=("COMPANY" "myCompany" "5343" "ministère de la jeunesse et de sports")
    for i in ${!tab[*]}
    	do 
    		echo -n "--------------"
    		echo -n ${tab[$i]}
    		echo "--------------"
    		php -f function.php "${tab[$i]}"
    	done
    et c'est au niveau du passage d'argument "inistère ..." que ça pose problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/sh
    
    liste="COMPANY" "myCompany" "5343" "ministère de la jeunesse et de sports"
    for elem in $liste 
    	do 
    		echo -n "--------------"
    		echo -n $elem
    		echo "--------------"
    		php -f function.php "'$elem'"
    	done
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php -f function.php "\"$elem\""
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre éprouvé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Par défaut
    je voulais éviter ça mes d'accord

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 821
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sliderman Voir le message
    je voulais éviter ça mes d'accord
    On se demande pourquoi tu veux éviter d'utiliser des outils que t'offre le shell ???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. Passage d'argument JS dans une fonction PHP
    Par marcootz dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/06/2015, 17h26
  2. Script PHP, passage d'arguments depuis le navigateur
    Par cestymour dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 28/05/2014, 15h49
  3. [TASM] Passage d'argument à une macro
    Par sorry60 dans le forum Assembleur
    Réponses: 13
    Dernier message: 23/04/2005, 18h22
  4. [web] passage d'arguments à un CGI
    Par ma2th dans le forum Web
    Réponses: 4
    Dernier message: 20/08/2004, 12h18
  5. passage d'argument à la procédure main ()
    Par Zazeglu dans le forum C
    Réponses: 5
    Dernier message: 01/09/2003, 19h59

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