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

Langage PHP Discussion :

Générer des fichiers via une fonction - forcer l'exécution d'un script ?


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Points : 97
    Points
    97
    Par défaut Générer des fichiers via une fonction - forcer l'exécution d'un script ?
    Bonjour,

    Voilà ce que je souhaite faire :
    j'ai un bouton dans une appli qui une fois cliqué doit déclencher l'envoi d'un email avec plusieurs documents pdf.

    Pour ce faire, j'utilise fpdf pour générer les pdf. Un script par pdf généré. Chaque pdf doit être stocké sur dans un répertoire du serveur.
    Ensuite j'ai un script qui se chargera d'envoyer un email avec en pièces jointes les pdf (fichiers stockés sur le serveur).

    Mon gros soucis c'est que je n'arrive pas via des include ou des fonctions à faire fonctionner mon script de qui me génère le pdf et le stocke sur le serveur.


    Structure du code qui génère le pdf et le stocke sur le serveur
    appelons le contrat_reservation_fichier.php situé dans le répertoire doc_pdf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //début de code
    require('../include/fpdf.php');
    // reste du code
    // ....
    // etc ...
    $pdf->Output('../pdf_clients/contrat_4.pdf','F');
    Le script de stockage fonctionne très bien si depuis une page je clique sur un lien du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="doc_pdf/contrat_reservation_fichier.php?id_contact=<?=$id_contact?>&id_reservation=<?=$id_reservation?>" target="_blank" >DOC1 - CONTRACT fichier serveur test </a><br/>
    Maintenant si dans ma page qui me sert à traiter les différents actions de l'utilisateur je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (isSet($_POST['EnvoiEmailBooking']))  {   
    $_POST = slash_all($_POST);
    	$id_contact = $_POST['id_contact'];
    	$id_demande = $_POST['id_demande'];
    	$id_reservation = $_POST['id_reservation'];
    include("../doc_pdf/contrat_reservation_fichier.php");
    }
    rien ne se passe : aucun fichier généré.

    J'ai essayé en transformant mon fichier en fonction ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function contrat_reservation_pdf_serveur ($id_contact, $id_reservation, $connexion);
    {
    require('../include/fpdf.php');
    // suite du code
    $pdf->Output('../pdf_clients/contrat_4.pdf','F');
    puis en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (isSet($_POST['EnvoiEmailBooking']))  {   
    $_POST = slash_all($_POST);
    	$id_contact = $_POST['id_contact'];
    	$id_demande = $_POST['id_demande'];
    	$id_reservation = $_POST['id_reservation'];
    contrat_reservation_pdf_serveur ($id_contact, $id_reservation, $connexion)
    }
    idem ...

    Je bloque totalement.

    si j'arrivais à simuler l'utilisation du lien, peut être que cela pourrait fonctionner

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 361
    Points : 15 709
    Points
    15 709
    Par défaut
    si la page contrat_reservation_fichier.php est appelé par la méthode GET, tu dois mettre les valeurs dans le tableau $_GET
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (isset($_POST['EnvoiEmailBooking'])) {
        $_POST = slash_all($_POST);
        $_GET['id_contact'] = $_POST['id_contact'];
        $_GET['id_demande'] = $_POST['id_demande'];
        $_GET['id_reservation'] = $_POST['id_reservation'];
        include('../doc_pdf/contrat_reservation_fichier.php');
    }
    par contre ça sert à quoi "slash_all" ? normalement tu peux passer les valeurs directement

  3. #3
    Membre régulier Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Points : 97
    Points
    97
    Par défaut
    en fait, le problème n'est pas là.
    Oublions que mon fichier de génération de pdf utilise des variariables.

    Pour info : que les variables existent ou pas, si je clique sur mon lien, le script fonctionne. Le script fonctionne, mais il ne fonctionne pas si il est appelé via un include, un require.

    pour réponde à ta question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // Fonction de Retraitement des variables - Magic_quotes_gpc étant à off 
    // Nécessité d'échapper les données venant du formulaire avant de les injecter dans la base
    function slash_all($table)
    {
    if (ini_get('magic_quotes_gpc') === -1) return $table;
    if (is_array($table))
      return array_map('slash_all',$table);
    else
      return addslashes($table);
    }

    Voici les messages d'erreurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Warning: main(): open_basedir restriction in effect. File(../include/contrat_reservation_fichier.php) is not within the allowed path(s): (/var/www/vhosts/nom_domaine/subdomains/crm/httpdocs:/tmp) in /var/www/vhosts/nom_domaine/subdomains/crm/httpdocs/Reservation.php on line 212
     
    Warning: main(../include/contrat_reservation_fichier.php): failed to open stream: Operation not permitted in /var/www/vhosts/nom_domaine/subdomains/crm/httpdocs/Reservation.php on line 212
     
    Warning: main(): open_basedir restriction in effect. File(../include/contrat_reservation_fichier.php) is not within the allowed path(s): (/var/www/vhosts/nom_domaine/subdomains/crm/httpdocs:/tmp) in /var/www/vhosts/nom_domaine/subdomains/crm/httpdocs/Reservation.php on line 212
     
    Warning: main(../include/contrat_reservation_fichier.php): failed to open stream: Operation not permitted in /var/www/vhosts/nom_domaine/subdomains/crm/httpdocs/Reservation.php on line 212
     
    Warning: main(): Failed opening '../include/contrat_reservation_fichier.php' for inclusion (include_path='.:') in /var/www/vhosts/nom_domaine/subdomains/crm/httpdocs/Reservation.php on line 212

  4. #4
    Membre régulier Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Points : 97
    Points
    97
    Par défaut
    c'était un problème de chemin d'accès.

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

Discussions similaires

  1. Compresser des fichiers via une connexion HTTP
    Par cisnake dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 27/01/2014, 22h59
  2. Forcer le type des paramètres d'une fonction
    Par Teocali dans le forum Général Python
    Réponses: 9
    Dernier message: 14/08/2010, 20h17
  3. Réponses: 1
    Dernier message: 22/07/2010, 13h57
  4. lecture de fichier via une fonction d'analyse
    Par Rniamo dans le forum C++
    Réponses: 2
    Dernier message: 17/07/2008, 16h28
  5. Réponses: 7
    Dernier message: 20/03/2005, 14h53

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