Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1846 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  image à lire avant un script

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

image à lire avant un script

n°1256244
bozobuzu
Posté le 30-11-2005 à 18:37:42  profilanswer
 

Bonjour,
 
Je post car j'ai un petit problème : comment faire en sorte qu'une image soit intégralement chargée avant d'exécuter un javascript ?
 
 
Voilà comment ça se présente :
 
home.html :
-----------
 

Code :
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <SCRIPT type="text/javascript" src="http://www.monsite.com/script.php"></SCRIPT>
  6. <a href="http://www.monsite.com"><img src="http://www.monsite.com/image.png" border="0"></a>
  7. </body>
  8. </html>


 
.htaccess
---------

Code :
  1. Options +FollowSymLinks
  2. RewriteEngine  on
  3. RewriteBase    /
  4. RewriteRule ^image.png$ /image.php [L]


 
image.php
----------

Code :
  1. <?
  2. session_start();
  3. session_register("masession" );
  4. $i=0;
  5. $i++; $masession[$i]=Array("1","abc" );
  6. $i++; $masession[$i]=Array("2","def" );
  7. $i++; $masession[$i]=Array("3","ghi" );
  8. header( 'Content-type:image/png' );
  9. fpassthru( fopen( 'image-relle.png', 'rb' ) );
  10. exit();
  11. ?>


 
script.php :
-----------

Code :
  1. <?
  2. session_start();
  3. $a=$masession[1][1];
  4. $b=$masession[2][1];
  5. $c=$masession[3][1];
  6. unset($masession);
  7. session_destroy();
  8. $affichCheckSess = '
  9. 1 : '.$a.' <br>
  10. 2 : '.$b.' <br>
  11. 3 : '.$c.' <br>
  12. ';
  13. echo "document.write(\"'.$affichCheckSess.'\" );";
  14. ?>


 
 
Ce qui devrait se passer :  
1) home.html appelle image.png, qui est rerootée sur image.php.
2) image.php crée des variables de session et affiche ensuite l'image demandée.
3) home.html appelle script.php
4) script.php récupère ces variables et les affiche sur home.html avant l'image.
 
Ce qui se passe :  
script.php est appelé avant image.png, car il est placé avant sur home.html. Donc, mes variables de session ne sont pas récupérées, puisque pas encore crées.
 
LA QUESTION (on y vient  :pt1cable: ) :
 
Existe-t-il un moyen de faire en sorte que image.png soit chargé par le browser AVANT script.php, qui pourtant est lui meme placé avant image.png ??
 
Si qulqu'un a lu ça jusqu'au bout, j'ai déja de la chance...  :D

mood
Publicité
Posté le 30-11-2005 à 18:37:42  profilanswer
 

n°1256254
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 30-11-2005 à 18:47:51  profilanswer
 

Houlà Bozo (t'as choisi ce nom exprès ? :D), tu mélanges js et php là.
Si tu veux que ton script PHP soit exécuté avant ton affichage de l'image, il faut l'inclure par <?php include('script.php'); ?> car comme l'indique ton "script src", c'est pour attacher un fichier javascript, pas PHP.
Connais-tu la grosse nuance qui différencie PHP de javascript ?

n°1256260
bozobuzu
Posté le 30-11-2005 à 18:59:25  profilanswer
 

PHP s'execute avant l'affichage (coté serveur), et JS après (coté client). Voila pour la GROSSE différence.
 
Mon <script src="script.php"> appelle une page PHP, c'est vrai, mais qui envoie du code JS.  
(exemple : <? echo "document.write("hello" );''; ?> ) Donc, de ce coté là, ça marche. Mon JS s'execute, mais Après l'affichage de l'image, et donc, il lui manque des variables
 
Et la ou tu vas rire, c'est que je ne peux pas mettre de code PHP sur home.html. home.html est destinée à etre hébergé sur plusieurs sites, dont certains ne peuvent employer PHP. Je doit donc trouver une autre solution. A mon avis, quelque chose à inclure dans le <head> ou dans les premieres lignes de script.php

n°1256276
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 30-11-2005 à 19:11:40  profilanswer
 

Autant pour moi pour le js en PHP.
 
Autrement inclu ton fichier image.php directement dans ton script.php.
Dans script.php, tu inclus image.php et document.write('<a href="http://www.monsite.com"><img src="http://www.monsite.com/image.png" border="0"></a>');
 
C'est pas super propre, mais bon, je vois que ça.
 

n°1256282
bozobuzu
Posté le 30-11-2005 à 19:14:57  profilanswer
 

Je dois impérativement dissocier les deux. image.png et script.php ne peuvent s'afficher ensemble. Ca peut paraitre bizarre, mais je fais une appli qui necessite 2 accès extérieurs depuis la meme page html pour jouer avec les variables de session. Mais merci quand meme !
 
Par contre, serait-il possible de faire "patienter" script.php lors de son execution, pour qu'il attende que les variables de session crées par image.png existent ?


Message édité par bozobuzu le 30-11-2005 à 19:17:10
n°1256313
art_dupond
je suis neuneu... oui oui !!
Posté le 30-11-2005 à 20:03:25  profilanswer
 

peut etre une solution cracra.
 

Code :
  1. define('SUPER_GRAND_NOMBRE', 999999); // mettre un nombre raisonable
  2. while($i<SUPER_GRAND_NOMBRE && !isset($_SESSION['var_cree_par_image_php']))
  3. {
  4.    ++$i;
  5. }
  6. # ici, la suite de script.php


 
 
je ne sais pas du tout ce que ca donnerait...
 
va-t-il "apprendre" les variables de session à la "volée" ?
 
sinon créer un fichier à la fin de image.php (ou modifier sa date de modification s'il existe déjà (touch())) et tester cette date dans script.php (dans le méga while):
 

Code :
  1. $now = microtime(); // je ne sais pas si ce sera le meme format que donné par filemtime()
  2. while($i<SUPER... && ($now < filemtime('fichier_test'))
  3. {
  4. }
  5. // sort de la boucle si le fichier a été créé après le début de script.php
  6. // ajouter une vérification au cas ou il est sorti à cause du $i


 


Message édité par art_dupond le 30-11-2005 à 20:07:46
n°1256424
bozobuzu
Posté le 30-11-2005 à 21:43:17  profilanswer
 

j'ai tenté la 1ere et la 2eme méthode. Erreur server. Il doit croire que je fais une boucle infinie ou qlq chose comme ça.
 
Et si je préchargeait l'image dans le <head> de home.html ? L'image serait chargée avant l'execution de script.php ?

n°1257925
art_dupond
je suis neuneu... oui oui !!
Posté le 03-12-2005 à 01:13:09  profilanswer
 
n°1257962
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 03-12-2005 à 03:34:58  profilanswer
 


Je déconseille pour des raisons évidentes.

n°1257964
Ricco
Retour au pays
Posté le 03-12-2005 à 03:53:39  profilanswer
 

Et en appellant le javascript dans la partie onLoad de l'image ?


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
mood
Publicité
Posté le 03-12-2005 à 03:53:39  profilanswer
 

n°1258072
art_dupond
je suis neuneu... oui oui !!
Posté le 03-12-2005 à 13:59:14  profilanswer
 

The-Shadow a écrit :

Je déconseille pour des raisons évidentes.


tu peux expliquer pourquoi ? :jap:

n°1258140
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 03-12-2005 à 16:49:52  profilanswer
 

Je ferme la porte du garage quand ma voiture est dehors, si j'appuye sur un bouton qui dis à ma porte de garage de se fermer dans 10 secondes il peut y avoir 2 conséquences. Je sors ma voiture en 3 secondes et ma porte reste 7 secondes ouverte inutilement, si à la dixième seconde, je suis en plein millieu, je me fais écraser. :D
Bon, c'est une analogie, mais ça prouve que c'est tout sauf propre comme solution.

n°1258258
art_dupond
je suis neuneu... oui oui !!
Posté le 03-12-2005 à 23:04:24  profilanswer
 

ok c'est pas très propre mais y a moyen de s'en sortir avec un petit test non (et si au bout de 2 secondes, image.php n'est pas fini -> die('erreur, veuillez reloader la page') ) ?
 
sinon avec une page intermédiaire pour les variables de session qui renverrait sur cette page ?


---------------
oui oui
n°1258268
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 03-12-2005 à 23:24:27  profilanswer
 

y'a moyen effectivement, enfin, c'est un solution bancale, un script PHP dure souvent moins d'une seconde (heureusement) et il libère la mémoire quand il a fini. Le faire patienter 2 secondes, c'est occuper la mémoire 3 fois le temps nécessaire à son exécution. C'est bancale comme solution et ça met d'office le script dans la catégorie "Utilisation simultanée bridé à la base".

n°1258347
Ricco
Retour au pays
Posté le 04-12-2005 à 11:54:34  profilanswer
 

Moi, je comprends pas trop ce qu'on veut faire.  
Un script qui va chercher l'image, stocke genre les dimensions ou le poids dans des variables de session et l'affiche dans le flux, et un autre script qui affiche le lien de l'image et les caractéristiques de l'image récupéré dans la cession ?
Pourquoi ne pas avoir un script qui affiche l'image et un autre qui va aussi chercher l'image et obtient ces informations ? Ca fait 2 accès à la même image mais là j'ai l'impression qu'on veut s'épargner ça en introduisant de l'attente active, ça n'a pas de sens ... enfin si j'ai bien compris.


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
n°1259393
bozobuzu
Posté le 05-12-2005 à 18:01:30  profilanswer
 

Effectivement, vu les vitesses de connexion actuelle, je pense 2 accès à la page, ce n'est plus dérangeant que 1. D'autant plus que c'est uniquement pour passer du petit code ou de la petite image...


Message édité par bozobuzu le 05-12-2005 à 18:01:52

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  image à lire avant un script

 

Sujets relatifs
Lire un son dans une page web (avancé)Cherche script carnet d'adresses
script defini ressource partagéproblème script shell en bash!
Lien avec image un peu chiantScript qui rempli un champ de formulaire sur une autre page
Démarrer une animation à une certaine imagelire un flux reseau avec delphi
script fondu arriere planNombre de visiteurs connectés. Recherche script
Plus de sujets relatifs à : image à lire avant un script


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR