2010-03-20 5 views
2

J'ai eu ce script pour créer une page HTML à partir d'un téléchargeur d'images, Le seul problème est qu'il se remplace à chaque téléchargement, je voudrais le changer pour que je reçoive envoyé un e-mail à la place.Conversion d'un script php html générant dans un script email automatique

Des idées?

<?php 

$destination_dir = "uploaded/"; 
$targetPath = dirname($_SERVER['SCRIPT_URI']) . "/"; 

$html_start = " 
<!doctype html public \"-//w3c//dtd html 4.0 transitional//en\"> 

<html> 
<head> 
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"> 
<title>Upload results</title> 
</head> 
<body> 
"; 

$html_end = " 
</body> 
</html> 
"; 

// Check if there are AdditionalStringVariable 
$result = "AdditionalStringVariable: " . $_POST["AdditionalStringVariable"]; 
$result .= "<br>"; 


// Process value of QIU_thumbnails_Imagedata field, this is JPEG-files array of generated thumbnails 
if($_FILES[QIU_thumbnails_Imagedata]) 
{ 
foreach ($_FILES[QIU_thumbnails_Imagedata][name] as $key => $value) 
{ 
    $uploadfile = $destination_dir . basename($_FILES[QIU_thumbnails_Imagedata][name][$key]); 


    if (move_uploaded_file($_FILES['QIU_thumbnails_Imagedata']['tmp_name'][$key], $uploadfile)) 
    { 

     $big_image_name = $_FILES[Imagedata][name][$key]; 

     $result .= "<a href='" .$big_image_name. "'>" . "<img border = '0' src='".$value . "'/></a><br><br>"; 
    } 
} 
} 
// 
$result .= "<br>"; 


// Process value of Imagedata field, this is JPEG-files array 

foreach ($_FILES[Imagedata][name] as $key => $value) 
{ 
$uploadfile = $destination_dir . basename($_FILES[Imagedata][name][$key]); 

if (move_uploaded_file($_FILES['Imagedata']['tmp_name'][$key], $uploadfile)) 
{ 
    $result .= "File uploaded: <a href='". $value . "'>" . $value . "</a><br>"; 
} 
} 


// 
$result .= "<br>"; 




// 
// Process GlobalControlData field, this is the array of serialized data for Global controls 
// the value for each control is: id|value 
if($_POST[GlobalControlData]) 
    { 
    foreach ($_POST[GlobalControlData] as $key => $value) 
{ 
    $globalControlExploded = explode("|", $value); 
    $result .= "\n" . "GlobalControlData:\n\t" . $globalControlExploded[0] ."\t:\t" . $globalControlExploded[1] . "<br>"; 
} 
} 

// 
// Process LocalControlData field, this is the array of serialized data for Local controls 
// value for each image is: image||id1|value1^id2|value2^id3|value3, where image - is picture name, id - is unique control ID , and a value - control value 
if($_POST[LocalControlData]) 
{ 
foreach ($_POST[LocalControlData] as $key => $value) 
{ 
    $exploded = explode("||", $value); 
    $parentFile = $exploded[0]; 

    $result .= "<br>" . $exploded[0] . "<br>"; 

    $explodedToControls = explode("^", $exploded[1]); 

    foreach ($explodedToControls as $cnt => $val) 
    { 
     $eachControl = explode("|", $val); 
     $result .= "\tcontrol:\t" . $eachControl[0] . ", value:\t" . $eachControl[1] . "<br>"; 

    } 
    // 
} 
} 
// 

$result = $html_start . $result . $html_end; 

// 
if(@$fp = fopen($destination_dir.'index.html', 'w')) { 
     fwrite($fp, $result); 
     fclose($fp); 
} 

132 echo $targetPath . $destination_dir; 
133 
134 ?> 

Je viens d'ajouter ceci:

135 
136 $to = '[email protected]'; 
137 $subject = 'Baublet Order Received'; 
138 $headers = 'From: [email protected] '. "\r\n" . 
139   'MIME-Version: 1.0' . "\r\n" . 
140 'Content-type: text/html; charset=utf-8' . "\r\n"; 
141 mail($to, $subject, $result, $headers"); 
142 
143 ?> 
+0

Qu'essayes-tu d'envoyer par e-mail? Un message que le fichier a été écrit? L'image elle-même? –

Répondre

1

Je comprends que, au lieu d'enregistrer le code HTML sur le serveur, vous voulez envoyer quelque part comme un e-mail. C'est ce que vous demandez? Sinon, veuillez éditer/commenter votre question pour clarifier ce dont vous avez besoin.

Le bloc

if(@$fp = fopen($destination_dir.'index.html', 'w')) { 
     fwrite($fp, $result); 
     fclose($fp); 
} 

prend en charge le fichier dans writting le système de fichiers du serveur, en remplaçant potentiellement quelque chose. Si vous ne voulez pas sauvegarder le HTML en tant que fichier sur le serveur, il vous suffit de vous débarrasser de ce bloc (le supprimer ou le commenter). À ce stade, vous avez déjà le code HTML généré sur la variable $result (si vous regardez de plus près, c'est ce que le code original enregistre dans le fichier); donc si vous voulez l'envoyer par mail, vous avez déjà votre corps. Trouvez les adresses "de", "à", "CC" (le cas échéant) et "BCC" (le cas échéant), ainsi que l'objet de votre courrier. Le "de" se présente souvent sous la forme d'un littéral ou d'une constante, mais peut également être un champ de saisie du formulaire POSTed. L'adresse "à" dépend de l'endroit où vous voulez envoyer le courrier. Ensuite, utilisez quelque chose comme ça pour le poster en fait:

$to = "here goes the destination address"; 
$subject = "here you put the subject line for the e-mail"; 
$headers = "From: " . $whatever_your_sender_address_is . "\r\n" . 
      "MIME-Version: 1.0\r\nContent-type: text/html; charset=utf-8\r\n"; 
mail($to, $subject, $result, $headers); 

Jetez un oeil à la poste() sur http://ie2.php.net/manual/en/function.mail.php de 'la documentation pour plus de détails sur la fonction mail(). Notez que dans ce cas, vous devez définir au moins 3 en-têtes: "De" doit toujours être spécifié (certaines applications de messagerie côté serveur peuvent avoir une adresse "par" par défaut, mais il est toujours conseillé de marcher sur terre) . Les en-têtes "MIME-Version" et "Content-type" doivent s'assurer que le courrier est envoyé au format HTML plutôt que sous forme de texte. Vous pouvez ajouter "Reply-to", "CC", "BCC" et d'autres en-têtes, selon vos besoins: dans ce cas, ajoutez-les à la variable $ headers, séparés par "\ r \ n", avant l'appel à mail().

Espérons que cela aide.

+0

Cest pour votre temps ... vous avez compris ma question et le résultat fonctionne. Il a fallu un peu de temps pour que l'email arrive ... mais c'était le cas. –

+0

Je viens de changer l'adresse e-mail et tout d'un coup le?> N'est pas long rouge et ça ne marche pas ... des idées pour le fermer correctement? Michael J'ai édité la question pour montrer le positionnement sur l'add-on. –

+0

Avez-vous ajouté le bloc de code comme suggéré dans votre message? Tout d'abord, cela laisse la partie "enregistrer dans le fichier" (c'est bien tant que c'est ce que vous voulez), mais plus critique: sur la ligne 134 vous avez déjà une fermeture "?>": Si vous voulez que le code soit traité en PHP, vous devez le supprimer ou ajouter un nouveau "