webafra 60 ارسال شده در مهر 92 گزارش بازنشر ارسال شده در مهر 92 (ویرایش شده) با سلام خدمت همه ی دوستان و اساتید محترم .جستوجوهای زیادی در گوگل و همچنین در همین وب سایت کردم و به نتیجه هایی رسیدم اما کافی نبود و در بعضی موارد گنگ بود و تصمیم گرفتم اینجا مطرح کنم سوالم رو .من یه فرم دارم که یه تعداد مشخصی آپلودر ( 6 ) عکس داره .میخوام این آپلودرها چندتا کار انجام بده :1 - اعتبار سنجی کنه که فایل آپلود شده واقعا عکس هست و حجم عکس کمتر از 3 مگابایت باشه .2 - بعد از آپلود هر 6 عکس مقدارشو درون یک متغییر ریخته بشه و با , از هم جدا شده باشن و نهایتا اینسرت بشه درون دیتابیس .در صورتی که همه عکسا آپلود نشد ، یه خطا بده و مثلا اگر عکس شماره 3 آپلود نشد و دوتای قبلی آپلود شد ، اون دوتا پاک بشه و درون هاست ذخیره نشه !کدی که من برای یک عکس نوشتم اینه :<?php$uploadpath = '../uploads/';$max_size = 2000; $alwidth = 900; $alheight = 800; $allowtype = array('bmp', 'gif', 'jpg', 'jpe', 'png'); if(isset($_FILES['fileup']) && strlen($_FILES['fileup']['name']) > 1) {$uploadpath = $uploadpath . basename( $_FILES['fileup']['name']); $sepext = explode('.', strtolower($_FILES['fileup']['name']));$type = end($sepext);list($width, $height) = getimagesize($_FILES['fileup']['tmp_name']);$err = ''; if(!in_array($type, $allowtype)) $err .= 'The file: <b>'. $_FILES['fileup']['name']. '</b> فرمت فایل شما غیر مجاز است . تنها فرمت تصاویر قابل قبول است .';if($_FILES['fileup']['size'] > $max_size*1000) $err .= 'حجم فایل بیش از حد مجاز است : '. $max_size. ' KB.';if(isset($width) && isset($height) && ($width >= $alwidth || $height >= $alheight)) $err .= 'ابعاد تصویر بیش از حد مجاز است: '. $alwidth. ' x '. $alheight;if($err == '') {if(move_uploaded_file($_FILES['fileup']['tmp_name'], $uploadpath)) { include_once("../includes/config.php"); $cmelli = $_POST["cmelli"]; $fname = $_POST["fname"]; $lname = $_POST["lname"]; $pname = $_POST["pname"]; $nshenasname = $_POST["nshenasname"]; $bdateroz = $_POST["roz"]; $bdatemah = $_POST["mah"]; $bdatesal = $_POST["sal"]; $bdate = "$bdatesal"."$bdatemah"."$bdateroz"; $taahol = $_POST["taahol"]; $children = $_POST["children"]; $nvazife = $_POST["nvazife"]; $state = $_POST["state"]; $city = $_POST["city"]; $mtahsil = $_POST["mtahsil"]; $address = $_POST["address"]; $postalcode = $_POST["postalcode"]; $tellephone = $_POST["tellphone"]; $mobile = $_POST["mobile"]; $shoghl = $_POST["shoghl"]; $semat = $_POST["semat"]; $tellkar = $_POST["tellkar"]; $addresskar = $_POST["addresskar"]; $pic = $_FILES['fileup']['name']; $email = $_POST["email"]; $email = $_POST["email"]; $password = MD5($_POST["userPass"]); $loginip = $_SERVER['REMOTE_ADDR']; $details = $_POST["details"]; $query ="INSERT INTO tbl_user ( cmelli,fname,lname,pname,nshenasname,bdate,taahol, children,nvazife,state,city,mtahsil,address,postal code,tellphone,mobile,shoghl,semat,tellkar,address kar,pic,email,password,loginip,details ) VALUES ('{$cmelli}','{$fname}','{$lname}' , '{$pname}' ,'{$nshenasname}' ,'{$bdate}' ,'{$taahol}' ,'{$children}' ,'{$nvazife}' ,'{$state}' ,'{$city}' ,'{$mtahsil}' ,'{$address}' ,'{$postalcode}' ,'{$tellephone}' ,'{$mobile}' ,'{$shoghl}' ,'{$semat}' ,'{$tellkar}' ,'{$addresskar}' ,'{$pic}' ,'{$email}' ,'{$password}' ,'{$loginip}' ,'{$details}' )"; if(mysql_query($query)) { echo '<div class="add-user-ok"><i class="icon-ok-sign"></i> کاربر با موفقیت اضافه شد .</div>'; } else { echo '<div class="add-user-error"><i class="icon-remove-sign"></i> در اضافه کردن کاربر خطایی رخ داده است !</div>'; }}else echo '<b>خطا در آپلود تصویر.</b>';}else echo $err;}?>در موردی که گفتم از آرایه بعنوان اسم استفاده کردم و آپلود با موفقیت انجام مشد اما تمام شرطها اعمال نمیشد .دوستان ، لطف میکنید کدم رو تکمیل کنید تا مشکلم رفع بشه؟متشکرم . ویرایش شده مهر 92 توسط dodgy نقل قول لینک به ارسال
Morteza 34190 ارسال شده در مهر 92 گزارش بازنشر ارسال شده در مهر 92 شما از $_FILES['fileup']['size'] استفاده کردید برای حجم، این درست هست و مشکلی ندارهبرای نوع هم بهتره MIMETYPE استفاده کنید2 - بعد از آپلود هر 6 عکس مقدارشو درون یک متغییر ریخته بشه و با , از هم جدا شده باشن و نهایتا اینسرت بشه درون دیتابیس .بهتره تک تک به دیتابیس بریزید 1 نقل قول لینک به ارسال
webafra 60 ارسال شده در مهر 92 مالک گزارش بازنشر ارسال شده در مهر 92 شما از $_FILES['fileup']['size'] استفاده کردید برای حجم، این درست هست و مشکلی ندارهبرای نوع هم بهتره MIMETYPE استفاده کنیدبهتره تک تک به دیتابیس بریزیدنمیشه تک تک اینزرت کرد چون همه ی این اطلاعات و مسیر عکسها درون یک رکورد باید ثبت بشه .در واقع هر رکورد مربوط به یک کاربر میشه و اطلاعاتی که ازش دریافت میشه !امکانش هست راهنمایی دقیقتر کنید ؟ نقل قول لینک به ارسال
AliRezaPro 260 ارسال شده در مهر 92 گزارش بازنشر ارسال شده در مهر 92 1 - اعتبار سنجی کنه که فایل آپلود شده واقعا عکس هست و حجم عکس کمتر از 3 مگابایت باشه .شما برا ی اینکار میتوانید از همان MIMETYPE که مرتضی گفتند استفاده کنید , اما اصلا بهتون توصیه نمیشه . این روش قابل دور زدن است . سعی کنید عکس آپلود شده را از توابع GD بگزرانید و عکس رو دوباره درست کنید . قطعا اگر محتوای عکس , عکس باشه , همان عکس خروجی داره و اگر چیزی جزء عکس باشه صفحه ی سیاه تولید میشه .نمیدونم منظور بنده رو متوجه شدید یا خیرآرایه ی FILES رو بیشتر بررسی کنیدhttp://php.net/manual/en/reserved.variables.files.phpقطعا بعد از بررسی دست شما بیشتر تو کدهاتون باز میشه2 - بعد از آپلود هر 6 عکس مقدارشو درون یک متغییر ریخته بشه و با , از هم جدا شده باشن و نهایتا اینسرت بشه درون دیتابیس .مقدار چی تو متغیر ریخته بشه ؟ این کدی که نوشتید برای یک عکس است .نمیشه تک تک اینزرت کرد چون همه ی این اطلاعات و مسیر عکسها درون یک رکورد باید ثبت بشه .شما مرحله ی اینسرت اطلاعات و عکس رو از هم جدا کنید , اینجوری بهتر میتوانید هندل کنید . میتوانید ابتدا اطلاعات کاربر را دریافت و در سشن ذخیره کنید و در صفحه ی بعد عکس ها را بگیرید . اگر پروسه ی عکس با مشکل مواجه شد میتوانید سشن را پاک کنید .بعد از آپلود عکس ها آنها را در مکانی از سرور ذخیره میکنید و آدرس آن را در متغیری میریزید . به همین صورت تا آخر . اگر یکی از عکس ها با مشکل اعتباری مواجه شد با آدرس هایی که ذخیره کردید میتوانید کل عکس ها را پاک کنید . یا اینکه میتوانید پیغام دهید شما 5 عکس با موفقیت آپلود کردید و یک عکس دیگر باید آپلود کنید 2 نقل قول لینک به ارسال
webafra 60 ارسال شده در مهر 92 مالک گزارش بازنشر ارسال شده در مهر 92 ممنونم علیرضا جان شما برا ی اینکار میتوانید از همان MIMETYPE که مرتضی گفتند استفاده کنید , اما اصلا بهتون توصیه نمیشه . این روش قابل دور زدن است . سعی کنید عکس آپلود شده را از توابع GD بگزرانید و عکس رو دوباره درست کنید . قطعا اگر محتوای عکس , عکس باشه , همان عکس خروجی داره و اگر چیزی جزء عکس باشه صفحه ی سیاه تولید میشه .نمیدونم منظور بنده رو متوجه شدید یا خیردر مورد GD اطلاعات کمی دارم اما در مورد تابع Fildes یه سری چیزا میدونم و میدونم چطور میشه نوع ، پسوند و... رو بدست آورد و درون کدهایی که با آپلودر تکی استفاده کردم ، قرار دادمش شما مرحله ی اینسرت اطلاعات و عکس رو از هم جدا کنید , اینجوری بهتر میتوانید هندل کنید . میتوانید ابتدا اطلاعات کاربر را دریافت و در سشن ذخیره کنید و در صفحه ی بعد عکس ها را بگیریدمنظورتون اینه که یکبار عکس رو بگیرم و اگر تعداد عکسهایی که صحیح آپلود شده ، به تعدادی که تعیین شده بود باشه ، اونوقت در مرحله ی بعد اینسرت کنم ؟اگر اینطور باشه ، باید اسم عکس هارو درون یه متغییر بریزم که بتونم تو صفحه ی بعد ازش استفاده کنم و این درست در نمیاد !اگر فرم جدا بشه ، میشه از یه متغییر که در یک صفحه مقدا گرفته ، در صفحه ی دیگه هم استفاده کرد ؟یه تابع هست به اسم Curl ، به همین کار میاد ؟یا شایدم پیشنهادتون اینه که درون session ذخیره کنم و بعد در صفحه بعد سشن چک کنم و ... ؟گیج شدم نقل قول لینک به ارسال
webafra 60 ارسال شده در مهر 92 مالک گزارش بازنشر ارسال شده در مهر 92 دوستان ممنونم ، با این روش مشکلم حل شد :<?php$uploadpath = '../uploads/'; $max_size = 2000; $alwidth = 900; $alheight = 800; $allowtype = array('bmp', 'gif', 'jpg', 'jpe', 'png');$pic = ''; $flag = true;for($i=1;$i<=6;$i++){if(!(isset($_FILES['fileup'.$i]) && strlen($_FILES['fileup'.$i]['name'])>0)){ $flag = false; break;}}if($flag==true) {$err = array();for($i=1;$i<=6;$i++){ $sepext = explode('.', strtolower($_FILES['fileup'.$i]['name'])); $type = end($sepext); if(!in_array($type, $allowtype)) { $err[] = 'The file: <b>'. $_FILES['fileup'.$i]['name']. '</b> فرمت فایل شما غیر مجاز است . تنها فرمت تصاویر قابل قبول است .'; }}for($i=1;$i<=6;$i++){ if($_FILES['fileup'.$i]['size'] > $max_size*1000) { $err[] = '<br/>حجم فایل بیش از حد مجاز است : '. $max_size. ' KB.'; }}for($i=1;$i<=6;$i++){ list($width, $height) = getimagesize($_FILES['fileup'.$i]['tmp_name']); if(isset($width) && isset($height) && ($width >= $alwidth || $height >= $alheight)) { $err[] = '<br/>ابعاد تصویر بیش از حد مجاز است: '. $alwidth. ' x '. $alheight; }} if(count($err)==0) {$err = array();$uploaded = array();for($i=1;$i<=6;$i++){ $uploadpath = $uploadpath . basename( $_FILES['fileup'.$i]['name']); if(!move_uploaded_file($_FILES['fileup'.$i]['tmp_name'], $uploadpath)) { $err[] = 'فایل شماره '.$i.' با نام '.$_FILES['fileup'.$i]['name'].' آپلود نشد . .'; break; } else { $uploaded[] = $_FILES['fileup'.$i]['name']; $pic .= $_FILES['fileup'.$i]['name'].","; }} if(count($err)==0) { include_once("../includes/config.php"); $cmelli = $_POST["cmelli"]; $fname = $_POST["fname"]; $lname = $_POST["lname"]; $pname = $_POST["pname"]; $nshenasname = $_POST["nshenasname"]; $bdateroz = $_POST["roz"]; $bdatemah = $_POST["mah"]; $bdatesal = $_POST["sal"]; $bdate = "$bdatesal"."$bdatemah"."$bdateroz"; $taahol = $_POST["taahol"]; $children = $_POST["children"]; $nvazife = $_POST["nvazife"]; $state = $_POST["state"]; $city = $_POST["city"]; $mtahsil = $_POST["mtahsil"]; $address = $_POST["address"]; $postalcode = $_POST["postalcode"]; $tellephone = $_POST["tellphone"]; $mobile = $_POST["mobile"]; $shoghl = $_POST["shoghl"]; $semat = $_POST["semat"]; $tellkar = $_POST["tellkar"]; $addresskar = $_POST["addresskar"]; $email = $_POST["email"]; $email = $_POST["email"]; $password = MD5($_POST["userPass"]); $loginip = $_SERVER['REMOTE_ADDR']; $details = $_POST["details"]; $query ="INSERT INTO tbl_user ( cmelli,fname,lname,pname,nshenasname,bdate,taahol,children,nvazife,state,city,mtahsil,address,postalcode,tellphone,mobile,shoghl,semat,tellkar,addresskar,pic,email,password,loginip,details ) VALUES ('{$cmelli}','{$fname}','{$lname}' , '{$pname}' ,'{$nshenasname}' ,'{$bdate}' ,'{$taahol}' ,'{$children}' ,'{$nvazife}' ,'{$state}' ,'{$city}' ,'{$mtahsil}' ,'{$address}' ,'{$postalcode}' ,'{$tellephone}' ,'{$mobile}' ,'{$shoghl}' ,'{$semat}' ,'{$tellkar}' ,'{$addresskar}' ,'{$pic}' ,'{$email}' ,'{$password}' ,'{$loginip}' ,'{$details}' )"; if(mysql_query($query)) { echo '<div class="add-user-ok"><i class="icon-ok-sign"></i> کاربر با موفقیت اضافه شد .</div>'; } else { echo '<div class="add-user-error"><i class="icon-remove-sign"></i> در اضافه کردن کاربر خطایی رخ داده است !</div>'; } } else{echo '<b>خطا در آپلود تصویر.</b>'; foreach($uploaded as $del_file) @unlink($uploadpath.$del_file);} } else {print_r($err); }}else{echo "انتخاب تمامی فیلدهای اجباری هستند .";}?><div class="setting-base"> <div class="setting-head"><span>فرم افزودن کاربر :</span></div> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data"> <label class="lbl-adduser">تصویر کاربر : </label> <input type="file" name="fileup1" /><br /> <input type="file" name="fileup2" /><br /> <input type="file" name="fileup3" /><br /> <input type="file" name="fileup4" /><br /> <input type="file" name="fileup5" /><br /> <input type="file" name="fileup6" /><br /> <label class="lbl-adduser">ایمیل کاربر : </label> <input class="s-input" type="email" name="email" required="required" placeholder="ایمیل :" /> <label class="lbl-adduser">رمز عبور : </label> <input class="s-input" type="password" name="userPass" required="required" placeholder="رمز عبور :" /><br /> <label class="lbl-adduser">نام : </label> <input class="s-input" type="text" name="fname" required="required" placeholder="نام :" /> <label class="lbl-adduser">نام خانوادگی : </label> <input class="s-input" type="text" name="lname" required="required" placeholder="نام خانوادگی :" /><br /> <label class="lbl-adduser">نام پدر : </label> <input type="text" class="s-input" name="pname" required="required" placeholder="نام پدر :" /> <label class="lbl-adduser">کد ملی : </label> <input type="text" class="s-input" name="cmelli" required="required" placeholder="کد ملی :" /> <label class="lbl-adduser">شماره شناسنامه : </label> <input type="text" class="s-input" name="nshenasname" required="required" placeholder="شماره شناسنامه :" /> <label class="lbl-adduser">تاریخ تولد : </label> <input type="text" class="s-input-day" name="roz" required="required" placeholder="روز :" /> <input type="text" class="s-input-day" name="mah" required="required" placeholder="ماه :" /> <input type="text" class="s-input-day" name="sal" required="required" placeholder="سال :" /><br /> <label class="lbl-adduser">وضعیت تاهل : </label> مجرد <input type="radio" name="taahol" checked="checked" value="مجرد" /> متاهل <input type="radio" name="taahol" value="متاهل" /> <label style="width:110px;" class="lbl-adduser"></label> <label class="lbl-adduser">تعداد فرزند : </label> <input type="text" class="s-input" name="children" placeholder="تعداد فرزند :" /><br /> <label class="lbl-adduser">وضعیت نظام وظیفه : </label> <select class="s-input" name="nvazife" > <option value="0">---</option> <option value="پایان خدمت">پایان خدمت</option> <option value="معاف">معاف</option> <option value="نرفتم">نرفتم</option> </select> <label class="lbl-adduser">آخرین مدرک تحصیلی : </label> <select class="s-input" name="mtahsil" > <option value="0">---</option> <option value="سیکل">سیکل</option> <option value="دیپلم">دیپلم</option> <option value="فوق دیپلم">فوق دیپلم</option> <option value="لیسانس">لیسانس</option> <option value="فوق لیسانس">فوق لیسانس</option> <option value="دکترا">دکتری</option> <option value="فوق دکتری">فوق دکتری</option> </select><br /> <label class="lbl-adduser">استان محل سکونت : </label> <input type="text" class="s-input" name="state" required="required" placeholder="استان محل سکونت :" /> <label class="lbl-adduser">شهر محل سکونت : </label> <input class="s-input" name="city" required="required" placeholder="شهر محل سکونت :" /><br /> <label class="lbl-adduser">آدرس محل سکونت : </label> <input type="text" class="s-input-address" name="address" required="required" placeholder="آدرس محل سکونت :" /><br /> <label class="lbl-adduser">کد پستی : </label> <input class="s-input" type="text" name="postalcode" required="required" placeholder="کد پستی :" /> <label class="lbl-adduser">تلفن : </label> <input class="s-input" type="tel" name="tellphone" required="required" placeholder="تلفن ثابت :" /><br /> <label class="lbl-adduser">تلفن همراه : </label> <input class="s-input" type="tel" name="mobile" required="required" placeholder="تلفن همراه :" /> <label class="lbl-adduser">شغل : </label> <input class="s-input" type="tel" name="shoghl" required="required" placeholder="شغل :" /><br /> <label class="lbl-adduser">سمت در شغل : </label> <input class="s-input" type="tel" name="semat" required="required" placeholder="سمت در شغل :" /> <label class="lbl-adduser">تلفن محل کار : </label> <input class="s-input" type="tel" name="tellkar" required="required" placeholder="تلفن محل کار :" /><br /> <label class="lbl-adduser">آدرس محل کار : </label> <input class="s-input-address" type="tel" name="addresskar" required="required" placeholder="آدرس محل کار :" /><br /> <label class="lbl-adduser">توضیح در مورد کاربر : </label> <textarea class="details" name="details" placeholder="توضیح کوتاه :"></textarea><br /><br /> <label class="lbl-adduser"></label><input class="s-submit" type="submit" value="ثبت کاربر" /> <input type="reset" class="s-submit" value="پاک کردن فرم" /> </form> <div class="clear"></div></div><?php }else{ ?><?php redirect_to("login.php"); ?><?php } ?><?php include_once("footer.php"); ?> نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .