Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Futur Membre du Club
    Inscrit en
    octobre 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : octobre 2009
    Messages : 50
    Points : 18
    Points
    18

    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 :
    <?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) :
    <!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

  2. #2
    Membre émérite
    Avatar de airod
    Homme Profil pro Benoit Martiré
    Synapse médical, Sèvres (92)
    Inscrit en
    août 2004
    Messages
    742
    Détails du profil
    Informations personnelles :
    Nom : Homme Benoit Martiré
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : août 2004
    Messages : 742
    Points : 815
    Points
    815

    Par défaut

    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!

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •