Rozdzielenie dynamicznego php na dwa osobne pliki

0

Witam serdecznie!
Potrafi ktoś może rozdzielić ten plik.php na osobne pliki?:
index.php
skrypty.js
W internecie znalazłem tylko jeden taki prosty uploader plików oparty na JavaScript, który mógłbym dodać do mojego bbcode. Tylko problem pojawił się przy rozdzielaniu.
Jeżeli ktoś znajdzie chwilkę to bardzo bym prosił. :)

<?php
/**
 *
 * @package: fileupload
 * @author: Anisur R. Mullick
 * @copyright: Digital Avenues Limited
 * @version: 1.0
 *
 */
if($_POST['pgaction']=="upload")
	upload();
else
	uploadForm();

//The form having dynamic file uploader
function uploadForm() {
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title> :: FILEUPLOAD :: </title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>

<body bgcolor="#C8C8C8" leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0">
<br>
<form name="frm" method="post" onsubmit="return validate(this);" enctype="multipart/form-data">
<input type="hidden" name="pgaction">
	<?php if ($GLOBALS['msg']) { echo '<center><span class="err">'.$GLOBALS['msg'].'</span></center>'; }?>
	<table align="center" cellpadding="4" cellspacing="0" bgcolor="#EDEDED">	
		<tr class="tblSubHead">
			<td colspan="2">Upload any number of file</td>
		</tr>
		<tr class="txt">
			<td valign="top"><div id="dvFile"><input type="file" name="item_file[]"></div></td>
			<td valign="top"><a href="javascript:_add_more();" title="Add more"><img src="plus_icon.gif" border="0"></a></td>
		</tr>
		<tr>
			<td align="center" colspan="2"><input type="submit" value="Upload File"></td>
		</tr>
	</table>
</form>
<script language="javascript">
<!--
	function _add_more() {
		var txt = "<br><input type=\"file\" name=\"item_file[]\">";
		document.getElementById("dvFile").innerHTML += txt;
	}
	function validate(f){
		var chkFlg = false;
		for(var i=0; i < f.length; i++) {
			if(f.elements[i].type=="file" && f.elements[i].value != "") {
				chkFlg = true;
			}
		}
		if(!chkFlg) {
			alert('Please browse/choose at least one file');
			return false;
		}
		f.pgaction.value='upload';
		return true;
	}
//-->
</script>
</body>
</html>
<?php
}

//function to store uploaded file

function upload(){	
	if(count($_FILES["item_file"]['name'])>0) { //check if any file uploaded
		$GLOBALS['msg'] = ""; //initiate the global message
		for($j=0; $j < count($_FILES["item_file"]['name']); $j++) { //loop the uploaded file array
			$filen = $_FILES["item_file"]['name']["$j"]; //file name
			$path = 'uploads/'.$filen; //generate the destination path
			if(move_uploaded_file($_FILES["item_file"]['tmp_name']["$j"],$path)) { //upload the file
				$GLOBALS['msg'] .= "File# ".($j+1)." ($filen) uploaded successfully<br>"; //Success message
			}
		}
	}
	else {
		$GLOBALS['msg'] = "No files found to upload"; //Failed message	
	}
	uploadForm(); //display the main form
}
?>

Żeby nie było , że nic nie robię, to zrobiłem tak:
skrypt.js:

	function _add_more() {
		var txt = "<br><input type=\"file\" name=\"item_file[]\">";
		document.getElementById("dvFile").innerHTML += txt;
	}
	function validate(f){
		var chkFlg = false;
		for(var i=0; i < f.length; i++) {
			if(f.elements[i].type=="file" && f.elements[i].value != "") {
				chkFlg = true;
			}
		}
		if(!chkFlg) {
			alert('Please browse/choose at least one file');
			return false;
		}
		f.pgaction.value='upload';
		return true;
	}
	
	function upload(){	
	if(count($_FILES["item_file"]['name'])>0) { //check if any file uploaded
		$GLOBALS['msg'] = ""; //initiate the global message
		for($j=0; $j < count($_FILES["item_file"]['name']); $j++) { //loop the uploaded file array
			$filen = $_FILES["item_file"]['name']["$j"]; //file name
			$path = 'uploads/'.$filen; //generate the destination path
			if(move_uploaded_file($_FILES["item_file"]['tmp_name']["$j"],$path)) { //upload the file
				$GLOBALS['msg'] .= "File# ".($j+1)." ($filen) uploaded successfully<br>"; //Success message
			}
		}
	}
	else {
		$GLOBALS['msg'] = "No files found to upload"; //Failed message	
	}
	
}

strona.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title> :: FILEUPLOAD :: </title>
<link href="style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="skrypt.js"></script>
</head>

<body bgcolor="#C8C8C8" leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0">
<br>
<form name="frm" method="post" onsubmit="return validate(this);" enctype="multipart/form-data">
<input type="hidden" name="pgaction">
	<?php if ($GLOBALS['msg']) { echo '<center><span class="err">'.$GLOBALS['msg'].'</span></center>'; }?>
	<table align="center" cellpadding="4" cellspacing="0" bgcolor="#EDEDED">	
		<tr class="tblSubHead">
			<td colspan="2">Upload any number of file</td>
		</tr>
		<tr class="txt">
			<td valign="top"><div id="dvFile"><input type="file" name="item_file[]"></div></td>
			<td valign="top"><a href="javascript:_add_more();" title="Add more"><img src="plus_icon.gif" border="0"></a></td>
		</tr>
		<tr>
			<td align="center" colspan="2"><input type="submit" value="Upload File"></td>
		</tr>
	</table>
