fonction Window open et symbole dièse (#)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : fonction Window open et symbole dièse (#)

par Aureusms » 21 déc. 2006, 15:52

Nous y voilà les mais. J'ai suivi les conseils de Ryle et j'ai changé les # par des () et cela marche. Ainsi Si vous mettez un dièse ou un %23 dans un lien Javascript, cela ne marche pas.

par Aureusms » 17 nov. 2006, 13:36

Je reste perplexe aussi...

Le message d'erreur est :
The requested URL /server/images/photos_produits/SA999979 was not found on this server.

alors que l'image s'appelle SA999979#1.JPG.

J'essaye la même méthode sans le '#' et tout fonctionne.
Mieux j'ai forcé dans le nom le %23 à la place du # et j'obtiens la même erreur :

au lieur de :
$lien_image[$j][0] = 'http://serveur/images/photos_produits/'.str_replace('#','%23',$valeur); // c'est ici que cela pèche
J'ai écris :
$lien_image[$j][0] = 'http://serveur/images/photos_produits/SA999979%231.JPG'; // toute les photos ont le même chemin
The requested URL /server/images/photos_produits/SA999979 was not found on this server.

par Ryle » 17 nov. 2006, 12:15

C'est bizare que le %23 fonctionne pour ta miniature et pas lorsque tu l'ouvres dans ta popup....

Pour le remplacement, je ne pensais pas que tu ouvrais directement l'image, mais que tu la passais en paramètre à une page... En fait, il te suffirait de remplacer ton # par un autre caractère non spécifique au html ($ ; ¶ _ ...) et ouvrir une page php dans ta popup en lui passant le nom en paramètre. Tu pourrais alors récupérer le nom, faire le remplacement inverse et afficher l'image...

m'enfin je comprend pas pourquoi il ne te le prends pas directement le %23 alors qu'il arrive bien à te retourner la vignette :-k

par Aureusms » 17 nov. 2006, 10:29

La tu m'interesse mais je pèche un peu pour la pop op (hyper callé en PHP mais Javascrip pas top bon mais si cela se ressemble).

Voilà le code (vous allez voir c'est tout simple) :
$dossier = opendir($folder);
while ($Fichier = readdir($dossier)) {
       if ($Fichier != "." && $Fichier != "..") {
          $tab_image[$Fichier] = getimagesize ($folder.'/'.$Fichier);
          $nomFichier[$ligne] = $Fichier;
          $ligne++;

          }
        }

closedir($dossier);
sort ($nomFichier);
$j = 0;
foreach ($nomFichier as $valeur) {
         $position_diese = strpos ($valeur,'#');
         if ($position_diese === FALSE) $nom_fichier_coupe = strrev(substr(strrev($valeur),4));
                                   else $nom_fichier_coupe = substr($valeur,0,$position_diese);

         if ($photo_ref == $nom_fichier_coupe) { // Photo_ref est la sortie venant de la BDD

          
            $chemin_image[$j] = '<img src="'.$folder.'/'.str_replace('#','%23',$valeur).'" alt="" title="Cliquez sur l image pour l agrandir" width="'.$largeur_image.'" height="'.$hauteur_image.'" border="1" />';
            $lien_image[$j][0] = 'http://serveur/images/photos_produits/'.str_replace('#','%23',$valeur); // c'est ici que cela pèche
            $lien_image[$j][1] = $valeur;
            $j++;
            }
         }

Appel de la fonction javascript en PHP

Code : Tout sélectionner

echo '<a href = "javascript:ouvreFenetre(\''.$lien_image[$i][0].'\', \''.$lien_image[$i][1].'\', '.$tab_image[$lien_image[$i][1]][0].', '.$tab_image[$lien_image[$i][1]][1].')">'.$chemin_image[$i].'</a>';
et la focntion Javascript :

Code : Tout sélectionner

function ouvreFenetre(page, nom_page ,largeur, hauteur) { window.open(page, nom_page, "scrollbars=no,menubar=no,toolbar=no,resizable=no,width=" + largeur + ",height=" + hauteur); }

par Ryle » 16 nov. 2006, 11:16

Le dièse est un caractère spécifique dans l'url, il sert à définir l'ancre ou l'id à atteindre à l'intérieur du document...
Par contre le %23 devrait fonctionner.. tu peux nous montrer un bout de code ?

Au pire, il te suffit de remplacer le # par un autre caractère dans ton lien, et de faire l'opération inverse dans ta popup :)

fonction Window open et symbole dièse (#)

par Aureusms » 15 nov. 2006, 20:06

Bonjour la communauté,

J'ai un souci avec la fonction window.open sous javascript. Dès que le mets un symbole # dans le lien le lien se tronque et mon fichier n'est pas trouvable.
J'ai eu beau essayer via %23 (comme dans les liens classiques) mais j'obtient exactement la même chose.
Le problème est que mon site affiche des photos des produits classés par la même référence. Le serveur lit le dossier contenant toutes les photos, les sépare en référence et les tri selon leur position #1, #2, #3, ... ex. refA#1, refA#2 pour deux photos de la référence refA. Je ne peux donc pas changer les noms des photos. Quelqu'un a t il une idée ?