• اطلاعیه ها

    • Morteza

      باهم بسازیم: اطلس ووکامرس و وردپرس   14/07/96

      تاپیک ایجاد شده برای بحث در جهت ایجاد یک منبع، ویکی، صفحات توضیحی و یا بخش آموزشی جامع برای وردپرس و متعلقات مختلف آن است. لطفا جهت مشارکت در این بحث، ارائه پیشنهاد و یا انتقاد به تاپیک فوق مراجعه کنید. باهم بسازیم: اطلس ووکامرس و وردپرس
webafra

آپلودر با چند فیلد + ذخیره در دیتابیس

6 پست در این موضوع قرار دارد

ارسال شده در (ویرایش شده)

با سلام خدمت همه ی دوستان و اساتید محترم .

جستوجوهای زیادی در گوگل و همچنین در همین وب سایت کردم و به نتیجه هایی رسیدم اما کافی نبود و در بعضی موارد گنگ بود و تصمیم گرفتم اینجا مطرح کنم سوالم رو .

من یه فرم دارم که یه تعداد مشخصی آپلودر ( 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;
}

?>

در موردی که گفتم از آرایه بعنوان اسم استفاده کردم و آپلود با موفقیت انجام مشد اما تمام شرطها اعمال نمیشد .

دوستان ، لطف میکنید کدم رو تکمیل کنید تا مشکلم رفع بشه؟

متشکرم .

ویرایش شده در توسط dodgy
0

به اشتراک گذاری این پست


لینک به پست

شما از $_FILES['fileup']['size'] استفاده کردید برای حجم، این درست هست و مشکلی نداره

برای نوع هم بهتره MIMETYPE استفاده کنید

2 - بعد از آپلود هر 6 عکس مقدارشو درون یک متغییر ریخته بشه و با , از هم جدا شده باشن و نهایتا اینسرت بشه درون دیتابیس .

بهتره تک تک به دیتابیس بریزید

1

به اشتراک گذاری این پست


لینک به پست

شما از $_FILES['fileup']['size'] استفاده کردید برای حجم، این درست هست و مشکلی نداره

برای نوع هم بهتره MIMETYPE استفاده کنید

بهتره تک تک به دیتابیس بریزید

نمیشه تک تک اینزرت کرد چون همه ی این اطلاعات و مسیر عکسها درون یک رکورد باید ثبت بشه .

در واقع هر رکورد مربوط به یک کاربر میشه و اطلاعاتی که ازش دریافت میشه !

امکانش هست راهنمایی دقیقتر کنید ؟

0

به اشتراک گذاری این پست


لینک به پست

1 - اعتبار سنجی کنه که فایل آپلود شده واقعا عکس هست و حجم عکس کمتر از 3 مگابایت باشه .

شما برا ی اینکار میتوانید از همان MIMETYPE که مرتضی گفتند استفاده کنید , اما اصلا بهتون توصیه نمیشه . این روش قابل دور زدن است . سعی کنید عکس آپلود شده را از توابع GD بگزرانید و عکس رو دوباره درست کنید . قطعا اگر محتوای عکس , عکس باشه , همان عکس خروجی داره و اگر چیزی جزء عکس باشه صفحه ی سیاه تولید میشه .نمیدونم منظور بنده رو متوجه شدید یا خیر

آرایه ی

FILES رو بیشتر بررسی کنید


http://php.net/manual/en/reserved.variables.files.php

قطعا بعد از بررسی دست شما بیشتر تو کدهاتون باز میشه

2 - بعد از آپلود هر 6 عکس مقدارشو درون یک متغییر ریخته بشه و با , از هم جدا شده باشن و نهایتا اینسرت بشه درون دیتابیس .

مقدار چی تو متغیر ریخته بشه ؟

این کدی که نوشتید برای یک عکس است .

نمیشه تک تک اینزرت کرد چون همه ی این اطلاعات و مسیر عکسها درون یک رکورد باید ثبت بشه .

شما مرحله ی اینسرت اطلاعات و عکس رو از هم جدا کنید , اینجوری بهتر میتوانید هندل کنید . میتوانید ابتدا اطلاعات کاربر را دریافت و در سشن ذخیره کنید و در صفحه ی بعد عکس ها را بگیرید . اگر پروسه ی عکس با مشکل مواجه شد میتوانید سشن را پاک کنید .بعد از آپلود عکس ها آنها را در مکانی از سرور ذخیره میکنید و آدرس آن را در متغیری میریزید . به همین صورت تا آخر . اگر یکی از عکس ها با مشکل اعتباری مواجه شد با آدرس هایی که ذخیره کردید میتوانید کل عکس ها را پاک کنید . یا اینکه میتوانید پیغام دهید شما 5 عکس با موفقیت آپلود کردید و یک عکس دیگر باید آپلود کنید

2

به اشتراک گذاری این پست


لینک به پست

ممنونم علیرضا جان :)

شما برا ی اینکار میتوانید از همان MIMETYPE که مرتضی گفتند استفاده کنید , اما اصلا بهتون توصیه نمیشه . این روش قابل دور زدن است . سعی کنید عکس آپلود شده را از توابع GD بگزرانید و عکس رو دوباره درست کنید . قطعا اگر محتوای عکس , عکس باشه , همان عکس خروجی داره و اگر چیزی جزء عکس باشه صفحه ی سیاه تولید میشه .نمیدونم منظور بنده رو متوجه شدید یا خیر

در مورد GD اطلاعات کمی دارم اما در مورد تابع Fildes یه سری چیزا میدونم و میدونم چطور میشه نوع ، پسوند و... رو بدست آورد و درون کدهایی که با آپلودر تکی استفاده کردم ، قرار دادمش :)

شما مرحله ی اینسرت اطلاعات و عکس رو از هم جدا کنید , اینجوری بهتر میتوانید هندل کنید . میتوانید ابتدا اطلاعات کاربر را دریافت و در سشن ذخیره کنید و در صفحه ی بعد عکس ها را بگیرید

منظورتون اینه که یکبار عکس رو بگیرم و اگر تعداد عکسهایی که صحیح آپلود شده ، به تعدادی که تعیین شده بود باشه ، اونوقت در مرحله ی بعد اینسرت کنم ؟

اگر اینطور باشه ، باید اسم عکس هارو درون یه متغییر بریزم که بتونم تو صفحه ی بعد ازش استفاده کنم و این درست در نمیاد !

اگر فرم جدا بشه ، میشه از یه متغییر که در یک صفحه مقدا گرفته ، در صفحه ی دیگه هم استفاده کرد ؟

یه تابع هست به اسم Curl ، به همین کار میاد ؟

یا شایدم پیشنهادتون اینه که درون session ذخیره کنم و بعد در صفحه بعد سشن چک کنم و ... ؟

گیج شدم :D

0

به اشتراک گذاری این پست


لینک به پست

دوستان ممنونم ، با این روش مشکلم حل شد :


<?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"); ?>

0

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط ahmadwp
      سلام خدمت اعضای گرامی.
      در وردپرس فارسی نسخه ۴.۸.۲ مشکلی رو پیدا کردم که راهکاری برای حلش به ذهنم نرسید، ممنون می شم راهنمایی کنید تا حلش کنم.
      وقتی یک قسمت از متن رو انتخاب می کنم و می خوام به اون لینک بدم، وقتی که می خوام بر روی آیکون تیک تا تایید کلیک کنم یا وقتی که می خوام بر روی آیکون چرخ دنده کلیک کنم، پاپ آپ درج لینک هی ظاهر می شه و دوباره محو می شه! و نمی شه بر روی اون آیکون ها کلیک کرد و گزینه ها رو انتخاب کرد.
      ابتدا تصور کردم شاید مشکل از تداخل افزونه ها باشه یا قالب مشکلی داشته باشه یا هنگام به روز رسانی خطایی به وجود اومده باشه، اما وقتی بسته نصبی وردپرس رو مجددا از wp-persian دریافت کردم و بر روی یک فضای دیگه نصب کردم، دیدم که از ابتدا همین مشکل وجود داره، افزونه wp-jalali رو هم غیرفعال کردم اما مشکل حل نشد!
      یعنی چه از ابتدا دریافت و نصب کنین، چه وردپرس قدیمی تر سایت تون رو آپدیت کنین به این نسخه فارسی، همین مشکل براش به وجود میاد.
      یک ویدیو پیوست همین مطلب کردم که به خوبی این مورد رو نشون می ده. سپاسگزارم.
      Video_2017-10-21_110732.wmv
    • توسط mohammad_mh
      سلام
      این سایت من با قالب بی تم
      digiaccount.ir
      و این هم 2 نمونه سایت مثل هم
      https://ebanking.bankmellat.ir/ebanking/
      http://consolefa.ir/
       
      چطوری پوسته سایت را اینطوری  بکنم حالت باکس من فرق داره
    • توسط Mr Mirzaei
      سلام
      کد مطالب تصادفی توی وبلاگ های میهن بلاگ چیه؟
      اگه کسی میدونه لطفا بگه خیلی گیرم
      کد بیشترین بازدید چیه توی مطالب؟
      سریع بگید
    • توسط asghar
      سلام
      من یک سایت وردپرسی دارم که خیلی دیر لود میشه 
      میخواستم بدونم برای رفعش باید چی کار کنم؟
      آدرس سایت https://www.hairent.com
       
    • توسط cheeta
      با سلام خدمت اساتید گل وردپرس
      من برای فروش از افزونه edd و با قالب دستکاری شده صحیفه کار میکنم. مشکلی که دارم اینه مه وقتی به عنوان مدیر خرید میکنم تمام مراحل تا پس از پرداخت تا اخر اجرا میشه اما وقتی با نقش های کاربری دیگه از جمله مشترک خرید میکنم وقتی در صفحه سبد خرید روی " خرید و دانلود " کلیک میکنم هیچ اتفاقی نمی افته. یعنی به صفحه پرداخت نمیره و البته هیچ خطایی هم نمیده.
      با عوض کردن قالب مشکل حل میشه اما می خوام مشکل رو در همین قالب بر طرف کنم. چطور میشه این محدودیت رو برای سایر نقش های کاربری برداشت؟ کی چیزی در این زمینه هست؟