</form>

Ale nic nie działa.
Ani dodanie kolejnego pliku do wyboru poprzez kliknięcie "+":

<td valign="top"><a href="javascript:_add_more();" title="Add more"><img src="plus_icon.gif" border="0"></a></td>

ani upload plików.

0

Pierwsze to w narzędziach deweloperskich przeglądarki zobacz konsolę błędów, sprawdź też w Sieć czy plik js się poprawnie ładuje

0

Uncaught SyntaxError: Unexpected token = skrypt.js:27

0

uno, to mieszasz waść skrypt JS ze skryptem PHP. Skrypt JS nie jest parsowany przez serwer, trafia bezpośrednio do przeglądarki i tam jest parsowany. A przeglądarka zwraca SyntaxError, bo parsując plik z JS trafiła na składnię PHP której nie rozumie...

0

Ta funkcja upload powinna pozostać po stronie php. Przy błędzie składni w js cały plik nie będzie ładowany, więc też nawet inne funkcje, dobrze wywoływane, nie zadziałają.

Edit: Mam nadzieję, że zdajesz sobie sprawę, że ten skrypt jest dziurawy i po wystawieniu go na publiczność szybko doczekasz się włamania?

0
<?php
ob_start();
//function to store uploaded file
function upload()
{        
	$GLOBALS['msg'] = null; 
	$itemsUPloaded = ( $_FILES["item_file"]['name'] );
	$itemsCount = ( count ( $itemsUPloaded ) );
	
	if( $itemsCount > 0 ) 
	{ 
			for($j=0; $j < $itemsCount; $j++)
			{
				$path = 'uploads/'.$itemsUPloaded.$j;
				
				if( move_uploaded_file ( $itemsUPloaded.$j, $path ) )
				{	
					$GLOBALS['msg'] = "File# ".($j+1)." ({$itemsUPloaded}) uploaded successfully<br/>";  
					}
			}//Eo(for)
			
	} else {
		$GLOBALS['msg'] = "No files found to upload";         
	}
}// EoF:upload;
function sendCallback()
{
    if ($GLOBALS['msg']) {
        echo '
		<center>
			<span class="err">'
            .$GLOBALS['msg'].
            '</span>
		</center>';
    }
}

if( $_POST['pgaction'] == "upload" ) { upload(); }
?>
<!doctype>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<meta charset="utf-8"/>
        <title> :: FILEUPLOAD :: </title>
		<link href="style.css" rel="stylesheet" type="text/css" />
		<script language="javascript">
			<!--
			function _add_more()
            {
					//var txt = '<br><input type="file" name="localFile">';
					document.getElementById("dvFile").innerHTML += '<br><input type="file" name="localFile">';
			}

			function validate(f)
            {
					var chkFlg = false;
					for(var i=0; i < f.length; i++) {
							if(f.elements[i].type=="file" && f.elements[i].value != "") {
									chkFlg = true;
							}
					}
					if(!chkFlg) {
							alert('Please browse/choose at least one file');
							return false;
					}
					f.pgaction.value='upload';
					return true;
			}
			//-->
		</script>
	</head>
	<body style="background-color(#C8C8C8)">
        <br/>
        <form action="" method="post" onsubmit="return validate(this)" enctype="multipart/form-data">
            <?php sendCallback(); ?>
            <table align="center" cellpadding="4" cellspacing="0" bgcolor="#EDEDED">
                    <tr class="tblSubHead">
                        <td colspan="2">
                            Upload any number of file
                        </td>
                    </tr>
                    <tr class="txt">
                        <td valign="top">
                            <div id="dvFile">
                                <input type="file" name="localFile">
                            </div>
                        </td>
                        <td valign="top">
                            <a href="_add_more()" title="Add more">
                                <img src="plus_icon.gif" border="0">
                            </a>
                        </td>
                    </tr>
                    <tr>
                        <td align="center" colspan="2">
                            <input type="hidden" value="upload" name="pgaction">
                            <input type="submit" value="upload" name="Upload">
                        </td>
                    </tr>
            </table>
        </form>
    </body>
</html> 

Nietestowalem!

0

@up.
Niestety nic nie działa, ani dodawanie kolejnego pliku, ani upload. :(
dzek69
tak, wiem ale ta stronka jest akurat tylko dla mnie. Zbudowałem prosty system newsów oraz dodaj.php, gdzie chciałbym zrobić sobie bb code. I został mi właśnie tylko ten upload plików.
bo przez php zrobić upload to nie ma problemu, ale chciałbym żeby np po uploadze pojawiło się:
zuploadowałeś plik o nazwie: xxx.jpg
i obok button: dodaj kod html na stronę.
i pomyślałem sobie, że najprościej zrobie to tak jak inne bbcode ale się myliłem, bo nigdzie nie mogę znaleźc tak łatwego uploadu JS jak w php.

1 użytkowników online, w tym zalogowanych: 0, gości: 1