IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

self et top


Sujet :

JavaScript

  1. #1
    Membre �clair�
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activit� : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par d�faut self et top
    Bonjour,

    Je souhaite rediriger les internautes vers F1.php d�s le moment que je ne me trouve pas dans une frame et que le fichier appelant est diff�rent de F1.php
    Ceci �tant, l'ex�cution de mon script PHP ci-dessous ne fait rien.

    Code php : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <html>
    <head>
    <body>
    <?php
    	$FichierSource = $_SERVER['HTTP_REFERER'];
    	$FichierCible = "F1.php";
    	echo "<script language=\"JavaScript\" type=\"text/JavaScript\">";
    	echo "if(self==top && ".$FichierSource." != $FichierCible;)";
    	echo "{";
    	echo "top.location.href=\".$FichierCible.\"}";
    	echo "</script>";
    ?>
    </body>
    </html>

    Je me doute bien qu'il y a au moins une erreur mais je s�che.
    Merci d'avance pour vos remarques.

  2. #2
    Mod�rateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par d�faut
    Est-ce que le javascript que tu obtiens est bien celui que tu veux ?
    Si oui, c'est une question Javascript pas PHP.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre �clair�
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activit� : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par d�faut PHP et javascript
    Bonjour (et merci Sabotage)

    Je viens de modifier l�g�rement mon code ainsi:

    Code php : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <html>
    <head>
    <body>
    <?php
    	$FichierSource = $_SERVER['HTTP_REFERER'];
    	$FichierCible = "F1.php";
    	echo "<script language=\"JavaScript\" type=\"text/JavaScript\">";
    	echo "if(self==top && ".$FichierSource." != $FichierCible;)";
    	echo "{";
    	echo "top.location.href=\".$FichierCible.\"}";
    	echo "</script>";
    ?>
    </body>
    </html>


    Du coup, le code g�n�r� est le suivant :
    Code html : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    <html>
    <head>
    <body>
    <script language="JavaScript" type="text/JavaScript">if(self==top && MonFichierSource.php != MonFichierCible.php){top.location.href="MonFichierCible.php"}</script></body>
    </html>

    Je pense (sans doute � tort) qu'il est bon mais constate qu'il devrait renvoyer vers MonFichierCible.php alors qu'il ne se passe rien. Si je te suis bien, l'erreur viendrait du javascript mais je ne la vois pas.

  4. #4
    Mod�rateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par d�faut
    Bonjour,
    il te manque des double quotte autour de tes chaines MonFichierSource.php et MonFichierCible.php pour obtenir
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    if (self == top && "MonFichierSource.php" != "MonFichierCible.php") {
      top.location.href = "MonFichierCible.php"
    }

  5. #5
    Membre �clair�
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activit� : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par d�faut
    Effectivement, je viens juste de m'en rendre compte et j'allais le signaler.
    Merci � tous ceux qui se sont pench�s sur mon probl�me.

  6. #6
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    Quelques pr�cisions :
    • Tu peux retirer language="javascript", c'est un attribut obsol�te.
    • En PHP, tu le sais d�j�, on peut inclure une variable dans une cha�ne ou bien faire une concat�nation. L� tu fais les deux sur la m�me ligne :
      Code PHP : S�lectionner tout - Visualiser dans une fen�tre � part
      echo "if(self==top && ".$FichierSource." != $FichierCible;)";
      C'est pas super clair, et je pense que c'est � cause de �a que tu t'es embrouill� avec les guillemets.
      Code PHP : S�lectionner tout - Visualiser dans une fen�tre � part
      echo "if(self==top && '$FichierSource' != '$FichierCible')";
    • Aie le r�flexe d'utiliser les guillemets simples (') plut�t que les guillemets doubles (") quand il n'y a pas de variable PHP dans la cha�ne. �a simplifie souvent la syntaxe et c'est une optimisation facile � faire.
    • Juste une possibilit� de faire autrement : puisque $fichierSource et $fichierCible sont tous deux connus � l'ex�cution du script PHP, tu peux faire le test directement en PHP, et envoyer moins de code JavaScript dans le cas favorable.
      Code PHP : S�lectionner tout - Visualiser dans une fen�tre � part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      <?php
         $FichierSource = $_SERVER['HTTP_REFERER'];
         $FichierCible = "F1.php";
         echo '<script type="text/JavaScript">';
         if ($FichierSource !== $FichierCible) {
            echo 'if (self === top) { ';
            echo "top.location.href = '$FichierCible'; ";
            echo '}';
         }
         echo '</script>';
      ?>
    • Pour contr�ler l'inclusions de ta page dans un frame ou iframe, il existe depuis quelques ann�es l'en-t�te HTTP X-Frame-Options (je n'ai pas trouv� de source suffisamment bonne en fran�ais, d�sol�). Tu peux l'envoyer avec la fonction PHP header. Cette solution a l'avantage de fonctionner (si le navigateur est compatible) quand JavaScript est d�sactiv�.
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. emp�cher top.location.href=self.location.href
    Par cordobal74 dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 31/01/2006, 09h15
  2. Requetes TOP/BOTTOM
    Par bilbon.S dans le forum Requ�tes
    R�ponses: 7
    Dernier message: 21/04/2004, 12h30
  3. MessageBox always on top
    Par Ingham dans le forum Composants VCL
    R�ponses: 5
    Dernier message: 08/04/2004, 13h44
  4. ASM + DELPHI ... soucis ... mais top int�ressant !
    Par - Robby - dans le forum Langage
    R�ponses: 9
    Dernier message: 21/11/2003, 15h58
  5. PB avec "self" dans une dll
    Par DiJiRiDouS dans le forum Langage
    R�ponses: 2
    Dernier message: 21/02/2003, 09h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo