/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Parse HTML som variabler
Fra : philaweb


Dato : 09-10-05 17:17

For noget tid siden havde jeg et begynderproblem på min nye MacOS server, hvilket jeg fik
løst i tråden news:<UbiXe.134$lF1.70@news.get2net.dk>

Det viste sig at jeg havde brugt gamle register_globals tags som crashede HTTPD.

Nu skal jeg så til at overføre nogle billedgallerier, hvor jeg desværre har nogenlunde det
samme problem, nemlig at HTTPD crasher og jeg får en blank side, og det på noget kode som
ellers fungerede fint hos den tidligere webhost.

Jeg formoder at nedenstående del af scriptet må have nogle gamle tags som får scriptet til
at crashe når jeg via en speciel kode (<include filename="/sti/til/filnavn.ext">) skal
include header, footer o.lign.

Nu er jeg desværre stadig temmelig noob når det kommer til PHP, så jeg håber der er én
derude som kan genneskue nedenstående og se hvor skoen trykker.   



   /***************************************
   ** Function to include another file.
   ** eg. A header/footer.
   ***************************************/
      function include_file($file_id, $filename){
         if(file_exists($filename)){
            $include = fread($fp = fopen($filename, 'r'), filesize($filename));
            fclose($fp);
         }else $include = '[ERROR: "'.$filename.'" does not exist.]';

         $tag = substr($this->files[$file_id], strpos(strtolower($this->files[$file_id]),
'<include filename="'.$filename.'">'), strlen('<include filename="'.$filename.'">'));
         $this->files[$file_id] = str_replace($tag, $include, $this->files[$file_id]);
      }

   /***************************************
   ** Function for reading and parsing the
   ** html file for normal variables. Also
   ** now checks for include tags and if
   ** necessary calls include_file()
   ***************************************/
      function parse($file_id){
         $file_ids = explode(',', $file_id);
         for(reset($file_ids); $file_id = trim(current($file_ids)); next($file_ids)){
            while(is_long($pos = strpos(strtolower($this->files[$file_id]), '<include filename="'))){
               $pos += 19;
               $endpos = strpos($this->files[$file_id], '">', $pos);
               $filename = substr($this->files[$file_id], $pos, $endpos-$pos);
               $this->include_file($file_id, $filename);
            }

            if(isset($this->var_names[$file_id]) AND count($this->var_names[$file_id]) > 0){
               for($i=0; $i<count($this->var_names[$file_id]); $i++){
                  $temp_var = $this->var_names[$file_id][$i];

                  if(is_long(strpos($this->files[$file_id], $this->start.$temp_var.$this->end))){
                     global $$temp_var;
                     $this->files[$file_id] = str_replace($this->start.$temp_var.$this->end, $$temp_var,
$this->files[$file_id]);

                  }elseif(is_long(strpos($this->files[$file_id],
$this->start.$temp_var.'()'.$this->end))){
                     global $$temp_var;
                     $arguments = array();
                     for($i=0; $i<count($$temp_var); $i++) $arguments[] = ${$temp_var}[$i];
                     if(count($arguments) > 0) $arguments = '"'.implode('", "', $arguments).'"'; else
$arguments = '';
                     eval('$output = '.$temp_var.'('.$arguments.');');
                     $this->files[$file_id] = str_replace($this->start.$temp_var.'()'.$this->end,
$output, $this->files[$file_id]);
                  }
               }
            }
         }
      }

--

venlige hilsener...

Philaweb


MacOS X 10.4.2 server ~ Mini Mac - siden 15. september 2005.

 
 
Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408927
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste