LupusMic

  • Signature
    Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
  • Site web
  • Nombre de sujets
    26
  • Nombre de messages
    1 684
  • Nombre de commentaires
    4
  • Nombre de news
    Aucune
  • Niveau en PHP
    Gourou

Ses derniers sujets sur les forums

LupusMic
le 14/09/2007 à 14:18
C'est la fête !
Et le sujet le plus inutile du site depuis longtemps ^^;

En hommage à notre concordance, je propose de faire la fête ici et maintenant !

Ouais !!! \o/ !!!
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 30/08/2007 à 22:38
Dotclear, sécurité et égo
Bonjour à tous,

Il y a une grosse faille de sécu dans Dotclear. J'en ai été victime, ça m'apprendra à utiliser des outils tout faits.

L'annonce. À noter que le « correctif » ne corrige rien, puisque je l'avais appliqué et que le hack fut effectué le 27 août.

Les symptômes sont un 403 lorsque vous accédez votre site, voir l'ensemble des sites. L'intrusion s'effectue via l'interface d'admin. Il semblerait que l'authentification ne soit pas requise... Sinon je ne vois pas comment ils seraient rentrés. Le bot modifie le .htaccess en ajoutant une règle de réécriture. Les visiteurs venant alors depuis les moteurs de recherche sont redirigés vers un site malveillant. Le .htaccess de votre DC ne sera pas le seul modifié.

Je vous déconseille l'usage de cette outil qui est donc une passoire (ce que je me suis dit quand j'ai audité le code, mais n'ayant rien de mieux...).

Et visiblement, les développeurs de Dotclear sont partisans de la boîte noire, et montre bien leur incompétence en terme de sécurité informatique.

Alors qu'une annonce aurait dû être émise, pour que tout les utilisateurs de la solution soient au courant et suspendent leur serveur.

Merci DotClear.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 12/08/2007 à 08:17
MySQL : contrainte circulaire.
Bonjour tout le monde,

J'ai créé les tables suivantes (j'élude volontairement les attributs qui ne sont pas pertinent ici :

cre.sql
create table accounts
( id integer auto_increment
, people_id integer default null
, username varchar(255) unique not null
, foreign key (people_id) references peoples(id)
, primary key (id)
) type='innodb' ;

create table peoples
( id integer auto_increment
, creator_account_id integer not null
, foreign key (creator_account_id) references accounts(id)
, primary key (id)
) type='innodb' ;


Le principe est le suivant. Sur le site, on créé un compte (table accounts) pour pouvoir se loguer. Lors de l'inscription, un compte est créé ainsi qu'un profil (table peoples). Un compte ne correspond pas forcément à un profil (par exemple, les comptes god et admin ne sont pas des personnes), mais un profil est forcément créé par un compte.

Comme je m'en doutais lorsque j'ai écris ces tables, on a droit à un joli deadlock lorsqu'on veut supprimer un compte.

Est-ce que c'est le genre de cas où la table de jointure est obligatoire ? Et est-ce que mes tables sont mal analysées, ou est-ce une limitation du modèle des contraintes SQL ?

Merci de vos réflexions !
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 05/08/2007 à 03:40
Débarquement de stagiaires ?
Vous n'avez pas chômé ce moi-ci dans le forum, à croire que les stagiaires ont débarqué en force :-D

Pour ma part je suis retourné en Alsace, dans la famille comme on dit. Et je reviens roder et tancer dans le coin ;)
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 11/01/2007 à 16:27
Ajouter une méthode à un objet litéral.
Bonjour,

Je souhaiterais utiliser la méthode indexOf sur les tableaux littéraux :

["toto", "tat", "titi" ].indexOf("toto")


Cependant la méthode n'existe que dans Gecko. Savez-vous si on peut rajouter une méthode aux types littéraux, comme on peut sur les objects ?

Array.prototype.indexOf = function() {...}


Merci de votre aide !
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 05/12/2006 à 16:46
[AJAX] Réutiliser un XHR
Bonjour à tous,

J'ai un p'tit problème de base. J'instancie un objet XHR , qui fonctionne parfaitement. Je peux l'utiliser une première fois. Par contre, si je tente de le réutiliser, en changeant l'URL de consultation ou non, l'événement readystatechange n'est pas propagé.

Est-ce qu'un objet XHR ne doit être utilisé qu'une seule fois ?
Y a-t-il moyen de réinitialiser l'objet, à l'aide de la méthode abort par exemple ?

Ou suis-je condamné à jeter une instance utilisée, tel une vulgaire capote.

Merci de votre avis :)
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 02/10/2006 à 13:38
Retour du PHPFacile
Hello,

Bien content que le site soit rétablit. Je m'inquiétais de son devenir !

Est-ce qu'on aura des détails pour abbreuver notre curiosité ?

Et merci.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 04/09/2006 à 20:08
Namespaces et DomDocument::importNode
Bonjour,

J'ai un petit problème cosmétique. Voici, simplifié, la problématique :

Le document XML à importer :
adv.xml
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE adventures SYSTEM "adventures.dtd">
<adventures xmlns="adventures.dtd"
xmlns:html="http://www.w3.org/1999/xhtml">
<adventure id='adv-adoprixtoxis' kind='kind-sf'>
<title>Adoprixtoxis</title>
<synopsis>
<html:p>Une aventure spatiale !</html:p>
<html:p>Qui n'est pas terminée.</html:p>
</synopsis>
<opinion>
<html:p>Très bonne !</html:p>
<html:p>Mais faudrait en dire plus ;)</html:p>
</opinion>
</adventure>
</adventures>


