Voici mon problème. J'ai un système de suivi des tickets qui n'est pas très "convivial" mais je souhaite que mes utilisateurs soumettent des "tickets" au système sans qu'ils aient à le voir. Je suis allé jusqu'à utiliser un formulaire HTTP personnalisé et à poster sur le système de suivi des tickets. Un problème est que la page "réussite/achèvement" a tendance à confondre les gens. Donc j'ai pensé ... bien puisque je ne peux pas changer le système de billet pour employer une page différente de «succès». Je vais juste gérer l'échange HTTP Post avec CURL et signaler une page personnalisée de succès ou de problème. Heres du code abstrait.Post Envoyé un fichier vers une autre page PHP?
fichier: tickethelper.php
<?php
extract($_POST);
$url = 'TICKETSYSTEMURL';
$fields = array(
'fullname'=>urlencode($fullname),
/*many more fields*/
);
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
curl_setopt($ch, CURLOPT_MAXREDIRS, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
curl_close($ch);
if((strlen(strstr($contents,'Your ticket has been submitted')))>0){
header("Location: http://THANKYOU");
}
else{
header("Location: http://OOPS");
}
?>
Cependant, ce que je pris conscience que je manque mon téléchargement de fichiers. La plupart des exemples CURL que j'ai vus concernent le téléchargement de fichiers locaux vers une page HTTP POST distante.
Comment puis-je gérer la réception d'un fichier à partir du formulaire HTTP de mon utilisateur, le traiter dans le 'tickethelper' et le POST sur le 'TICKETSYSTEMURL'?
-Israél
Maintenant, ma question est. Est-ce que je perds le nom d'origine? J'ai fait un print_r ($ _ FILES) et je vois le nom original, et le chemin temp pour le fichier. Lorsque mon autre application publie le fichier sera-t-il/tmp/kwsnWjwn au lieu de 'FriendlyName.xls'? –
Israel Lopez, vous perdrez le nom d'origine en utilisant libcurl. Je ne crois pas que vous pouvez définir cette valeur en utilisant libcurl, bien que d'autres outils puissent le permettre. Cependant, vous pouvez utiliser la fonction move_uploaded_file() de PHP pour déplacer/renommer le fichier temporaire en un nom convivial sur votre système, puis utiliser ce fichier dans votre tableau $ post_fields. – bmb