Jump to content

How to create a new ***.php file format in PHP scriptting?


Defcon

Recommended Posts

Hye all! I would like to know how PHP works to create other a new PHP file automatically on web folder? Ok my case scenario is like this. I already download a Article Manager 0.3 written in PHP language from:

 

http://www.interlogy.com/support/free-download/article_manager03.zip

 

With that script it help me to generate a news/article web page automatically on my web site. However that script will be generate on new ****.html file format. What i want is a new ***.php file format. Can someone help me to define on which one function should i look forward.Thanxs.

you can use fopen()

 

http://php.net/fopen

 

Dear sw0o0sh, i appreciate ur help but i think that fopen() didnt help me. I read there sound like that URL didnt tell me how to create other a new web file (html/php/etc) automatically. It just tell it to create a TXT file. I also already search any keyword name "fopen" on my script but didnt find it. However, here i give a full code wish someone can help here.Thanxs

 

news.php

<html>
<body bgcolor=#f4efce>

<basefont size=2 face=arial>

<b>Add Article</b>
<?
        include ("template.inc");
        include ("config.php");

$subject = $_POST[subject];
$summary = $_POST[summary];
$passwd = $_POST[passwd];
$date = $_POST[date];
$body = $_POST[body];
$article_id = $_POST[article_id];

#foreach($GLOBALS as $a => $b){	print "<li>$a => $b";}

$summary_template = "t_summary.html";
$article_template = "t_article.html";
$max_summary = 5;

function summary_page ($subject, $date, $summary, $article_id)
{
	global $summary_template;
        	$t = new Template();
        	$t->set_file("SummaryPage", $summary_template);
	$article_url = "article_".$article_id.".html";
	$date = nl2br($date);
	$summary =  nl2br($summary);	 
	$t->set_var( array(
			"subject" => $subject,
			"date"    => $date,
			"summary" => $summary,
			"article_url" => $article_url
			));
	$t->parse("Summary", "SummaryPage");
	return $t->get_var("Summary");
}

function main_page ($subject, $date, $summary, $article_id, $body)
{
	global $article_template;

                $t = new Template();
                $t->set_file("ArticlePage", $article_template);
                $article_url = "article_".$article_id.".html";
                $date = nl2br($date);
                $summary =  nl2br($summary);
                $body =  nl2br($body);
                $t->set_var( array(
                                "subject" => $subject,
                                "date"    => $date,
                                "summary" => $summary,
                                "body" => $body,
                                "article_url" => $article_url
                                ));
                $t->parse("Article", "ArticlePage");
                return $t->get_var("Article"); 
}

function add_article($filename, $news)
{

	if(file_exists($filename)){
		$fh = fopen($filename, "r");
		$old_news = fread($fh, filesize($filename));
		fclose($fh); 
	}

	/* TODO: Multipage articles
		preg_match_all("<!--ARTICLE PAGE=(\d*)-->", $old_news, $matches;

		if( count($matches[0]) >= $max_summary){
			$oldfilename = $filename.($matches[0][0]+1);
		} 
	*/

	$fh = fopen($filename, "w");
	$news = stripslashes($news);
	fwrite($fh, "\n<!--ARTICLE-->\n$news $old_news");
	fclose($fh);
}

if(strcmp($subject, "")){	
	if(!(strcmp($passwd, $password))){	
		add_article("article_summary.html", summary_page($subject, $date, $summary, $article_id));
		add_article("article_$article_id.html", main_page($subject, $date, $summary, $article_id, $body));
		echo "<p> <a href=article_$article_id.html>Article</a> has been added! <p>";
	}else{
		echo "<p><b> Password is wrong! </b>";
	}
}
?>


<form action=news.php method=post>
<table border=0>
<tr> <td> (Password): </td><td> <input type=password name=passwd size=20> </td></tr>
<tr> <td> Subject: </td><td> <input type=text name=subject size=50> </td></tr>
<tr> <td> Article ID: </td><td> <input type=text name=article_id value=<? echo date("Y_m_j_is"); ?> size=30> </td></tr>
<tr> <td> Date/Author/etc: </td><td> <textarea name=date rows=2 cols=50 wrap=soft><? echo date("M j, Y\n"); ?>Author: </textarea> </td></tr>
<tr> <td> Summary: </td><td> <textarea name=summary rows=5 cols=50 wrap=soft></textarea> </td></tr>
<tr> <td> Body: </td><td> <textarea name=body rows=15 cols=50></textarea> </td></tr>
</table>
<input type=submit name=submit value=Add>
</form>


<p>

 

template.inc

<?php
/*
* Session Management for PHP3
*
* (C) Copyright 1999-2000 NetUSE GmbH
*                    Kristian Koehntopp
*
* $Id: template.inc,v 1.5 2000/07/12 18:22:35 kk Exp $
*
*/ 

class Template {
  var $classname = "Template";

  /* if set, echo assignments */
  var $debug     = false;

  /* $file[handle] = "filename"; */
  var $file  = array();

  /* relative filenames are relative to this pathname */
  var $root   = "";

  /* $varkeys[key] = "key"; $varvals[key] = "value"; */
  var $varkeys = array();
  var $varvals = array();

  /* "remove"  => remove undefined variables
   * "comment" => replace undefined variables with comments
   * "keep"    => keep undefined variables
   */
  var $unknowns = "remove";
  
  /* "yes" => halt, "report" => report error, continue, "no" => ignore error quietly */
  var $halt_on_error  = "yes";
  
  /* last error message is retained here */
  var $last_error     = "";


  /***************************************************************************/
  /* public: Constructor.
   * root:     template directory.
   * unknowns: how to handle unknown variables.
   */
  function Template($root = ".", $unknowns = "remove") {
    $this->set_root($root);
    $this->set_unknowns($unknowns);
  }

  /* public: setroot(pathname $root)
   * root:   new template directory.
   */  
  function set_root($root) {
    if (!is_dir($root)) {
      $this->halt("set_root: $root is not a directory.");
      return false;
    }
    
    $this->root = $root;
    return true;
  }

  /* public: set_unknowns(enum $unknowns)
   * unknowns: "remove", "comment", "keep"
   *
   */
  function set_unknowns($unknowns = "keep") {
    $this->unknowns = $unknowns;
  }

  /* public: set_file(array $filelist)
   * filelist: array of handle, filename pairs.
   *
   * public: set_file(string $handle, string $filename)
   * handle: handle for a filename,
   * filename: name of template file
   */
  function set_file($handle, $filename = "") {
    if (!is_array($handle)) {
      if ($filename == "") {
        $this->halt("set_file: For handle $handle filename is empty.");
        return false;
      }
      $this->file[$handle] = $this->filename($filename);
    } else {
      reset($handle);
      while(list($h, $f) = each($handle)) {
        $this->file[$h] = $this->filename($f);
      }
    }
  }

  /* public: set_block(string $parent, string $handle, string $name = "")
   * extract the template $handle from $parent, 
   * place variable {$name} instead.
   */
  function set_block($parent, $handle, $name = "") {
    if (!$this->loadfile($parent)) {
      $this->halt("subst: unable to load $parent.");
      return false;
    }
    if ($name == "")
      $name = $handle;

    $str = $this->get_var($parent);
    $reg = "/<!--\s+BEGIN $handle\s+-->(.*)\n\s*<!--\s+END $handle\s+-->/sm";
    preg_match_all($reg, $str, $m);
    $str = preg_replace($reg, "{" . "$name}", $str);
    $this->set_var($handle, $m[1][0]);
    $this->set_var($parent, $str);
  }
  
  /* public: set_var(array $values)
   * values: array of variable name, value pairs.
   *
   * public: set_var(string $varname, string $value)
   * varname: name of a variable that is to be defined
   * value:   value of that variable
   */
  function set_var($varname, $value = "") {
    if (!is_array($varname)) {
      if (!empty($varname))
        if ($this->debug) print "scalar: set *$varname* to *$value*<br>\n";
        $this->varkeys[$varname] = "/".$this->varname($varname)."/";
        $this->varvals[$varname] = $value;
    } else {
      reset($varname);
      while(list($k, $v) = each($varname)) {
        if (!empty($k))
          if ($this->debug) print "array: set *$k* to *$v*<br>\n";
          $this->varkeys[$k] = "/".$this->varname($k)."/";
          $this->varvals[$k] = $v;
      }
    }
  }

  /* public: subst(string $handle)
   * handle: handle of template where variables are to be substituted.
   */
  function subst($handle) {
    if (!$this->loadfile($handle)) {
      $this->halt("subst: unable to load $handle.");
      return false;
    }

    $str = $this->get_var($handle);
    $str = @preg_replace($this->varkeys, $this->varvals, $str);
    return $str;
  }
  
  /* public: psubst(string $handle)
   * handle: handle of template where variables are to be substituted.
   */
  function psubst($handle) {
    print $this->subst($handle);
    
    return false;
  }

  /* public: parse(string $target, string $handle, boolean append)
   * public: parse(string $target, array  $handle, boolean append)
   * target: handle of variable to generate
   * handle: handle of template to substitute
   * append: append to target handle
   */
  function parse($target, $handle, $append = false) {
    if (!is_array($handle)) {
      $str = $this->subst($handle);
      if ($append) {
        $this->set_var($target, $this->get_var($target) . $str);
      } else {
        $this->set_var($target, $str);
      }
    } else {
      reset($handle);
      while(list($i, $h) = each($handle)) {
        $str = $this->subst($h);
        $this->set_var($target, $str);
      }
    }
    
    return $str;
  }
  
  function pparse($target, $handle, $append = false) {
    print $this->parse($target, $handle, $append);
    return false;
  }
  
  /* public: get_vars()
   */
  function get_vars() {
    reset($this->varkeys);
    while(list($k, $v) = each($this->varkeys)) {
      $result[$k] = $this->varvals[$k];
    }
    
    return $result;
  }
  
  /* public: get_var(string varname)
   * varname: name of variable.
   *
   * public: get_var(array varname)
   * varname: array of variable names
   */
  function get_var($varname) {
    if (!is_array($varname)) {
      return $this->varvals[$varname];
    } else {
      reset($varname);
      while(list($k, $v) = each($varname)) {
        $result[$k] = $this->varvals[$k];
      }
      
      return $result;
    }
  }
  
  /* public: get_undefined($handle)
   * handle: handle of a template.
   */
  function get_undefined($handle) {
    if (!$this->loadfile($handle)) {
      $this->halt("get_undefined: unable to load $handle.");
      return false;
    }
    
    preg_match_all("/\{([^}]+)\}/", $this->get_var($handle), $m);
    $m = $m[1];
    if (!is_array($m))
      return false;

    reset($m);
    while(list($k, $v) = each($m)) {
      if (!isset($this->varkeys[$v]))
        $result[$v] = $v;
    }
    
    if (count($result))
      return $result;
    else
      return false;
  }

  /* public: finish(string $str)
   * str: string to finish.
   */
  function finish($str) {
    switch ($this->unknowns) {
      case "keep":
      break;
      
      case "remove":
        $str = preg_replace('/{[^ \t\r\n}]+}/', "", $str);
      break;

      case "comment":
        $str = preg_replace('/{([^ \t\r\n}]+)}/', "<!-- Template $handle: Variable \\1 undefined -->", $str);
      break;
    }
    
    return $str;
  }

  /* public: p(string $varname)
   * varname: name of variable to print.
   */
  function p($varname) {
    print $this->finish($this->get_var($varname));
  }

/* Added by Aytekin
  function pvalue($varname) {
    return $this->finish($this->get_var($varname));
  }


  function get($varname) {
    return $this->finish($this->get_var($varname));
  }
    
  /***************************************************************************/
  /* private: filename($filename)
   * filename: name to be completed.
   */
  function filename($filename) {
    if (substr($filename, 0, 1) != "/") {
      $filename = $this->root."/".$filename;
    }
    
    if (!file_exists($filename))
      $this->halt("filename: file $filename does not exist.");

    return $filename;
  }
  
