Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hi Leute!

Ich hab mir gedacht ich prog mal einen FileUpload zum Üben aber ich bekomm dabei ziemlich viele fehler könnte mir da jemand helfen?

<?php
require_once('connect.inc.php');


$target = "D/OnlinePics";
$max_size = 1500;
$uploadfile=$_FILES['upload']['tmp_name'];
$uploadname=$_FILES['upload']['name'];
$uploadtype=$_FILES['upload']['type'];
$uploaddesc=$_POST['desc'];


$tempfile=fopen($uploadfile, 'rb');
$filedata=fread($tempfile, filesize($uploadfile));
$filedata=addslashes($filedata);


switch($uploadtype) {

case: image/gif
case: image/jpeg
case: image/jpg
case: image/png break;
echo ('File wurde erfolgreich hochgeladen!');

default: exit('Die Datei hat keinen unterstützten Datentyp!');
}

if($_FILES['upload']['type']>$maxsize){
exit('Die Hochgeladene Datei ist zu groß!\n Es duerfen nur Dateien bis 1,5MB hochgeladen werden!');
}

$uploadname= $target . time() . $_SERVER['REMOTE_ADDR'] . $_FILES['upload']['type'];

$sql="insert into filestore set
FileName='$uploadname',
MimeType='$uploadtype',
Description='$uploaddesc',
FileData='$filedata'";

if(!@mysql_query($sql)) {
exit('Datenbankfehler beim Einfügen der Datei:' . mysql_error());
}


if(is_uploaded_file($uploadfile)) {
echo '<p>Datei erfolgreich als $uploadname gespeichert!</p>';
}else{
exit"<p>Datei konnte nicht gespeichert werden!</p>";
}

?>[/PHP]

ok, klar das mit switch ist schon mal falsch da es immer ausgegeben wird egal ob bild oder nicht und selbst wenn es eine bilddatei ist ist es falsch weil ja dann immer gleich die meldung ausgegeben wird und der rest dafür unwichtig ist.

ansonsten finde ich irgendwie keinen fehler

plz help!

naja fehler:

