[Spip] jump.php3

Hello,

as-tu une idée pour faire une page php qui redirige simplement sur l'article
numéro X ? Sachant que, si X=1139, la commande

grep 'LIEN 1139>' /www/monde-diplomatique/database/donnees_diplo.txt

donne :

<LIEN>1995/01/A/1139</LIEN 1139>

y’a qu’à ajouter ‘http://www.monde-diplomatique.fr/’ devant et ‘.html’ derrière

Mes très chers amis spip-eurs,

ça serait bien que les bonnes intentions de l'autre soir ne restent pas
lettre morte. D'autant que "spip" (whatever it means) est largement attendu,
et que les requins de la récupération des bonnes idées commencent à proposer
des tas de "solutions prêtes à l'emploi pour publier sur Internet" et tirent
plein d'argent aux assoces et petits journaux... donc j'essaie,
maladroitement, de vous relancer...

Le refonte, avec Arno, du site Diplo était une belle aventure, et je compte
simplifier encore mon bazar de scripts entremêlés. Je vous tiens au courant
si ça avance, mais dans l'intervalle si quelque chose vous intéresse,
demandez.

* Fil (fil@bok.net) écrivait :

1 « J'aime »

Ouvrir donnees_diplo.txt en lecture et parcourir jqa presence de "LIEN X"
dans la ligne courante.

Puis header("Location:
http://www.monde-diplomatique.fr".substr($lig,...).".html")

Et evidemment le cas d'erreur en fin de fichier donnees_diplo...

Hello,

as-tu une idée pour faire une page php qui redirige simplement sur l'article
numéro X ? Sachant que, si X=1139, la commande

> grep 'LIEN 1139>' /www/monde-diplomatique/database/donnees_diplo.txt

donne :

<LIEN>1995/01/A/1139</LIEN 1139>

y’a qu’à ajouter ‘http://www.monde-diplomatique.fr/’ devant et ‘.html’ derrière

Je ne sais pas si j'ai bien saisi le probleme, mais voila ma solution... :slight_smile:

Il faut l'appeler avec :

jump.php3?id_article=1139

Et le code donne :

<?php

header("Location: http://www.monde-diplomatique.fr/$id_article.html");

?>

Erwan.

J'en suis là. Mais ereg sur chaque ligne c'est extrèmement long et l'apache
prend 15 Mo !

<?php

$toutes = file("/www/monde-diplomatique/database/donnees_diplo.txt");

$expression = "LIEN ".$id.">" ;

while ( list( $key, $lig ) = each( $toutes ) ) {
        if (ereg($expression,$lig,$url)){
                ereg("<LIEN>(.+)<\/LIEN ".$id.">",$lig,$url);
                header("Location:
http://www.monde-diplomatique.fr/$url[1].html
                end;
        }
}

echo "pas de bol";

?>

Plutot que ereg, moi je ferais un :
if (strpos($lig, "LIEN ".$id)) header...

C'est moins classe mais ca doit aller plus vite.

Et puis dans un cas comme ca, ou le fichier de donnees est tres gros, vaut
mieux faire un fopen et des fgets qu'un file (qui met tout en memoire dans
un enorme tableau)...

Même chose avec strpos au lieu de ereg...

* Fil (fil@bok.net) écrivait :

Même chose avec strpos au lieu de ereg...

Essaie de remplacer le file par un fopen puis fgets. Comme ca t'auras pas
toutes tes donnees_diplo en memoire...

* Pierre Lazuly (lazuly@menteur.com) écrivait :

Et puis dans un cas comme ca, ou le fichier de donnees est tres gros, vaut
mieux faire un fopen et des fgets qu'un file (qui met tout en memoire dans
un enorme tableau)...

Oui !

Du coup j'ai farfouillé un peu autour de fopen, et finalement trouvé une
solution hyper rapide, avec popen :

<?php

$expression = "LIEN ".$id.">" ;

$lig = fgets(popen("grep '".$expression."' /www/monde-diplomatique/database/donnees_diplo.txt", "r"),256);
        if (ereg("<LIEN>(.+)<\/LIEN ".$id.">",$lig,$url));
                header("Location: http://www.monde-diplomatique.fr/$url[1].html");
                end;
        }else{
                echo "pas de bol";
        }
?>

Correction de bug : fichier /SSI/voirarticle.php3?id=1392
Merci !

<?php

$expression = "LIEN ".$id.">" ;

$lig = fgets(popen("grep '".$expression."'
+ /www/monde-diplomatique/database/donnees_diplo.txt", "r"),256);

if ($lig){
        if (ereg("<LIEN>(.+)<\/LIEN ".$id.">",$lig,$url)){
                header("Location:
+ http://www.monde-diplomatique.fr/$url[1].html");
        }
}

echo "pas de bol";
  
?>

Salut tout le monde,

J'ai deux questions...

(1) Lorsque j'envoie la fonction "mail()" de PHP, j'ai un gros problème avec les accents. Sans doute des histoires de format. Quelqu'un sait comment corriger ce problème?

Peut-être avec un truc du genre:
Content-Type: text/plain; charset=iso-8859-1
dans le header du message?

(2) Comment fait-on pour traiter des courriers avec un script (PHP, ben tiens). Par exemple: quelqu'un envoit un courrier à une adresse email (genre: "traiter@scarabee.com") et un script se charge d'en faire quelque chose. Là je suppose qu'il s'agit plutôt d'une configuration du logiciel de mail et/ou d'Apache.

Amicalement,
ARNO*

* Arno* (arno@scarabee.com) écrivait :

(1) Lorsque j'envoie la fonction "mail()" de PHP, j'ai un gros
problème avec les accents. Sans doute des histoires de format.
Quelqu'un sait comment corriger ce problème?

Peut-être avec un truc du genre:
Content-Type: text/plain; charset=iso-8859-1
dans le header du message?

oui

(2) Comment fait-on pour traiter des courriers avec un script (PHP,
ben tiens). Par exemple: quelqu'un envoit un courrier à une adresse
email (genre: "traiter@scarabee.com") et un script se charge d'en
faire quelque chose. Là je suppose qu'il s'agit plutôt d'une
configuration du logiciel de mail et/ou d'Apache.

il te faut le php3 standalone (/www/cgi-bin/php3 ) et tu ajoutes, dans
/etc/aliases

traiter: "|/www/cgi-bin/php3 /chemin/du/script/traiter.php3"

reste à savoir comment le script récupères les données. Là je sèche.

Salut encore,

Hier soir, on m'a parlé d'un système d'assistance à la publication, cette fois-ci centralisé, et qui "télécharge" via ftp les pages fabriquées sur votre propre site:

http://www.blogger.com/

J'ai pas le temps de l'essayer, mais ça semble une voie intéressante aussi.

Du coup, on peut encore imaginer des variantes pour SPIP:

- le SPIP standard: on installe son propre moteur SPIP sur son propre site et se démerde;

- le SPIP hébergement. On peut imaginer lancer un système d'hébergement de sites entièrement contrôlé par SPIP. Du coup, les hébergés n'ont pas la possibilité de fabriquer leurs propres pages en HTML (comme sur un Altern classique), mais ils fabriquent leur page uniquement via l'interface Web fournie. Bref, tout le monde avec le même et unique SPIP qui gère tout le système d'"hébergement".

- le SPIP à distance, façon blogger. Laz proposait un système de création de code HTML (via une interface Web), ensuite on recopie le code à la main et on l'installe sur son propre site. On peut aller plus loin et SPIP téléchargerait lui-même le code HTML sur le site via ftp.

Amicalement,
ARNO*

- le SPIP hébergement. On peut imaginer lancer un système d'hébergement de sites entièrement contrôlé par SPIP. Du coup, les hébergés n'ont pas la possibilité de fabriquer leurs propres pages en HTML (comme sur un Altern classique), mais ils fabriquent leur page uniquement via l'interface Web fournie. Bref, tout le monde avec le même et unique SPIP qui gère tout le système d'"hébergement".

J'oubliais: ce cas de figure pose un problème légal intéressant: SPIP hébergement n'est pas un "hébergeur", puisqu'il utilise les services (machines) d'un véritable hébergeur, pourtant son rôle est similaire (permettre à chacun de monter son propre site). Alors, les amendements Bloche dans tout ça... :slight_smile:

Amicalement,
ARNO*

Salut tout le monde,

J'ai encore du mal à le croire: je viens de réussir à installer htdig!

Cela dit, j'ai également compris que si je n'arrivais jamais à rien installer sur le Scarabée, c'est parce que le compilateur C qui s'y trouve n'a pas le droit de générer des exécutables. Ce que je peux désormais faire sur Vuibert.com et, comment dire, ça devient déjà plus marrant :-))

Y'a tout de même un problème que je n'arrive pas à résoudre: mon rundig supprime tous les accents dans la liste de mots indexés. Ce qui fait qu'une recherche sur "économie" ne retourne aucun résultat.

J'ai installé les modifs indiquées dans la page d'adataption de htdig en français, les dictionnaires sont d'ailleurs valides, les htfuzz aussi. Mais le "dig", lui, continue à ne me récupérer que des mots sans accents.

Comment que je dois faire?

Amicalement,
ARNO*

* Arno* (arno@scarabee.com) écrivait :

J'ai installé les modifs indiquées dans la page d'adataption de htdig
en français, les dictionnaires sont d'ailleurs valides, les htfuzz
aussi. Mais le "dig", lui, continue à ne me récupérer que des mots
sans accents.

Il faut que tu utilises la bonne "locale". Tu tapes "locale -a" pour savoir
lesquelles existent, et tu prends celle qui est la plus proche de ce qu'il
te faut (fr ou fr_FR). PS : à quand tes scripts de webzine sur cette liste ?

# config htdig francais
no_excerpt_text: <em>(Le mot demandé n'apparaît pas au début de ce document.)</em>
next_page_text: [suivante]
no_next_page_text: [suivante]
prev_page_text: [précédente]
no_prev_page_text: [précédente]
method_names: and and or or boolean booléen
endings_affix_file: /usr/lib/htdig/francais.aff
endings_dictionary: /usr/lib/htdig/francais.0
locale: fr_FR

Il faut que tu utilises la bonne "locale". Tu tapes "locale -a" pour savoir
lesquelles existent, et tu prends celle qui est la plus proche de ce qu'il
te faut (fr ou fr_FR). PS : à quand tes scripts de webzine sur cette liste ?

Bien entendu, j'ai pas de commande "locale" :-))

Mais merci quand même, grâce à ton indication, j'ai pu trouver dans la doc de freebsd le chemin d'un fichier qui lui-même m'a indiqué l'endroit où se trouvait la liste des "locales" disponibles.

Et celle dont j'avais besoin est:
fr_FR.ISO_8859-1

Pour les sources de webzine, j'ai pas eu le temps de continuer à les développer.

Amicalement,
ARNO*

Salut tout le monde,

un petit script qui permet de fabriquer un "lien-bouton", c'est-à-dire un formulaire qui ne contient qu'un seul bouton de validation, dont le "titre" est le nom du lien. Ca permet de fabriquer des liens hypertextes, mais sous la forme d'un bouton de validation.

En effet, dans la gestion du site, il y a souvent des liens plus importants, qui déclenchent réellement des actions (par exemple: "éditer cet article"). Pour les mettre en valeur, je préfère donc les présenter soit sous forme de logo graphique, mais le plus simple (et rapide) c'est de les présenter sous forme de bouton.

Voici le script:

function bouton($titre,$lien){
  $lapage=substr($lien,0,strpos($lien,"?"));
  $lesvars=substr($lien,strpos($lien,"?")+1,strlen($lien));

  echo "\n<FORM ACTION='$lapage' METHOD='get'>\n";
  $lesvars=explode("&",$lesvars);

  for($i=0;$i<count($lesvars);$i++){
    $var_loc=explode("=",$lesvars[$i]);
    echo "<INPUT TYPE='Hidden' NAME='$var_loc[0]' VALUE='$var_loc[1]'>\n";
  }
  echo "<INPUT TYPE='submit' NAME='Submit' VALUE='$titre'>\n";
  echo "</FORM>";
}

Exemple d'utilisation:

bouton("Modifier cet article","articles_edit.php3?id_article=$id_article");

Ca remplace le lien:
<A HREF="articles_edit.php3?id_article=$id_article">Modifier cet article</A>

La petite subtilité, ici, c'est que le script "découpe" le lien pour obtenir l'URL de l'action du formulaire, puis découpe les différentes "variables" du lien pour en faire des boutons-input "Hidden".

/////

A part ça, chez SmartHosting je n'ai pas le droit de modifier le fichier /etc/aliases et, sur minirezo.net (hébergement ULimit, c'est-à-dire Fred Cirera) je n'ai carrément pas d'accès en telnet. Il me semble donc important de bien limiter l'installation de SPIP au strict minimum, c'est-à-dire via FTP avec configuration par le Web. S'il faut installer un "soft"(ou simplement une librairie) sur le serveur, même moi ne pourrais pas l'utiliser! :slight_smile:

Amicalement,
ARNO*

Salut tout le monde,

Je ne sais plus si je vous l'ai déjà indiqué, mais je suis en train de développer un système de publication pour minirezo.net. Histoire que chacun d'entre vous puisse aller voir ce que ça donne, je vous ai fait un accès global:

L'entrée du "back-office":
http://www.minirezo.net/ecrire

Login: SPIP
Mot de passe: mySPIP

N'hésitez pas à faire des essais dans tous les sens (évitez tout de même de supprimer les accès des autres membres...).

Quelques remarques:

-> pour l'instant le code est particulièrement bordélique, c'est pour cela que je transmets uniquement les fonctions les plus pratiques; lorsque ce sera plus présentable, bien entendu, je vous filerai tous les sources;

-> à priori, ce système ne sera pas SPIP: Erwan en particulier avait défini une organisation de base de données beaucoup plus souple et efficace, que je n'utilise pas ici (pour une raison simple: j'ai perdu le papier où Erwan m'avait fait les dessins...). N'empêche que ça me semble intéressant sur un point précis: prouver à ceux qui n'en seraient pas encore convaincus qu'il est possible de faire une interface simple pour gérer une base complexe.

-> notez qu'avec le code ci-dessus, vous avez un accès "Administrateur" du système; donc, forcément, l'interface est nettement plus complète (et donc complexe) que ce qu'aura un rédacteur normal.

-> les rédacteurs auront chacun leur mot de passe, mais des "droits" limités, cela simplifiera considérablement leur interface. En particulier, ils ne pourront modifier que leurs propres articles, et ne pourront pas influer sur la structure (hiérarchie) des rubriques.

-> j'installerai un système de vote pour valider les articles proposés par les rédacteurs.

Ah oui: la "hiérarchie" des accès:

-> les membres du minirézo auront tous un statut d'administrateur, puisque c'était à l'époque le principe d'uZine (chacun avait les clés du FTP); à priori, cela revient à deux rôles fondamentaux: (1) accéler certaines procédures (par exemple accepter sans vote un article urgent), (2) servir de "minorité de blocage" (ou "noyau dur"!!!) pour conserver au site une certain logique;

-> les rédacteurs (comité de rédaction); on devient "rédacteur" d'uZine dès qu'un de ses articles a été accepté; dès lors on participe au choix des articles suivants (avec un article on acquiert donc un droit de vote). Les articles de ces "rédacteurs" sont tout de même soumis à un vote avant d'être publiés. De plus, mise-en-place d'un forum de discussion interne.

-> les "nouveaux"; n'importe qui peut demander (et obtenir automatiquement) un accès au back-office (très limité, cependant) afin de pouvoir écrire des articles et les proposer. En revanche, pas de droit de vote, pas d'accès aux discussions internes. Dès qu'un de ses articles est accepté par le comité de rédaction, on devient rédacteur à part entière.

-> utilisateurs normaux du site Web (le "grand public"); sur chaque rubrique, des forums de discussion libre (modérés à postériori).

Je pense installer également un système de brèves (articles courts traitant de l'actualité) nécessitant un traitement très rapide. Par exemple: une simple validation par un membre du minirézo.

Tous vos commentaires sont bienvenus!

Amicalement,
ARNO*

Salut,

Comme Laz me pose une question qui nécessite des explications techniques sur le système de publication, je préfère vous en faire tous profiter :-))