Puis-je envoyer par exemple une chaîne ou un autre élément d'information à un autre fichier .php sans qu'il soit exposé (donc pas par GET mais par POST conforme à ce que je sais) sans utiliser de formulaire?Envoi de données POST sans formulaire
Répondre
Si vous ne voulez pas que vos données soient vues par l'utilisateur, utilisez une session PHP.
Les données d'une demande de publication sont toujours accessibles (et manipulables) par l'utilisateur.
Commander this tutorial sur les sessions PHP.
ce n'est pas une bonne solution, même si l'auteur l'a accepté comme solution de contournement. Les sessions sont aussi plus faciles à détourner que la gestion d'une demande de post (par exemple par une attaque "man in the middle") –
Pourquoi est-ce une mauvaise solution? Peut-être que le processus de Samuel est tel que le détournement de la session n'est pas un problème. La seule façon de vraiment résoudre le détournement de session (d'une manière discrète) est d'utiliser SSL pour toutes les demandes liées à la session. Si Samuel s'inquiétait de la fuite des données, il devrait utiliser SSL. –
@zolex, quelle est la difficulté d'intercepter les données post? Assis dans un café avec WireShark en cours d'exécution est tout ce dont vous avez besoin pour détourner les données POST. Recréez la demande avec des cookies et publiez des données, et vous êtes prêt à partir. Si vous considérez les sessions comme une mauvaise solution, SSL est la seule bonne solution. – riwalk
Vous pouvez utiliser AJAX pour envoyer une requête POST si vous ne voulez pas de formulaires.
En utilisant la méthode jquery $.post il est assez simple:
$.post('/foo.php', { key1: 'value1', key2: 'value2' }, function(result) {
alert('successfully posted key1=value1&key2=value2 to foo.php');
});
jetez un oeil à la documentation php pour ces fonctions que vous pouvez envoyer après les avoir utilisées.
fsockopen()
fputs()
ou simplement utiliser une classe comme Zend_Http_Client qui est également basé sur socket-conenctions.
a également trouvé un neat example en utilisant google ...
Envoyer vos données avec la session plutôt que la poste.
session_start();
$_SESSION['foo'] = "bar";
Sur la page où vous recevez la demande, si vous avez absolument besoin de données POST (certaines logiques bizarre), vous pouvez le faire somwhere au début:
$_POST['foo'] = $_SESSION['foo'];
Les données de poste seront valables exactement comme s'il était envoyé avec POST.
Ensuite, détruisez la session (ou supprimez simplement les champs si vous avez besoin de la session à d'autres fins).
Il est important de détruire une session ou de désactiver les champs car, contrairement au POST, SESSION restera valide jusqu'à ce que vous le détruisiez explicitement ou jusqu'à la fin de la session du navigateur. Si vous ne le faites pas, vous pouvez observer des résultats étranges. Par exemple: vous utilisez sesson pour filtrer certaines données. L'utilisateur active le filtre et obtient des données filtrées. Après un moment, il revient sur la page et s'attend à ce que le filtre soit réinitialisé, mais ce n'est pas le cas: il voit toujours des données filtrées.
utiliser simplement: file_get_contents()
// building array of variables
$content = http_build_query(array(
'username' => 'value',
'password' => 'value'
));
// creating the context change POST to GET if that is relevant
$context = stream_context_create(array(
'http' => array(
'method' => 'POST',
'content' => $content,)));
$result = file_get_contents('http://www.example.com/page.php', null, $context);
//dumping the reuslt
var_dump($result);
Reference: ma réponse à une question similaire:
- 1. Envoi de formulaire sans rafraîchir la page
- 2. Python urllib2 envoi de données POST
- 3. Envoi de données POST dans XUL?
- 4. Envoi de requêtes POST sans attendre de réponse?
- 5. Envoi d'un formulaire POST à partir de Cocoa
- 6. formulaire automatique post données
- 7. Envoi de données de formulaire gzippées
- 8. Envoi d'un formulaire HTML dans Android sans WebView
- 9. Open Url envoi POST
- 10. Open Url envoi POST
- 11. Envoi de beaucoup de données via POST ou GET
- 12. Envoi de données avec POST, problème avec l'encodage de caractères
- 13. Envoi de données POST avec curl et php
- 14. Envoi de données vidéo à service WCF reposants avec POST
- 15. Envoi de données XML via HTTP POST avec PHP
- 16. Envoi de données via POST en Python pour PHP
- 17. Jquery .post et données de formulaire
- 18. iPhone envoi POST avec NSURLConnection
- 19. Envoi de données de formulaire au service Web + demande d'appel
- 20. POST avec curl sans envoyer de données
- 21. Envoi de données - NSMutableURLRequest
- 22. Envoi de données de formulaire HTML à Java
- 23. Java - Envoi d'une requête GET ou POST
- 24. Envoi d'un formulaire avec saisie
- 25. Envoi de données GET sans champ de saisie?
- 26. jQuery/jqGrids/Envoi trouble des données de formulaire
- 27. Traitement et envoi de formulaire jQuery
- 28. Sécurisé ajax formulaire POST
- 29. Envoi d'une image via POST Multipart (HTTPRequest)
- 30. Envoi de données multi-parties brutes via jquery $ .post() et php
On dirait que vous avez besoin d'utiliser des sessions. – Gazler
Il n'est pas tout à fait clair d'où vous envoyez les données. Est-ce client à serveur ou serveur à serveur ou serveur à serveur différent? – buggedcom
Eh bien, je le passe d'un fichier à l'autre sur le même serveur – Samuel