Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'aimerai pouvoir rediriger d'une action vers une autre en POST et lui donner des arguments.
Est-ce possible ? en utilisant _redirect().. _forward() ?
Si c'est pas possible, y a-t-il une autre solution que de stocker en session les argument et dans l'action visée de tester si la session est remplie ?
Cette solution ne me plait pas trop parce que c'est trop à l'arrache ...
merci d'avance
Hors ligne
Bonjour,
Si tu fais un _forward, tu ne changes pas de script. Donc des données en POST, ça n'a pas vraiment de sens. Tu peux mettre des variables dans la registry ou dans des variables globales, ça suffit.
Si tu fais un _redirect, tu fais une redirection HTTP 302. Là tu ne peux ajouter des paramètres que en GET
Si tu veux faire une redirection avec des paramètres en POST, je ne vois pas d'autre solution qu'en javascript (tu affiches un formulaire et tu fais un $(document).ready( function() { $("myForm").submit(); } ) (en jquery) )
A+, Philippe
Hors ligne
Merci beaucoup pour la réponse très rapide.
Ça confirme ce que je pensais, il faut que j'utilise Zend_Registry pour y passer les argument après le _forward().
C'est pas tip top mais bon, ça passe ...
C'est Zend qui n'a pas implémenté la redirection en POST ou c'est php qui ne le fait pas ?
Ce serai bien pratique des fois :-)
Hors ligne
Il faut utiliser un code HTTP 307
Soit tu remplis l'objet de réponse par toi-même, soit tu utilise l'aide d'action redirector.
Le protocole HTTP spécifie que le client doit demander le renvoi des informations, ce qui est caractérisé par un message de confirmation coté utilisateur.
La RFC 2616 reste disponible, ZendFramework n'invente rien, il utilise PHP, qui lui même utilise est couplé sur un serveur web, et le langage de référence entre un serveur web et un client web est HTTP, qui existe depuis 1995 en RFC
Hors ligne
Bonjour,
Julien, je suis très interessé par le protocole HTTP, notamment parceque je m'interesse sur l'ajax et je ne pige pas vraiment comment fonctionne les headers, comment un script récupère un header, etc. De plus, je ne sais pas si c'est une bonne idée mais pour un bridge que je dois faire entre mon appli ZF et un CMS, je souhaiterai utiliser cette méthode (envoyer par post) pour ma double connexion. Voilà, j'espère que je me suis fait comprendre
J'ai lu il y'a qq temps (qq mois) que tu souhaiterai écrire un livre sur le protocole HTTP après ton bouquin (très attendu) sur ZF. Peut-être en attendant pourrait tu me conseiller une référence français/english ou des sites intéressant (clair comme les tutos que tu rédiges) ?
Hors ligne
N'oublie pas ce qu'a dit Julien : qu'avant PHP, il y a le serveur Web. Lui sait tout de ton client. C'est lui le maître du jeu.
Il rend accessible des tas de variables au moteur PHP. PHP les retranscrit une bonne partie des headers et autre variables d'environnement dans $_SERVER et commençcant par HTTP_
Utilise un phpinfo() pour voir ce qu'elle contient.
Sans lire la RFC, en cherchant HTTP, tu trouveras des explications simple sur le fonctionement de HTTP.
A ma connaissance, l'objet XMLHTttpRequest permet de spécifier les header envoyé, mais javascript ne te permet pas de récupérer les headers reçu. Par contre tu peux manipuler les cookies avec js.
Par exemple, une requète AJAX souvent place l'header
X_REQUESTED_WITH = 'XMLHttpRequest'
Ainsi, tu retrouveras cette valeur dans $_SERVER['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest'; Dans ton script PHP et sauras que c'est une requète AJAX
Hors ligne
avec xmlhttprequest en javascript il est possible de positionner des headers à envoyer mais ausi de lire les headers reçus.
l'objet xmlHttpRequest est à l'origine un activeX de microsoft. la doc est là
http://msdn.microsoft.com/en-us/library/ms536428(VS.85).aspx
pour lire les headers il faut utiliser getAllResponseHeaders sur l'objet.
c'est intéressant entre autre pour lire le mime/type et savoir ainsi si on utilise responseText ou responseXML
mais aussi pour directement communiquer avec le serveur. par exemple si le serveur envois un 403 ou un 30x il est possible alors de réagir correctement.
a+JYT
Hors ligne
Ne me dites pas que personne n'a jamais regardé comment fonctionnent les sessions PHP par exemple ?
<?php
session_start();
flush();
var_dump(apache_response_headers());
Ne me dites pas non plus que vous ne possédez aucune notion concernant le cache HTTP, le pipelining, la négociation de contenu ou encore la gestion des Proxies ?
Le protocole HTTP est d'une importance capitale pour un développeur web, il est largement sous exploité, et sa bonne maitrise, permet beaucoup de choses, comme par exemple la pleine compréhension du fonctionnement global du web, ou encore comprendre les failles de celui-ci, et éviter les problèmes trop courants et triviaux de sécurité que l'on rencontre.
Je conseille "HTTP Developer's Handbook", de Chris Shifflet.
Je n'ai pas dit que j'allais écrire un livre sur HTTP, j'ai dit que j'y songeais , c'est pas pareil ^^
Hors ligne
[Sekaijin] merci pour les informations très interessantes.
[Julien] Honte à moi et à ma famille... à la question 1, pour moi une session, c'est un serialize() et unserialize()... Sorry de la déception.
A la question 2 : ben non, absolument aucune. D'ailleurs c'est extrêmement rare qu'on en parle dans un tuto. J'ai lu hier soir ce tuto http://www.expertsrt.com/tutorials/Matt … ders.html. Ca fait longtemps que je souhaite comprendre réellement les headers mais à chaque fois je n'ai jamais trouvé l'énergie à lire toutes la doc officiel écrit dans un bloc note... Si tu as des tutos bookmarkés à ce sujet n'hésite pas.
Reste un point que je n'ai toujours pas compris. Comment le navigateur sait lorsqu'il reçoit un header à quelle page envoyer le contenu, et comment le contenu est pris en compte pour qu'il s'affiche à un précis. J'entends par là, le cas d'une requête AJAX. Lorsqu'on attends une réponse (exemple: if(xhr.readyState == 4 && xhr.status == 200)), comment le navigateur qui reçoit le header va dire que ce header appartient à ce code javascript en attente, etc.).
Bref, on quitte le sujet de ce post mais au cas ou je pose toujours la question (pas très clair certes) car il est rare de trouver des personnes maitrisant le protocole HTTP et les header().
PS: j'ai testé ton script dont voici une partie de la réponse
"Connection"]=> string(10) "Keep-Alive" ["Transfer-Encoding"]=> string(7) "chunked" ["Content-Type"]=> string(9) "text/html" }
Ben honnêtement, à mon niveau, je ne vois pas quoi en faire.
PS:
cache HTTP, le pipelining, la négociation de contenu ou encore la gestion des Proxies ?
tu me déprimes, on dirait qu'on ne fait pas du tout le même métier.
Dernière modification par whitespirit (24-07-2008 10:01:18)
Hors ligne
apache_* sont des fonctions disponbile pour PHP en module apache. l'accès à la variables $_SERVER est disponible quelque soit le serveur web.
De plus, tu devrais savoir que 90% des codeurs PHP sont presque autodidacte et n'ont pas quasi aucune notion dans l'HTTP, SSL/TLS, des fonctions PHP 'spéciales' et tous ce qui peut se rapporter à l'HTTP de près ou de loin.
Ils ne savent pas à quoi sert Keep-Alive, alors parlé de pipelining...
La pluspart n'ont que faire de gestion de contenu, ils cherchent juste les informations nécessaires à ce qu'ils veulent faire. Tant que ca marche.
Qui sait sans cherché à quoi se rapport la RFC 2616 ?? Personne. Ils ne savent même pas la différence entre HTTP 1.1 et 1.0
Tu veux parlé de RFC 2616 et étalé ta science ? Tu peux, mais tu risques de te sentir très seul et tu ne peux rien y faire. Les gens sont comme ça. Contente toi du plus simple et ca leur conviendra.
EDIT : la preuve du message celui-ci précédant de W.Spirit. Il n'a pas vu commence fonctionne les sessions et ne comprends pas de quoi tu parles..
Dernière modification par nORKy (24-07-2008 10:32:21)
Hors ligne
WhiteS.
Quand tu parles dans un groupe de 4 personnes, comment tu sais que tu parles à la personne de droite (et elle aussi le sait) et pas à la personne de gauche ????
Parce que tu l'as regarde et qu'elle connaît le sujet
Les navigateurs et les serveurs Web, c'est pareil.
Chacun sait à qui il parle (point de vue réseau) et chacun sait de quoi il parle (grâce aux headers HTTP qui lors donne des infos)
WhitS, je t'ai conseillé de faire une recherche simple. Pas besoin de lire des docs compliqué.
Par exemple ici :
http://fr.wikipedia.org/wiki/Hypertext_ … r_Protocol
Dernière modification par nORKy (24-07-2008 10:21:54)
Hors ligne
nORKy a écrit:
De plus, tu devrais savoir que 90% des codeurs PHP sont presque autodidacte et n'ont pas quasi aucune notion dans l'HTTP, SSL/TLS, des fonctions PHP 'spéciales' et tous ce qui peut se rapporter à l'HTTP de près ou de loin.
Ils ne savent pas à quoi sert Keep-Alive, alors parlé de pipelining...
La pluspart n'ont que faire de gestion de contenu, ils cherchent juste les informations nécessaires à ce qu'ils veulent faire. Tant que ca marche.
Le problème avec ce genre de démarche, c'est qu'à la fin ça ne marche pas mais ça boite.
En ne connaissant par les bases on a tendance à faire des choses bancales, non optimisées et surtout pouvant mener à des failles de sécurité, donc dangereux pour les utilisateurs. Et là c'est grave.
Pour un projet perso on a tendance à se dire que c'est pas important. Mais combien de petits sites ont contribué à spammer la planète à cause d'un formulaire d'envoi de mail vermoulu (lecture très sommaire de la documentation ou d'une méconnaissance d'un protocole) ?
Baser son produit sur sur une solution que l'on ne comprend pas, je trouve ça très dommage.
Inciter les gens à pousser leurs connaissances plus loin que l'aspect pratique, je trouve ça indispensable si l'on veut faire avancer les choses.
Je ne parle même pas des conséquences que ça peut avoir quand ces personnes rentrent dans le monde professionnel et participent à des projets d'une envergure beaucoup plus importante.
Bref,
Désolé pour la parenthèse HS
Hors ligne
Quand je vais chez un médecin, je m'attends à ce qu'il connaisse mon corps et soit capable de trouver mon problème. Et je m'attends aussi à ce qu'il maitrise de manière convenable la science qu'il prétend pratiquer ...
Fermons la parenthèse, je persiste à dire que maitriser ZF n'est pas possible sans une totale maitrise de PHP, et de tout le sous ensemble sur lequel il tourne ( Apache, HTTP, Unix , etc...... )
Hors ligne
Hello,
Je suis d'accord avec Julien et Mat. Quand tu commences à utiliser un framework comme le ZF, c'est que tu as passé les premières étapes autodidactes (avec les trous de sécurité, les erreurs de prog...). Le ZF (ou tout autre framework) ne fait pas ce que tu ne sais pas faire, il est simplement là pour t'aider. Outre les remarques de Julien, la programmation objet, les design patterns doivent déjà t'évoquer quelque chose pour débuter avec le ZF.
Attention, je ne dis pas que je connais tous les headers HTTP (numéro et objectif), je dis simplement que je connais leur existence et leur but et que jesaurais les retrouver le jour où j'en aurais besoin.
A+
PS : je parle en tant qu'autodidacte sans aucune formation informatique (même avec mon entreprise) mais récemment certifié PHP5 malgré tout.
PPS : désolé Julien, nos messages se sont croisés (je ne voulais pas rouvrir la parenthèse)
Dernière modification par mikaelkael (24-07-2008 13:45:33)
Hors ligne
Le ZF est la pour m'aider à faire ce que je ne sais pas faire ?
Surement pas !
Il nous permet de travaillé plus vite et de manière structuré lorsqu'on en à la connaissance.
L'utilisation de Zend_Form et de tout ce qui va avec n'est pas plus simple que d'écrire soit même le code HTML !
mikaelkael a écrit:
Attention, je ne dis pas que je connais tous les headers HTTP (numéro et objectif),
Les headers HTTP n'ont pas de numéros tu confonds avec les code de retour.
De plus, pour descendez le niveau dans vos propos.
Du pipelining, négociation de contenu, on retombe à la programme PHP objet
Vous changez de sujet.
Évidemment qu'il faut savoir faire de la PPO avec le ZF.
Je trouves qu'il n'est pas bien placé de dévoiler sa science et sa pseudo supériorité en parlant de RFC, pipelining, négociation de contenu pour une personne qui demande juste comment fonctionne les headers HTTP.
Quand je demande à un médecin des nouvelles de ma femme, je n'ai que faire de ses expressions de médecin auquel je ne comprends rien. Je d'abord savoir si elle va bien ou non, gravement malade ou non. Ses explications complexe, il me les donnes après si ca m'intéresse.
Hors ligne
Bonjour,
Juste un petit rappel, on a tous été débutants, on a tous codé des sites alors qu'il nous manquait les bases et qui sont truffés de bugs, de trous de sécurité, etc... (ou alors on n'a jamais codé de site...)
Je voudrais juste rappeler que le but du forum est d'aider les gens à progresser à partir du niveau où ils sont, pas de leur reprocher de ne pas avoir tel ou tel niveau. D'autant qu'on est toujours plus ou moins novices par rapport à d'autres...
Je sais, je fais encore mon prof de morale à 2 balles... Mais je pense que personne n'a à gagner que les trolls envahissent le forum
A+, Philippe
Hors ligne
Ce que vous dites est véridique (hélas) mais je trouve vos propos violent. Vous avez appris comment tous ce qui tourne autour du php ? Perso, je suis autodidacte faisant partie des 90% des ignorants php.
1.Baser son produit sur sur une solution que l'on ne comprend pas, je trouve ça très dommage.
2.Inciter les gens à pousser leurs connaissances plus loin que l'aspect pratique, je trouve ça indispensable si l'on veut faire avancer les choses.
Pour le 1. c'est logique.
Pour le 2. de qui tu parles quand tu écris "Inciter les gens" ? Y'a deux choses qui m'incite à découvrir et appliquer de nouveaux horizons : quand je suis confronté à un problème, alors je trouve la solution en approfondissant mes connaissances pour résoudre ce problème. La deuxième chose est quand je lis des informations que je ne connais pas "Keep-Alive", etc.
Après il faut être réaliste, combien de prof/formateurs (ingé., fac. & co) connaissent tout ce dont vous avez parlé ici ? Combien de bouquin en parle ? (j'ai 2 bouquins php, aucun parle des fonctions spéciales). Combien d'entreprises connaissent réellement les problèmes posés dans ce topic ? Combien de personnes peuvent prétendre avoir de solides connaissances pointues en unix, apache (et pas seulement modifier le .httpdconf), base de données (incluant l'optimisation, trigger, procédure stockées, clustering), l'ajax (plus qu'utiliser un framework), ce protocole http1.1.... Je ne vais pas tout lister... Mais si certain d'entre vous ont ces connsaissances, vous êtes dans le monde du web depuis combien de temps ??
Tu veux parlé de RFC 2616 et étalé ta science ? Tu peux, mais tu risques de te sentir très seul et tu ne peux rien y faire. Les gens sont comme ça. Contente toi du plus simple et ca leur conviendra.
FAUX ! C'est avec beaucoup de respect que je me permet de te dire que je trouve ce propos prétentieux. C'est le monde de l'entreprise qui veut se contenter au plus simple pas les gens.
Je ne parle même pas des conséquences que ça peut avoir quand ces personnes rentrent dans le monde professionnel et participent à des projets d'une envergure beaucoup plus importante.
Je pense que les personnes qui arrivent dans une entreprise et participe à ce type de projet ne portent pas la responsabilité du projet, et ils doivent avoir des responsabilités finies (fixé par un chef d'équipe/de projet). Et si c'était le cas, le problème sera de la responsabilité des recruteurs, pas du "phpman" qui joue carte sur table en dévoilant ces connaissances et compétences.
la preuve du message celui-ci précédant de W.Spirit. Il n'a pas vu commence fonctionne les sessions et ne comprends pas de quoi tu parles..
Je travail dans une entreprise ou le mot d'ordre est productivité. C'est une petite structure et planter un projet peu planter cette structure. Le plus dur est de tenir les deadlines. Si nous utilisons ZF ce n'est pas par flème de coder nous même un noyeau ou autres, mais pour être compétitif et ainsi assurer notre survie. Ce qui revient à dire que hélas, j'utilise beaucoup de composants sans réellement connaitre le fonctionnement mais ce n'est pas une question de choix (ceci n'empêche pas le bon fonctionnement de l'appli, tu me diras pour combien de temps ?). Deuxièmement, j'apprends énormément les "secrets bien gardés du php" grâce à ZF car j'ai accès aux codes-sources. Voilà comment j'ai appris à utiliser (et comprendre l'intérêt) de qq fonctions spéciales voir ... magic.
Désolé d'avoir ouvert cette parenthèse mais j'ai trouvé un peu bourrin (voir méchant) et décalé certains propos cités dans ce topic. Malgré tout, je ne peux qu'avoir un énorme respect pour vous et me sentir ridiculement petit dans ce monde de développeurs/architectes.
Fermons définitivement cette parenthèse ou continuons là en privés.
Hors ligne
Je vais me garder de donner des points à l'une ou l'autre des réponses, par contre je vais clore le débat en fermant le thread.
Philippe (censeur en chef)
Hors ligne