PDA

View Full Version : نمایش پیغام اخطار با جاوا اسکریپت



14morteza14
سه شنبه 03 دی 1392, 10:25 صبح
دوستان سلام
برای ارسال فایل ضمیمه در ایمیل از php دارم استفاده می کنم. می خوام در صورتی که فرمت فایل ضمیمه موارد آرایه $format نبود اون وقت به جای پیغام زیر:

فایل ضمیمه شده مجاز نمی باشد.تنها فرمتهای
با جاوا اسکریپت همین پیغام رو نشون بده.

$formats = array('jpg','gif','png','jpeg','bmp');

// بررسی فرمت فایل ضمیمه
$ext = end(explode('.',$file_name));
if(!in_array($ext,$formats)){
echo"فایل ضمیمه شده مجاز نمی باشد.تنها فرمتهای ";
}

colors
سه شنبه 03 دی 1392, 10:36 صبح
با ایجکس چک کن (یا کلا با ایجکس فرم رو ارسال کن)

ابوذر محمودی
سه شنبه 03 دی 1392, 10:47 صبح
بهتره همون اول هم چک کنید .
<html>
<head>
<title>JS File Ext Checker</title>
<script language="JavaScript">
function OnUploadCheck()
{
var extall="jpg,jpeg,gif,png";

file = document.form1.filUpload.value;
ext = file.split('.').pop().toLowerCase();
if(parseInt(extall.indexOf(ext)) < 0)
{
alert('Extension support : ' + extall);
return false;
}
return true;
}
</script>
</head>
<body>
<form name="form1" method="post" action="PageFiles2.php" enctype="multipart/form-data" onSubmit="return OnUploadCheck();">
<input type="file" name="filUpload">
<input name="btnSubmit" type="submit" value="Submit">
</form>
</body>
</html>


اگه با php میخواین این کارو انجام بدین ، خب کافیه اسکریپت و پیغام خطا رو اکو کنین.
مثلا :

echo '<script> alert("error"); </script>';
البته بعد از اینکه فرمتون کامل لود شده پیغامو بگین نمایش بده ،

colors
سه شنبه 03 دی 1392, 10:52 صبح
<html>
<head>
<title>JS File Ext Checker</title>
<script language="JavaScript">
function OnUploadCheck()
{
var extall="jpg,jpeg,gif,png";

file = document.form1.filUpload.value;
ext = file.split('.').pop().toLowerCase();
if(parseInt(extall.indexOf(ext)) < 0)
{
alert('Extension support : ' + extall);
return false;
}
return true;
}
</script>
</head>
<body>
<form name="form1" method="post" action="PageFiles2.php" enctype="multipart/form-data" onSubmit="return OnUploadCheck();">
<input type="file" name="filUpload">
<input name="btnSubmit" type="submit" value="Submit">
</form>
</body>
</html>

دوست عزیز این روش میتونه خطرساز بشه!
امنیت نداره

ابوذر محمودی
سه شنبه 03 دی 1392, 11:12 صبح
الان این کد چطوری میتونه خطرساز باشه؟؟؟

ابوذر محمودی
سه شنبه 03 دی 1392, 11:15 صبح
آها شما فکر کردین من گفتم که تو php نباید چک کنه ؟؟؟ و بیاد فقط با JS چک کنه؟؟؟؟
به همین خاطر گفتین خطرسازه؟؟
خب اینو که همه میدونن که تو php هم باید چک بشه ، حتی خود ایشونم تو php چک کردن.
من هر وقت که صحبت از دانلود و آپلود شده همیشه بیشتر نکاتی که ممکنه خطرساز باشه رو ذکر میکنم ، من ابتدا فکر کردم که ایشون قبل از آپلود میخوان با جاوا اسکریپت چک کنن و پیغام نمایش داده بشه ، به خاطر همین این سورس رو گذاشتم ، اما خوب که دقت کردم دیدم با خود php بعد از چک کردن میخاد Alert بده ؛برای همین هم پست رو ویرایش کردم و توضیحات رو تکمیل کردم.

colors
سه شنبه 03 دی 1392, 11:15 صبح
کدشما سمت کاربره و میشه با fire bug و ... چندتا یا یه پسوند موردنظرمون رو به لیست extall اضافه کنیم

ابوذر محمودی
سه شنبه 03 دی 1392, 11:35 صبح
من جایی گفتم که تو php چک نکنه؟

Javidhb
سه شنبه 03 دی 1392, 13:55 عصر
1. توی php چک کنید و اگه از پسوند غیرمجاز استفاده کرده بود.. به صفحه ای که توش فرمتون هست redirect کنید و پیغام رو به کاربر نشون بدید... (جالب نیست)

2. اگه میخاید interactive باشه باید از ajax استفاده کنید و توی php پسوند فایل رو چک کنید اگه قابل قبول نبود: (فقط بعنوان اینکه با روند کار آشنا بشید)
php:


//چک پسوندها
//مثلا!!!
function testExtension(){
//if(پسوند قابل قبول)
$stats = array('status' =>'success',
'message' => 'پیغام موفقیت آمیزبودن...'
);

//if('پسوند غیر استاندارد')
$stats = array('status' =>'error',
'message' => 'فایل ضمیمه شده مجاز نمی باشد.تنها فرمتهای'
);

return json_encode($stats); //این چیزیه که برای ایجکس فرستاده میشه
}


js : برای راحتی با jquery

$.ajax({
type: "POST",
url: "به تابعی که میخاید ایمیل بفرستید یا پسوند رو چک کنید",
data: 'اطلاعات فرم',
dataType: 'JSON' //نوع دیتایی که انتظار دارید از پی اچ پی برگرده
})
.done(function( data ) { // دیتا - همون آرایه ای هست که توی پی اچ پی به جیسون تبدیل کردیم و فرستادیم
if(data['status'] == 'error')
{
alert(data['message']);
}
else
{
alert(data['message']);
}
});