Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
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 12/01/2012, 23h45   #1
Membre régulier
 
Inscription : octobre 2010
Messages : 253
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 253
Points : 92
Points : 92
Par défaut Executer une page sans y être redirigé

Bonsoir,

Je souhaites exécuter une page sans y être rediriger (et sans l'inclure).

Je génère en fait une page dynamiquement avec des meta données bien précises qui attend d'être exécuter.

J'ai essayé un tas de choses: curl, exec(), setsockopt(), file_get_contents et j'en passe...

J'en suis à me demander si il ne faut pas multi-threader !

Si quelqu'un à l'astuce ça m’intéresse !
student_php est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 04h41   #2
Membre Expert
 
Inscription : septembre 2010
Messages : 1 244
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 244
Points : 1 568
Points : 1 568
Et la technologie "ajax" tu l'a envisagée ?
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 06h56   #3
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 726
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 726
Points : 3 293
Points : 3 293
Salut

Regarde du coté des options de cURL :
CURLOPT_FOLLOWLOCATION et CURLOPT_MAXREDIRS
-> curl_setopt()

Qu'est ce qui te gènes qu'il y ait une redirection ?
Où se situe la page que tu appelles ? (dans ton site, même domaine ou est-ce sur un autre domaine).
Est-ce que tu peux agir sur le code de cette page que tu appelles ?
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 10h51   #4
Membre régulier
 
Inscription : octobre 2010
Messages : 253
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 253
Points : 92
Points : 92
AJAX ? je veux éxecuter la page je ne vois en quoi AJAX me serait utile pour faire ça, peux tu m'en dire plus ?

sinon j'ai essayé les options que tu me propose et ça ne passe pas, voici le code:
Code :
1
2
3
4
5
6
$c = curl_init();
	curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1);
	curl_setopt($c, CURLOPT_MAXREDIR, 5);
        curl_setopt($c, CURLOPT_URL, "http://monsite/mapage.php");
        $contents = curl_exec($c);
        curl_close($c);
Je ne sais pas si c'est normal, mais dans $contents je n'ai que '1'.

Pour répondre à tes questions:
1] Je veux éxecuter plusieurs fois la même page dans une boucle mais elle aurra un contenu différent à chaque tour.
2]La page se situe sur mon serveur.
3]Oui, je la crée d'ailleurs.
student_php est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 11h08   #5
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 726
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 726
Points : 3 293
Points : 3 293
Citation:
La page se situe sur mon serveur.
Si cette page ce trouve sur ton serveur, alors je ne vois pas l'utilité d'utiliser cURL.

Du coup, faire un include() me semble adapté, suffit d'adapter cette page (ou traitements) selon ce que tu veux faire.

Si cette page contient une redirection alors qu'on en veut pas, alors il ne faut pas faire de redirection.
Ou alors il faut rajouter une info comme quoi il ne faut pas faire de redirection dans cette condition là.

Du fait que cette page soit sur ton serveur, ce qui suppose que tu peux faire ce que tu veux la dedans, je ne vois pas où est la difficulté.


Citation:
AJAX ? je veux éxecuter la page je ne vois en quoi AJAX me serait utile pour faire ça, peux tu m'en dire plus ?
Ajax a pour but d'appeller une page, par conséquent si on appel une page les traitements seront exécutés.
Ca peut être adapté selon se qu'on veut faire.
La particularité c'est que le déclenchement se fait coté client, sans compter qu'on a le choix de le faire en mode synchrone ou asynchrone.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 11h16   #6
Membre régulier
 
Inscription : octobre 2010
Messages : 253
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 253
Points : 92
Points : 92
La subtilité est que je ne veux pas "importer" le code source de la page que je veux exécuter dans la page de mon processus courant (ce que fait curl), donc pas d'include, la page doit rester "distante" car chaque page généré aura des méta données bien précises.

Je vais essayer avec AJAX.

EDIT:

J'ai essayé d'ajouter:

Code :
1
2
3
4
5
6
7
8
9
10
?>
	<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
        <script>
           $.ajax(
           {
               type: "GET",
               url: 'http://monsite/mapage.php'
             });
           </scrip>
               <?
Mais toujours rien... Je suppose qu'il y a un autre problème ici, vu que je suis dans une boucle et que concrètement il n'y a aucune action, je ne peux pas appeler l'ajax sur un événement et l'inclure comme ça dans le code n'a pas l'air d'être une bonne méthode.
student_php est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 11h37   #7
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 726
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 726
Points : 3 293
Points : 3 293
Citation:
La subtilité est que je ne veux pas "importer" le code source de la page que je veux exécuter dans la page de mon processus courant (ce que fait curl), donc pas d'include, la page doit rester "distante" car chaque page généré aura des méta données bien précises.
Je ne suis pas d'accord avec ton raisonnement.

