Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/09/2008, 22h09   #1
Membre du Club
 
Avatar de tavarlindar
 
Inscription : janvier 2007
Messages : 238
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 238
Points : 57
Points : 57
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 :
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 :
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 :
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 :
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 :
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
__________________
Mieux vaut penser avant d'agir que d'agir en rêvant.
tavarlindar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 22h22   #2
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
si la page contrat_reservation_fichier.php est appelé par la méthode GET, tu dois mettre les valeurs dans le tableau $_GET
Code :
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
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 22h51   #3
Membre du Club
 
Avatar de tavarlindar
 
Inscription : janvier 2007
Messages : 238
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 238
Points : 57
Points : 57
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 :
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 :
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
__________________
Mieux vaut penser avant d'agir que d'agir en rêvant.
tavarlindar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2008, 11h46   #4
Membre du Club
 
Avatar de tavarlindar
 
Inscription : janvier 2007
Messages : 238
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 238
Points : 57
Points : 57
c'était un problème de chemin d'accès.
__________________
Mieux vaut penser avant d'agir que d'agir en rêvant.
tavarlindar est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h27.


 
 
 
 
Partenaires

Hébergement Web