[php] gestion des flux
Fermé
naimsoufiane
Messages postés
85
Date d'inscription
dimanche 29 octobre 2006
Statut
Membre
Dernière intervention
10 mai 2013
-
27 août 2007 à 12:41
naimsoufiane Messages postés 85 Date d'inscription dimanche 29 octobre 2006 Statut Membre Dernière intervention 10 mai 2013 - 30 août 2007 à 22:12
naimsoufiane Messages postés 85 Date d'inscription dimanche 29 octobre 2006 Statut Membre Dernière intervention 10 mai 2013 - 30 août 2007 à 22:12
salut tout le monde,
je travail actuellement sur un sujet traitant les flux en php, mon problème est la transmission des flux d'une page php à une autre.
En effet lorsque je travail sur un flux dans une page j'ai besion d'utilisé ce même flux mais dans une autre page. j'ai essayé de le transmettre dans une formulaire ou même de le déclaré comme varianble de session mais sans résultat
je vous remercie pour vos réponse :-)
je travail actuellement sur un sujet traitant les flux en php, mon problème est la transmission des flux d'une page php à une autre.
En effet lorsque je travail sur un flux dans une page j'ai besion d'utilisé ce même flux mais dans une autre page. j'ai essayé de le transmettre dans une formulaire ou même de le déclaré comme varianble de session mais sans résultat
je vous remercie pour vos réponse :-)
A voir également:
- [php] gestion des flux
- Easy php - Télécharger - Divers Web & Internet
- Logiciel gestion photo gratuit - Guide
- Capture flux - Télécharger - TV & Vidéo
- Logiciel gestion cave à vin gratuit excel - Télécharger - Cuisine & Gastronomie
- Gestion des fichiers - Télécharger - Gestion de fichiers
9 réponses
Bonjour,
Je ne comprends pas trop ton besoin. Tu parle de "Flux", mais qu'appelle tu par cette expresion exactement ? Personnellement j'utilise Flux pour les flux sur fichier (ouverture de fichier, écriture, etc).
Si tu parle de flux sur fichier, dans ce cas tu n'as pas intéret à garder ouvert un tel flux entre deux pages, mais plutot de fermer et re-ouvrir dans la deuxieme page. C'est faisable, mais je te le déconseille fortement car super dégeu ^^ et sujet à présenter des risques.
Par contre, si tu parle du fait de garde en "mémoire" des données d'une page à l'autre, dans ce cas là tu as plusieurs possibilités.
1- La première comme tu l'as dit est de passer ces données via un formulaire, en méthode GET ou POST selon ton besoin.
2- La seconde est l'écriture dans un fichier de ces données, puis lecture sur une autre page. (AUCUN INTERET)
3- La troisième est d'utiliser les sessions.
Qqs explications pour la première solution, rien de mieux qu'un exemple. Ex, si tu souhaite transmettre un message d'une page à l'autre :
Ta page de formulaire - nommée 'form.php' :
Et ta page de résultat dans laquelle tu affichera le message entré - nommé 'result.php' :
Dans cet exemple, tu passe ton parametre à la requete HTTP avec la méthod POST. Il te faut donc "checker" via le tableau global $_POST dans ta page de résultat. Tu peux aussi modifier pour utiliser la méthod GET en modifiant la valeur du parametre METHOD de ton formulaire, et en checkant le tableau $_GET à la place de $_POST.
Pour ce qui est de la solution 3, passage par la session, c'est on ne peut plus simple, mais c'est utilisable de maniere différente. Par exemple si tu connais déjà la valeur d'une variable dans une page, que tu souhaite la sauvée en session afin de l'utiliser dans une autre page. Par exemple, si l'on reprends l'exemple ci-dessus, en modifiant la page de résulat comme suit :
En gras : session_start(); est à mettre au début de toutes les pages ou tu souhaite utiliser tes variables de session. Ces variables sont stockées dans le tableau global $_SESSION. Pour supprimer une variable de ce tableau tu peux utilser : unset($_SESSION['maVariable']);
Ainsi, toujours dans cet exemple, si tu construit la page nommée 'page3.php' de la facon suivante :
Je ne comprends pas trop ton besoin. Tu parle de "Flux", mais qu'appelle tu par cette expresion exactement ? Personnellement j'utilise Flux pour les flux sur fichier (ouverture de fichier, écriture, etc).
Si tu parle de flux sur fichier, dans ce cas tu n'as pas intéret à garder ouvert un tel flux entre deux pages, mais plutot de fermer et re-ouvrir dans la deuxieme page. C'est faisable, mais je te le déconseille fortement car super dégeu ^^ et sujet à présenter des risques.
Par contre, si tu parle du fait de garde en "mémoire" des données d'une page à l'autre, dans ce cas là tu as plusieurs possibilités.
1- La première comme tu l'as dit est de passer ces données via un formulaire, en méthode GET ou POST selon ton besoin.
2- La seconde est l'écriture dans un fichier de ces données, puis lecture sur une autre page. (AUCUN INTERET)
3- La troisième est d'utiliser les sessions.
Qqs explications pour la première solution, rien de mieux qu'un exemple. Ex, si tu souhaite transmettre un message d'une page à l'autre :
Ta page de formulaire - nommée 'form.php' :
<?php <form action="result.php" method="POST"> <input type="text" name="message" id="message" value="" /> <input type="submit" name="submit" value="soumettre" /> </form> ?>
Et ta page de résultat dans laquelle tu affichera le message entré - nommé 'result.php' :
<?php if ( isset($_POST['message']) && !empty($_POST['message']) ){ // --- Write user message echo "<BR>Message transmit : ".$_POST['message']; } else { echo "<BR>Aucun message transmit"; } ?>
Dans cet exemple, tu passe ton parametre à la requete HTTP avec la méthod POST. Il te faut donc "checker" via le tableau global $_POST dans ta page de résultat. Tu peux aussi modifier pour utiliser la méthod GET en modifiant la valeur du parametre METHOD de ton formulaire, et en checkant le tableau $_GET à la place de $_POST.
Pour ce qui est de la solution 3, passage par la session, c'est on ne peut plus simple, mais c'est utilisable de maniere différente. Par exemple si tu connais déjà la valeur d'une variable dans une page, que tu souhaite la sauvée en session afin de l'utiliser dans une autre page. Par exemple, si l'on reprends l'exemple ci-dessus, en modifiant la page de résulat comme suit :
<?php // --- start session if not already started @session_start(); if ( isset($_POST['message']) && !empty($_POST['message']) ){ // --- Write user message echo "<BR>Message transmit : ".$_POST['message']; // --- Save the message in session : $_SESSION['message'] = $_POST['message']; // --- Sample : echo "<BR><A href='page3.php'>Exemple avec session</A>": } else { echo "<BR>Aucun message transmit"; } ?>
En gras : session_start(); est à mettre au début de toutes les pages ou tu souhaite utiliser tes variables de session. Ces variables sont stockées dans le tableau global $_SESSION. Pour supprimer une variable de ce tableau tu peux utilser : unset($_SESSION['maVariable']);
Ainsi, toujours dans cet exemple, si tu construit la page nommée 'page3.php' de la facon suivante :
<?php @session_start(); echo "<BR>Mon message en session : ".$_SESSION['message']; ?> Tu pourra visualiser le message stocké en session. Voilà, je ne sais pas quel est ton niveau et si ces explications te seront utilies ? Bon courage.
naimsoufiane
Messages postés
85
Date d'inscription
dimanche 29 octobre 2006
Statut
Membre
Dernière intervention
10 mai 2013
9
27 août 2007 à 19:56
27 août 2007 à 19:56
Merci bien pour votre réponse cher ami,
Bon je vais essayer d’expliquer mieux mon problème, j’utilise le php pour exécuter des commandes sur un serveur SSH
Dans la première page1.php je doit exécuter une première commande :
$stream = ssh2_exec($connection, $cmd);
Puis lire les résultats de l’exécution
$output= stream_get_contents($stream);
Tout juste après je doit demander à l’utilisateur de me fournir des données qui vont s’exécuter à la suite et qui utilise le même flux $stream(pour cela j’utilise une formulaire)
Donc je doit récupérer ces données à partir de la formulaire et les utiliser dans la page2.php :
fwrite($stream, "a\n");
sleep(1);
$output1 = stream_get_contents($stream);
Le problème est que lorsque je passe de la première page à la deuxième je perds mon flux $stream
Bon je vais essayer d’expliquer mieux mon problème, j’utilise le php pour exécuter des commandes sur un serveur SSH
Dans la première page1.php je doit exécuter une première commande :
$stream = ssh2_exec($connection, $cmd);
Puis lire les résultats de l’exécution
$output= stream_get_contents($stream);
Tout juste après je doit demander à l’utilisateur de me fournir des données qui vont s’exécuter à la suite et qui utilise le même flux $stream(pour cela j’utilise une formulaire)
Donc je doit récupérer ces données à partir de la formulaire et les utiliser dans la page2.php :
fwrite($stream, "a\n");
sleep(1);
$output1 = stream_get_contents($stream);
Le problème est que lorsque je passe de la première page à la deuxième je perds mon flux $stream
naimsoufiane
Messages postés
85
Date d'inscription
dimanche 29 octobre 2006
Statut
Membre
Dernière intervention
10 mai 2013
9
29 août 2007 à 11:38
29 août 2007 à 11:38
:-(
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
29 août 2007 à 13:38
29 août 2007 à 13:38
Re,
Désolé pour l'attente je n'avais pas vu la réponse :)
Ton problème vient du fait, je pense, que ton formulaire ne permet pas de passer des données de type flux. C'est pourquoi tu le perds sur la page deux.
Pourrais tu mettre le code de ton formulaire s'il te plait afin de voir quel type d'input tu as utilisé. Car si tu utilisé un input de type TEXT pour passer ton flux d'une page à l'autre, c'est normal que ca ne fonctionne pas :)
Pour éviter ce pb, je te conseille plutot d'opter pour une solution via la session, dans laquelle tu peux sauvegarder (normalement il me semble), n'importe quel type de variable (donc j'imagine qu'un flux tu peux aussi).
Désolé pour l'attente je n'avais pas vu la réponse :)
Ton problème vient du fait, je pense, que ton formulaire ne permet pas de passer des données de type flux. C'est pourquoi tu le perds sur la page deux.
Pourrais tu mettre le code de ton formulaire s'il te plait afin de voir quel type d'input tu as utilisé. Car si tu utilisé un input de type TEXT pour passer ton flux d'une page à l'autre, c'est normal que ca ne fonctionne pas :)
Pour éviter ce pb, je te conseille plutot d'opter pour une solution via la session, dans laquelle tu peux sauvegarder (normalement il me semble), n'importe quel type de variable (donc j'imagine qu'un flux tu peux aussi).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
naimsoufiane
Messages postés
85
Date d'inscription
dimanche 29 octobre 2006
Statut
Membre
Dernière intervention
10 mai 2013
9
29 août 2007 à 18:04
29 août 2007 à 18:04
MERCI POUR LA REPONSE CHER AMI
effectivement je fait passer mon flux par un zone de texte masqué(hidden). qu'on a l'utilisatiion de session j'ai déja déclaré mon variable comme variable de session mais le résultat est la même
effectivement je fait passer mon flux par un zone de texte masqué(hidden). qu'on a l'utilisatiion de session j'ai déja déclaré mon variable comme variable de session mais le résultat est la même
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
29 août 2007 à 18:09
29 août 2007 à 18:09
Met moi la partie concernée de ton code, je regarderai ca demain (si j'y pense ^^)
naimsoufiane
Messages postés
85
Date d'inscription
dimanche 29 octobre 2006
Statut
Membre
Dernière intervention
10 mai 2013
9
29 août 2007 à 19:22
29 août 2007 à 19:22
<?php
require_once("session_begin.php");
require_once('compilator.php');
require_once('connect.php');
////////////////////////////
if($save_flag==0) print"<script>alert(\"vous devez enregistrer votre document avant de le compiler \")</script>";
else{
//nom du document à compiler
$compile="./".$doc_flag.".exe";
// Execution d'une commande
$stream = ssh2_exec($connection, $compile,1);
//stream_set_blocking($stream, true);
sleep(3);
// lire le résultat de l'exécution
print"<table width=\"900\" border=\"0\" bgcolor=\"#99FF00\">";
print"<tr>";
print"<td>";
print"</td>";
if((strstr($zone_contents,"scanf"))or (strstr($zone_contents,"getchar"))or (strstr($zone_contents,"gets"))or (strstr($zone_contents,"fgets"))){
print"<form method=\"get\" action=\"communication.php\">";
print"<input name=\"donnee\" type=\"text\" />";
print"<select name=\"s\">";
print"<OPTION VALUE=\"enseignant\">Enseignant</OPTION>";
print"<OPTION VALUE=\"enseignant1\">bhd</OPTION>";
print"<OPTION VALUE=\"enseignant2\">Enseignant</OPTION>";
print"<OPTION VALUE=\"enseignant3\">Enseignant</OPTION>";
print"<OPTION VALUE=\"enseignant4\">Enseignant</OPTION>";
print"<OPTION VALUE=\"enseignant5\">Enseignant</OPTION>";
print"</select>";
print"<input type=\"submit\" name=\"ok\"/>";
print"</form>";
}
print"<td>";
print"<b>";
$output= stream_get_contents($stream);
$resultat=explode("\n",$output);
foreach($resultat as $val){
print"$val<br>";
}
print"</b>";
print"</td>";
print"</tr>";
print"</table>";
?>
Merci d 'avance
require_once("session_begin.php");
require_once('compilator.php');
require_once('connect.php');
////////////////////////////
if($save_flag==0) print"<script>alert(\"vous devez enregistrer votre document avant de le compiler \")</script>";
else{
//nom du document à compiler
$compile="./".$doc_flag.".exe";
// Execution d'une commande
$stream = ssh2_exec($connection, $compile,1);
//stream_set_blocking($stream, true);
sleep(3);
// lire le résultat de l'exécution
print"<table width=\"900\" border=\"0\" bgcolor=\"#99FF00\">";
print"<tr>";
print"<td>";
print"</td>";
if((strstr($zone_contents,"scanf"))or (strstr($zone_contents,"getchar"))or (strstr($zone_contents,"gets"))or (strstr($zone_contents,"fgets"))){
print"<form method=\"get\" action=\"communication.php\">";
print"<input name=\"donnee\" type=\"text\" />";
print"<select name=\"s\">";
print"<OPTION VALUE=\"enseignant\">Enseignant</OPTION>";
print"<OPTION VALUE=\"enseignant1\">bhd</OPTION>";
print"<OPTION VALUE=\"enseignant2\">Enseignant</OPTION>";
print"<OPTION VALUE=\"enseignant3\">Enseignant</OPTION>";
print"<OPTION VALUE=\"enseignant4\">Enseignant</OPTION>";
print"<OPTION VALUE=\"enseignant5\">Enseignant</OPTION>";
print"</select>";
print"<input type=\"submit\" name=\"ok\"/>";
print"</form>";
}
print"<td>";
print"<b>";
$output= stream_get_contents($stream);
$resultat=explode("\n",$output);
foreach($resultat as $val){
print"$val<br>";
}
print"</b>";
print"</td>";
print"</tr>";
print"</table>";
?>
Merci d 'avance
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
30 août 2007 à 11:56
30 août 2007 à 11:56
Si je comprends bien ca c'est ta première page, dans laquelle tu te connecte via ssh sur un pc, tu exec une commande, etc..
Pourrais tu mettre également le contenu de "session_begin.php" et "connect.php", ainsi que la page 2 ?
Merci.
PS : Met ton code entre balise code (< code></ code> sans les espaces)
Pourrais tu mettre également le contenu de "session_begin.php" et "connect.php", ainsi que la page 2 ?
Merci.
PS : Met ton code entre balise code (< code></ code> sans les espaces)
naimsoufiane
Messages postés
85
Date d'inscription
dimanche 29 octobre 2006
Statut
Membre
Dernière intervention
10 mai 2013
9
30 août 2007 à 22:12
30 août 2007 à 22:12
désolé pour le retard
je vous remecie beaucoup pour vous éfforts
session_begin.php <?php session_start(); // tableau contenant les noms e tout les fichier réalisé par l'utilisateur lors de la session if(!session_is_registered("nom_fich")){ $_SESSION["nom_fich"] = array(); // Drapeau determine si le doc est enregistré ou non $save_flag=0; session_register("save_flag"); // Drapeau sur le nom du document courant $doc_flag=""; session_register("doc_flag"); // Drapeau sur la zone du texte $zone_flag=0; session_register("zone_flag"); // contenu de la zone de texte $zone_contents=""; session_register("zone_contents"); $stream=""; session_register("stream"); } ?>
conect.php <?php require_once('config.php'); // connection à la machine serveur $connection = ssh2_connect($machine, 22); if(!$connection) die("connection échoué"); // authentification par login /mot de passe ssh2_auth_password($connection,$user,$pass)or die("connection échoué"); ?>
config.php <?php $url="aaaaaaaaaa"; $machine="zzzzzzzzzzzzzz"; $user="zzzzzzzzzzz"; $pass="eeeeeeeeee"; ?>
je vous remecie beaucoup pour vous éfforts