  /* private: varname($varname)
   * varname: name of a replacement variable to be protected.
   */
  function varname($varname) {
    return preg_quote("{".$varname."}");
  }

  /* private: loadfile(string $handle)
   * handle:  load file defined by handle, if it is not loaded yet.
   */
  function loadfile($handle) {
    if (isset($this->varkeys[$handle]) and !empty($this->varvals[$handle]))
      return true;

    if (!isset($this->file[$handle])) {
      $this->halt("loadfile: $handle is not a valid handle.");
      return false;
    }
    $filename = $this->file[$handle];

    $str = implode("", @file($filename));
    if (empty($str)) {
      $this->halt("loadfile: While loading $handle, $filename does not exist or is empty.");
      return false;
    }

    $this->set_var($handle, $str);
    
    return true;
  }

  /***************************************************************************/
  /* public: halt(string $msg)
   * msg:    error message to show.
   */
  function halt($msg) {
    $this->last_error = $msg;
    
    if ($this->halt_on_error != "no")
      $this->haltmsg($msg);
    
    if ($this->halt_on_error == "yes")
      die("<b>Halted.</b>");
    
    return false;
  }
  
  /* public, override: haltmsg($msg)
   * msg: error message to show.
   */
  function haltmsg($msg) {
    printf("<b>Template Error:</b> %s<br>\n", $msg);
  }
}
?>

A php file is essentially just a .txt file so the same solution applies. However... creating new files on the fly is not generally a good solution.

 

Explain exactly what it is your wanting to do. (Not how, but what)

 

Thanxs thorpe for reply, ok what exactly i want is i want to change that script generate a new web page in PHP format not HTML format. HUHuhuh thanxs

Then just change the extensions from .html to .php throughout the code.

 

Huhuhu.. i already change everything extensions from **.html to **.php in that code and also a file template but i wont happen and still generate in HTML. HUhuhu can someone download that a small file and help me there huhuhuh.. Thanxs thorpe

and still generate in HTML.

 

You mean your file ends up with the .html extension?

 

can someone download that a small file and help me there huhuhuh

 

No one is going to download it, setup a database and test it. The code is 7 years old, written in php3.

 

Post your code with the changes.

*my answer in red color

 

and still generate in HTML.

 

You mean your file ends up with the .html extension?

 

Yup! That i want it..huhuhu

 

can someone download that a small file and help me there huhuhuh

 

No one is going to download it, setup a database and test it. The code is 7 years old, written in php3.

 

Post your code with the changes.

 

That script didnt using any database and xml or etc. I just generate a new HTML file and of coz that folder i have to CHMOD to 777

 

Here is my code with a changes.

 

<html>
<body bgcolor=#f4efce>

<basefont size=2 face=arial>

<b>Add Article</b>
<?
        include ("template.inc");
        include ("config.php");

$subject = $_POST[subject];
$summary = $_POST[summary];
$passwd = $_POST[passwd];
$date = $_POST[date];
$body = $_POST[body];
$article_id = $_POST[article_id];

#foreach($GLOBALS as $a => $b){	print "<li>$a => $b";}

$summary_template = "t_summary.php";
$article_template = "t_article.php";
$max_summary = 5;

function summary_page ($subject, $date, $summary, $article_id)
{
	global $summary_template;
        	$t = new Template();
        	$t->set_file("SummaryPage", $summary_template);
	$article_url = "article_".$article_id.".php";
	$date = nl2br($date);
	$summary =  nl2br($summary);	 
	$t->set_var( array(
			"subject" => $subject,
			"date"    => $date,
			"summary" => $summary,
			"article_url" => $article_url
			));
	$t->parse("Summary", "SummaryPage");
	return $t->get_var("Summary");
}

function main_page ($subject, $date, $summary, $article_id, $body)
{
	global $article_template;

                $t = new Template();
                $t->set_file("ArticlePage", $article_template);
                $article_url = "article_".$article_id.".php";
                $date = nl2br($date);
                $summary =  nl2br($summary);
                $body =  nl2br($body);
                $t->set_var( array(
                                "subject" => $subject,
                                "date"    => $date,
                                "summary" => $summary,
                                "body" => $body,
                                "article_url" => $article_url
                                ));
                $t->parse("Article", "ArticlePage");
                return $t->get_var("Article"); 
}

