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

Langage PHP Discussion :

[PHP-JS] interpréter du javascript


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut [PHP-JS] interpréter du javascript
    bonjour, voila je voudrais interpréter du javascript avant de mettre les valeurs obtenues dans un fichier... je pense que c possible avec flush mais je ne sais pas comment faire.

    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
    $source="Inconnue";
    if(isset($_SERVER['HTTP_REFERER']))
    	$source=$_SERVER['HTTP_REFERER'];
    $Langue = explode(",",$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
    $Langue = strtoupper(substr(chop($Langue[0]),0,2));
    $ip_client=$_SERVER["REMOTE_ADDR"];
     
    ob_start();
    $stat="";
    $stat.="***********************************************************************************************\n\r\n\r";
    $stat.="[LANG = ".$Langue."] - [IP = ".$ip_client."]\n\r\n\r\n\r";
    $stat.="Systeme d'exploitation : <script type=\"text/javascript\">document.write(getPlatform());</script>\n\r\n\r\n\r";
    $stat.="Navigateur : <script type=\"text/javascript\">document.write(getNavigator());</script>\n\r\n\r\n\r";
    $stat.="Plugins installés : <script type=\"text/javascript\">document.write(getPlugins());</script>\n\r\n\r\n\r";
    $stat.="Page source : ".$source."\n\r";
    flush();
    ob_flush();
    ob_end_flush();
     
    if(isset($_SERVER['HTTP_REFERER']))
    	{
    	echo substr($_SERVER['HTTP_REFERER'],0,22);
    	if (substr($_SERVER['HTTP_REFERER'],0,22) != "http://max.a44.free.fr")
    		{
    		$file = fopen("log.txt","a");
    		fputs($file,$stat."\n\r");
    		fclose($file);
    		}
    	}
    else
    	{
    	$file = fopen("log.txt","a");
    	fputs($file,$stat."\n\r");
    	fclose($file);
    	}
    Merci

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    non, ce n'est pas possible.

    PHP s'execute coté SERVEUR et JAVASCRIPT s'execute coté CLIENT.

    avec tout les artifices que tu voudras, Javascript ne commence a s'executer qu'apres que la derniere ligne de code de PHP soit passée et executée.

    De plus, la notion meme de passer une variable de Javascript vers PHP dans une meme transaction est un non sens puisque PHP fonctionne sur le principe de la requete (GET/POST) et il n'a pas acces a d'autres variables "externes" - comme celle que tu voudrais lui passer venant de javascript - pour traiter sa requete. PHP s'execute dans un tunnel : Tu lui donne quelque chose en entrée, il travaille, et a la fin tu as le résultat. Eventuellement des acces a des fichiers et a une base de données mais c'est tout.
    Javascript peut réagir au evenements utilisateurs donc son comportement peut etre beaucoup plus erratique et est dépendant des evenements exterieurs, ce n'est pas, ce n'était pas et ca ne sera jamais le cas pour PHP.

  3. #3
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    humm.... j'avais un doute aussi ... :s

    Est ce que vous avez une solution pour faire ce que je veut faire, genre une fenêtre invisible qui s'ouvre et qui se referme...

    merci, pour l'info ...

  4. #4
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Citation Envoyé par max44410
    genre une fenetre invidible qui s'ouvre et qui se referme...
    par exemple ;o)

    je l'ai jamais fait, mais je pense qu'on peux changer la source d'une iframe avec javascript, donc charger une page php dedans, donc générer (avec php) du code javascript dans l'iframe en question qui va aller donner son resultat a la frame parente.

    2 problemes techiques a résoudre donc :
    * Changer l'url dans une iframe en javascript (de taille 0)
    * Communiquer en javascript entre une iframe et sa page parente

    J'pense que les p'tits gars du forum javascript auront les réponses ;o)

  5. #5
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    Là j'avoue que je ne te suis pas trop, je vois pas ce que peut nous apporter une iframe (c juste un DIV un peu spécial)

    si tu pouvais m'éclaircir ...

  6. #6
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    /me applique une fonction gamma sur max44410 pour l'eclaircir (éclairer plutot ;o)

    trève de plaisanterie ;o)

    l'idée c'est de provoquer un rechargement de page, ou plus spécifiquement, une requete HTML qui va interroger le serveur, ce qui permettra a php de s'executer.

    Comme tu l'as dit, on peux faire ca avec une popup... mais y a beaucoup de trucs qui bloquent les popup

    Une iframe se présente sous la forme : <iframe src="page.php" /> donc elle satisfait a ce que l'on cherche.

    Si tu arrives, via javascript, a "changer" l'url d'une iframe, cela va provoquer (en live) le chargement de la page php (avec meme des parametres que tu peux passer en php en GET).

    Puis PHP va se terminer et generer du code html... et pourquoi pas du javascript ? et donc ton iframe qui contient du javascript, avec les résultats de ton traitement php, ne pourrait elle pas communiquer ses résultats a sa frame parente ? (qui elle n'a pas été rechargée)

    Si ton but est juste d'appeler une page php sans avoir de retour, tu peux faire la meme chose avec une image, generer en javascript une <img src="page.php"> qui va faire ce qui va bien. Evidemment, faudra generer une image de 0 ou 1px pour qu'elle soit invisible, en plus du traitement.

  7. #7
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    Ok,

    Je pense à un exemple plus simple ... tu m'arrêtes si je me trompe...

    j'ai m'a page index.php, au tout début j'ai mes fonctions javascript qui permettent de récupérer des infos sur le client.

    ensuite j'ai mon iframe qui fait appel à une page php en passant en paramètre les foncitons "js" comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <iframe src="page.php?nav=<? echo "javascript:getNav();"?>" />
    je suis vraiment pas sur de moi ... je pense que ça pose le meme problème qu'avant ...

  8. #8
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    dis toi bien une chose :

    * Execution de la page PHP
    PUIS
    * Execution de la page Javascript

    jamais l'inverse, jamais de chevauchement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <iframe src="page.php?nav=<? echo "javascript:getNav();"?>" />
    est totalement équivalent à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <iframe src="page.php?nav=javascript:getNav()" />
    ce qui n'est pas du code correct et n'est pas ce que tu souhaites. relis les messages précédents si necessaires, mais tu ne peux pas demander a du javascript de s'executer AVANT php, c'est impossible.

  9. #9
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    ok bon bah j'ai posté sur le forum javascript on verra bien ce qu'ils me disent ...

    Post Forum Javascript

    en tout cas merci bien Fladnag

    je mets résolu quand même ... même si ... lol

  10. #10
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    Je tenais à faire partager ma solution, je trouve ça amusant de savoir d'où viennent les gens qui visite notre site, quelle recherche ont ils fait pour venir jusqu'a nous... lol donc voila :

    Code à inclure au début de l'index :

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    <?PHP session_start(); ?>
    <html>
    	<head>
    		<title>Liberty-sources</title>
    		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    		<link href="style.css" rel="stylesheet" type="text/css" />
    		<script type="text/javascript">
    		function getPlatform()
    			{
    			var OSName="Unknown OS";
    			if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
    			if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
    			if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";
    			if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";
     
    			var pForme = document.getElementById('id_platforme');
    			pForme.value = OSName;
    			}
     
    		function getPlugins()
    			{
    			var plug = new Array();
    			var plugTxt="";
    			if (navigator.plugins.length != 0)
    				{
    				plug[0]="toto";
    				var j=1;
    				var i=0;
     
    				do
    				{
    				if (navigator.plugins[i].name != plug[j-1])
    						{
    						if (i!=0)
    							{
    							plug[j]=navigator.plugins[i].name;
    							j++;
    							}
    						else
    							{
    							plug[0]=navigator.plugins[i].name;
    							}
    						}	
    				i++;
    				}
    				while (i < navigator.plugins.length);
     
    				for(var i=0; i < plug.length; i++)
    					{
    					if (i == (plug.length-1))
    						plugTxt+="\t - "+plug[i]+"\r\n";
    					else
    						plugTxt+="\t - "+plug[i]+"\r\n";
    					}
    				}
    			var pIn = document.getElementById('id_plugins');
    			pIn.value = i+" \r\n\r\n"+plugTxt;
    			}
     
    		function valide()
    			{
    			getPlatform();
    			getPlugins();
    			//alert ('toto');
    			document.formStat.submit();
    			}
    		</script>
    	</head>
    <body>
    	<form method="post" action="script_stat.php" name="formStat" target="iframe_script">
    		<input id="id_platforme" type="hidden" name="platforme" value="">
    		<input id="id_plugins" type="hidden" name="plugins" value="">
    	</form>
    	<?php if (!isset($_SESSION['isInformationRetrieved'])){ ?>
    		<script type="text/javascript">setTimeout('valide()',2)</script>
    	<?php $_SESSION['isInformationRetrieved']="ok";} ?>
    	<iframe FRAMEBORDER=0 SCROLLING=NO name="iframe_script" width="0" height="0"></iframe>
    et le fichier script_stat.php a mettre dans le même répertoire que index.php

    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
    46
    47
    48
    49
    <?
    // affichage d'une date au fromat hour-min-sec-aaaa-mm-jj --> lundi 1 janvier 2004 19:25 :58 sec
    function dateLog($maDate, $WeekDayOn=1, $YearOn=1)
    	{
    	$Mois = array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre");
    	$Jours = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
    	$DF=explode('-',$maDate);
    	$leJour=getdate(mktime($DF[0],$DF[1],$DF[2],$DF[4],$DF[5],$DF[3]));
    	$maDate=$DF[5]." ".$Mois[$DF[4]-1];
    	if($WeekDayOn){$maDate=$Jours[$leJour["wday"]]." ".$maDate;}
    	if($YearOn){$maDate.=" ".$DF[3];}
    	return $maDate." ".$DF[0].":".$DF[1].":".$DF[2]." sec";
    	}
    $dateVisite=dateLog(date("H-i-s-Y-m-d"));
     
    $source="Inconnue";
    if(isset($_SERVER['HTTP_REFERER']))
    	$source=$_SERVER['HTTP_REFERER'];
    $Langue = explode(",",$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
    $Langue = strtoupper(substr(chop($Langue[0]),0,2));
    $ip_client=$_SERVER["REMOTE_ADDR"];
     
    $Nav=$_SERVER["HTTP_USER_AGENT"];
    if (ereg("MSIE", $_SERVER["HTTP_USER_AGENT"])) {
        $Nav="Internet explorer";
    } else if (ereg("^Mozilla/", $_SERVER["HTTP_USER_AGENT"])) {
        $Nav="Netscape navigator";
    } else if (ereg("^Opera/", $_SERVER["HTTP_USER_AGENT"])) {
        $Nav="Opéra";
    }
     
    $stat="";
    $stat.="***********************************************************************************************\r\n";
    $stat.=$dateVisite."\r\n";
    $stat.="[LANG = ".$Langue."] - [IP = ".$ip_client."]\r\n\r\n";
    $stat.="# Systeme d'exploitation : ".$_POST['platforme']."\r\n\r\n";
    $stat.="# Navigateur : ".$_SERVER["HTTP_USER_AGENT"]."\r\n\r\n";
    $stat.="# Moteur de Navigateur : ".$Nav."\r\n\r\n";
    $stat.="# Plugins installés : ".$_POST['plugins']."\r\n\r\n";
    $stat.="# Page source : ".$source."\r\n\r\n";
    $stat.="***********************************************************************************************\r\n";
    //echo $stat;
    if (isset($_POST['platforme']) && $_POST['platforme']!="")
    	{
    	$file = fopen("log.txt","a");
    	fputs($file,$stat."\r\n");
    	fclose($file);
    	}
    ?>
    et voila le résultat dans le fichier de log :
    ***********************************************************************************************
    Samedi 02 Septembre 2006 20:21:20 sec
    [LANG = FR] - [IP = 62.57.161.73]

    # Systeme d'exploitation : Windows

    # Navigateur : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6

    # Moteur de Navigateur : Netscape navigator

    # Plugins installés : 8

    - Shockwave Flash
    - Mozilla Default Plug-in
    - QuickTime Plug-in 7.1
    - Morgan Multimedia JPEG2000 Netscape/Mozilla PlugIn
    - Java(TM) 2 Platform Standard Edition 5.0 Update 6
    - Adobe Acrobat
    - Windows Media Player Plug-in Dynamic Link Library
    - Microsoft® DRM


    # Page source : http://max.a44.free.fr/

    ***********************************************************************************************
    Merci de votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP-JS] Manipuler en Javascript un tableau dans un formulaire PHP
    Par Bouillons2 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/11/2010, 10h10
  2. [PHP-JS] Boucle PHP et interprétation JavaScript
    Par yakou32 dans le forum Langage
    Réponses: 6
    Dernier message: 23/12/2008, 11h37
  3. [PHP-JS] Probleme de javascript dans un code php
    Par stomerfull dans le forum Langage
    Réponses: 20
    Dernier message: 12/01/2006, 13h41
  4. [PHP-JS] Arguments PHP d'une fonction javascript
    Par Néo-Tony dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 22/12/2004, 12h06
  5. [PHP-JS] Php dans un script javascript
    Par nebule dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/11/2004, 10h38

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