Grade voll verpeilt -.-
THeGuardian
- php
Ich suche jetzt schon seit ner stunde diesen fehler, das mach mich wahnsinnig!!!
<form action="upload.php" method="post" enctype="multipart/form-data" name="upload">
<input type="file" name="file"><input type="submit" name="submit" value="Upload">
</form>
<?php
// Variabeln festlegen
$max_byte_size = 20971520;
$allowed_types = "(jpg|jpeg|gif|bmp|png)";
// Formular wurde abgeschickt
if($_POST["submit"] == "Upload");
// Wurde wirklich eine Datei hochgeladen?
if(is_uploaded_file($_FILES["file"]["tmp_name"]) {
// Gültige Endung? ($ = Am Ende des Dateinamens) (/i = Groß- Kleinschreibung nicht berücksichtigen)
if(preg_match("/." . $allowed_types . "$/i", $_FILES["file"]["name"])) {
// Datei auch nicht zu groß
if($_FILES["file"]["size"] <= $max_byte_size) {
// Alles OK -> Datei kopieren
if(copy($_FILES["file"]["tmp_name"], "images/".$_FILES["file"]["name"])) {
$Filename = $_FILES["file"]["name"];
$Filesize = $_FILES["file"]["size"];
$Filetype = $_FILES["file"]["type"];
}
include "inc/config.php";
if(!@mysql_connect($SQLHost, $SQLUser, $SQLPwd)) {
die("Es konnte keine Verbindung aufgebaut werden");
}
if(!mysql_select_db($SQLDatabase)) {
die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
}
$sql = "INSERT INTO enflame_images(Titel, URL_Full, URL_Thumb, Page)
VALUES ('".$Filename."', 'images/".$Filename."', 'images/".$Filename."_Thumb', '1');";
$result = mysql_query($sql) OR die(mysql_error());
?>
Was könnte hierdran falsch sein? bitte!!!
Hallo.
Ich suche jetzt schon seit ner stunde diesen fehler, das mach mich wahnsinnig!!!
Habe zwar keine Lust, auch den Fehler zu suchen, verraten hast du ja nicht, was falsch läuft, aber das kommt mir komisch vor:
// Formular wurde abgeschickt
if($_POST["submit"] == "Upload");
Nutzlos.
if(!@mysql_connect($SQLHost, $SQLUser, $SQLPwd)) {
Fehlermeldungen sind dazu da, gelesen zu werden. Warum unterdrückst du sie, anstatt ordentlich display_errors zu setzen?
$sql = "INSERT INTO enflame_images(Titel, URL_Full, URL_Thumb, Page)
VALUES ('".$Filename."', 'images/".$Filename."', 'images/".$Filename."_Thumb', '1');";
Keinerlei eigene Absicherung gegen manipulierte Daten. Sehr schlecht.
Was könnte hierdran falsch sein? bitte!!!
Viel.
Hello,
if($_POST["submit"] == "Upload");
if(is_uploaded_file($_FILES["file"]["tmp_name"]) {
if(preg_match("/." . $allowed_types . "$/i", $_FILES["file"]["name"])) {
if($_FILES["file"]["size"] <= $max_byte_size) {
if(copy($_FILES["file"]["tmp_name"], "images/".$_FILES["file"]["name"])) {
}
weißt du, worauf ich tierisch stehe? Formatierten Quelltext. Paarweise Klammern. SYNTAX!
MfG
Rouven
Hallo THeGuardian,
Was könnte hierdran falsch sein? bitte!!!
Du hast viel mehr öffnende geschweifte Klammern im Code als schließende.
Jonathan
Hi,
Ich suche jetzt schon seit ner stunde diesen fehler,
Erwarte bitte nicht, dass wir ebenfalls so viel Zeit darauf verschwenden, nach deiner *Problembeschreibung* zu suchen -
das mach mich wahnsinnig!!!
MfG ChrisB
Hello,
$allowed_types = "(jpg|jpeg|gif|bmp|png)";
Dass Du eine unübersichtliche Formatierungsweise für Dein Script benutzt, habe Dir die Anderen schon gesagt. Ich bevorzuge daher (insbesondere für Programmieranfänger) denn Allman-Stil. Google bitte danach oder schau bei Wikipedia. Übrigens ist das fast der Stil, den auch die PHP-Programmierer vorschreiben für ihre Projekterweiterungen.
http://en.wikipedia.org/wiki/Indent_style
Dann solltest Du auf jeden Fall hier im Forum nach "category:PHP $_FILES MIME" suchen, um Dich über Threads zum Thema zu informieren, die mit Sicherheit zu tun haben. Es sind, sofern ich das überschauen kann, im Moment sogar noch zwei davon im aktiven Teil des Forums. Also bitte lesen!
Ein Absatz Wort noch zur Kontrolle, ob ein Upload stattgefunden hat.
Die erste relevante Zeile in einem solchen Upload-Script sollte immer lauten
if ( isset ( $_FILES[$uploadname]['error'] )) ## Ein Uploadversuch hat stattgefunden
{
if ($_FILES[$uploadname]['error'] === 0) ## genau eun File wurde ordnungsgemäß uploaded
{
meine_wunderbare_file_upload_funktion($target_path);
}
}
Wenn man ein _oder_ mehr Files hochladen lassen will, dann wird das Ganze etwas komplexer, da PHP bei einem einzelnen Fall ein "Recors-Array" übergibt und bei mehreren Files ein "Spaltenarray".
$_FILES[$uploadname]['error'][0]
$_FILES[$uploadname]['tmp_name'][0]
$_FILES[$uploadname]['name'][0]
$_FILES[$uploadname]['size'][0]
$_FILES[$uploadname]['type'][0]
$_FILES[$uploadname]['error'][1]
$_FILES[$uploadname]['tmp_name'][1]
$_FILES[$uploadname]['name'][1]
$_FILES[$uploadname]['size'][1]
$_FILES[$uploadname]['type'][1]
odr anders herum geschrieben:
$_FILES[$uploadname]['error'][0]
$_FILES[$uploadname]['error'][1]
$_FILES[$uploadname]['tmp_name'][0]
$_FILES[$uploadname]['tmp_name'][1]
$_FILES[$uploadname]['name'][0]
$_FILES[$uploadname]['name'][1]
$_FILES[$uploadname]['size'][0]
$_FILES[$uploadname]['size'][1]
$_FILES[$uploadname]['type'][0]
$_FILES[$uploadname]['type'][1]
Man muss also dann erst fragen, ob
if ( isset ( $_FILES[$uploadname]['error'] )) ## Ein Uploadversuch hat stattgefunden
{
if ($_FILES[$uploadname]['error'] === 0) ## genau eun File wurde ordnungsgemäß uploaded
{
$errmsg[] = meine_wunderbare_file_upload_funktion($_FILES['tmp_name], $target_path); ## [1]
}
if (is_array($_FILES[$uploadname]['error']))
{
foreach($_FILES[$uploadname]['error'] as $key => $error)
{
if ($error === 0)
{
$errormsg[] = meine_wunderbare_file_upload_funktion($_FILES['tmp_name][$key], $target_path); ## [1]
}
}
}
}
[1] die Funktion musst Du Dir selber schreiben.
Sie könnte auch alle Parameter aus $_FILES übernehmen, also name, tmp_name, size, type, error ...
Viel Spaß beim Experimentieren.
Ein harzliches Glückauf
Tom vom Berg
http://bergpost.annerschbarrich.de
.
Hello,
siehe auch http://forum.de.selfhtml.org/archiv/2007/4/t150144/#m976320
Ein harzliches Glückauf
Tom vom Berg
http://bergpost.annerschbarrich.de
.