Mega Code Archive

 
Categories / Php / File Directory
 

Wedit

<?php // // View Source -> Edit Page -> Preview -> Save Page ... All online!!!! // file that opens a HTML/PHP file for editing and view preview of Web pages // right now only supports editing of HTML files over http // To edit and preview PHP files, Wedit has to be in the server where PHP files are persent // //1. System requirements //2. Installation // //1. System Requirements // Any system which has PHP and a Web server installed. // ftp server on the system from where the page is opened and has to be uploaded. // Test Broweres - IE, Mozilla // //2. Installation // i) Untar Wedit.tar.gz // ii) Copy Wedit directory into /var/www/html (DocumentRoot directory of the Web Server). // iii) File thats opened should have 777 permission // iv) set "magic_quotes_gpc = off;" in php.ini and restart Web server // //Open the page http://Wedit-server/Wedit/Wedit.php and start working // Readme file //Wedit is a Web based HTML page editor. Html files over a http server or on the machine where Wedit is installed can be edited. // //Http page : html page on a http server can be accessed by entering the http://servername/path/filename.html // //Local page: The documentroot is assumed as /var/www/html. So any files (tested for PHP/html file) inside /var/www/html on the server where Wedit is installed can be opened, Edited, Previewd and Saved. // //Save page : For Saving page thats on a HTTP server, user's Login and password has to be provided. Wedit saves files on HTTP servers using ftp (file transfer protocol) // //Preview page : HTML/PHP page can be viewed by just the click of a button. To preview a PHP page after making changes, first save the file and then Preview. // CONDITIONS // file thats opened should have 777 permission // set "magic_quotes_gpc = off;" in php.ini and restart Web server // only files over HTTP can be edited // To edit files over HTTPS, Wedit must be installed on the server only // PHP files can be previewed only after saving // All local files are opened using relative path // Assumes DocumentRoot as /var/www/html // Does not support HTTPS $documentroot = "/var/www/html"; printf("<html><title>Wedit -- Edit html and PHP pages in Web Browser</title><body>\n\n"); printf(" <script language=\"javascript\">"); printf("var showdiv = 0;"); printf(""); printf("function previewpage(source,file)"); printf("{"); printf(" var previewdiv = document.getElementById(\"previewdiv\");"); printf(" if ( !showdiv )"); printf(" {"); printf(" document.pageform.editbox.style.visibility = \"hidden\"; "); printf(" document.pageform.previewbtn.value = \"Show source\"; "); printf(" previewdiv.style.visibility = \"visible\"; "); printf(" previewdiv.innerHTML = source;"); printf(" showdiv = 1;"); printf(" }"); printf(" else"); printf(" {"); printf(" showdiv = 0;"); printf(" document.pageform.editbox.style.visibility = \"visible\"; "); printf(" document.pageform.previewbtn.value = \"Preview\"; "); printf(" previewdiv.style.visibility = \"hidden\"; "); printf(" }"); printf("}</script>\n"); // file to open in browser $file = $_POST['path'] ? $_POST['path'] : "http://server/index.html"; // should be selected by user $msg = ""; // Parse the Page path ($file) // if the first part is HTTP then set $type=http else local folder $bits = explode("/", $file); if ($bits[0] == "http:") { $type = "http"; } else { $type = "local"; # $openfile= "../" . $file; $openfile= $file; } if ( $type == "http" ) { $ftp_server = $bits[2]; $filepath = ""; for($i=3; $i<count($bits); $i++) { $filepath = $filepath . "/" . $bits[$i]; $filepath = "temp.html"; } $file = $bits[3] ? $file :($file."/index.html"); $filepath = $bits[3] ? $filepath : "/index.html"; $openfile= $file; } printf(" <table width=\"100%%\"> <tr><td style=\"font-size:13px;font-family:Verdana, Arial; color:#4444ef;\"><b>We (Wedit) </td><td style=\"font-size:13px;font-family:Verdana, Arial; color:#4444ef;text-align:right;\"><b>Edit Web pages online</b>\n"); printf(" </td></tr><tr><td colspan=2><hr></td></tr></table>\n"); // page select form printf(" <table> <tr><td>\n"); // page select form printf(" <table> <tr><td>\n"); printf(" <form name=\"pathform\" method=\"post\" action=\"Wedit.php\"> \n"); printf(" File: <input type=\"text\" name=\"path\" value=\"%s\" size=\"40px\" class=\"textbox\"> \n",$file); printf(" <input type=\"button\" name=\"pathsubmit\" value=\"View Source\" class=\"button\" onclick=\"document.pathform.submit();\"> \n"); printf(" </form> \n"); printf("</td></tr>\n"); // Message Block printf("</tr><td>\n"); printf(" <span id=\"msgblock\" name=\"msgblock\" style=\"border:0px solid #cfcfcf;color:#ff0000;font-size:10px;width:300px;\"></span>\n"); printf("</td></tr></table>\n"); // Get a file into an array $lines = @file($openfile) or send2msgblock("Error: in opening Page"); if( $lines ) { // Loop through our array, show HTML source as HTML source foreach ($lines as $line_num => $line) { $pagesource = $pagesource . htmlspecialchars($line); } } if ( $_GET['action'] == "save" ) { // save file $pagesource = $_POST['editbox']; $pagesource = str_replace("\r","",$_POST['editbox']); // remove '\r' that's appended // $pagesource = str_replace("\\","",$pagesource); // remove '\r' that's appended // Logic // 1. Save the file in /tmp on the machine from where Wedit is running // 2. Connect to the remote system using ftp, User and password // 3. put the file in $DOCUMENTROOT/$PATH // Step 2 $path = $documentroot . "/" . $filepath; $ftp_user = $_POST['username']; $ftp_pass = $_POST['password']; if ($type == "http") { if ( !$ftp_user || !$ftp_pass ) { send2msgblock("Error: Login and Password have to be entered to Save page on the server"); } else { // Step 1 $tempfile = "/tmp/Wedit_pagesource"; $f = fopen($tempfile,"w") or send2msgblock("Error: Cannot Open file"); if ($f) { fwrite($f,$pagesource) or send2msgblock("Error: Cannot save file"); //place $pagesource back in file fclose($f); } // set up a connection or die @$conn_id = ftp_connect($ftp_server) or send2msgblock("Error: Cannot connect to $ftp_server"); // try to login if ($conn_id && @ftp_login($conn_id, $ftp_user, $ftp_pass)) { send2msgblock("Connected as $ftp_user@$ftp_server"); } else { send2msgblock("Error: Cannot connect as $ftp_user"); } // Step 3 if (@ftp_put($conn_id, $path, $tempfile, FTP_ASCII)) { send2msgblock("successfully uploaded $file"); } else { send2msgblock("Error: There was a problem while uploading to $file"); } ftp_close($conn_id); } } // save local file else if ($type == "local") { // Step 1 $f = @fopen($openfile,"w") or send2msgblock("Error: Couldn't Open file"); if ($f) { @fwrite($f,$pagesource,strlen($pagesource)) or send2msgblock("Error: Couldn't save file"); //place $pagesource back in file fclose($f); } send2msgblock("File is saved on the server"); } } // Show the page source in a Text box printf("\n <form name=\"pageform\" method=\"post\" action=\"Wedit.php?action=save\"> \n"); if ($type == "http") { $sourcevar = "document.pageform.editbox.value"; } else if ($type == "local") { $localfile = "http://localhost/" . $file ; // Get a file into an array. $lines = @file($localfile) or send2msgblock("Error in opening Page"); // Loop through our array, show HTML source as HTML source; and line numbers too. if ($lines) { foreach ($lines as $line_num => $line) { $localpagesource = $localpagesource . htmlentities($line); } } $sourcevar = "document.pageform.source.value"; } // Hidden fields printf(" <input type=\"hidden\" name=\"path\" value=\"%s\" size=\"50px\"> \n",$file); printf(" <input type=\"hidden\" name=\"type\" value=\"%s\"> \n",$type); printf(" <input type=\"hidden\" name=\"source\" value=\"%s\"> \n",$localpagesource); // FTP login and password printf(" <table>\n"); printf(" <tr><td>\n"); printf(" <b>*</b>Login: <input type=\"text\" name=\"username\" value=\"%s\" size=\"20\" class=\"textbox\"> \n",$ftp_user); printf(" <td>\n"); printf(" <b>*</b>Password: <input type=\"password\" name=\"password\" value=\"%s\" size=\"20\" class=\"textbox\"> \n",$ftp_pass); printf(" </tr>\n"); #printf(" <tr><td><b>*</b>Login and Password of the http server</td></tr>\n"); printf(" <tr><td>&nbsp;</td></tr>\n"); // Save and Preview buttons printf(" <tr><td>\n"); printf(" <input type=\"button\" name=\"pagesubmit\" value=\"Save\" class=\"button\" onclick=\"pageform.submit();\"> \n"); printf("\n <input type=\"button\" name=\"previewbtn\" value=\"Preview\" class=\"button\" onclick=\"previewpage($sourcevar,document.pathform.path.value);\">\n"); printf(" </tr>\n"); // Source code printf(" <tr><td>\n"); printf(" <textarea name=\"editbox\" style=\"position:absolute;height:300px;width:500px;\">"); printf("%s",$pagesource); printf("</textarea> \n"); // Preview Page printf(" <div id=\"previewdiv\" style=\"position:absolute;visibility:hidden;height:500px;width:800px;overflow:auto;\">ttt</div> "); printf(" </tr>"); printf(" </form>\n"); printf("</table>\n"); printf("<table>\n"); printf("</table>\n"); echo "\n</body></html>\n"; function send2msgblock($showmsg) { $msg = $msg . $showmsg . "<br>"; printf("\n<script language=\"javascript\">"); printf("\nvar msgblock = document.getElementById('msgblock');"); printf("\n msgblock.innerHTML = msgblock.innerHTML + '$msg'; "); printf("\n</script>\n"); } ?>