php Datei upload macht Probleme

oconner

oconner

Aktives Mitglied
Thread Starter
Dabei seit
11.01.2006
Beiträge
281
Reaktionspunkte
0
Hallo,

ich habe mir einen php Datei Upload programmiert dieser wunderbar funktionierte. Nun habe ich ihn verdoppelt weil ich ihn noch wo anders gebraucht habe. Doch dort geht er einfach nicht, ich habe alles kopiert. Es liegt auf jeden Fall nicht daran das ich in php einen Falschen Upload Pfad habe oder so. Denn ich habe rausgefunden das das Problem darin liegt das mein Formular zwar Text sendet (an php) aber nicht das was im type="file" feld steht. Ich habe auch in meinem Formular das enctype="multipart/form-data" stehen und ich habe auch überprüft ob in php und html das file Feld bei name="" gleich ist. Das habe ich überall file genannt, in php und html. Ich bin wirklich am verzweifeln wieso das ganze an einer anderen Stelle die Daten des Datei Feldes an php überträgt, aber dort wo ichs nun habe nicht.

Ich hoffe mir kann jemand helfen.
 
Wie sprichst du die Daten aus dem Formular in PHP denn an?

Ein bisschen Code wäre hilfreich..
 
im Momment an erster Stelle nur so um zu sehen ob überhaupt was gesendet wird. So viel ich vom Funktionierenden Formular weis sollte "Array" angezeigt werden, aber es wird mir gar nichts ausgegeben.

echo $_FILES['file']['name'];
 
ah ich habe gerade etwas wichtiges bemerkt, auf meinem localhost geht das script, nur hochgeladen sendet er eben den File nicht an php. Wirklich komisch, da das uploaden auf dem Server Funktioniert.
 
Läuft auf beiden Servern die gleiche PHP-Version?


Probier vielleicht mal
Code:
print_r( $HTTP_POST_FILES );
 
ich würde auf einen fehler im formular tippen
vergleich doch mal beide zeilenweise
 
@jstch auf meinem localhost ist die gleiche Formular Datei wie Online, also kann der Fehler da nicht liege.

@scope wenn ich das mache wird mir "Array ( )" ausgegeben.
 
was ist denn als limit in der php.ini eingetragen?
 
das weis ich nicht genau da ich auf dem Server keinen root Zugriff habe. Aber mir fiel grad ein das auf jeden Fall php 5 drauf ist und ich habe auf dem Server auch ein anderes Upload script bei dem ich sehr große Datein hochladen kann, also am Limit kanns nicht liegen.
 
klingt plausibel!

Mit phpinfo(); kannst Du es auch so herausbekommen ohne direkten Zugriff zur ini Zugriff zu haben. Auch lassen sich viele Werte dynamisch überschreiben per PHP-Befehl.

Ich denke auch es braucht hier ein paar Zeilen Code um weiterzuhelfen.
 
jo, ich tu mal die Codes posten.

Also einmal das Formular (ist übrigens in einem Geschützen Bereich).

HTML:
<h1>Bilder Upload</h1>
<div class="box_head">Bild hochladen</div>
<div class="box_main">
 <form action="?show=upload" method="post" enctype="multipart/form-data" name="upload">
  <table width="100%"  border="0" cellpadding="3" cellspacing="0">
    <tr>
      <td width="200"><strong>Bild Titel: </strong></td>
      <td>
         <input type="text" name="title" class="input"> <small>Für "alt" oder "title" Werte etc. ist der Bild Titel wichtig!</small>
      </td>
    </tr>
	<tr>
      <td width="200"><strong>Bild: </strong></td>
      <td>
        <input type="file" name="file" class="input"> <small>jpg, gif, png</small>
</td>
    </tr>
	<tr>
      <td width="200"><strong>Type: </strong></td>
      <td>         <select name="type" id="type">
        <option value="thumps" selected>Thump - 167x75px</option>
        <option value="covers">Cover</option>
        <option value="upload">Image/Bild</option>
      </select></td>
    </tr>
	<tr>
      <td width="200"><strong>Upload: </strong></td>
      <td>
        <input type="submit" name="Submit" value="hochladen" class="button"></td>
    </tr>
  </table>
 </form>
</div>

und hier die php stelle dazu

PHP:
//upload a file
$title = $_POST['title'];
$type = $_POST['type'];
$file = getimagesize($_FILES['file']['tmp_name']);
echo $_FILES['file']['name'];

if (isset($title, $file, $type))
{
	if (eregi('ä', $title) OR eregi('ö', $title) OR eregi('ü', $title))
	{
		message_die('Bitte keine Umlate im Titel verwenden!');
	}
	else
	{
		if ($_FILES['file']['size'] < 150000)
		{
			if ($file[2] != 0)
			{
				$title_o = str_replace(' ', '_', $title);
				$title_o = str_replace('.', '_', $title_o);
				$title_o = str_replace('/', '-', $title_o);
				$file_type = $_FILES['file']['name'];
				$array = explode('.', $file_type);
				$array = array_reverse($array);
				$file_name = $type."/".htmlentities($title_o).'_'.gen_nums($_len=10).'.'.$array[0];
				move_uploaded_file($_FILES['file']['tmp_name'], "../images/".$file_name);
				
				$sql = "INSERT INTO " . UPLOAD_TABLE . "
						(`u_title`, `u_filename`, `u_time`)
						VALUES
						('$title', '$file_name', '".time()."')";
						
				mysql_query ( $sql ) OR die ( mysql_error() );
				message_die('Das Bild <b>'.$title.'</b> wurde erfolgreich hochgeladen!');
			}
			else
			{
				message_die('Bitte nur Bild Datein im Format <b>jpg, gif, png</b>!');
				echo '...'.$file;
			}
		}
		else
		{
			message_die('Bitte keine Datein über 150 000 Bytes!');
		}
	}
}

also ich bekomme immer die Meldung das ich eine nicht erlaubte Datei Endung habe. Aber ich kam eben drauf das mir das nur angezeigt wird, weil das "file" vom Feld gar nicht übertragen wird.

Hoffentlich hab ich irgend nen Fehler drinnen, damit das Probelm sich schnell löst. :lol:
 
so ich habe das script mal in ein anderes Verzeichniss. Dort funktioniert es. Also muss es irgendwie mit dem Verzeichniss zu tun haben. Nur was kann da schon sein?
 
Zugriffsrechte?
durch .htacess überschriebene Rechte des Apache im Verzeichnis?
 
Warum verdoppeln, wenn es Funktionen und Parameter gibt?
Wenn Du dann später irgendwas ändern willst musst du es nur an einer Stelle und nicht zwei machen ;-)
 
also Ordner Rechte sind überall normal und es gibt zwar eine .htaccess, die macht aber nichts was Reche entziehen würde.
 
das weis ich von meiner .htaccess.

Aber nun hab ich den Fehler. Ich hab die domain bei united-domains und hab sie per URL Hidding auf meinen Server geleitet. Das war wohl das Problem, wenn ich dir richtige Domain nehme geht es.

Danke für die Hilfe, letzendlich lag es ja so an den Rechten und united-domains hatte quais eine .htaccess die das ausmachte.
 
Zurück
Oben Unten