BaroqueW

BaroqueW

and his sidekick nikkitaa

BaroqueW RSS Feed
 
 
 
 

Posts tagged PHP

WAP, WML, WMLS et autres…

Dans le cadre de mon cours de Developping Mobile Applications, j’ai eu l’occasion d’expérimenter la programmation de sites WAP en quelques TP. Sont passés en revue, entre autres, le WMLS, l’intégration PHP/WML, la redirection HTML/WML, l’envoi de SMS/MMS en console etc. Allez visiter la liste des TP ainsi que ma page.

Quelques exemples :

  1. <script language="php">
  2. $accept = $_SERVER[‘HTTP_ACCEPT’];
  3. $pos = strpos($accept, "text/vnd.wap.wml");
  4. $wml = ($pos === 0 | $pos > 0 );
  5. if( $wml ) {
  6. header(‘Content-type: text/vnd.wap.wml’);
  7. echo ‘<?xml version="1.0" ?>’;
  8. echo ‘<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.3//EN"
  9. "http://www.wapforum.org/DTD/wml13.dtd">’;
  10. echo ‘<wml><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/></head>
  11. <card title="Dynamic">
  12. <p>Ahh, a WML surfer!</p>
  13. </card>
  14. </wml>’;
  15. } else {
  16. header(‘Content-type: text/html’);
  17. echo ‘<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">’;
  18. echo ‘</ccode><code><html>
  19. <head> <title>Dynamic</title> </head>
  20. <body>
  21. <p>Ahh, an HTML surfer!</p>
  22. </body>
  23. </html></code><ccode(php3)>’;
  24. }
  25. </script>

Le code ci-dessus parcourt les formats acceptés par le navigateur courant et détecte la possibilité d’interpréter le WML ou non.

  1. <?xml version="1.0" ?>
  2. <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.3//EN"
  3. "http://www.wapforum.org/DTD/wml13.dtd">
  4. <wml>
  5. <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/></head>
  6. <template>
  7. <do type ="home1" label="Home">
  8. <go href="index.wml"/>
  9. </do>
  10. <do type="lab2" label="Lab2">
  11. <go href="index.wml#lab2"/>
  12. </do>
  13. </template>
  14. <card id="bet" title=’Online gambling’>
  15. <p>Type your bet here: <input emptyok="false" maxlength="3" type="text" title="SEK" format="*N" name="betval"/></p>
  16. <p><a href="bet.wmls#displayalert($betval)">Validate</a></p>
  17. </card>
  18. <card id="betok" title=’Bet accepted’>
  19. <p>Ok. Your bet was $betvalok</p>
  20. </card>
  21. </wml>
  22.  
  23. Le code ci-dessus utilise les champs (en forçant le type à "entiers" avec *N) et le WMLS :
  24. <blockquote>
  25. extern function displayalert(val){
  26. Dialogs.alert("Do you confirm this bet?");
  27. WMLBrowser.refresh();
  28. WMLBrowser.setVar("betvalok", val);
  29. WMLBrowser.go("bet.wml#betok");
  30. }</blockquote>
  31.  

Pour les codes sources précis, ou pour avoir la version de PHPIcalendar modifiée pour le WAP, contactez-moi !

A voir aussi, notre projet (avec Gabriele Violino) : sondage par SMS avec utilisation du WAP-PUSH. Au programme : détection du modèle et de la marque d’un mobile via l’UAProf, envoi de SMS-Push via la gateway NowSMS (avec explications sur le codage en hexa d’un message Push, ie. l’encapsulation WBXML, WSP, WDP, SMS), sondage en XHTML-MP, WML et HTML (le bon format est choisi directement via l’UAProf du mobile)… Les données sont stockées dans une base de données MySQL.

L’archive avec le code source et les slides est librement téléchargeable sur notre DokuWiki.

Category: Articles en français, Tech >> Computer | Leave a comment

Adaptation de MeteoqueW en PHP

Voilà l’adaptation du script MeteoqueW originellement codé en TCL pour utilisation en script IRC pour bot Eggdrop. Il fonctionne sur le même principe, hormis le fait qu’il n’y a plus de réactions spécifiques sur certaines chaines (dtc mode), il n’y a plus de fonctions d’affichage pour le debug et il y a moins de paramétrages.

Il y a deux fichiers : affichemeteo.php qui fournit une “interface” au script MeteoqueW.php.

Ces deux fichiers n’ont pas vraiment de style propre pour l’affichage, il est donc bien (et facile) de les intégrer au style HTML/CSS de votre site. Si vous créez des styles juste pour MeteoqueW, n’hésitez pas à me les envoyer !

Mise à jour : meilleure indentation, plus de commentaires, compatibilité avec plus de serveurs/versions de PHP, gestion des villes avec des apostrophes dans le nom Problèmes connus : les villes des DOM-TOM ne sont pas encore prises en compte

Archive : MeteoqueW PHP

Category: Articles en français, Tech >> Computer | Leave a comment

Intégrer un système de mail automatique à un MediaWiki

Media Wiki
Media Wiki

MediaWiki est le moteur de Wiki utilisé par Wikipedia notamment.

Malheureusement, il semble qu’on ne puisse recevoir de mails que lors de modifications de certains articles, et non pas de tous. Voilà de quoi y remédier : (évidemment ça ne marche que sur une installation perso de MediaWiki, pas sur Wikipedia itself…)

Le code est à mettre dans /includes/Article.php, à la fin de la fonction updateArticle (ligne 1013).

Voilà le code :

  1. //mailer mail@truc.com
  2. $to = "mail@truc.com";
  3. $nom = $wgUser->getName();
  4. $tempm = $this->mTitle->escapeLocalUrl();
  5. list($poubelle1, $poubelle2, $pagem) = split("/" , $tempm);
  6. $sujet = "La page $pagem du wiki a été modifiée";
  7. $bodym ="La page $pagem du wiki a ete modifiee par $nom. La page est accessible sur http://wiki.truc.com$tempm";
  8. $bodym = "$bodym \n\n Les diffs sont : \n $diff_text \n\n Bonne journee";
  9. //si le changement n’est pas marqué comme mineur, on envoie un mail
  10. if (!$minor)
  11. mail($to,$sujet,$bodym);
  12. return $good;

On peut rajouter les diffs à la ligne 1053 avec une ligne genre :

  1. $diff_text = xdiff_string_diff( $oldtext, $text );

Attention, cette fonction (xdiff…) nécessite l’ajout d’un module au moteur PHP. Pour l’instant, Debian ne semble pas fournir ce module en package, il faut donc le compiler soi-même :

http://us2.php.net/manual/fr/ref.xdiff.php

Ca marche tout seul avec la ligne : extension=xdiff.so dans le fichier /etc/php4/apache/php.ini

Category: Articles en français, Tech >> Computer | Leave a comment