Personalisation d'un membre ou non
Hors ligneByld Le 10/07/2005 à 14:45 Profil de Byld Configuration de Byld

Bonjour à tous! Voilà mon problème. Je travaille sous un site SPIP donc Php, Html et MySql.
Lorsqu'un membre est inscrit dans mon spip, je voudrais pouvoir afficher lorsqu'il se connecte: "Bonjour Byld" ou bien pour un non membre, "Bonjour invité".
Comment faire pour récuperer les infos sur la base de données SPip ou comment faire autrement en créant une table?je ne sais pas,étant totalement novice en la matière.
Quelqu'un aurait il l'obligeance de m'aider? Et surtout de m'expliquer car le copier/coller est souvent ininteressant
Merci d'avance!
Hors ligneAnthony Le 10/07/2005 à 20:12 Profil de Anthony Configuration de Anthony

Admin
Salut,

Tu veux afficher un "bonjour pseudo" sur toutes les pages (à l'instar de mon site) ou une seule fois lorsque le membre se connecte ?

Ensuite tu peux donner le code de la page de connexion sur ton spip (la portion qui se connecte à mysql pour vérifier les infos, on va la modifier pour récupérer le pseudo).

a +
--

Hors ligneByld Le 10/07/2005 à 20:48 Profil de Byld Configuration de Byld

Tout d'abord merci pour ta réponse.
En fait je vais tenter de créer un espace privé ( nous disposons d'un espace privé mais commun pour l'instant).
Il faut que j'explique.
J'ai donc fabriqué ce site de littérature et devant le succès en quelques mois (74 auteurs, + de 700 textes et presque 7000 commentaires)j'ai créé une Association. A la dernière réunion, il m'a été demandé de faire un espace privé ou l'auteur retrouverait ses commentaires en instances.
Pour faire cet espace, il me faut réutiliser les pass Spip, sinon c'est trop compliqué pour les membres , arf! et afficher dans cet même page  " Bonjour XXX , vous avez n commentaires", ensuite je place sa bio et tout ces textes (ça je sais faire)
Donc ce message ne s'affichera que sur une page "privé".
Pour ce qui est du fichier qui fait la connexion sur la base de données, j'avoue ne pas savoir. Voici le lien du site pour jeter un oeil :Mon site
Petite précision: Les pages d'accueil et  liens n'ont rien à voir avec SPIP..
Par contre je dois avoir un inc-connect.php3..ne serait-ce pas celle-ci?
Merci d'avance, je suis perdu et je ne trouve aucune contrib de ce type.
Amitiés
Hors ligneAnthony Le 11/07/2005 à 02:51 Profil de Anthony Configuration de Anthony

Admin
Ok, il s'agit de la page spip_login.php3
--

Hors ligneByld Le 11/07/2005 à 05:31 Profil de Byld Configuration de Byld

Il n'y a pas grand chose dedans:
<?php $fond = "login"; $delais = 3600; $flag_dynamique = true; $flag_preserver = true; $forcer_lang = true; include ("inc-public.php3"); ?> Le membre se logue une fois pour toute à moins qu'il n'efface ses cookies..Mais l'include fait ref à inc-public.php3 : <?php if (!defined("_INC_PUBLIC")) {       define("_INC_PUBLIC", "1");      include("inc-public-global.php3"); } else {      $cache_inclus = inclure_fichier($fond, $delais, $contexte_inclus);      if (!$delais) $cache_supprimes[] = $cache_inclus; // message pour suppression      include($cache_inclus); } ?>
quand à in-ublic-global.php3 est bien plus nourri en variables :
<?php include ("ecrire/inc_version.php3"); include_local ("inc-cache.php3"); if ($INSECURE['fond'] || $INSECURE['delais']) exit; if (!isset($delais))      $delais = 1 * 3600; /*function t($s = '') {      global $t0, $t1;      $t1 = explode(" ", microtime());      $dt = floor(1000 * ($t1[0] + $t1[1] - $t0[0] - $t0[1])) / 1000;      echo "<p>";      if ($s) echo "<b>$s :</b> ";      echo "$dt secondes</p>\n";      $t0 = $t1; }*/ // // Inclusions de squelettes // function inclure_fichier($fond, $delais, $contexte_inclus = "") {      global $fichier_cache;      $fichier_requete = $fond;      if (is_array($contexte_inclus)) {           reset($contexte_inclus);           while(list($key, $val) = each($contexte_inclus))                $fichier_requete .= '&'.$key.'='.$val;      }      $fichier_cache = generer_nom_fichier_cache($fichier_requete);      $chemin_cache = "CACHE/$fichier_cache";      $use_cache = utiliser_cache($chemin_cache, $delais);      if (!$use_cache) {           include_local("inc-calcul.php3");           $timer_a = explode(" ", microtime());           $fond = chercher_squelette($fond, $contexte_inclus['id_rubrique'], $contexte_inclus['lang']);           $page = calculer_page($fond, $contexte_inclus);           $timer_b = explode(" ", microtime());           if ($page) {                $timer = ceil(1000 * ($timer_b[0] + $timer_b[1] - $timer_a[0] - $timer_a[1]));                $taille = ceil(strlen($page) / 1024);                spip_log("inclus ($timer ms): $chemin_cache ($taille ko, delai: $delais s)");                $chemin_cache = ecrire_fichier_cache($chemin_cache, $page);           }      }      return $chemin_cache; } // // Authentification // if ($HTTP_COOKIE_VARS['spip_session'] OR ($PHP_AUTH_USER AND !$ignore_auth_http)) {      include_ecrire ("inc_session.php3");      verifier_visiteur(); } // // Gestion de la langue dans l'URL // if ($forcer_lang) {      include_ecrire('inc_lang.php3');      verifier_lang_url(); } if ($lang = $HTTP_GET_VARS['lang']) {      include_ecrire('inc_lang.php3');      lang_select($lang);     } // // Gestion du cache et calcul de la page // // Nom du fichier cache $fichier_requete = $REQUEST_URI; $fichier_requete = strtr($fichier_requete, '?', '&'); $fichier_requete = eregi_replace('&(submit|valider|PHPSESSID|(var_[^=&]*)|recalcul)=[^&]*', '', $fichier_requete); $fichier_cache = generer_nom_fichier_cache($fichier_requete); $chemin_cache = "CACHE/$fichier_cache"; $use_cache = utiliser_cache($chemin_cache, $delais); $ecraser_cache = false; $cache_supprimes = Array(); if (!$use_cache OR !defined("_ECRIRE_INC_META_CACHE")) {      include_ecrire("inc_meta.php3"); } // // Ajouter un forum // if ($ajout_forum) {      include_local ("inc-forum.php3");      ajout_forum(); } if (!$use_cache) {      $lastmodified = time();      if (($lastmodified - lire_meta('date_purge_cache')) > 3600) {           ecrire_meta('date_purge_cache', $lastmodified);           $f = fopen('CACHE/.purge', 'w');           fclose($f);      }      //      // Recalculer le cache      //      $calculer_cache = true;      // Gestion '=chapo'      // + ne pas cacher si l'URL d'un article est demande avant sa publication      // (une seule requete, deux usages)      if ($id_article = intval($id_article)) {           $query = "SELECT chapo FROM spip_articles WHERE id_article='$id_article' AND statut='publie'";           $result = spip_query($query);           $row = spip_fetch_array($result);           if (!$row)                $ecraser_cache = true;           if (substr($row['chapo'], 0, 1) == '=') {                include_ecrire('inc_texte.php3');                $regs = array('','','',substr($row['chapo'], 1));                list(,$url) = extraire_lien($regs);                $url = addslashes($url);                $texte = "<"."?php @header (\"Location: $url\"); ?".">";                $calculer_cache = false;                spip_log("redirection: $url");                $chemin_cache = ecrire_fichier_cache($chemin_cache, $texte);           }      }      if ($calculer_cache) {           include_local ("inc-calcul.php3");           $timer_a = explode(" ", microtime());           $page = calculer_page_globale($fond);           $timer_b = explode(" ", microtime());           if ($page) {                $timer = ceil(1000 * ($timer_b[0] + $timer_b[1] - $timer_a[0] - $timer_a[1]));                $taille = ceil(strlen($page) / 1024);                spip_log("calcul ($timer ms): $chemin_cache ($taille ko, delai: $delais s)");                $chemin_cache = ecrire_fichier_cache($chemin_cache, $page);           }      } } // // si $var_recherche est positionnee, on met en rouge les mots cherches (php4 uniquement) // if ($var_recherche AND $flag_ob AND $flag_pcre AND !$flag_preserver AND !$mode_surligne) {      include_ecrire("inc_surligne.php3");      $mode_surligne = 'auto';      timeout(false, true, false);     // no lock, action, no mysql      ob_start(); } else {      unset ($var_recherche);      unset ($mode_surligne); } // // Inclusion du cache pour envoyer la page au client // $effacer_cache = !$delais; $effacer_cache |= $ecraser_cache;     // ecraser le cache de l'article x s'il n'est pas publie // Envoyer les entetes $headers_only = ($HTTP_SERVER_VARS['REQUEST_METHOD'] == 'HEAD'); if (!$effacer_cache && !$flag_dynamique && $recalcul != 'oui' && !$HTTP_COOKIE_VARS['spip_admin']) {      if ($lastmodified)           $headers_only |= http_last_modified($lastmodified, $lastmodified + $delais); } else {      @Header("Expires: 0");      @Header("Cache-Control: no-cache,must-revalidate");      @Header("Pragma: no-cache"); } $flag_preserver |= $headers_only;     // ne pas se fatiguer a envoyer des donnees if (!$flag_preserver) {      @Header("Content-Type: text/html; charset=".lire_meta('charset')); } // Envoyer la page if (@file_exists($chemin_cache)) {      if (!$headers_only) include($chemin_cache); } else if (!$flag_preserver) {      // Message d'erreur base de donnees      include_ecrire('inc_presentation.php3');      install_debut_html(_T('info_travaux_titre'));      echo "<p>"._T('titre_probleme_technique')."</p>\n";      install_fin_html(); } // suite et fin mots en rouge if ($var_recherche)      fin_surligne($var_recherche, $mode_surligne); // nettoie if ($effacer_cache) @unlink($chemin_cache); while (list(, $chemin_cache_supprime) = each($cache_supprimes))      @unlink($chemin_cache_supprime); // // Verifier la presence du .htaccess dans le cache, sinon le generer // if (!@file_exists("CACHE/.htaccess")) {      if ($hebergeur == 'nexenservices'){           echo "<font color=\"#FF0000\">IMPORTANT : </font>";           echo "Votre h&eacute;bergeur est Nexen Services.<br />";           echo "La protection du r&eacute;pertoire <i>CACHE/</i> doit se faire par l'interm&eacute;diaire de ";           echo "<a href=\"http://www.nexenservices.com/webmestres/htlocal.php\" target=\"_blank\">l'espace webmestres</a>.";           echo "Veuillez cr&eacute;er manuellement la protection pour ce r&eacute;pertoire (un couple login/mot de passe est n&eacute;cessaire).<br />";      }      else{           $f = fopen("CACHE/.htaccess", "w");           fputs($f, "deny from all\n");           fclose($f);      } } // // Fonctionnalites administrateur (declenchees par le cookie admin, authentifie ou non) // if ($HTTP_COOKIE_VARS['spip_admin'] AND !$flag_preserver AND !$flag_boutons_admin) {      include_local("inc-admin.php3");      afficher_boutons_admin(); } // envoyer la page si possible @flush(); // Mise a jour des fichiers langues de l'espace public if ($cache_lang_modifs) {      include_ecrire('inc_lang.php3');      ecrire_caches_langues(); } // Gestion des taches de fond ?  toutes les 5 secondes (on mettra 30 s quand on aura prevu la preemption par une image-cron) if (!@file_exists('ecrire/data/cron.lock')      OR (time() - @filemtime('ecrire/data/cron.lock') > 5)) {      // Si MySQL est out, laisser souffler      if (!@file_exists('ecrire/data/mysql_out')           OR (time() - @filemtime('ecrire/data/mysql_out') > 300)) {           include_ecrire('inc_cron.php3');           spip_cron();      } } // // Gestion des statistiques du site public // (a la fin pour ne pas forcer le $db_ok) // if (lire_meta("activer_statistiques") != "non") {      include_local ("inc-stats.php3");      ecrire_stats(); } ?>
C'est sans dout ici qu'il faut agir et recuperer le cookie, non?

Sinon SPip a la particularité de pouvoir utiliser des filtres que l'on rappelle dans le Html avec des balises gennre [(#auteurs)].C'est peut être une solution, voici par exemeple un fonction qui me permet de savoir qui c'est connecté dans l'espace privé:
<?php /* *   +---------------------------------------------+ *    Nom du Filtre : membres récemment connectés *   +---------------------------------------------+ *    Fonctions de ce filtre : *     Permet de voir les personnes qui se sont *     connectés récemment *     Appelez le dans vos squelettes tout simplement *     par : [(#URL_SITE|nb_connect)] *   +---------------------------------------------+ * */ function nb_connect($resultat){ global $table_prefix; $query = "SELECT nom, en_ligne FROM ".$table_prefix."_auteurs WHERE (TO_DAYS(now())-TO_DAYS(en_ligne))<=1 ORDER BY en_ligne DESC"; $resultat = " "; $result_auteurs = spip_query($query); $nb_connectes = spip_num_rows($result_auteurs); $flag_cadre = ($nb_connectes > 0); if ($flag_cadre) {      $resultat.="<div>";      if ($nb_connectes > 1) $resultat.="<i>Derniers connect&eacute;s :</i><br>";      else $resultat.="<i>Derniers membres connect&eacute;s :</i>";      while ($row = spip_fetch_array($result_auteurs)) {           $nom_auteur = $row["nom"];           $en_ligne = $row["en_ligne"];           $resultat.="<b>$nom_auteur </b><br><span style='font-size:78%'> [ $en_ligne ]</span></div>";      } } return $resultat; } ?>
// FIN du Filtre nb_connect

Bon je sais, je suis perdu et un peu casse-pieds sans doute, mais j'aimerai tellement faire plaisir à mes internautes ;o)
Hors ligneAnthony Le 11/07/2005 à 13:21 Profil de Anthony Configuration de Anthony

Admin
Pour te connecter à la base, apparemment c'est géré directement par la fonction spip_query()

En gros tu crées ton fichier, tu recherches dans les fichiers de spip où est située la fonction spip_query(), tu fais un include de ce fichier et tu exécutes ta requête à l'aide de la fonction spip_query. Tu peux aussi rechercher le fichier contenant tes paramètres mysql, faire un include de ce fichier et utiliser les fonctions classiques de mysql :

mysql_connect('hote','user','passe');
mysql_select_db('base');
$requete=mysql_query('ta requête');
mysql_close();

$r=mysql_fetch_row($requete); //si une seule ligne à trouver, sinon un while($r=mysql_fetch_row($requete))
--

Hors ligneByld Le 11/07/2005 à 19:48 Profil de Byld Configuration de Byld

J'ai trouvé!
Je mets le code là, ça peut servir à d'autres Spipeur:
<?php echo $auteur_session['nom'].'<br />'; switch ($auteur_session['statut']) {         case '0minirezo' : echo 'administrateur<br />'.$REMOTE_ADDR; break;         case '1comite'   : echo 'r&eacute;dacteur'; break;         case '6forum'    : echo 'simple visiteur'; break; } ?>
Merci à toi pour ton aide, je risque d'avoir encore besoin des services des pros du php, notamment pour un compteur de commentaires forum ;o)
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels