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

Langage PHP Discussion :

[POO] Modification d'un script codé en PHP4 [PHP 5.0]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 50
    Par défaut [POO] Modification d'un script codé en PHP4
    Bonjour,

    N'ayant que très peu touché PHP5, je suis resté en "old school" (développement peu organisé, sans classes et très peu de fonctions). J'essaye de régler ce souci en apprenant le PHP5.x (en POO bien entendu).

    J'ai plutôt compris la méthode, son utilisation mais j'ai encore quelques soucis coté technique. J'aimerais savoir si c'est possible de m'éclairer sur des erreurs qui seront très surement banal et bête pour un initié PHP5, mais surtout à expliquer mes erreurs :o) !!

    Pour apprendre à développer, j'ai fait un TP basique : j'ai repris un script créé en PHP4, et j'ai essayé de le transformer en POO ! Mais sans succès, après avoir analysé les erreurs j'ai pas réussi à le faire fonctionner..
    C'est un script qui Parse du contenu XML


    SCRIPT EN PHP4 (de base, celui qui fonctionne) :
    Page : char.php

    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
    112
    113
    114
    115
    <?php
     
    // VARS
    require "_fonction.php";
    head("Reputation - Armory", "personnage");
     
     
    $Cle = "blablabla"; // key
    $pseudo = Decrypte($_GET['n'],$Cle); // Décryptage du pseudo
    $realm = $_GET['r']; // Récuperation du nom du royaume
    $r = str_replace(" ", "+", $_GET['r']); // Chaine pour ajouter les "+"
    $url = "http://armory.wow-europe.com/character-sheet.xml?r=" . $r . "&n=" . $pseudo ; // Armory XML
     
     
    // Début CURL /*
    $ch = curl_init();
    $useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_USERAGENT, $useragent);
    $f = curl_exec($ch);
    curl_close($ch);
    // Fin CURL
     
    $xml = new SimpleXMLElement($f);
    foreach ($xml->characterInfo[0]->character as $char) {
    echo '<table width="751" border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td width="554"><p align="right"><img src="images/hk.jpg" width="9" height="13">&nbsp;&nbsp;</p></td>
          <td width="197"><font color="#FFDC19" size=1>HK : <b>';
    	  foreach ($xml->characterInfo[0]->characterTab->pvp->lifetimehonorablekills as $hk) {
    	  echo $hk['value'];
    	  }
    		echo '</b></font></td>
        </tr>
      </table>
    </center>
    <table width="751" border="0" align="center" cellpadding="0" cellspacing="0" background="images/bar-yellow.jpg">
      <tr>
        <td height="27"><table width="98%" border="0" align="center" cellpadding="0" cellspacing="0">
          <tr>
            <td width="13%" class="black"><span class="black-bold">Char :</span></td>
            <td width="12%"><img src=http://armory.wow-europe.com/images/icons/faction/icon-'.$char['factionId'].'.gif>  <img src=http://armory.wow-europe.com/images/icons/race/'.$char['raceId'].'-'.$char['genderId'].'.gif> <img src=http://armory.wow-europe.com/images/icons/class/'.$char['classId'].'.gif></td>
            <td width="55%" class="black">'.$char['gender'].', '.$char['race'].' '.$char['class'].' '.$char['level'].' - '.$char['faction'].' - <b>'.$char['realm'].'</b></td>';
    		foreach ($xml->characterInfo[0]->characterTab->professions->skill as $skill) {
    			echo '
            <td width="3%"><img src=http://armory.wow-europe.com/images/icons/professions/'.$skill['key'].'-sm.gif></td>
            <td width="7%" class="black">'.$skill['value'].'/'.$skill['max'].'</td>';
    		} echo '
          </tr>
        </table></td>
      </tr>
    </table>
    <p align="center">';
    }
    echo "<br>";
     
    foreach ($xml->characterInfo[0]->characterTab->items->item as $item) {
    echo '<a class="q5" href="http://www.wowhead.com/?item='.$item['id'].'"><img src="http://eu.wowarmory.com/wow-icons/_images/43x43/'.$item['icon'].'.png" border="0"></a>';
    }
     
    echo '<table width="780" border="0" align="center" cellpadding="0" cellspacing="7">
      <tr>
        <td align="center"><span class="white-bold">Caracteristiques</span><br>
          <table width="100%" border="0" cellspacing="0" cellpadding="0" background="images/case.jpg" style="border:1px solid #3A3A3A">
            <tr>
              <td height="156" valign="top" style="padding:7px">'; 
    		  foreach ($xml->characterInfo[0]->characterTab->baseStats as $stats) {
    		  echo '<b>Strength : </b>'.$stats->strength['effective'].'<br><b>Agility : </b>'.$stats->agility['effective'].'<br><b>Stamina : </b>'.$stats->stamina['effective'].'<br><b>Intellect : </b>'.$stats->intellect['effective'].'<br><b>Spirit : </b>'.$stats->spirit['effective']; }
    		  echo '</td>
            </tr>
        </table></td>
        <td align="center"><span class="white-bold">Melee Stats</span>
    <table width="100%" border="0" cellspacing="0" cellpadding="0" background="images/case.jpg" style="border:1px solid #3A3A3A">
            <tr>
              <td height="156" valign="top" style="padding:7px">'; 
    		  foreach ($xml->characterInfo[0]->characterTab->melee as $melee) {
    		  echo '<b>MH : </b>'.$melee->mainHandDamage['max'].' - '.$melee->mainHandDamage['min'].'<br>
    		  		<b>Attack Power:</b> '.$melee->power['effective'].'<br>
    				<b>Hit Rating :</b> '.$melee->hitRating['value'].' ('.$melee->hitRating['percent'].' %)<br>
    				<b>Crit Chance : </b> '.$melee->critChance['rating'].' ('.$melee->critChance['percent'].' %)<br>
    				<b>Expertise : </b> '.$melee->expertise['value'].' ('.$melee->expertise['percent'].' %)'; }
    		  echo '</td>
            </tr>
        </table></td>
        <td align="center"><span class="white-bold">Ranged stats</span>
    <table width="100%" border="0" cellspacing="0" cellpadding="0" background="images/case.jpg" style="border:1px solid #3A3A3A">
            <tr>
            <td height="156" valign="top" style="padding:7px">'; 
    		  foreach ($xml->characterInfo[0]->characterTab->ranged as $ranged) {
    		  echo '<b>Skill : </b>'.$ranged->weaponSkill['rating'].'<br>
    		  		<b>Damage :</b> '.$ranged->damage['min'].' - '.$ranged->damage['max'].'<br>
    				<b>Speed :</b> '.$ranged->speed['value'].'<br>
    				<b>Crit Chance : </b> '.$ranged->critChance['rating'].' ('.$ranged->critChance['percent'].' %)<br>
    				<b>Hit Rating : </b> '.$ranged->hitRating['value'].' ('.$melee->hitRating['increaseHitPercent'].' %)'; }
    				echo '</td>
            </tr>
        </table></td>
        <td align="center"><span class="white-bold">Spell Stats</span>
    <table width="100%" border="0" cellspacing="0" cellpadding="0" background="images/case.jpg" style="border:1px solid #3A3A3A">
            <tr>
              <td height="156" valign="top" style="padding:7px">'; 
    		  foreach ($xml->characterInfo[0]->characterTab->spell as $spell) {
    		  echo '<b>Spell : </b>'.$spell->bonusHealing['value'].'<br>
    				<b>Hit Rating :</b> '.$spell->hitRating['value'].' ('.$spell->hitRating['increasedHitPercent'].' %)<br>
    				<b>Crit Rating : </b> '.$spell->critChance['rating'].' <br>
    				<b>MP5 : </b> '.$spell->manaRegen['notCasting'].''; }
    		  echo '</td>
            </tr>
        </table></td>
       
      </tr>
    </table>';
     
    ?>
    Page des fonctions qui vont avec :
    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
    <?php
    function GenerationCle($Texte,$CleDEncryptage)
      {
      $CleDEncryptage = md5($CleDEncryptage);
      $Compteur=0;
      $VariableTemp = "";
      for ($Ctr=0;$Ctr<strlen($Texte);$Ctr++)
        {
        if ($Compteur==strlen($CleDEncryptage))
          $Compteur=0;
        $VariableTemp.= substr($Texte,$Ctr,1) ^ substr($CleDEncryptage,$Compteur,1);
        $Compteur++;
        }
      return $VariableTemp;
      }
     
    function Crypte($Texte,$Cle)
      {
      srand((double)microtime()*1000000);
      $CleDEncryptage = 545454;
      $Compteur=0;
      $VariableTemp = "";
      for ($Ctr=0;$Ctr<strlen($Texte);$Ctr++)
        {
        if ($Compteur==strlen($CleDEncryptage))
          $Compteur=0;
        $VariableTemp.= substr($CleDEncryptage,$Compteur,1).(substr($Texte,$Ctr,1) ^ substr($CleDEncryptage,$Compteur,1) );
        $Compteur++;
        }
      return base64_encode(GenerationCle($VariableTemp,$Cle) );
      }
     
    function Decrypte($Texte,$Cle)
      {
      $Texte = GenerationCle(base64_decode($Texte),$Cle);
      $VariableTemp = "";
      for ($Ctr=0;$Ctr<strlen($Texte);$Ctr++)
        {
        $md5 = substr($Texte,$Ctr,1);
        $Ctr++;
        $VariableTemp.= (substr($Texte,$Ctr,1) ^ $md5);
        }
      return $VariableTemp;
      }
     
    function head($title,$page){}
    }
     
    ?>

    Codage PHP5
    Char.php
    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
     
    <?php
     
    // VARS
    require "_fonction.php";
    require "_class_cryptage.php";
    head("Reputation - Armory", "personnage");
     
     
    $cryptage = new Cryptage(); 
    $cryptage->Cle("blablabla");
    $cryptage->Pseudo($_GET['n']);
    $cryptage->Realm($_GET['r']);
    $cryptage->Save();
     
     // Armory XML
     
     
    foreach ($xml->characterInfo[0]->character as $char) {
    // Codage écourté (le reste n'a pas été dev)
    }
    PAGE : _CLASS_CRYPTAGE.PHP
    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
     
    <?php
    // CLASS  Cryptage:
    //
    class Cryptage 
    { 
        private $Cle;
    	public $xml;
    	private $Pseudo;
    	private $Realm;
    	public $url;
    	private $realmxml;
    	private $pdec;
    	public $Save;
     
     
     
        	public function __construct()    {} 
     
    		public function Cle($Cle) {
    		$this->Cle = $Cle;
    		}
     
    		public function Pseudo($Pseudo) {
    		$this->Pseudo = $Pseudo;		
    		}
     
    		public function Realm($Realm) {
    		$this->Realm = $Realm;		
    		}
     
     
     
    		function Decrypte($Texte,$Cle)
    		  {
    		  $Texte = GenerationCle(base64_decode($Texte),$Cle);
     		 $VariableTemp = "";
     		 for ($Ctr=0;$Ctr<strlen($Texte);$Ctr++)
     		   {
     		   $md5 = substr($Texte,$Ctr,1);
     		   $Ctr++;
     		   $VariableTemp.= (substr($Texte,$Ctr,1) ^ $md5);
      		  }  return $VariableTemp; }
     
     
     
    		public function Save() {
    		$this->pdec = Decrypte($this->Pseudo, $this->Cle); // Pseudo Décrypté
    		$this->realmxml = str_replace(" ", "+", $this->Realm);
    		$this->url = "http://armory.wow-europe.com/character-sheet.xml?r=" . $this->realmxml . "&n=" . $this->pdec ;
     
    		$this->ch = curl_init();
    		$this->useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";
    		curl_setopt ($this->ch, CURLOPT_URL, $this->url);
    		curl_setopt ($this->ch, CURLOPT_RETURNTRANSFER, 1);
    		curl_setopt ($this->ch, CURLOPT_USERAGENT, $this->useragent);
    		$this->f = curl_exec($this->ch);
    		curl_close($this->ch);
    		// Fin CURL
     
    		$this->xml = new SimpleXMLElement($this->f);
    		}
     
    }

    Donc à ce que j'ai compris, je n'arrive pas à faire executer le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->xml = new SimpleXMLElement($this->f);
    de la fonction Save (j'ai essayé de le faire en return et ca me met la même erreur).

    Autre question : mon codage (php5 bien sur) est-il bien structuré ? D'autres problèmes de codage sont-ils visible ? (notamment sur les "private, public" j'ai pas trop trop saisi leur fonctionnement apart de "déclarer" une variable).

    Merci d'avoir pris le temps de lire mon pavé

  2. #2
    Membre expérimenté Avatar de Korri
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 158
    Par défaut
    Salut,

    Essaye déja ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ($cryptage->xml->characterInfo[0]->character as $char) {
    // Codage écourté (le reste n'a pas été dev)
    }
    $xml est un attribut de ton objet $cryptage tu peut pas l'appeler comme ça

    Sinon tu fait beaucoup d'attributs qui ne servent pas beaucoup !

    Les variables dans un objets ne sont pas forcement des atributs !

    Voila bonne continuation !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 50
    Par défaut
    Effectivement, c'était mon erreur !

    Merci monsieur Vacher =)))) !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. modification d'un script
    Par snoopy59110 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 26/06/2007, 15h48
  2. modification d'un script
    Par kaukos dans le forum Langage
    Réponses: 3
    Dernier message: 16/05/2007, 11h14
  3. Modification d'un script
    Par tom06440 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/09/2006, 16h28
  4. Modification d'un script
    Par renaud26 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/08/2006, 11h48

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