Avec un include() on fait 100% de ce qu'on veut à partir du moment où le fichier se trouve sur notre serveur.
La limite est dans le serveur (php.ini, apache entre autre).


Si au bout d'un traitement on veut que ce soit des méta données qui soient renvoyées, tel un XML, flux RSS, Webservice, etc ... (voir même un Pdf, une images, etc ...) on peu le faire avec un include.
Avec un include on fait ce qu'on veut, et on renvoie ce qu'on veut, la dessus il faut être clair.

Je dirais même que c'est nettement plus simple et plus performant que de le faire autrement, tel que Ajax, cURL, file_get_contents, SOAP, etc ...


Vu que tu parles de méta données, c'est peut être un WebService (SOAP, REST).


Donne un exemple, au besoin.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 11h54   #8
Membre régulier
 
Inscription : octobre 2010
Messages : 253
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 253
Points : 92
Points : 92
J’aurais du être plus précis dès le début.

Je met en place un script pour utiliser openGraph (l'api facebook), et celui-ci crawl la page à son exécution, raison pour laquelle la page doit être "indépendante", si je fais un include dans mon controller, ca ne résout en rien ma problématique, à moins que je comprenne mal quelque chose...
student_php est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 12h21   #9
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 726
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 726
Points : 3 293
Points : 3 293
Citation:
J’aurais du être plus précis dès le début.
Et bien oui.

Je vois mieux, mais je n'aurais pas de solution car je ne connais pas cet Api (aucune de facebook d'ailleurs).

A mon sens ça risque d'être difficile d'obtenir ce que tu veux, même via cURL, bien que normalement ça devrait l'être.
Ca dépend à mon sens s'il faut une action de l'utilisateur par exemple.

Regarde plutôt ce que propose Facebook coté Api, bien souvent il est proposé des codes à intégrer dans une page HTML, et à coté, ils donnent des codes pour que ce soit appelé via cURL par exemple (ou en Ajax) qui n'est autre qu'une requête HTTP.

Ce genre de service ne fonctionnent pas bien souvent quant il manque des infos comme GET, POST, un cookie, maintient de la session, identifiant de l'Api facebook, etc ... que s'ais je.


Le but c'est quoi d'ailleurs ?
D'obtenir juste un retour de cet Api ou de l'intégralité de la page (du HTML) ?
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 16h16   #10
Membre régulier
 
Inscription : octobre 2010
Messages : 253
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 253
Points : 92
Points : 92
Bonjour,

Le but est d’exécuter le code Javascript qui se trouve dans cette page (et qui est directement lié à sa composition).
student_php est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 16h25   #11
Modérateur
 
Inscription : septembre 2010
Messages : 7 219
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 219
Points : 8 598
Points : 8 598
tu veux exécuter le javascript avec PHP ?
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 18h45   #12
Membre régulier
 
