Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Zope
Zope Forum d'entraide sur Zope et ses CMS (Plone, ...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 04/07/2012, 10h26   #1
kck61
Futur Membre du Club
 
Inscription : octobre 2009
Messages : 50
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 50
Points : 16
Points : 16
Par défaut script PHP dans script python sous zope

Bonjour à tous,
voilà, j'ai un site intranet fait avec ZOPE.
Dans la page d'accueil (et sur les autres rubriques) je voudrais inscrire le nombre d'utilisateurs connectés en temps réel (et non un compteur de visite).
J'ai déjà un script en php qui gère ça avec une table MYSQL :
Citation:
<?php
// Connexion à MySQL
mysql_connect("serveur", "login", "motdepasse");
mysql_select_db("bd");

// -------
// ÉTAPE 1 : on vérifie si l'IP se trouve déjà dans la table.
// Pour faire ça, on n'a qu'à compter le nombre d'entrées dont le champ "ip" est l'adresse IP du visiteur.
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
$donnees = mysql_fetch_array($retour);

if ($donnees['nbre_entrees'] == 0) // L'IP ne se trouve pas dans la table, on va l'ajouter.
{
mysql_query('INSERT INTO connectes VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
}
else // L'IP se trouve déjà dans la table, on met juste à jour le timestamp.
{
mysql_query('UPDATE connectes SET timestamp=' . time() . ' WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
}

// -------
// ÉTAPE 2 : on supprime toutes les entrées dont le timestamp est plus vieux que 2 minutes.

// On stocke dans une variable le timestamp qu'il était il y a 2 minutes :
$timestamp_2min = time() - (60 * 2); // 60 * 2 = nombre de secondes écoulées en 2 minutes
mysql_query('DELETE FROM connectes WHERE timestamp < ' . $timestamp_2min);

// -------
// ÉTAPE 3 : on compte le nombre d'IP stockées dans la table. C'est le nombre de visiteurs connectés.
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes');
$donnees = mysql_fetch_array($retour);


// On n'a plus qu'à afficher le nombre de connectés !
echo '<p>Il y a actuellement ' . $donnees['nbre_entrees'] . ' visiteurs connectés sur ce site !</p>';
?>
Je voudrais juste savoir si il est possible de mettre un script php dans un script python (page d'accueil dans \intranet\portal_skin\custom\frontpage) :
Citation:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US"
lang="en-US"
metal:use-macro="here/main_template/macros/master">

<body>

<div metal:fill-slot="main"
tal:define="results python:request.get('news',here.portal_catalog.searchResults(meta_type=['BrevInfo','Event','News Item','NoteServ','PV','InfT'], sort_on='Date',sort_order='reverse',review_state='published')[:10]);">


<h1></h1>

<br>

<h1 i18n:translate="heading_news">News</h1>

<metal:block tal:repeat="result results">
<tal:block tal:define="resultObject result/getObject">

<table width="90%" border="0">
<tr>
<td>&nbsp;</td>
<td valign="top" width="15%">
<span tal:replace="python:container.toPortalTime(result.Date)">Date</span><br>
<em><a href="" tal:attributes="href python:portal_url + '/news?type='+result.meta_type"><span tal:replace="result/Type" tal:omit-tag=""><font size="2">Type de contenu</font></span></a></em>
</td>
<td>&nbsp; </td>

<td valign="top" align="left" width="88%"> <strong><a class="accueil" href="/view" tal:attributes="href resultObject/absolute_url" tal:content="result/Title">Title</a></strong><br>
<em>Service</em> :
<a href="" tal:define="global creator result/Creator; global service python:container.getMemberData(creator,'work_service')" tal:content="service" tal:attributes="href python:portal_url + '/Services/' + service">Service</a>
<span style="float: right" tal:condition="python: test( (here.portal_discussion.isDiscussionAllowedFor(resultObject) and here.portal_discussion.getDiscussionFor(resultObject).objectIds() ), 1, 0)">
<img tal:replace="structure here/discussionitem_icon.gif" /> <span tal:define="talkback python: here.portal_discussion.getDiscussionFor(resultObject)">
<a href="" tal:attributes="href string:${resultObject/absolute_url}#comments">
<span tal:replace="python:talkback.replyCount(resultObject)"> comments</span>
</a>
</span></span><br><br>
</td>
</tr>
</table>
</tal:block>
</metal:block>
<hr>
<div align="right"><b><a href="" tal:attributes="href python:portal_url +'/news'">Accès à l'ensemble des publications par ordre chronologique</a></b></div>
<div class="spacer">
&nbsp;
</div>

</div>

</body>
</html>
j'ai fait un test en le mettant dans le <body> mais ça n'apparait pas sur la page d'accueil (j'ai essayé sur une page en php et html pour voir si ça venait du script mais ça fonctionne).
Dois-je mettre mon script php en entier dans le script de mon frontpage ou dois-je faire un include qui appel mon script seulement et dans ce cas là, où mettre mon script php dans zope ?
y'a t'il une syntaxe particulière ?
Je sais ça fait beaucoup de questions.
Merci d'avance et bonne journée
Bruce
kck61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2012, 17h25   #2
airod
Membre émérite
 
Avatar de airod
 
Homme Benoit Martiré
Synapse médical, Sèvres (92)
Inscription : août 2004
Messages : 727
Détails du profil
Informations personnelles :
Nom : Homme Benoit Martiré
Âge : 37
Localisation : France

Informations professionnelles :
Activité : Synapse médical, Sèvres (92)
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2004
Messages : 727
Points : 853
Points : 853
Envoyer un message via Skype™ à airod
la réponse est non, en tout cas comme tu souhaite le faire.

En effet Zope étant le serveur d'application, apache ne sert a rien et donc ne peut évaluer les instructions php.

Par contre, pourquoi pas ré ecrire le traitement php pour zope, c'est pas bien compliqué.
__________________
Pensez à la documentation en ligne, ca aide!

"Heureux ceux qui se libèrent de leurs chaines"
"Ne faites simple que si vous savez faire compliqué aussi !"
airod est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h25.


 
 
 
 
Partenaires

Hébergement Web