Comment executer un script php

Eléphanteau du PHP | 23 Messages

14 oct. 2011, 16:15

Bonjour,
j' ai crée un script php du nom de Generate_archive.php placer dans un dossier include qui génère une archive zip et qui la propose en téléchargement, avec ziplib.
ce script fonctionne bien lorsque appel la page depuis mon navigateur.
ngs.civodul88.fr/teste/include/Generate_archive.php

j'ai crée une autre page php du nom de gestion.php placer dans un dossier style/templates
je voudrais que ce script s'auto execute lorsque un utilisateur clique sur un lien "générer" ou un bouton .
j'ai tenter divers astuce sans succès.

j'en profite pour faire une seconde demande "generate archive" me donne toujours le même nom d'archive.
header('Content-Disposition: inline; filename= archive.zip');
serait il possible de renommer l'archive aléatoirement a partir d'un fichier texte contenant un mot par ligne ?
je précise que je suis un noob en php^^.
merci a vous

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

14 oct. 2011, 22:30

salut,
je voudrais que ce script s'auto execute lorsque un utilisateur clique sur un lien "générer" ou un bouton .

serait il possible de renommer l'archive aléatoirement a partir d'un fichier texte contenant un mot par ligne ?
le 1er point : un simple lien <a href="chemin du fichier">lelien </a> devrait suffire ?

2ème point oui il suffit d'utiliser la fonction file et de piocher le nom qui ne convient.

Si besoin d'un choix aléatoire la fonction rand sera ton amie ;)


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 23 Messages

15 oct. 2011, 16:53

merci moogli pour la reponse desl pour le retard.
la 1er solution affiche le script de la page mais en fait je voudrais que juste s'affiche la popup qui propose le téléchargement
EDIT : pour le
<a href="../../mapage.php">Generateur</a>
c'est bon ça semble fonctionner en fait mon erreur etais de tester en local dsl ;)
pour la solution 2 aurais tu un exemple que je cherche a comprendre le principe stp :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 oct. 2011, 19:24

ben fichiertexte.txt
trucun
trucdeux
etc etc etc

donc un nom par ligne comme tu l'indique
la fonction file permet d'avoir un tableau avec une ligne du fichier par "case" du tableau

la fonction array_rand permet de prendre une "case" au pif dans le tableau, attention cette fonction retourne l'index du choix et nom pas la valeur :mrgreen:

l'algo est simple
les variables
$file : contient le contenu du fichier c'est un tableau
$filename : contient le nom que l'on a choisis pour le fichier

faire
charger le contenu du fichier "fichiertexte.txt" dans la variable file
choisir une ligne parmi le tableau
mettre le choix dans la variable filename
fin faire

(oui un peu de pseudo code plutôt que du code :)

le tout ce fait en deux ou trois lignes.

essai et si besoin on t'aide a corriger ;)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 23 Messages

15 oct. 2011, 23:39

re kikoo ^^

bon ben j'ai fais ceci mais pour l'instant je sais pas quoi mettre à la place de
header('Content-Disposition: inline; filename= archive.zip');
//déclaration du fichier
    $fichier='nomarchives.txt';

    //lecture du fichier
    $contenu = fread(fopen($fichier, "r"), filesize($fichier));

    //découpage du fichier par rapport aux *
    // et création d'un tableau parag[] contenant les différents paragraphes.
    $parag=explode("*",$contenu) ;

    // calcul du nb de ligne
    $max = sizeof($parag);

    // choix aleatoire d'une ligne
    $aleatoire = rand(0, $max);

    // affichage de la ligne
    echo $parag[$aleatoire];
une idée moogli ? :)

Eléphanteau du PHP | 23 Messages

16 oct. 2011, 14:50

re bonjour pour la ligne header j'ai mi ceci mais ça télécharge mon code php lol
 header('Content-Disposition: attachment; filename="'.$parag[$aleatoire].'"');

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

16 oct. 2011, 17:52

pourquoi n'a tu pas utilisé les fonctions que je t'ai indiqué ?

dans ton code l'explode sur l’étoile ne correspond pas à ce que que tu a indiqué avant (a savoir une mot par ligne)
manque le fclose :)

$tab = file($fichier);
header('Content-Disposition: attachment; filename="'.$tab[ array_rand($tab)].'"');

c'est tout deux fonctions à utiliser :/

@+
Il en faut peu pour être heureux ......