Inscription : octobre 2010
Messages : 253
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 253
Points : 92
Points : 92
Je veux appeler la page php (et donc que le scrpit js s'execute lors de l'éxecution de la page (tout comme lors du passage d'un utilisateur réel)).
student_php est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 20h11   #13
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 726
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 726
Points : 3 293
Points : 3 293
Citation:
Le but est d’exécuter le code Javascript qui se trouve dans cette page (et qui est directement lié à sa composition).
A mon sens c'est impossible.
Enfin, en utilisant des solutions tels que cURL, file_get_contents, etc ... donc de manière distante.


Il faut comprendre que, quand on exécute comme ça de manière distante, donc qui interroge une page (mapage.php) qui elle contient du HTML (et un bout de JS entre autre), le serveur va recevoir cette requête HTTP.
Au bout le serveur va renvoyer du HTML (qui entre autre contient le code JS).
Cependant, tout ceci se passe coté serveur, donc en aucun cas il pourra exécuter le code JS, car seul un "client" (navigateur) pourra le faire.
Le fond du problème est là à mon sens.


Il faut voir ce que propose cette API afin d'exécuter la requête HTTP quelle attend, car c'est cela qu'effectue cette partie de code JS dans cette page HTML, et c'est ce résultat là qui normalement importe le plus.


Citation:
(et qui est directement lié à sa composition)
Oui et non, il faut voir du coté de cette API.
Si le code JS une fois exécuté par le client (je rappel) est prévu de parcourir le code de la page, c'est que cette API a besoin de récupérer certaine infos.
En jetant un oeil (très très vite fait) elle attendrait des infos qui seraient dans des balises meta.
Mais peu importe.

Et bien il faudrait éplucher se que propose cette API de façon qu'il puisse avoir moyen d'exécuter une requête HTTP qui intègrerait les infos directement dans cette URL sous forme de paramètres.
Genre : http://facebook.com?param1=valeur_de...aleur_de_meta2 (pure exemple).

Grace à cela, l'API va pouvoir te renvoyer un contenu comme si elle était intégrée à une page (mapage.php) alors que ce n'est pas le cas, c'est une requête faite par cURL.
Ensuite, à toi de faire ce que tu veux avec ces données obtenues.


En conclusion, il ne faudrait pas appeler ta page mapage.php, mais faire une requête HTTP vers cette API facebook (avec les infos quelle attend, des infos liées à mapage.php).

Personnellement je ne vois pas d'autres manières de faire.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 10h57   #14
Modérateur
 
Inscription : septembre 2010
Messages : 7 219
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 219
Points : 8 598
Points : 8 598
Citation:
Envoyé par student_php Voir le message
Je veux appeler la page php (et donc que le scrpit js s'execute lors de l'éxecution de la page (tout comme lors du passage d'un utilisateur réel)).
pas possible, en PHP (peux être avec COM),
quel est l’intérêt de la chose ? encore pomper des données sur un site ?
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 16h27   #15
Membre régulier
 
Inscription : octobre 2010
Messages : 253
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 253
Points : 92
Points : 92
J'explique tout ça juste au dessus (non).

Je vais me renseigner voir si il est possible de s'y prendre autrement.

Merci
student_php est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 17h12   #16
Modérateur
 
Inscription : septembre 2010
Messages : 7 219
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 219
Points : 8 598
Points : 8 598
Citation:
Envoyé par student_php Voir le message
J'explique tout ça juste au dessus (non).

Je vais me renseigner voir si il est possible de s'y prendre autrement.

Merci
ta pas besoin de ça pour faire de l'OpenGraph
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 09h04   #17
Membre régulier
 
Inscription : octobre 2010
Messages : 253
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 253
Points : 92
Points : 92
Dans mon cas je pense que si, concrétement, après la validation d'un panier, je veux ajouter une action par élément du panier, prenons l'exemple suivant:

Panier de l'utilisateur
1 chaise
1 table
1 chat

Je vais avoir une boucle sur les éléments respectant le schéma suivant:

foreach ($articles as $article)
{
je crée un fichier tampon (fopen).
Je le remplis avec les meta données de l'objet chaise (fwrite).
Je l'exécute (aucune solution).
Je l'efface
}

Si tu vois un autre moyen (dynamique), je suis preneur !

Merci.
student_php est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 11h07   #18
Modérateur
 
Inscription : septembre 2010
Messages : 7 219
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 219
Points : 8 598
Points : 8 598
c'est quoi le rapport entre un panier de tables et de chaises et Facebook ?
explique mieux ton affaire par que la y'a beaucoup chose différente
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 11h27   #19
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 726
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 726
Points : 3 293
Points : 3 293
Citation:
Envoyé par stealth35
c'est quoi le rapport entre un panier de tables et de chaises et Facebook ?
explique mieux ton affaire par que la y'a beaucoup chose différente
+1
On ne comprend plus trop grand chose.

Citation:
Panier de l'utilisateur
1 chaise
1 table
1 chat
Que vient faire le "chat" dans cette affaire ?

Citation:
foreach ($articles as $article)
{
je crée un fichier tampon (fopen).
Je le remplis avec les meta données de l'objet chaise (fwrite).
Je l'exécute (aucune solution).
Je l'efface
}
Pourquoi ne pas utiliser une Bdd au lieu d'un fichier ?
Quelles méta données ? D'où viennent elles, et sous quelles formes ?

Est tu certains de faire les bons choix pour mettre en place ce site e-commerce ?
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 15h21   #20
Membre régulier
 
Inscription : octobre 2010
Messages : 253
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 253
Points : 92
Points : 92
Le chat vient en guise d'exemple d'un article, ceci est un cas pratique, je ne vends ni table, ni chaise, ni chat.

Pourquoi ne pas mettre ces données dans une bdd ? Parceque opengraph vient crawler les balises <meta> de la page en question, ça ne servirait donc à rien.
student_php est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h16.


 
 
 
 
Partenaires

Hébergement Web