PDA

View Full Version : سوال: مشكل اعتبارسنجي عكس



ravand
چهارشنبه 17 خرداد 1391, 10:16 صبح
سلام.
من يه اعتبارسنجي براي نوع و اندازه ي عكس نوشتم ولي نميدونم چرا كار نميكنه.

if ((($_FILES["file"]["type"] != "image/gif")
|| ($_FILES["file"]["type"] != "image/jpeg")
|| ($_FILES["file"]["type"] != "image/png"))
&& ($_FILES["file"]["size"] < 200000))
{
echo '<script type=text/javascript>alert("مشكل شما دو علت مي تواند داشته باشد. \rعكس شما بايد از نوع جي پي جي يا پي ان جي يا جي آي اف باشد\r حجم عكس نبايد بيش از200كيلوبايت باشد")</script>';
}else{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
$url="upload/" . $_FILES["file"]["name"];
mysql_set_charset('utf8',$handle);
mysql_query("INSERT INTO form (`tfname`,`tffamily`,`radio`,`URL`,`email`,`web`,` tfsho`,`tfsader`,`tfpedar`,`tfmelli`,`tfsal`,`tfma h`,`tfrooz`,`tfshfb`,`tfndars`,`codedarsi`,`tftel` ,`mobile`,`tfadres`,`tfcposti`,`msg`) VALUES ('$tfname','$tffamily','$radio','$url','$email','$ web','$tfsho','$tfsader','$tfpedar','$tfmelli','$t fsal','$tfmah','$tfrooz','$tfshfb','$tfndars','$co dedarsi','$tftel','$mobile','$tfadres','$tfcposti' ,'$msg')")or die(mysql_error());
$num=mysql_affected_rows($handle);
if($num==1){
echo ".ارسال شد";
}
else
if($num == 0){
echo".ارسال نشد ";
}
mysql_close($handle);
}
گفتم . اگه فايل ما از نوع jpeg يا png يا gif نباشد و حجم عكس كمتر از 200 كيلو باشد پيغام بده و گرنه برو به قسمت بعد.
ولي اين دائما فقط پيغام ميده حتي اگه عكس من مثلا gif باشه بازم پيغام ميده.
مشكل كار من چيه؟
متشكرم.

reza10wert
چهارشنبه 17 خرداد 1391, 10:53 صبح
فکر کنم مشکل در شرط باشه
چون شما همه شروط پسوند رو ریختید داخا یک پرانتز پس در هر صورت اگر عکس یکی از پسوندها باشه ( jpg , gif , png ) داخل پرانتز اولی true میشه واحتمال خیلی زیاد حجم شما هم کمتر از 200KB هست که هر دو true شده و شرط اجرا میشه .

نمیدونم درست توضیح دادم که متوجه بشید یا نه ؟
امیدوارم درست گفته باشم

ravand
چهارشنبه 17 خرداد 1391, 10:59 صبح
اينكه مشكل از شرط هست درسته. خودم هم گفتم كه همچين مشكلي دارم. ولي منظور شما رو از اينكه داخل پرانتز هست نمي فهمم. حالا اگه مي دونيد مشكلش چيه ممنون ميشم درستش كنيد.
متشكرم.

reza10wert
چهارشنبه 17 خرداد 1391, 11:06 صبح
داداش کل کدهای صفحه ات رو بذار اینجا تا روی سیستم خودم تست کنم

plague
چهارشنبه 17 خرداد 1391, 11:51 صبح
$_FILES["file"]["type"]
رو اکو کن ببین چیه خب ! حتما همیشه چیزی غیر از ایناست !

من معمولا اینجوری اعتبار نجی نمیکنم
فرمت های مشکل دار یا حالا فرمتهای مجاز رو میریزم تو یه آرایه بعد میگم مثلا چک کن ببین فرمت این فایل مجاز یا حالا غیر مجاز هست یا نه اینجوری خیلی جمع و جور تره



$allowed = array ('jpg' , 'gif' , 'png');
if(in_array( $uploaded_file_format , $allowed ))
echo 'this format is allowed';
else
////

ravand
چهارشنبه 17 خرداد 1391, 11:53 صبح
منم اينطوري قبلا نوشتم ولي ميخوام با اندازه همراه باشه يعني هم نوع عكس و هم اندازه ي عكس رو با هم بررسي كنه و اگه هر كدوم مشكل داشت پيغام بده.

ravand
چهارشنبه 17 خرداد 1391, 12:38 عصر
هر كاري كردم نشد يه پيغام با هم بده . براي همين اينطوريش كردم .
اين الان كار ميكنه و براي نوع عكس و حجم عكس پيغام جداگانه ميده

if($_FILES["file"]["size"] > 200000)
{
echo '<script type=text/javascript>alert("حجم عكس بيش از 200 كيلو بايت است.")</script>';
exit;
}

$format=array("image/gif","image/png","image/jpeg","image/pjpeg");
if(!in_array($_FILES['file']['type'],$format))
{
echo '<script type=text/javascript>alert("نوع عكس بايد جي پي جي يا پي ان جي يا جي آي اف باشد")</script>';
}else{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
$url="upload/" . $_FILES["file"]["name"];
mysql_set_charset('utf8',$handle);
mysql_query("INSERT INTO form (`tfname`,`tffamily`,`radio`,`URL`,`email`,`web`,` tfsho`,`tfsader`,`tfpedar`,`tfmelli`,`tfsal`,`tfma h`,`tfrooz`,`tfshfb`,`tfndars`,`codedarsi`,`tftel` ,`mobile`,`tfadres`,`tfcposti`,`msg`) VALUES ('$tfname','$tffamily','$radio','$url','$email','$ web','$tfsho','$tfsader','$tfpedar','$tfmelli','$t fsal','$tfmah','$tfrooz','$tfshfb','$tfndars','$co dedarsi','$tftel','$mobile','$tfadres','$tfcposti' ,'$msg')")or die(mysql_error());
$num=mysql_affected_rows($handle);
if($num==1){
echo ".ارسال شد";
}
else
if($num == 0){
echo".ارسال نشد ";
}
mysql_close($handle);
}
از نظر شما مشكلي نداره؟
متشكرم.