Defcon Posted May 3, 2007 Share Posted May 3, 2007 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. Quote Link to comment Share on other sites More sharing options...
sw0o0sh Posted May 3, 2007 Share Posted May 3, 2007 you can use fopen() http://php.net/fopen Quote Link to comment Share on other sites More sharing options...
Defcon Posted May 4, 2007 Author Share Posted May 4, 2007 you can use fopen() http://php.net/fopen Thanxs a lot sw0o0sh, if i got any problem i will ask here again. Thanxs again Quote Link to comment Share on other sites More sharing options...
Defcon Posted May 4, 2007 Author Share Posted May 4, 2007 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); } } ?> Quote Link to comment Share on other sites More sharing options...
trq Posted May 4, 2007 Share Posted May 4, 2007 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) Quote Link to comment Share on other sites More sharing options...
Defcon Posted May 4, 2007 Author Share Posted May 4, 2007 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 Quote Link to comment Share on other sites More sharing options...
trq Posted May 4, 2007 Share Posted May 4, 2007 Then just change the extensions from .html to .php throughout the code. Quote Link to comment Share on other sites More sharing options...
Defcon Posted May 4, 2007 Author Share Posted May 4, 2007 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 Quote Link to comment Share on other sites More sharing options...
trq Posted May 4, 2007 Share Posted May 4, 2007 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. Quote Link to comment Share on other sites More sharing options...
Defcon Posted May 4, 2007 Author Share Posted May 4, 2007 *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. Quote Link to comment Share on other sites More sharing options...
Defcon Posted May 4, 2007 Author Share Posted May 4, 2007 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>"; } } ?> Quote Link to comment Share on other sites More sharing options...
JakeTheSnake3.0 Posted May 6, 2007 Share Posted May 6, 2007 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); Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.