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.

Link to comment
Share on other sites

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);
  }
}
?>

Link to comment
Share on other sites

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)

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

*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

Link to comment
Share on other sites

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>";
	}
}
?>

Link to comment
Share on other sites

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);

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.