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"); ?> لینک به ارسال
پست های پیشنهاد شده
لطفا برای ارسال دیدگاه وارد شوید
شما بعد از اینکه وارد حساب کاربری خود شدید می توانید دیدگاهی ارسال کنید
ورود به حساب کاربری