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

Windows Forms Discussion :

Script php et c#!


Sujet :

Windows Forms

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Par défaut Script php et c#!
    Bonjour à tous!

    Afin de "vaincre" un vilain cache proxy j'ai besoin dans ma démarche de récupérer une valeur contenue dans un fichier php!

    Pourquoi ne simplement pas le lire?
    Parce que j'ai aussi besoin de lui passer un argument, certes bidon, certes qui ne sert à rien sauf....éviter le cache du proxy(s'il y a une autre méthode je suis évidement preneur), donc je voudrais savoir s'il y a une méthode pour "lancer" un script php en lui passant un argument et en récupérant une variable!

    Pour le moment j'utilise ceci mais je ne sais comment récupérer un argument en sorti:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Process monProcessus = new Process();
    ProcessStartInfo mesInfos=new ProcessStartInfo();
     
    mesInfos.FileName=@"http://monSite/test.php";
    mesInfos.Arguments="azererterter";//argument au pif
     
    monProcessus.StartInfo = mesInfos;
    monProcessus.Start();

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8
    Par défaut
    Pourquoi ne pas faire ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Process monProcessus = new Process();
    ProcessStartInfo mesInfos=new ProcessStartInfo();
     
    mesInfos.FileName=@"http://monSite/test.php?azererterter";
    //mesInfos.Arguments="azererterter";//argument au pif
     
    monProcessus.StartInfo = mesInfos;
    monProcessus.Start();
    Il faut simplement récupérer l'argument avec un get en php

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Par défaut
    Merci de ton attention mais je ne penses pas que tu ais compris le but!

    L'argument "azererterter" ne sert à rien pour le php, dans mon logiciel c# je vais créer aléatoirement un argument de ce genre afin de passer outre le cache du proxy!

    Je n'ai pas besoin de récupérer cet argument ce que je veux récupérer c'est un argument qui sera passer par le php à l'appli c#!

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 156
    Par défaut
    Bonjour,

    On peut spécifier coté serveur dans l'entête HTTP le fait de ne pas mettre ne pas caché des résultats sur le proxy.
    Attention cette méthode ne marche pas avec tous les proxy.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date dans le passé
    ?>

    Plus d'infos ici:
    http://www.php.net/header

    J'espère avoir répondu à ta question.
    Bonne chance.

  5. #5
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    c'est un argument qui sera passer par le php à l'appli c#!
    Il me semble que PHP 5 supporte le .net remoting.

    Sinon, pour faire sans cela on lance une form de dialogue via un showdialog.
    Dans cette form de dialogue/attente :
    - On utilise un répertoire d'échange fixe (vide au départ).
    - Avant le lancement de la commande PHP (à l'activation de la forme), on vide ce répertoire,
    - Le PHP écrit en guise de réponse un fichier dans le répertoire d'échange (le nom de fichier donnant l'info de retour).
    - Le programme C# scrute via un timer armé au lancement de la commande PHP le répertoire d'échange,
    - le modalResult de la forme est positioné à Yes dès qu'un fichier apparait dans le repertoire d'échange (ou Cancel sur TimeOut)

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Par défaut
    Merci pour vos réponses!

    Graffito je suis partie dans ton sens mais ai quelques problèmes!

    Enfin un, je n'arrive bêtement pas à trouver comment scruter un dossier sur le serveur!

  7. #7
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Vous vous cassez la tete pour pas grand chose. La classe WeClient te permet de lancer une reqûete http et d'en récupérer le résultat.
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Par défaut
    Citation Envoyé par The_badger_man Voir le message
    Vous vous cassez la tete pour pas grand chose. La classe WeClient te permet de lancer une reqûete http et d'en récupérer le résultat.
    OK! avec WebClient j'ai pas trouvé , WebRequest semblait faire l'affaire de cette façon (tiré de msdn):

    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
     
    Random rd=new Random();
                    int theChiffre=rd.Next(1,99999999);
     
                    WebRequest request = WebRequest.Create("http://www.monsite.fr//retourIdentifiantXml.php?" + theChiffre.ToString());
                    // If required by the server, set the credentials.
                    request.Credentials = CredentialCache.DefaultCredentials;
                    // Get the response.
                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                    //// Display the status.
                    //Console.WriteLine(response.StatusDescription);
                    // Get the stream containing content returned by the server.
                    Stream dataStream = response.GetResponseStream();
                    // Open the stream using a StreamReader for easy access.
                    StreamReader reader = new StreamReader(dataStream);
                    // Read the content.
                    string responseFromServer = reader.ReadToEnd();
                    //// Display the content.
                    //Console.WriteLine(responseFromServer);
                    MessageBox.Show(responseFromServer);
                    // Cleanup the streams and the response.
                    reader.Close();
                    dataStream.Close();
                    response.Close();
     
     
                    client.DownloadFile(cheminSurServeur + responseFromServer + fichier, cheminsurpclocal + responseFromServer+fichier);
    Problème avec la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    j'ai essayé ça à la place mais ça ne passe pas non plus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Stream dataStream = request.GetRequestStream();
    mon php ressemble à çac'est peut être de ce côté que ça pêche)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    return unchiffrevariable
    ?>

  9. #9
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Par défaut
    T'as essayé de mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
        echo unchiffrevariable;
    ?>
    ?

  10. #10
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Quel est le message d'erreur ?

    Pourquoi as tu deux "//" dans ton adresse ?
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Par défaut
    Changement l'erreur se produit maintenant sur cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    client.DownloadFile(cheminSurServeur + responseFromServer + fichier, cheminsurpclocal + responseFromServer+fichier);
    l'erreur nbe vient pas de la ligne en elle même mais du fait que responseFromServer égal string.Empty.

    edit :


    Résolu , voila le 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    Random rd=new Random();
                    int theChiffre=rd.Next(1,99999999);
     
                    WebRequest request = WebRequest.Create(@"http://www.monsite.fr/test.php?" + theChiffre.ToString());
     
     
     WebResponse response = request.GetResponse();
                    StreamReader sr = null;
                    string responseFromServer="";
                      try
                      {
                          // response.GetResponseStream() renvoi un objet
                          // de type Stream identifiant le flux de données
                          // entre le client (ce programme) et le serveur
                          sr = new StreamReader(response.GetResponseStream());
                          // lit le flux jusqu'à sa fin
                          // (fermeture de la connexion automatique)
                          responseFromServer= sr.ReadToEnd();
                      }
                      catch
                      {
     
                      }
                      finally
                      {
                          // dans le cas d'une execution sans erreur
                          // on prends soin de fermer l'objet de lecture
                          // cela facilite le travail du CLR
                          if (sr != null)
                              sr.Close();
                      }
     
    client.DownloadFile(cheminsurserveur + responseFromServer + partiedunomconstantducfichier, cheminsurpclocal + responseFromServer + partiedunomconstantducfichier);

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

Discussions similaires

  1. [MySQL] Optimisation de scripts PHP/MySQL
    Par DgG dans le forum PHP & Base de données
    Réponses: 368
    Dernier message: 20/11/2013, 18h59
  2. Quel est le meilleur script PHP de portail (CMS) ?
    Par Lana.Bauer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 187
    Dernier message: 18/10/2012, 07h45
  3. Exécution script php
    Par devmat dans le forum Linux
    Réponses: 11
    Dernier message: 22/04/2007, 11h14
  4. Pb d'execution de requete avec un script php
    Par ythierrin dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/08/2003, 14h34

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