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 :

Code PHP dans du JavaScript


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 106
    Par défaut Code PHP dans du JavaScript
    Bonjour à tous...

    Voilà, j'aimerais à la fermeture d'une fenêtre qu'un fichier soit supprimé du serveur.

    J'ai donc ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <script langage="JavaScript" type="text/javascript">
      onunload ("<?php unlink ($_SESSION['file_name']); ?>");
    </script>
    En fait cela fonctionne mais trop bien c'est à dire qu'il supprime le fichier quand la page ce charge. J'aimerais vraiment que ce soit quand on ferme la fenetre car dans ces conditions c'est inutilisable.

    Merci pour vos réponses.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Donc en résumé, ce que tu souhaites, c'est que le navigateur possède un interpréteur PHP, qu'il ai accès au contexte du serveur et si possible j'imagine sans créer de faille de sécurité

    Plus sérieusement, il va falloir regarder du coté d'Ajax pour faire cela
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 106
    Par défaut
    En gros

    Bon sinon y'a la solution plus simple d'un bouton pour effacer le fichier mais les collaborateurs ne 'cliquerons' jamais dessus...

    Sinon faire tourner un script UNIX en fond qui efface les fichiers de plus de un mois...

    Avant j'effacé le fichier à l'envoie du mail mais si la personne ce trompe de mail (ca peut arriver) il faut tout refaire... et là ca craint...

    Merci pour ta réponse.

    EDIT : Si vous avez d'autres idées...

    EDIT2 : Ca serais compliquer à mettre en oeuvre avec du AJAX ? (je dois m'y mettre mais là je risque de manquer de temps)

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    La solution Ajax n'est pas forcément très compliquée à mettre en place
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 106
    Par défaut
    Citation Envoyé par Bovino Voir le message
    La solution Ajax n'est pas forcément très compliquée à mettre en place
    Sauf quand on y connait rien du tout

    Euh sinon par faille de sécurité ? Est-ce que ce sont de 'grosse' faille ?
    Car ca serais pour de l'Intranet limité, donc à la limite si il y'a d'autres solutions, ca peut peut-être être envisageable...

    Merci.

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ce tuto : http://siddh.developpez.com/articles/ajax/
    contient tout ce dont tu as besoin pour faire ce que tu souhaites

    Concernant les failles de sécurité, je parlait juste de celles qui existeraient si du code PHP pouvait être exécuté par le navigateur !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    Citation Envoyé par GoodWear Voir le message

    En fait cela fonctionne mais trop bien c'est à dire qu'il supprime le fichier quand la page ce charge. J'aimerais vraiment que ce soit quand on ferme la fenetre car dans ces conditions c'est inutilisable.

    ....
    Euh sinon par faille de sécurité ? Est-ce que ce sont de 'grosse' faille ?

    .
    [TROLL]prochaine étape : formater le disque dur via le client[/TROLL]

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 106
    Par défaut
    Ok, un truc comme ceci, est-ce que ca pourrais fonctionner ??? :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    <html>
    	<head>
    		<title>Page 6</title>
    		<script type='text/JavaScript'>
     
    	 		function getXhr(){
                                    var xhr = null; 
    				if(window.XMLHttpRequest) // Firefox et autres
    				   xhr = new XMLHttpRequest(); 
    				else if(window.ActiveXObject){ // Internet Explorer 
    				   try {
    			                xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			            } catch (e) {
    			                xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			            }
    				}
    				else { // XMLHttpRequest non supporté par le navigateur 
    				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    				   xhr = false; 
    				} 
                                    return xhr
    			}
     
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    			function go(){
    				var xhr = getXhr()
    				// On défini ce qu'on va faire quand on aura la réponse
    				xhr.onreadystatechange = function(){
    					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    					if(xhr.readyState == 4 && xhr.status == 200){
    						alert(xhr.responseText);
    					}
    				}
    				xhr.open("GET","ajax.php",true);
    				xhr.send(null);
    			}
    		</script>
    	</head>
    	<body>
    		<input type='button' value='Dis quelque chose !' onclick='go()' />
    	</body>
    </html>
    Et mon fichier AJAX :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
            session_name('toto');
            session_start();
            ob_start();
     
            unlink ($_SESSION['file_name']);
    ?>

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Oui, la base c'est bien ça.
    Mais tu peux aussi bien associer l'envoi de la requête à l'événement onunload (ou mieux unbeforeunload).
    Dans ton cas, tu n'as pas spécialement besoin d'informations de retour donc le onreadystatechange peut être omis, à moins que tu préfères retourner si l'effacement a fonctionné ou non. En tout état de cause, la partie xhr.responseText n'a d'intérêt que si tu renvoies une valeur (un echo dans ton script PHP)
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 106
    Par défaut
    Euh oui, quel idiot j'ai oublié l'essentiel avec onunload. Donc si j'ai bien compris ton explication ca donnerais ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <html>
    	<head>
    		<title>Page 6</title>
    		<script type='text/JavaScript'>
     
    	 		function getXhr(){
                                    var xhr = null; 
    				if(window.XMLHttpRequest) // Firefox et autres
    				   xhr = new XMLHttpRequest(); 
    				else if(window.ActiveXObject){ // Internet Explorer 
    				   try {
    			                xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			            } catch (e) {
    			                xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			            }
    				}
    				else { // XMLHttpRequest non supporté par le navigateur 
    				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    				   xhr = false; 
    				} 
                                    return xhr
    			}
     
    			function go(){
    				var xhr = getXhr()
    				xhr.open("GET","ajax.php",true);
    				xhr.send(null);
    			}
             unbeforeunload('go()'); // euh je ne suis pas sur du tout là... mais c'est ici qu'il faut appeler la fonction non ?
    		</script>
    	</head>
    	<body>
    <p> ma page </p>
    	</body>
    </html>

  11. #11
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Oui, tout à fait
    Et avec onbeforeunload :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <html>
    	<head>
    		<title>Page 6</title>
    		<script type='text/JavaScript'>
     
    	 		function getXhr(){
                                    var xhr = null; 
    				if(window.XMLHttpRequest) // Firefox et autres
    				   xhr = new XMLHttpRequest(); 
    				else if(window.ActiveXObject){ // Internet Explorer 
    				   try {
    			                xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			            } catch (e) {
    			                xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			            }
    				}
    				else { // XMLHttpRequest non supporté par le navigateur 
    				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    				   xhr = false; 
    				} 
                                    return xhr
    			}
     
    			function go(){
    				var xhr = getXhr()
    				xhr.open("GET","ajax.php",true);
    				xhr.send(null);
    			}
    		</script>
    	</head>
    	<body onbeforeunload="go()">
    	</body>
    </html>
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

Discussions similaires

  1. Comment mettre du code php dans une condition javascript ?
    Par Alexandrebox dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/04/2010, 12h55
  2. Exécuter du code PHP dans un onchange javascript
    Par beegees dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/01/2009, 17h08
  3. [PHP-JS] Code PHP dans condition javascript
    Par amoiraud dans le forum Langage
    Réponses: 5
    Dernier message: 19/03/2008, 17h47
  4. [PHP-JS] Code php dans un code javascript
    Par adrix26 dans le forum Langage
    Réponses: 8
    Dernier message: 28/02/2007, 16h37
  5. Réponses: 2
    Dernier message: 07/07/2006, 21h11

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