PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Forum Général PHP » post formulaire sur 1 PC => alerte sur un autre PC » 12-09-2017 17:52:15

pour l identification oui il faut que tu utilise la base de donnée
pour ce qui est du reste si tu veux que les mise à jour s affiche sans devoir recharger ta page, il n'y a pas 50 solutions.
L'ajax me semblera moins compliquer
il faudrait faire un script ajax qui toutes les X secondes vérifie s'il y a du nouveau

#2 Forum Général PHP » Script qui change le résultat après l'affichage » 11-09-2017 21:31:13

ecoll
Réponses : 0

Bonsoir à tous

J'ai un gros souci avec un script que je suis en train de faire

le but de celui ci est de télécharger des fichiers depuis mon dédié vers mon auxiliaire qui est à la maison.

vous me direz:

    - utilise le SSH, non la ligne de commande ça va 5 min surtout quand les fichiers ont des noms à ralonge

    - utilise un client FTP, je dis oui mais perte de temps car une troisième machine est nécessaire, donc téléchargement et après upload

bref....

j'ai créé une class pour toute la partie FTP

dedant il y a cette fonction

    function rawlist($path)
  {
    $list = ftp_rawlist($this->ftpid, $path);
   
    foreach($list as $value)
    {
      preg_match_all("/([a-z]).{9} +[0-9]{1,2} .*? +.*? +([0-9]+) ([A-Za-z]{3} +[0-9]{1,2} [0-9]{2}:[0-9]{2}) (.*)/s", $value, $search);
      if($search[1][0] == "d")
      {
        $output['directory'][] = array("path" => $path, "name" => $search[4][0]);
      }
      else
      {
        $output['file'][] = array("path" => $path, "name" => $search[4][0], "size" => $search[2][0], "modified" => $search[3][0]);
      }
    }
    @usort($output['directory'], "self::cmp");
    $_SESSION['faitchier'] = $output;

    return $output;
  }

jusque là pas de problème, elle fait très bien son job

la page d'index (ou est appelé cette fonction), m'affiche la liste des fichiers et dossiers.

chaque dossier il y a un lien pour visualiser l’intérieur. chaque fichier un lien vers telecharger.php?id=$id_du_fichier

au début j'avais mis les info que j'avais besoin en get dans l'url mais très vite rattrapé par la restriction de 255 caractères sad

donc j'ai, décidé de passer le tableau par la session, d'où le $_SESSION['tmp'] = $output dans le code.

comme ça ne fonctionnait pas j'ai mis un print_r($_SESSION) dans les deux pages.

Sur l'index par de problème je vois bien mon tableau avec tous les fichiers et dossiers.

Sur telecharger.php là par contre je me retrouve avec le tableau de la racine du FTP

a savoir que l'arborescence du FTP est comme ceci

Dossier1
|   Dossier1A
|   Dossier1B
|   Fichier1a
|   Fichier1b
Dossier2
|   Fichier2a
ect...

sur mon index, si je fais $ftp->rawlist('/');, ca doit me donner Dossier1 et Dossier2
si je fais $ftp->rawlist('/Dossier1');, je dois voir Dossier1A, Dossier1B, Fichier1a, Fichier1b

donc l'index j'ai array(Dossier1A, Dossier1B, Fichier1a, Fichier1b)

et sur l'autre page j'ai array(Dossier1, Dossier2)

là je ne comprends pas de trop

Au début je pensais à un résiduel du tableau étant donné que je passe par la racine au début

donc j'ai rajouté ceci au début de ma fonction

    session_unset();
    $output = array();

afin de supprimé $_SESSION avant chaque utilisation

mais pareil.

Je me suis dit que peut etre je me suis trompé dans la session.

Alors je me suis dit que j'allais mettre mon tableau dans un fichier texte

j'ai donc mis ceci à la place de $_SESSION['tmp'] = $output

    $file = fopen('path/path.txt', 'w+');
    fwrite ($file, json_encode($output));
    fclose($file);

Et bien... même résultat, je me retrouve avec un fichier txt d'1ko contenant la racine.

Donc à ce moment là je sais que mon code est bon, mais quelque chose le fait bugger.

Mais quoi.... o_O

Après pas mal de temps à essayer ceci ou celà, j'ai trouvé mais je ne l'explique pas.

dès que j’arrête d'afficher à l'écran le résultat de la fonction je me retrouve avec un txt de 9ko avec toute la structure.

là j'ai juste mis

for($i=0; $i<$nb_file; $i++)
{
    echo $gen['file'][$i]['name']."<br>\n";
}

et ça fonctionne.

J'ai l'impression que c'est dès que je met du HTML

Ahh aussi

Avant d'essayer an mettant des echo "code HTML...", je travaillait avec un moteur de template que j'ai fait en m'inspirant plus que beaucoup à celui de phpbb, que ce soit avec le template ou le html en echo dans le php, j'ai le meme problème.

Quelqu'un aurait il une idée ??

Merci à tous

#3 Forum Général PHP » problème sur un regex » 03-03-2017 14:36:53

ecoll
Réponses : 1

Bonjour

Je suis en train de faire un script pour traiter un fichier texte généré par mon serveur

voici une partie des données du fichier

Number   Major   Minor   RaidDevice State
   0       8        1        0      active sync   /dev/sda1
   4       8      144        0      spare rebuilding   /dev/sdj
   1       8       97        1      active sync   /dev/sdg1
   2       8      113        2      active sync   /dev/sdh1
   3       8       81        3      active sync   /dev/sdf1

je souhaite récupérer l'état "state" ainsi que le chemin d'accès disque /dev/sdx dans deux variables différente

j'utilise preg_match_all
1
   

preg_match_all('#[ ]+(([0-9]+)[ ]+){3}(([a-zA-Z]+)[ ]+)(/dev/sd[a-z][0-9])|(/dev/sd[a-z])#', $raid, $device);


mais ça ne me retourne vraiment pas du tout ce que je veux.

Je ne suis vraiment décidément pas doué pour les expressions régulières

Pouvez-vous m'aider ?

Merci d'avance

Pied de page des forums

Propulsé par FluxBB