IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[DOM] Enregistrement


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut [DOM] Enregistrement
    Bonjour et bravo pour ce site que je ne connaissais pas !

    je suis en train de faire un petit système de mise a jour flash/php5/xml

    tout fonctionne parfaitement en local avec apache mais une fois en ligne mon php s'exécute mais mon xml n'est pas modifié

    j'avoue qu'apres avoir fait pas mal de recherch je sèche j'ai besoin d'un coup d'main !

    j'ai vérifié je suis bien en php5, et le allow_ machin est sur on (oui j'ai pas précisé que je débute totalement en php)

    si vous voulez tester :http://www.bleutomate.com/clients/Actus/

    et le xml:
    http://www.bleutomate.com/clients/Actus/news.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
     
    <?php
    	if(!empty($_POST)){
    		$xmlFile = $_POST['flXmlFile'];
    		$action = $_POST['flAction'];
    		$id = $_POST['flId'];
    		if ($action == "supprimer" ) {
    			$date = null;
    			$titre=null;
    			$texte = null;
    		} else {
    			$date = $_POST['flDate'];
    			$titre=$_POST['flTitre'];
    			$texte = $_POST['flTexte'];
    		}
    	}
     
    	/*$xmlFile = "news.xml";
    	$action = "supprimer";
    	$id = "3";
    	//$date = "20/03/2011";
    	//$titre = "nouveau t";
    	//$texte = "nouveau texte";*/
    	$dom = new DomDocument();
    	$dom->preserveWhiteSpace = FALSE;
    	$dom->formatOutput = TRUE;
     
    	$dom->load($xmlFile);
    	$listeNews = $dom->getElementsByTagName('news')->item(0);
    	$listeNewsOne = $dom->getElementsByTagName('oneNews');
    	// test de l'action demandée
    	switch ($action) {
    		case "modifier":
    			modifier();
    			break;
    		case "ajouter":
    			ajouter();
    			break;
    		case "supprimer":
    			modifier();
    			break;
    		default: 
    			echo "aucune action";
     
    	}
    	//MODIFIER
    	function modifier() {
    		global $action, $id, $listeNewsOne, $listeNews, $dom, $xmlFile;
    		// parcour des noeuds oneNews
    		foreach($listeNewsOne as $oneNews){
    			$attr = $oneNews->getAttributeNode('id');
    			// on cherche l'id a modifier en fonction de l'id envoyé par flash
    			if ($attr->nodeValue == $id) {
    				if ($action == "supprimer") {
    					$listeNews->removeChild($oneNews);
    						// on décale l'id des news au dessous de celle supprimée
    						foreach($listeNewsOne as $oneNews) {
    							$attr = $oneNews->getAttributeNode('id');
    							$attr = (int)$attr->nodeValue;
    							$target = (int)$id;
    							if($attr>$target){
    								$attr -= 1;
    								$attr = (string)$attr;
    								$oneNews->getAttributeNode('id')->nodeValue = $attr;
    							}
    						}
    					$toflash = $action." : PHP executed";
    					echo $toflash;
    					$dom->save($xmlFile);
    				}else{			
    					actionXMl($oneNews);
    				}
    			}
    		}
    	}
    	//AJOUTER
    	function ajouter() {
    		global $listeNews, $listeNewsOne;
    		// on décale l'id de chaque news 
    		foreach($listeNewsOne as $oneNews) {
    			$attr = $oneNews->getAttributeNode('id');
    			$attr = (int)$attr->nodeValue;
    			$attr += 1;
    			$attr = (string)$attr;
    			$oneNews->getAttributeNode('id')->nodeValue = $attr;
    		}
    		// on clone la premiere news
    		$newsClone = $listeNews->getElementsByTagName('oneNews')->item(0)->cloneNode(true);
    		actionXMl($newsClone);
        }
    	// ACTION sur le xml et enregistrement
    	function actionXMl($News) {
    		global $action, $date, $titre, $texte, $listeNews, $listeNewsOne, $dom, $xmlFile, $toflash;
    		$oneN = $News;
    		// on midifie les noeuds avec les variables reçus
    		$oneN->getElementsByTagName('date')->item(0)->nodeValue = trim($date);
    		$oneN->getElementsByTagName('titre')->item(0)->nodeValue = trim($titre);
    		$oneN->getElementsByTagName('texte')->item(0)->nodeValue = trim($texte);
    		if ($action == "ajouter") {
    			// on met l'id de la nouvelle news à 1
    			$oneN->setAttribute("id", "1");
    			// ajout du clone dans le dom
    			$listeNews->insertBefore($oneN, $listeNewsOne->item(0)); 
    		}
    		// enregistrement du xml modifié
     
    		$toflash = $action." : PHP executed";
    		echo $toflash;
    		$dom->save($xmlFile);
    	}
    ?>

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    et bienvenu sur les forums de developpez.com

    Est-ce que tu as quelque chose qui sort dans ton error_log ?

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    bon bah désolé mais j'vais commencer avec mes questions de mec qui connait pas

    ou est ce que je peux trouver ce error_log

    EDIT: je viens de trouver le fichier log en local et j'ai pas d'erreur

    j'ai mis des echos pour etre sur que mon php se soit bien exécuté

    et si je teste en lancant direct le php avec les valeurs des variables direct dans le php (sans passer par le flash) beh meme résultat, ca n'affiche pas d'erreur et le xml est inchangé

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par marc_aurel Voir le message
    et si je teste en lancant direct le php avec les valeurs des variables direct dans le php (sans passer par le flash) beh meme résultat, ca n'affiche pas d'erreur et le xml est inchangé
    Très bonne initiative !

    Pour ton fichier de log, quand tu dis, online, c'est mutualisé ou sur un serveur dédié ?

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    c'est un serveru dédié ca doit etre chez free c'est un dedibox

    (géré par un pote) et donc j'ai pu voir les param du php et le dom est présent

    si vous voulez récup les codes pour tester surtout hésitez pas j'ai bossé comme un ane sur ce truc et foirer a 2cm de la ligne d'arrivé ca m'démoralise un poil

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    yaaaaaaaaaaaaaaaaaaaaaa

    j'ai réussi c'etait mon fichier xml qui n'était pas autorisé en écriture du coup maintenant ca marche

    par contre si de bonnes ames pouvaient me dire si mon code php est pas trop pourri et comment l'améliorer pour qu'il soit plus sécure

    merki d'avance

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Tu as une grosse faille de sécurité en effet.
    Tu écris dans un fichier que l'utilisateur défini...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $xmlFile = $_POST['flXmlFile'];
    C'est une très mauvaise idée ! En effet, rien empeche de recevoire '/etc/passwd', ou un autre fichier qui sera modifier rendant au mieux ton application instable ou pire ouvrant la porte de la bergerie...

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    heu ok mais comment corriger ca sachant que depuis le flash je change cette variable (en fontionde langues d'un site par ex)

    si ma variable est par ex = a un string et que dans le PHP en fonction de ce string je change $xmlFile ca irait?

  9. #9
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    oui c'est la solution la plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $allowed_langs = array('en', 'fr', 'it');
     
    $lang = $_POST('lang');
    if ( ! in_array($allowed_langs, $lang)) {
      die('Invalid lang');
    }
    $xml_file = __DIR__ .'/data-'. $lang .'.xml';
    Règle d'or: ne jamais faire confiance aux données qui viennent de l'exterieur.

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    merci !

    heu c'est quoi __DIr__

  11. #11
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    c'est l'équivalent de En gros le répertoire courant du fichier.

    http://php.net/manual/fr/language.co...predefined.php

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/01/2010, 18h30
  2. [DOM XML] Enregistrer un fichier XML sur un serveur ftp
    Par scorpion1611 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 12/09/2007, 15h33
  3. [DOM] Enregistrer un Document dom dans un fichier xml
    Par java_girl dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 09/09/2006, 20h38
  4. [DOM XML] Enregistrer des données
    Par zuxion dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 30/06/2006, 14h33
  5. [DOM] [Axis] Enregistrement de document DOM
    Par ep31 dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 01/02/2006, 11h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo