Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Funktion [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Funktion


 
deschmiddi
27-02-2004, 18:50 
 
Hi Leutz...

Hab ein Prob mit meinem Bild-Upload.
Funzt soweit super mit dem Upload und auch DB aber er läd eben alle Dateitypen hoch obwohl ich meiner Funktion durch getimagesize nach jpeg, gif und png abfrage. Und nach Dateigröße... er lässt aber alles durch, anstatt die error-message auszuspucken.


if($_FILES[file][tmp_name] != "")
{
$pic_info = @GetImageSize($_FILES[file][tmp_name]);
$filesizebytes = filesize($_FILES[file][tmp_name]);

if($filesizebytes > 50000
AND $pic_info['2'] !="1"
AND $pic_info['2'] !="2"
AND $pic_info['2'] !="3")
{
eval($func->generate_error_templat("usrmgr_form","userpic" ,"<br>Errormessage"));
$_GET[part] = '1';
} // if
} // if


Vielleicht kann mir ja jemand helfen ;)

 
derHund
27-02-2004, 19:45 
 
hmm,

editierst mal deinen beitrag, so daß ich nicht horizontal scrollen muß? danke.

if($filesizebytes > 50000 AND $pic_info['2'] !="1" AND $pic_info['2'] !="2" AND $pic_info['2'] !="3") was steht in filesizebytes? echo ...macht mal das @ bei getimagesize weg ...

$pic_info['2'] !="1" AND $pic_info['2'] !="2" AND $pic_info['2'] !="3" und das ist bestimmt nicht das, was du willst, oder? also, die logische verknüpfung mein ich ...

außerdem find ichs persönlicher besser, daß file erst ausm temp rauszuholen, mit is_uploaded_pfeil und move_uploaded ...

 
deschmiddi
27-02-2004, 19:52 
 
na in filesizebytes steht $_FILES[file][tmp_name] drin... die datei die ich vorher in einem Formular <input type=file blabla> ausgewählt habe...


if($pic_info['2'] = "1")
$datatype = "jpeg";


heißt wenns ungleich ( != ) 1 ist, dann soll er den error ausspucken oder wie hast du das verstanden.
Das array pic_info['2'] ergibt sich aus getimagesize.

kannst du das mit dem edit genauer beschreiben? versteh ich net so ganz

Anmerkung: selbst wenn ich die filesize abfrage weglasse gehts net...

 
derHund
27-02-2004, 20:08 
 
na in filesizebytes steht $_FILES[file][tmp_name] drin... die datei die ich vorher in einem Formular <input type=file blabla> ausgewählt habe... danke! du solltest den inhalt ausgeben, aber nur so btw.

viel wichtiger:
Anmerkung: selbst wenn ich die filesize abfrage weglasse gehts net
und das ist bestimmt nicht das, was du willst, oder? also, die logische verknüpfung mein ich ...

kannst du das mit dem edit genauer beschreiben? versteh ich net so ganz

mal nen snippet, nur zum kucken ...


if (!is_uploaded_file ($_FILES["puzzbild"]["tmp_name"][$i1])) {
$UploadError[$i1] = ERROR_NO_UPLOADED_FILE;
continue;
}
$Uploaded = IMAGE_UPLOAD_DIR."/".$Filename;
if (!move_uploaded_file ($_FILES["puzzbild"]["tmp_name"][$i1], $Uploaded)) {
$UploadError[$i1] = ERROR_COULDNT_MOVE_FILE;
continue;
}
if ((!$ImageSize = getImageSize($Uploaded)) || $ImageSize[2] < 1 || $ImageSize[2] > 3) {
$UploadError[$i1] = ERROR_NO_REAL_IMAGE_FILE;
continue;
}

 
deschmiddi
27-02-2004, 20:44 
 
hmm ich kapiers immernoch net...

bei meiner bildergallerie die ich gebastelt hab, hats auch gefunzt... das sah mei quelltext nur eben so aus wie unten.
Das hier ist doch das selbe in grün, nur dass ich mit einer statt mehreren bildern arbeite ???


//
// Errorcheck step 2
//
switch($_GET[step])
{

case 2:

foreach($_POST[pic] as $key => $current_pic)
{
if($current_pic != "" OR $_FILES[file . $key][tmp_name] != "")
{
$pic_info = GetImageSize($_FILES[file . $key][tmp_name]);
$set = "1";

if(
(
!$current_pic AND $_FILES[file . $key][tmp_name]
)
OR
(
$current_pic AND !$_FILES[file . $key][tmp_name]
)
OR
(
$current_pic AND $_FILES[file . $key][tmp_name] AND
$pic_info['2'] !="1" AND $pic_info['2'] !="2" AND $pic_info['2'] !="3"
)
)
{

eval($func->generate_error_template("picgallery_form","pic" . $key,"<br>Sie m&uuml;ssen eine Beschreibung sowie ein g&uuml;ltiges Bild angeben"));
$_GET[step] = "1";

} // if

} // if

} // foreach

//
// There aren't any pics
//
if($set != "1")
{
eval($func->generate_error_template("picgallery_form","pic1","<br>Sie m&uuml;ssen mindestens ein Bild angeben"));
$_GET[step] = "1";
}

break;

} // switch

//
// Form or action
//
switch($_GET[step])
{
default:

$templ['picgallery']['form']['control']['form_action'] = "?mod=picgallery&action=add&step=2";

$templ['picgallery']['form']['control']['pic1'] = $_POST[pic][1];
$templ['picgallery']['form']['control']['pic2'] = $_POST[pic][2];
$templ['picgallery']['form']['control']['pic3'] = $_POST[pic][3];
$templ['picgallery']['form']['control']['pic4'] = $_POST[pic][4];
$templ['picgallery']['form']['control']['pic5'] = $_POST[pic][5];
$templ['picgallery']['form']['control']['pic6'] = $_POST[pic][6];
$templ['picgallery']['form']['control']['pic7'] = $_POST[pic][7];
$templ['picgallery']['form']['control']['pic8'] = $_POST[pic][8];
$templ['picgallery']['form']['control']['pic9'] = $_POST[pic][9];
$templ['picgallery']['form']['control']['pic10'] = $_POST[pic][10];

eval("\$templ['index']['info']['content'] .= \"". $func->gettemplate("picgallery_form")."\";");

break;

case 2:

foreach($_POST[pic] as $key => $current_pic)
{

if($current_pic != "" AND $_FILES[file . $key][tmp_name] != "")
{
$pic_info = GetImageSize($_FILES[file . $key][tmp_name]);
$time = time();
$random = rand("10000","99999");

if($pic_info['2'] == "1")
$datatype = "gif";
elseif($pic_info['2'] == "2")
$datatype = "jpg";
elseif($pic_info['2'] == "3")
$datatype = "png";

$dataname = $time . $random . "." . $datatype;
$dataname_thumb = "thumb_" . $time . $random . "." . $datatype;

//
// Copy pic on harddisk
//
$move = move_uploaded_file($_FILES[file . $key][tmp_name], "ext_inc/picgallery/$dataname");

if($move == TRUE)
{
//
// Insert pic into database
//
$db->query("
INSERT INTO {$config[tables][picgallery]}
SET userid = '{$_SESSION[auth][userid]}', caption = '$current_pic', name='$dataname'
");

//
// Add to success
//
if($success != "")
$success .= ",";
$success .= $current_pic;
}

} // if

} // foreach

$func->confirmation("Die folgenden Bilder wurden erfolgreich hinzugef&uuml;gt: <b>'$success'</b>","?mod=picgallery&action=show");

break;

} // switch

 
deschmiddi
27-02-2004, 21:09 
 
Habs jetzt mal als test so probiert und festgestellt,
dass er mir das tmp-file ausgibt, pic_info aber nicht... deshalb geht die funktion wohl auch nicht...
worans hängt weiß ich aber trotzdem net ???


<?php
switch($_GET[part])
{
case 1:
?>
<form name="form" method="post" action="test.php?part=2" enctype="multipart/form-data">
<table width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="70%" height="30">
<table width="100%" cellspacing="0" cellpadding="3" class="tbl_1
<tr>
<td>
<div align="center">
Neues Bild einfügen<br>
<input name="file" type="file" class="form">

</div>
</td>
</tr>
</table>
</td>
</tr>
<tr class="tbl_4">
<td colspan="2" class="tbl_4"><img src="/" width="1" height="1"></td>
</tr>
<tr>
<td class="tbl_6" height="30" width="30%">
<table width="100%" cellspacing="0" cellpadding="3" class="tbl_6">
<tr>
<td width="12"><a href="javascript:var w=window.open('base.php?mod=helplet&helpletid=usrmgr/form','_blank','width=320,height=400,resizable=no');"><img src="design/standard/images/arrows_help.gif" width="12" height="13" border="0"></a></td>
<td><a href="javascript:var w=window.open('base.php?mod=helplet&helpletid=usrmgr/form','_blank','width=320,height=400,resizable=no');">
Hilfe </a></td>
</tr>
</table>
</td>
<td class="tbl_6" height="30" width="70%">
<table width="100%" cellspacing="0" cellpadding="3" class="tbl_6">
<tr>
<td>
<input type="image" border="0" name="imageField" src="design/standard/images/buttons_next.gif" width="61" height="17">
</td>
</tr>
</table>
</td>
</tr>
<tr class="tbl_4">
<td colspan="2"><img src="/" width="1" height="1"></td>
</tr>
<tr class="tbl_5">
<td colspan="2">
<p><br>
</p>
</td>
</tr>
</table>
</form>
<?php


case 2:
echo $_FILES[file][tmp_name];
$pic_info = getimagesize($_FILES[file][tmp_name]);
echo $pic_info;
if($_FILES[file][tmp_name] != "")
{
$pic_info = getimagesize($_FILES[file][tmp_name]);

if($_FILES[file][tmp_name] AND $pic_info['2'] !="1" AND $pic_info['2'] !="2" AND $pic_info['2'] !="3" AND $filesizebytes > 50000)
{
echo "Sie m&uuml;ssen ein g&uuml;ltiges Bild angeben";
$_GET[part] = '1';
} // if
} // if
break;

} // switch
?>


Bei meinem Script obendrüber gehts komischerweise ;)

 
derHund
27-02-2004, 21:22 
 
<?PHP

echo $_FILES[file][tmp_name];
$pic_info = getimagesize($_FILES[file][tmp_name]);
echo '<pre>';
print_r($pic_info);

if($_FILES[file][tmp_name] != "")
{


was kommt da raus?

 
deschmiddi
27-02-2004, 21:35 
 
Bei nem BIld das hier:
C:\WINDOWS\TEMP\php73.tmp
Array
(
[0] => 640
[1] => 480
[2] => 2
[3] => width="640" height="480"
[bits] => 8
[channels] => 3
[mime] => image/jpeg
)

nehm ich dagegen keine Bilddatei,
so spuckt er mir nur:

C:\WINDOWS\TEMP\php75.tmp
aus.

Hab mal mei die foreachschleife aus meiner Bildergallerie probiert wie im post oben, da spuckt er ne Fehlermeldung aus komischerweise ???
raff net wo der unterschied is

 
derHund
27-02-2004, 22:19 
 
hmm,

er ne Fehlermeldung
die da lautet?

nehm ich dagegen keine Bilddatei,
so spuckt er mir nur:dann haste doch ne eindeutige unterscheidung. prüfst halt, ob pic_info gesetzt ist ...

 
deschmiddi
05-03-2004, 17:18 
 
Hi Leutz,
hab vor ner Woche schonmal gepostet zu dem Thema aber irgentwie komm ich immernoch net so ganz klar.

Hier erstmal mein Code, der hoffentlich net zu kompliziert ist, da ich mit templates arbeite ;)



function error_add_form_step1() {
$get_userpic = $this->image_check();
if($get_userpic == FALSE)
{
echo "ungültiges Dateiformat"; // Vereinfacht dargestellt
}
}

function image_check() {
switch($_GET[part])
{
case 2:
if($_FILES[file][tmp_name] != "")
{
$pic_info = getimagesize($_FILES[file][tmp_name]);
if($pic_info["2"] != "1"
AND
$pic_info["2"] != "2"
AND
$pic_info["2"] != "3"){

$_GET[part] = "1";
return FALSE;
}
}
break;
//
// Form or action
//

default:

Hier wird im Fehlerfall mein Formular wieder ausgegeben.
Und die oben erzeugte Fehlermeldung auch.
Funktioniert auch soweit.

break;

} // switch
}

function change_data()
{
switch($_GET[part])
{
case 2:

if($_FILES[file][tmp_name] != "")
{
$pic_info = getimagesize($_FILES[file][tmp_name]);
$time = time();
$random = rand("10000","99999");

if($pic_info['2'] == "1")
$datatype = "gif";
elseif($pic_info['2'] == "2")
$datatype = "jpg";
elseif($pic_info['2'] == "3")
$datatype = "png";

$dataname = $time . $random . "." . $datatype;

//
// Copy pic on harddisk
//
$move = move_uploaded_file($_FILES[file][tmp_name], "ext_inc/userpics/$dataname");

if($move == TRUE)
{
//
// Insert pic into database
//
$move2 = $db->query("
UPDATE
{$GLOBALS["config"]["tables"]["user"]}
SET
userpic ='$dataname'
WHERE
userid = '$this->userid'
");
} // if

$change_it = $db->query("
UPDATE
{$GLOBALS["config"]["tables"]["user"]}
SET
username = '$this->username',
type = '$this->type',
school = '$this->school',

firstname = '$this->firstname',
name = '$this->name',
tag = '$this->tag',
monat = '$this->monat',
jahr = '$this->jahr',

street = '$this->street',
city = '$this->city',
plz = '$this->plz',

handy = '$this->handy',
email = '$this->email',
icq = '$this->icq',
url = '$this->url'

WHERE
userid = '$this->userid'
");

if($move2 == TRUE && $change_it == TRUE)
{
Mssage Daten geändert +Bild hochgeladen
return TRUE;
}
else
{
Hier message Datenbankfehler
return FALSE;
}
} // IF

else
{
$change_it = $db->query("
UPDATE
{$GLOBALS["config"]["tables"]["user"]}
SET
username = '$this->username',
type = '$this->type',
school = '$this->school',

firstname = '$this->firstname',
name = '$this->name',
tag = '$this->tag',
monat = '$this->monat',
jahr = '$this->jahr',

street = '$this->street',
city = '$this->city',
plz = '$this->plz',

handy = '$this->handy',
email = '$this->email',
icq = '$this->icq',
url = '$this->url'

WHERE
userid = '$this->userid'
");

if($change_it == TRUE)
{
Message nur Daten geändert erfolgreich
return TRUE;
}
else
{
Message Fehler
return FALSE;
}
} // else
} //switch}
}// function - change form



Mein Problem:
Habe ein Formular das normale Textfelder und ein File-Feld beinhaltet.
Ich hätte mein script gern so dass wenn das File-feld leer ist, er nur die Daten ändert.
Ist das File-Feld nicht leer, so soll geprüft werden ob es sich um eine Bild-datei(jpeg, gif, png) handelt oder nicht.
Kein Bild: Formular neu laden mit errormessage.
Bild: Daten eintragen + Bild uploaden.

Der fehler liegt irgentwo in der if-schachtelung bzw den switches oder $_FILES[file][tmp_name] ist immer leer.

Die jetzige Ausgabe des Scriptes: egal ob file-feld leer, oder gefüllt, ob Bild oder nicht Bild, er läd immer wieder das formular und zeigt unten die error-message an.

Hoffentlich kann mir jemand helfen, denn ich bin schier am verzweifeln.
MFG deschmiddi

 
wahsaga
05-03-2004, 18:05 
 
Original geschrieben von deschmiddi
hab vor ner Woche schonmal gepostet
und warum verflixt nochmal hast du dann in dem alten thread auf die nachfragen von demHund nicht mehr reagiert ...?
stattdessen machst du jetzt einen neuen thread auf ...

lass das bitte zukünftig!

*seufz* *zusammenführ*

 
deschmiddi
05-03-2004, 18:55 
 
Tschuldigung...

hab versucht die Antwort von derHund in die tat umzusetzen aber hab halt jetzt gemerkt dass das net so funzt, deshalb hab ich gleich den neuesten code gepostet.

Aber statt darüber zu simulieren, wie wärs stattdessen mit produktiven vorschlägen?
Wäre euch echt sehr dankbar.

hoffentlich kann mir jemand helfen ;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:23 Uhr.