function add_article($filename, $news)
{

	if(file_exists($filename)){
		$fh = fopen($filename, "r");
		$old_news = fread($fh, filesize($filename));
		fclose($fh); 
	}

	/* TODO: Multipage articles
		preg_match_all("<!--ARTICLE PAGE=(\d*)-->", $old_news, $matches;

		if( count($matches[0]) >= $max_summary){
			$oldfilename = $filename.($matches[0][0]+1);
		} 
	*/

	$fh = fopen($filename, "w");
	$news = stripslashes($news);
	fwrite($fh, "\n<!--ARTICLE-->\n$news $old_news");
	fclose($fh);
}

if(strcmp($subject, "")){	
	if(!(strcmp($passwd, $password))){	
		add_article("article_summary.php", summary_page($subject, $date, $summary, $article_id));
		add_article("article_$article_id.php", main_page($subject, $date, $summary, $article_id, $body));
		echo "<p> <a href=article_$article_id.php>Article</a> has been added! <p>";
	}else{
		echo "<p><b> Password is wrong! </b>";
	}
}
?>


<form action=news.php method=post>
<table border=0>
<tr> <td> (Password): </td><td> <input type=password name=passwd size=20> </td></tr>
<tr> <td> Subject: </td><td> <input type=text name=subject size=50> </td></tr>
<tr> <td> Article ID: </td><td> <input type=text name=article_id value=<? echo date("Y_m_j_is"); ?> size=30> </td></tr>
<tr> <td> Date/Author/etc: </td><td> <textarea name=date rows=2 cols=50 wrap=soft><? echo date("M j, Y\n"); ?>Author: </textarea> </td></tr>
<tr> <td> Summary: </td><td> <textarea name=summary rows=5 cols=50 wrap=soft></textarea> </td></tr>
<tr> <td> Body: </td><td> <textarea name=body rows=15 cols=50></textarea> </td></tr>
</table>
<input type=submit name=submit value=Add>
</form>


<p>

 

Here a screen shoot default file on that PHP script.

 

articlexsummaryxphpx001.jpg

Here i paste a part of that PHP script in a file name as news.php. Base on my PHP knowledge, "fopen" function is a for PHP script to create a new file right? Correct me if i'm wrong. So how i can know on that funtions will be save as HTML/PHP/TXT/etc?

 

	$fh = fopen($filename, "w");
	$news = stripslashes($news);
	fwrite($fh, "\n<!--ARTICLE-->\n$news $old_news");
	fclose($fh);
}

if(strcmp($subject, "")){	
	if(!(strcmp($passwd, $password))){	
		add_article("article_summary.php", summary_page($subject, $date, $summary, $article_id));
		add_article("article_$article_id.php", main_page($subject, $date, $summary, $article_id, $body));
		echo "<p> <a href=article_$article_id.php>Article</a> has been added! <p>";
	}else{
		echo "<p><b> Password is wrong! </b>";
	}
}
?>

http://ca.php.net/fopen

 

Refer to table 91 near the top.  The 1st argument in the fopen() function is the location of the file; the 2nd argument is to how to work with that file.

 

ex)...

 

// This will open up the file called 'myFile.php'...if myFile.php doesn't exist, it will CREATE myFile.php - the pointer is put at the end of the file
$file = fopen('data/files/myFile.php', 'a');

// This will put the pointer at the beginning of the file...
fseek($file, 0);

// If you don't wish to overwrite what's already in the text file...copy what's in there so you can change things later on...
$data = fread($file, filesize('data/files/myFile.php'));

// This will write to the file...if there is already text in the file, it will be overwritten to the length of your new text....
// ex) original file contains "AAAAAA" ... you fwrite() "Hello" ... now the file contains "HelloA"
fwrite($file, 'this is some text');

// Close the file...
fclose($file);

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.