La DTD qui dit comment qu'il doit être, mon XML :
adv.dtd
<!ELEMENT adventures (adventure)+ >
<!ELEMENT adventure (title,synopsis,opinion) >
<!ATTLIST adventure id ID #IMPLIED >
<!ATTLIST adventure title CDATA #IMPLIED >
<!ATTLIST adventure kind IDREF #IMPLIED >

<!ELEMENT title (#PCDATA) >
<!ELEMENT synopsis (#PCDATA)+ >
<!ELEMENT opinion (#PCDATA)+ >


Le script, en exécution locale, qui permet de générer la page d'index :
adv.php
<?php
$advsDoc = DomDocument::load('adventures.xml') ;
$advsListNode = $advsDoc->getElementsByTagName('adventure') ;
$templateDoc = DomDocument::load('idx-template.html') ;
$templateDoc->validate() ;
$contentNode = $templateDoc->getElementById('content') ;

$dlNode = $contentNode->ownerDocument->createElement('dl') ;
foreach($advsListNode as $advNode)
{
$filebase = $advNode->getAttribute('id') ;
$title = $advNode->getElementsByTagName('title')
->item(0)->nodeValue ;

$dtNode = $contentNode->ownerDocument->createElement('dt') ;
$ddNode = $contentNode->ownerDocument->createElement('dd') ;
$aNode = $contentNode->ownerDocument->createElement('a') ;

$aNode->nodeValue = "(&#8230;)" ;
$aNode->setAttribute('href', "$filebase.html") ;
$dtNode->nodeValue = "$title&#0010;:" ;
// $ddNode->nodeValue = "Premier p" ;

$pNode = $advNode->getElementsByTagName('synopsis')->item(0)
->getElementsByTagName('p')->item(0) ;
$pNode = $ddNode->ownerDocument->importNode($pNode, true) ;

$pNode->appendChild($aNode) ;
$ddNode->appendChild($pNode) ;
$dlNode->appendChild($dtNode) ;
$dlNode->appendChild($ddNode) ;

}
$contentNode->insertBefore($dlNode, $contentNode->lastChild) ;

$templateDoc->normalize() ;
$templateDoc->save("{$advsDir}index.html") ;
unset($templateDoc) ;
?>


Le template HTML de la page d'index :
adv.html
<?xml version="1.0" encoding="iso-8859-15"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head>
<title>Aventures MP3</title>
<link rel="stylesheet" type="text/css" href="../style.css" />
</head>
<body>
<div id="body">
<div id="content">
<h1>Aventures.</h1>
<div class="section">
<p>
Voici la liste alphabétique des aventures
netophoniques&#0010;:
</p>
</div>
</div>
</body>
</html>


Le résultat :
index.html
<?xml version="1.0" encoding="iso-8859-15"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head>
<title>Aventures MP3</title>
<link rel="stylesheet" type="text/css" href="../style.css" />
</head>
<body>
<div id="body">
<div id="content">
<h1>Aventures.</h1>
<div class="section">
<p>
Voici la liste alphabétique des aventures
netophoniques&#0010;:
</p>
<dl><dt>Adoprixtoxis
:</dt>
<dd xmlns:html="http://www.w3.org/1999/xhtml">
<p xmlns:html="http://www.w3.org/1999/xhtml">Une aventure spatiale !
<a href="adv-adoprixtoxis.html">(&#8230;)</a></p></dd></dl>
</div>
</div>
</body>
</html>


Comme vous le constaterez, malgréle namespace commun, libxml me rajoute des déclarations XML. Avez-vous déjà rencontré le problème et résolu la chose de manière élégante ?

(Désolé de ne pas utiliser le Wall, mais il n'est pas très adapté à mon problème ;))

Merci !
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 21/08/2006 à 15:06
La ligne et le fichier courant
Oui, j'ai honte, mais c'est pas grave, assez perdu de temps sur ce menu problème :

Comment obtenir le fichier et la ligne courante du script javascript, en cours d'utilisation.

Par exemple, en C ou en PHP, on a les macros/variables __FILE__ et __LINE__ prédéfinies. Quid en Javascript ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 03/06/2006 à 10:45
XML et importation par namespace
Salut,

J'ai un petit problème existentiel. J'ai un fichier XML qui sert de squelette. Dans celui-ci, je souhaite importer un fichier de données :

<?xml version="1.0"?>
<!DOCTYPE datas SYSTEM "../lib/xml/adventure.dtd">
<datas>
<adventure id="4" kind-id="1">
<title>Reflets d'acide.</title>
<synopsis></synopsis>
<critic></critic>
</adventure>

<kind id="1">
<title></title>
<content></content>
</kind>
</datas>


Pour ce faire j'ai le code suivant :

<?php

$wgDoc = DomDocument::load('page.wg.xml') ;
$advDoc = DomDocument::load('adventure.adv.xml') ;

@$wgDoc->validate() ;
@$advDoc->validate() ;

$finder = new DOMXPath($advDoc) ;

// extraction du premier nœud de données
$adv = $finder->evaluate('//adventure')->item(0) ;

$impAdv = $wgDoc->importNode($adv, true) ;
#var_dump($impAdv, $adv) ;
$menu = $wgDoc->getElementsByTagName('menu')->item(0) ;

// n'accepte malheuresement pas de namespace en argument :'(
$menu->appendChild($impAdv) ;

header('Content-type: text/xml') ;
echo $wgDoc->saveXML() ;

?>


Malheureusement, je ne parviens pas à trouver une méthode directe pour importer le fichier de données dans le fichier structurel en ajoutant un namespace distinct pour chacun. C'est important pour éviter les conflits de balise car le fichier issu est ensuite transformé à l'aide d'un fichier XSLT.

Faut-il que je surcharge la fonction appendChild pour ajouter la prise en compte d'un namespace ?

Merci pour vos conseils.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LoadingChargement en cours