$maxsize){ exit('Die Hochgeladene Datei ist zu groß!\n Es duerfen nur Dateien bis 1,5MB hochgeladen werden!'); } $uploadname= $target . time() . $_SERVER['REMOTE_ADDR'] . $_FILES['upload']['type']; $sql="insert into filestore set FileName='$uploadname', MimeType='$uploadtype', Description='$uploaddesc', FileData='$filedata'"; if(!@mysql_query($sql)) { exit('Datenbankfehler beim Einfügen der Datei:' . mysql_error()); } if(is_uploaded_file($uploadfile)) { echo '


Datei erfolgreich als $uploadname gespeichert!

'; }else{ exit"


Datei konnte nicht gespeichert werden!

"; } ?>

aber wenn ich die daten so einfüge werden sie doch nicht in der datenbank gespeichert sondern nur die namen oder?

und noch was wie kann ich den speicherort auf setzen ?

ich glaube nicht das einfach $target reicht

$filedata=fread($tempfile, filesize($uploadfile));

$sql="insert into filestore set

FileName='$uploadname',

MimeType='$uploadtype',

Description='$uploaddesc',

FileData='$filedata'";

Was machst Du denn dann bitte mit diesen Zeilen?

Außerdem ist das SQL Statement nicht korrekt.

Phil

naja schaun wir mal das das programm funzt

und dann können wir darüber reden.

denn ich glaub nicht das es daran liegt

und was soll an meiner syntax falsch sein?

naja sobald ich auf hochladen in der html-datei klicke bekomme ich die seite so angezeigt wie ich sie 4 posts ober dir beschrieben habe

und in der fehlerkonsole steht auch nichts auser html-mist

und was die sql befehle angehen ich glaube einfach nicht das die falsch sind

weil ich sie schon in kleineren sachen so geschrieben habe und sie gingen

aber wie gesagt ist ja auch egal ich möchte jetzt mla den eigentlichen code zum laufen bringen

naja sobald ich auf hochladen in der html-datei klicke bekomme ich die seite so angezeigt wie ich sie 4 posts ober dir beschrieben habe

und in der fehlerkonsole steht auch nichts auser html-mist

PHP: error_reporting - Manual

Auf welchem Error Report steht Deine Konfiguration? Ich empfehle zur Entwicklung E_ALL

aber wie gesagt ist ja auch egal ich möchte jetzt mla den eigentlichen code zum laufen bringen

Deine Fehler sind so nicht nachvollziehbar, da niemand Deine Umgebung so zur Verfügung hat. Es sind semantischen Fehlern (switch bzw break ist falsch gesetzt, Variablen sind nicht konsequent benannt) enthalten. Schalte das Error Reporting wie oben beschrieben ein, korrigiere diese Fehler / Warnings, ich gehe davon aus, dass einige enthalten sein werden und poste dann den korrigierten Code, ggf erkennst Du damit auch Deine Fehler selbst

Generell möchte ich hier Dir keinen korrigierten fertigen Code posten, da damit der Lerneffekt nicht vorhanden wäre.

Phil

folgendes ich hab noch nie mit error reporting gearbeitet

wenn ich error_reporting(E_ALL); hinzuschreibe bekomme ich die gleiche ausgabe auf der seite wie vorhin. muss ich etwa noch was in der php.ini setzen?

was die switch abfrage angeht ich weis normalerweise muss man nach jedem case eine break haben aber ich habe mir gedacht so spare ich mir ein paar zeilen

ich hab mir gedacht so fragt er ab ob der typ jpeg oder jpg oder png oder gif ist und dann gibt er die meldung aus das es geht und wenn das nicht der fall ist soll er aussteigen. was er aber nicht macht.

was die bennung der variablen angeht seh ich irgendwie keine probleme.

und nein, ich möchte auch keinnen fertig korrigierten code

ok wenn ich die error reorting ganz am anfang hinzufüge kommt was interessantes:

wenn ich im html formular auf hochladen klicke möchte er mir die upload.php herunterladen was könnte denn da für ein fehler sein?

folgendes ich hab noch nie mit error reporting gearbeitet

wenn ich error_reporting(E_ALL); hinzuschreibe bekomme ich die gleiche ausgabe auf der seite wie vorhin. muss ich etwa noch was in der php.ini setzen?

setze das ErrorReporting in Deiner php.ini und starte den Dienst neu.

Der unten genannte Fehler muss dann erscheinen

was die switch abfrage angeht ich weis normalerweise muss man nach jedem case eine break haben aber ich habe mir gedacht so spare ich mir ein paar zeilen

ich hab mir gedacht so fragt er ab ob der typ jpeg oder jpg oder png oder gif ist und dann gibt er die meldung aus das es geht und wenn das nicht der fall ist soll er aussteigen. was er aber nicht macht.

PHP: switch - Manual

Doch, Du musst exakter arbeite:

$max_size = 1500;
[/PHP]

bzw

[PHP]
if($_FILES['upload']['type']>$maxsize)

Verwende Konstanten und keine Variablen

Phil

ja, aber in deinem switch links steht das:

#


<?php
switch ($i) {
case 0:
case 1:
case 2:
echo "i is less than 3 but not negative";
break;
case 3:
echo "i is 3";
}
?>
[/PHP]

und das ist bei mir doch ziemlich das gleiche wenn hier i 0,1 oder 2 ist dann kommt i is less than 3 .

und das gleihce ist bei mir doch auch

[PHP]switch($uploadtype) {

case: image/gif
case: image/jpeg
case: image/jpg
case: image/png break;
echo ('File wurde erfolgreich hochgeladen!');

default: exit('Die Datei hat keinen unterstützten Datentyp!');
}

wenn der typ gif jpeg jpg oder png ist wirds hochgeladen angezeigt wenn der typ ein anderer ist steigt es aus.

und was maxsize angeht hab ich schon gesehen

$_FILES['upload']['type'];

gibt den mime-type der datei in einem array aus!

meinst du das?

aber was ist mit error_reporting(E_ALL);

warum möchter er wenn ichs dazu schreibe die datei herunterladen?

$_FILES['upload']['type'];

Ich meine den Typ der Variablen, nicht den Inhalt

aber was ist mit error_reporting(E_ALL);

warum möchter er wenn ichs dazu schreibe die datei herunterladen?

Dann stimmt wohl nicht der MimeTyp Deines Webservers. Prüfe Deine Konfiguration

Phil

ok...

ich gebe auf

bitte sag mir die lösung

Hallo,

das kleine Statement kann ich auf Grund der ganzen Fehler noch nicht mal ohne Fehler anzeigen lassen.


switch($uploadtype) {

case: image/gif
case: image/jpeg
case: image/jpg
case: image/png break;
echo ('File wurde erfolgreich hochgeladen!');

default: exit('Die Datei hat keinen unterstützten Datentyp!');
}
[/php]

Wenn ich großzügig rechne, dann sehe ich vier Fehler.

Frank

also so ein spaziergang mit dem hund vollbringt wunder.

wieso sollte ich denn einen echo ausgeben wenn das skript noch weiter arbeiten muss?

ich muss einfach hinter jedem ein break schreiben - dann steigt er aus dem switch aus und macht weiter - es ist kein echo nötig!

und wenn es kein typ davon ist macht er ein exit

wieso sollte ich denn einen echo ausgeben wenn das skript noch weiter arbeiten muss?

ich muss einfach hinter jedem ein break schreiben - dann steigt er aus dem switch aus und macht weiter - es ist kein echo nötig!

und wenn es kein typ davon ist macht er ein exit

Selbst dann bekommt man es nicht ohne Fehlermeldungen hin.

Frank

die doppelpunkte gehören nach dem mime-type

kann ich nicht überprüfen da wenn ich auf hochladen drücke will er mir die datei herunterladen.

jep!!

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.