Upload-Script - Datei kommt nicht auf dem Webserver an

rayphi

Mitglied
Sehr geehrten guten Tag :D

Ich habe da ein problem mit meinem Uploadscript um ein wenig drumherum zu erzählen ich habe mit dem Tutorial von Quakenet ein Templatesystem und ein loginscript erstellt... also logge ich mich ein und gehe zur uploadseite wähle die datei aus gebe die weiteren daten ein die dazu dienen sollen die datei umzubennen dann klicke ich auf hochladen die datei wird hochgeladen erscheint aber nirgens auf meinem webserver ich würde mich freuen wenn jemand eine lösung hat oder den fehler findet den ich übersehe ich hoffe ich habe alle benötigten informationen zur verfügung gestellt... wenn nicht einfach fragen

Mein Formular
HTML:
<form enctype="multipart/form-data" action="index.php?section=upload" method="post">
    <fieldset class="reg">
        <legend>Upload</legend>
        
        <label for="HAfile">Datei Auswählen </label>
        <input type="file" name="HAfile" />
        
        <label for="nPart1">Spickname: </label>
        <input type="text" name="nPart1" />
        
        <label for="nPart2">Lernfeld: </label>
        <input type="text" name="nPart2" />
        
        <label for="nPart3">HA fällig zum: </label>
        <input type="text" name="nPart3" />
        
        <input type="submit" name="formaction" value="hochladen"> 
        
    </fieldset>
</form>

Der PHPcode zum Formular:
PHP:
<?php
if (!getUserID($db)) {//1Start
	return NOT_LOGGED_IN;
}//1Ende
$ret = array();
$ret['filename'] = 'upload.tpl';
$ret['data'] = array();

if ('POST' && 'FILES' == $_SERVER['REQUEST_METHOD']) {
	if (!isset($_POST['HAfile'], $_POST['nPart1'], $_POST['nPart2'], $_POST['nPart3'], $_POST['formaction'])) {//3Start
		return INVALID_FORM;
	}
	if ($_POST['formaction'] == TRUE){
		return TEST;
		//  5MB max dateigröße
		$MAXIMUM_FILESIZE = 5 * 1024 * 1024;
		//  Erlaubte Datei typen (bilder, word, excel, powerpoint)
		$FileTypes = "/^\.(jpg|jpeg|gif|png|doc|docx|txt|rtf|pdf|xls|xlsx|ppt|pptx){1}$/i";
		$dir_base = "upload/";
		$isFile = is_uploaded_file($_FILES['HAfile']['tmp_name']);
		if ($isFile){
			echo 'isFile';
			if (($user = trim($_POST['nPart1'])) == '' OR ($subject = trim($_POST['nPart2'])) == '' OR ($maturity_date = trim($_POST['nPart3'])) == '') {
				return EMPTY_FORM;
			}
			$fileName = $user.'_'.$subject.'_'.$maturity_date;
			if ($_FILES['HAfile']['size'] <= $MAXIMUM_FILESIZE && preg_match($FileTypes, strrchr($fileName, '.'))){
				$isMove = move_uploaded_file ($_FILES['HAfile']['tmp_name'], $dir_base.$fileName);
				return UPLOAD_SUCCESSFUL;
			}
		}
	}
}

return $ret;
?>
 
PHP:
if ('POST' && 'FILES' == $_SERVER['REQUEST_METHOD']) {
Was prüfst du da? 'POST' ist immer true und 'FILES' gibt es mW nicht in $_SERVER['REQUEST_METHOD']

Deine Infos findest du unter $_FILES
 
So mitlerweile sieht es so aus...
PHP:
<?php
if (!getUserID($db)) {
	return NOT_LOGGED_IN;
}//1Ende
$ret = array();
$ret['filename'] = 'upload.tpl';
$ret['data'] = array();

		//  5MB max dateigröße
		$MAXIMUM_FILESIZE = 5 * 1024 * 1024;
		//  Erlaubte Datei typen (bilder, word, excel, powerpoint)
		$FileTypes = "/^\.(jpg|jpeg|gif|png|doc|docx|txt|rtf|pdf|xls|xlsx|ppt|pptx){1}$/i";
		$dir_base = "../upload/";
		if (isset($_FILES['HAfile']['tmp_name'])){
		$isFile = is_uploaded_file($_FILES['HAfile']['tmp_name']);
		
		if ($isFile){
			if (($user = trim($_POST['nPart1'])) == '' OR ($subject = trim($_POST['nPart2'])) == '' OR ($maturity_date = trim($_POST['nPart3'])) == '') {
				return EMPTY_FORM;
			}
			$fileName = $user.'_'.$subject.'_'.$maturity_date;
			if ($_FILES['HAfile']['size'] <= $MAXIMUM_FILESIZE){
				preg_match($FileTypes, strrchr($fileName, '.'));
				chmod ($dir_base, 0777);
				move_uploaded_file ($_FILES['HAfile']['tmp_name'], $dir_base.$_FILES['file']['name']);
				return UPLOAD_SUCCESSFUL;
			}
		}
}
return $ret;
?>


jetzt ist nur noch folgendes problem:
Notice: Undefined index: file in C:\xampp1.7.1\xampp\htdocs\Templatesystem_local\includes\upload.php on line 25
 
Sollte nicht beim zweiten $_FILES auch auf 'HAfile' zugegriffen werden anstelle 'file'?
Code:
move_uploaded_file ($_FILES['HAfile']['tmp_name'], $dir_base.$_FILES['HAfile']['name']);
 
ich habs jetzt komplett ander... jetzt funktioniert es auch jetzt müsste ich nur noch wissen wie ich die dateierweiterung mit preg_match... in eine variable speicher um diesen an mein $fileName hängen kann also wie geht das?

PHP:
if (($user = trim($_POST['nPart1'])) == '' OR 
	($subject = trim($_POST['nPart2'])) == '' OR 
	($maturity_date = trim($_POST['nPart3'])) == '') {
		return EMPTY_FORM;
}
$fileName = $user.'_'.$subject.'_'.$maturity_date;
$uploaddir = './upload/';
$uploadfile = $uploaddir . basename($_FILES['HAfile']['name']);
$FileTypes = "/^\.(jpg|jpeg|gif|png|doc|docx|txt|rtf|pdf|xls|xlsx|ppt|pptx){1}$/i";
preg_match($FileTypes, strrchr($uploadfile, '.'));

if (move_uploaded_file($_FILES['HAfile']['tmp_name'], $uploadfile)) {
    echo "Upload Erfolgreich.\n";
} else {
    echo "Upload Fehlgeschlagen!\n";
}
 
Zurück