ctiven
Messages postés1Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention17 juillet 2006
-
17 juil. 2006 à 22:01
inwebo -
19 août 2010 à 18:54
Bonjour!
J'ai une petite idee en tete, pouvez-vous me dire si elle est possible à réaliser, et comment la faire?
But: Lancer un script PHP par un autre script PHP se trouvant sur un autre serveur.
Explication:
Mon site est heberge chez Free. Mais malheureusement, la function mail() n’est pas activee chez eux. Je pense alors placer un script contenant une function mail() sur un autre serveur et lancer ce script par celui qui se trouve chez Free.
Exemple:
Un script de livre d’or (livredor.php) est place chez Free. Ce script affiche les messages contenus dans la base de donnees, tient compte que tous les champs sont remplis lors d’une nouvelle signature et ajoute la nouvelle entrée a la base de donnee.
Mais je compte utiliser la function mail() pour envoyer un mail de remerciement a la personne qui a signe le livre d’or et un autre mail a moi-meme pour m’alerter qu’un nouveau message a ete ajoute au livre d’or.
Probleme: Comment lancer le script mailer.php place chez Online par le script livredor.php place chez Free ?
davwart
Messages postés855Date d'inscriptionmardi 19 novembre 2002StatutMembreDernière intervention28 juillet 20091 17 juil. 2006 à 22:23
Hello.
pour répondre a ta question, il faut comprendre un principe de base de PHP:
le PHP est exécuté coté serveur, il en ressoirt du HTML et ce HTML qui est envoyé au client.
Par conséquent, si tu fais par exemple un include d'un script PHP distant, ça ne marchera pas: tu incluras le HTML généré à partir du PHP distant.
Ce qui serait envisageable, c'est de faire un page php sur free qui prend en parametre (post par exemple) un destinataire, un message et envoie le message au destinataire via le mail() de free.
il te suffirait alors de faire un formulaire qui attaque ta page php distante avec les bns paramètres.
Le risque: que ta page soit utilisée comme relay de spam et que ton compte free soit fermé.
-------------------------------------
Les ordinateurs, plus on s'en sert moins, moins ça a de chance de mal marcher. [Les Shadoks]
pcgpegase
Messages postés96Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention24 avril 20071 17 juil. 2006 à 22:37
fopen
(
"http://www.tonsite.com/script.php"
,
"r"
);
fopen permet l'éxécution d'un script à distance :) Après je sais pas si cette fonction est active chez free.
le site 1 : site.free.fr/livre.php
le site 2 : site.online.fr/mailer.php
dans ton livre.php une fois la requête d'insertion faite, tu balances un fopen('site.online.fr/mailer.php','r');
Et ca éxécutera le mailer.php du site 2 !
C'est bien ça que tu souhaitais faire ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 18 juil. 2006 à 01:25
Houlà Pcpegase, j'ai bien peur que toi non plus tu n'aies pas compris le principe du langage serveur/client...
et d'une : fopen ne permet pas l'exécution d'un script;
et de deux : même si c'était le cas, tu ne risques pas d'y arriver à distance, pour les raisons qu'évoque Davwart. Surtout pas en http !!
Ctiven : la fonction mail( ) marche chez Free aux dernières nouvelles.
Mais en supposant que non, la solution à ton pb serait tout simplement de faire un script sur ton autre serveur qui reçoit les valeurs "destinataire" et "message" en GET (ou en POST si tu utilises une redirection javascript ave des champs hidden) et envoie le message en fonction de ça. Mais je te préviens, c'est la porte grande ouverte au piratage. Et en plus ça oblige ton visiteur à faire un aller-retour entre les deux sites, même si tu peux faire ça de façon transparente sans qu'il s'en rende compte (redirection immédiate). La seule solution pour utiliser cette méthode en limitant le danger de piratage serait d'utiliser un cryptage à clé, mais bon je pense que tu n'as pas envie d'en arriver là
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20096 18 juil. 2006 à 09:09
C'est un concours de troll ?
C'est quoi le "langage serveur/client" ?
"Une redirection javascript avec des champs hidden" ? < Qu'est ce
qui empêche de construire sa requête POST soi-même ? Quel rapport avec
Javascript (aucun navigateur dans l'histoire la... il parle du
traitement je crois) ?
"Et en plus ça oblige ton visiteur à faire un aller-retour entre les
deux sites, même si tu peux faire ça de façon transparente sans qu'il
s'en rende compte (redirection immédiate)" < ah bon ? qu'est ce qui
empêche le site free d'aller réaliser l'opération désirée lui même ? Où
a-t-on besoin d'une redirection ?
Je suis bien d'accord que l'exécution distante d'un script ne se fait
pas comme ca, mais je n'ai pas vraiment l'impression que cette dernière
réponse soit très claire ^^ (autant s'en tenir à celle de davwart héhé)
pcgpegase
Messages postés96Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention24 avril 20071 18 juil. 2006 à 09:11
Je viens d'essayer un script avec fopen et bien ça marche parfaitement...
Je viens de m'envoyer un mail avec mon serveur free à partir de mon serveur local simplement en utilisant :
fopen('http://fabseg.free.fr/test.php','r');
Résultat : j'ai bien reçu mon mail !
Donc je sais bien que PHP est un langage serveur, mais je vous le redis encore, fopen permet l'exécution de scripts php à distance à condition que la fonction fopen est activé...
Bye !
PS : Evangun a raison pour la fonction mail() de free, elle fonctionne bien :)
pcgpegase
Messages postés96Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention24 avril 20071 18 juil. 2006 à 09:32
Bin non, absolument pas.
Le fopen() permet d'exécuter du code php à distance. Free avait bloquer cette fonction pour justement éviter les problèmes que peut apporter cette fonction, je crois même qu'elle est désactivée sur la plupart des serveurs. Mais essayé la fonction, vous verrez par vous même ! :)
Moi je l'ai testé comme ceci :
// Serveur local => test.php
<?php
fopen('http://fabseg.free.fr/test.php','r');
?>
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20096 18 juil. 2006 à 09:36
Okk ;-)
Si tu veux juste faire ca, d'accord.
Ton fopen() n'a fait qu'ouvrir la page distante, qui a exécuté le code de la page distante.
Ce que disent les gens depuis le début, c'est que si tu places par
exemple ton affectation de $email dans le premier script, et que tu ne
le déclares pas dans le ssecond, ca ne marchera plus. Et qu'il faut le
passer par un GET, un POST, ou autre, de facon à ce que le script
distant le voit.. Je pense qu'il y a eu un quiproquo là =)
PaDa
pcgpegase
Messages postés96Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention24 avril 20071 18 juil. 2006 à 09:48
Ouep,
Mais ce que [auteurdetail.aspx?ID=822228 ctiven] voulais faire n'étais pas juste de taper sur son fichier mail.php placé sur online.fr pour que ça envoit un mail après l'insertion de données dans son livre d'or ?
Parce que le contenu de $email, c'est simplement son email à lui pour qu'il sache qu'on a posté sur son livre d'or ? Ou alors j'ai pas tout compris... :x
Mais sinon oui en effet avec fopen on ne peut pas changer la variable $email dynamiquement par rapport au premier script...
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 18 juil. 2006 à 12:14
Re-Bonjour,
effectivement pcpegase, ce que tu dis je n'appelle pas ça exécuter un script à distance, mais c'est évidemment possible, c'est ce dont je parlais...
Pada:
"Une redirection
javascript avec des champs hidden" ? < Qu'est ce qui empêche de
construire sa requête POST soi-même ? Quel rapport avec Javascript
(aucun navigateur dans l'histoire la... il parle du traitement je
crois) ?
Tu n'as pas suivi ce que je voulais dire : l'idée est de crypter les données avant de les envoyer à l'autre site (j'admets que c'est tiré par les cheveux mais bon). Donc le formulaire (POST évidemment) doit pointer vers son propre site, qui crypte les données, et pour ensuite faire une redirection avec des données POST, c'est là que t'as pas le choix ! la fonction header( ) ne prend pas de POST (elle peut juste... les rediriger). Donc à moins d'utiliser des fonctions curl ou cettelibrairie Zend, tu dois passer par une redirection javascript avec des champ hidden. Non non, je refuse de gagner le concours de troll lool
"Et en plus ça oblige ton visiteur à faire un aller-retour
entre les deux sites, même si tu peux faire ça de façon transparente
sans qu'il s'en rende compte (redirection immédiate)" < ah bon ?
qu'est ce qui empêche le site free d'aller réaliser l'opération désirée
lui même ? Où a-t-on besoin d'une redirection ?
Comment tu fais toi pour que php fasse une requête sur un site distant (toujours en POST), sans passer par le navigateur ??
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20096 18 juil. 2006 à 13:05
Pour les données POST, j'ai pas attendu le header() ou la librairie
Zend lol.. Je te dis justement que les construire soi même, à la main,
en sockets, c'est très simple ;o) Il n'y a pas grand chose à "crypter",
le pire que tu aies à faire revient à du rawurlencode.. Donc ni champs
hidden, ni javascript, tout peut se passer coté traitement php (si tu
as envie hein..).
Cf ci dessus, de simples sockets.. Je l'ai déja fait dans d'autres
langages comme en PHP, et ca marche très bien. (c'est peut être un peu
"bas niveau", mais ce n'est pas non plus des centaines de lignes de
code, t'as 5-6 lignes de header à fournir, tes données POST, c'est pas la fin du monde :o))
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20096 18 juil. 2006 à 13:25
Non testé mais je pense que ca doit marcher (j'ai simplement adapté depuis une de mes sources pour un site spécifique)
Je ne poste pas pour dire que c'est la meilleure soluce ou que c'est
bien codé, simplement pour montrer que c'est faisable ;o) et que c'est
pas si compliqué.
<?php
//paramètres à changer nécessairement (quelques adaptations des headers seront certainements utiles selon les cas)
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 18 juil. 2006 à 13:43
C'est vrai que le coup des sockets, j'avais lu ça quelque part et j'avais pas testé.
merci de l'info en tt cas, ça me servira certainement à l'occasion